2016-04-09 3 views
0

Wie bei vielen, bin ich mir sicher, dass dies keine schwierige Antwort ist, aber neu zu sein R Ich habe es nicht herausgefunden.looping logistische Regressionen durch mehrere abhängige und unabhängige Variablen in R

Ich habe einen Datensatz mit ungefähr 100K Fällen, die ich versuche, eine Reihe von logistischen Regressionen auszuführen, die verschiedene abhängige und unabhängige Variablen durchlaufen.

Ich bin nicht sicher, wie die Daten hier zur Verfügung zu stellen, aber hier ist ein Beispiel:

Loc1 loc2 loc3 demo1 demo2 demo3 demo4 demo5 Outcome1 Outcome2 
1  0  0  0  1  0  0  1  1   0 
0  1  0  1  0  0  1  0  0   1 
1  0  0  0  0  1  0  1  0   1 
0  0  1  1  0  0  1  0  1   0 

Im Grunde ist es ein Bündel von Dummy-Variablen, die Ich mag würde eine Reihe von Regressionen auf wie folgt auszuführen: Glm (Ergebnis ~ Standort * demografische Variable)

Hier gibt es 4 Ergebnisvariablen, die für jede Kombination aus 9 Standorten und 13 verschiedenen demografischen Variablen vorhergesagt werden.

Nochmal - ich nehme an, das ist keine schwierige Antwort, aber ich hatte Schwierigkeiten herauszufinden, wie man mehrere Variablen zur selben Zeit wie diese umschlingt. Vielen Dank im Voraus.

Ok - lassen Sie mich versuchen zu klären. Ich möchte in erster Linie die Regressionen gruppiert nach Standort, so würde ich sie alle für Standort 1 sehen, dann alle für Standort 2, Standort 3, usw.

Es gibt 9 verschiedene Standorte, 13 verschiedene demographische Variablen und 4 verschiedene Ergebnisvariablen.

Ich würde eine Schleife will, das etwas zu diesem Effekt hat:

for(location): 
    for(outcome): 
     for(demographic): 
      summary(glm(outcome ~ demographic * location)) 

Ich weiß nicht, wie ein Beispieldatensatz hinzuzufügen, aber wenn jemand wissen läßt ich mich etwas umfangreicher als die 4 hinzufügen Fälle, die ich hier gestellt habe.

+3

bitte Ihre Eingabe und erwartete Ausgabe klären – MichaelChirico

Antwort

1

Dies erstellt alle Kombinationen, die mit diesem Dataset möglich sind, und führt sie dann durch eine Schleife, um die Ergebnisse zu drucken und zu speichern. Ich muss Sie warnen, dass dies eine schreckliche Idee ist statistisch, so ist dies nur um zu zeigen, wie der Code funktionieren würde. Ich gehe davon aus, dass Sie nicht erwartet haben, dass alle Modelle mit solch einem Spielzeugdatensatz aussagekräftige Ergebnisse liefern.

combos <- expand.grid( 
     locs = names(dat)[ grep("loc", names(dat), ignore.case=TRUE)], 
     demos = names(dat)[ grep("demo", names(dat),ignore.case=TRUE)] ) 
res.list =list() 
for (i in 1:3){ 
       form=as.formula(paste0("cbind(dat$Outcome1,dat$Outcome2) ~", 
             combos$locs[i], "+", combos$demos[i])); 
       res.list[[1]] <- print(glm(form, data=dat, family="binomial"))} 

Ausgabe

#-------- 
Call: glm(formula = form, family = "binomial", data = dat) 

Coefficients: 
(Intercept)   Loc1  demo1 
    2.220e-16 -4.441e-16   NA 

Degrees of Freedom: 3 Total (i.e. Null); 2 Residual 
Null Deviance:  5.545 
Residual Deviance: 5.545 AIC: 9.545 

Call: glm(formula = form, family = "binomial", data = dat) 

Coefficients: 
(Intercept)   loc2  demo1 
    4.960e-18 -3.913e+01 1.957e+01 

Degrees of Freedom: 3 Total (i.e. Null); 1 Residual 
Null Deviance:  5.545 
Residual Deviance: 2.773 AIC: 8.773 

Call: glm(formula = form, family = "binomial", data = dat) 

Coefficients: 
(Intercept)   loc3  demo1 
    1.341e-16 3.913e+01 -1.957e+01 

Degrees of Freedom: 3 Total (i.e. Null); 1 Residual 
Null Deviance:  5.545 
Residual Deviance: 2.773 AIC: 8.773 
+0

nur einen Zweifel .... MikeD für glm gefragt (Ergebnis ~ Ort * demografische Variable), dh Loc * Demo, und Ihre Antwort hatte "+": form = as.formula (paste0 ("cbind (dat $ Outcome1, dat $ Outcome2) ~", kombinationen $ locs [i], "+", combos $ demos [i])); –

+0

Nun, Ihre ist eine Interpretation der natürlichen Sprache Phrase: "jede Kombination von 9 Standorten und 13 verschiedenen demographischen Variablen". Sie hätten nur ein einziges Modell produziert. Meine ist eine andere Interpretation dieser Phrase, modulo die Tatsache, dass wir nur 3 und 5 hatten, um mit dem Beispiel zu arbeiten. Der Aspekt, den ich nicht dachte, konnte mit dem angebotenen Beispiel abgedeckt werden, was gewünscht wurde (und wie man es liefert) bezüglich der Ergebnisse. –

+0

Zustimmen. Sicher würde MikeD sich um den Rest kümmern :-) –

Verwandte Themen