Problem bei Dummycodierung in multivariatem Regressionsmodell

Modelle zur Korrelations- und Regressionsanalyse

Moderator: EDi

Antworten
Josh

Problem bei Dummycodierung in multivariatem Regressionsmodell

Beitrag von Josh »

Hallo zusammen,

für eine Ausarbeitung wollte ich den Einfluss verschiedener Faktoren auf die psychische Gesundheit betrachten. Dabei wollte ich ein multivariates lineares Regressionsmodell schätzen. Für mein Modell habe ich unter anderem eine dichotome Dummyvariable für den Erwerbsstatus erstellt, welche die beiden Ausprägungen erwerbstätig (1) und nicht erwerbstätig (0) umfasst.

Wenn ich nun das folgende Modell schätzen möchte erhalte ich jedoch immer die angegebene Fehlermeldung.
> multi1 <- lm(psychegesund ~ alter + b.income + factor(frau) + factor(dummy_erwerbsstatus)
+ factor(sammelunterkunft) + factor(verheiratet) + factor(dummy_europa)
+ factor(bmi) + factor(mediensprache_deutsch) + factor(g.humanitaer)
, data = data_c, na.action = na.exclude)

Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) :
Kontraste können nur auf Faktoren mit 2 oder mehr Stufen angewendet werden
Sobald ich die Dummyvariable für den Erwerbsstatus aus dem Modell rausnehme, funktioniert die Berechnung. Jedoch verstehe ich die Fehlermeldung in diesem Zusammenhang nicht, da meine Dummyvariable ja aus zwei Faktoren (0;1) besteht.

Hier findet ihr auch nochmal meine Syntax, mit der ich die Dummyvariable codiert habe.
dummy_erwerbsstatus <- data_t$bep12

dummy_erwerbsstatus [data_t$bep12 < 0] <- NA

dummy_erwerbsstatus [data_t$bep12 == 9 ] <- 0 #Nicht Erwerbstätig

dummy_erwerbsstatus [data_t$bep12 == 1 |
data_t$bep12 == 2 |
data_t$bep12 == 3 |
data_t$bep12 == 4] <- 1 #Erwerbstätig
Ich würde mich freuen, wenn ihr mir bei meinem Problem weiterhelfen könntet :-)


Vielen Dank für eure Hilfe und liebe Grüße

Joshua
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Problem bei Dummycodierung in multivariatem Regressionsmodell

Beitrag von jogo »

Hallo Joshua,

vielleicht hat R recht, und es gibt dort einen Faktor, der nur ein Level hat. Bitte zeig uns das Ergebnis von:

Code: Alles auswählen

summary(data_c)
Bei Deiner Regression steht data = data_c, in den anderen Zeilen steht data_t$... - das soll so sein, richtig?

Gruß, Jörg
Josh

Re: Problem bei Dummycodierung in multivariatem Regressionsmodell

Beitrag von Josh »

Hallo Jörg,

vielen Dank für deine schnelle Antwort. Das mit data_c und data_t ist richtig, da c mein codierter und t der gesamte Datensatz ist.

Das ist derOutput von summary(data_c).

Code: Alles auswählen

 > summary(data_c)
       X              alter            frau        dummy_erwerbsstatus  g.humanitaer    dummy_gewicht     psychegesund
 Min.   :  1.00   Min.   :18.00   Min.   :0.0000   Min.   :0.0000      Min.   :0.0000   Min.   :0.0000   Min.   :19.73
 1st Qu.: 77.75   1st Qu.:32.25   1st Qu.:0.0000   1st Qu.:0.0000      1st Qu.:1.0000   1st Qu.:0.0000   1st Qu.:44.16  
 Median :154.50   Median :43.00   Median :0.0000   Median :1.0000      Median :1.0000   Median :1.0000   Median :50.26  
 Mean   :154.50   Mean   :42.75   Mean   :0.4253   Mean   :0.5941      Mean   :0.8182   Mean   :0.6511   Mean   :50.10  
 3rd Qu.:231.25   3rd Qu.:52.00   3rd Qu.:1.0000   3rd Qu.:1.0000      3rd Qu.:1.0000   3rd Qu.:1.0000   3rd Qu.:56.37  
 Max.   :308.00   Max.   :76.00   Max.   :1.0000   Max.   :1.0000      Max.   :1.0000   Max.   :1.0000   Max.   :68.58  
                  NA's   :106                      NA's   :106         NA's   :242      NA's   :73       NA's   :89     
 sammelunterkunft    b.income         bmi         verheiratet     mediensprache_deutsch  dummy_europa   
 Min.   :0.0000   Min.   : 100   Min.   :1.000   Min.   :0.0000   Min.   :0.0000        Min.   :0.0000  
 1st Qu.:0.0000   1st Qu.: 560   1st Qu.:2.000   1st Qu.:0.0000   1st Qu.:1.0000        1st Qu.:0.0000  
 Median :1.0000   Median :1300   Median :3.000   Median :1.0000   Median :1.0000        Median :1.0000  
 Mean   :0.5921   Mean   :1391   Mean   :2.826   Mean   :0.7376   Mean   :0.7761        Mean   :0.5714  
 3rd Qu.:1.0000   3rd Qu.:2000   3rd Qu.:3.000   3rd Qu.:1.0000   3rd Qu.:1.0000        3rd Qu.:1.0000  
 Max.   :1.0000   Max.   :4077   Max.   :4.000   Max.   :1.0000   Max.   :1.0000        Max.   :1.0000  
 NA's   :232      NA's   :195    NA's   :73      NA's   :106      NA's   :107

Gruß

Joshua
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Problem bei Dummycodierung in multivariatem Regressionsmodell

Beitrag von jogo »

Hallo Joshua,

hm, so ist noch nichts Schädliches zu sehen.
Ich selber arbeite ja lieber mit Faktoren, wenn es sich wirklich um solche handelt und führe die Umwandlung notfalls explitzit durch, etwa:

Code: Alles auswählen

data_c$verheiratet <- factor(data_c$verheiratet)
Und dann gibt es noch die vielen NA's. Es wäre interessant zu sehen, wie das summary() ausschaut, nachdem man die NA-Zeilen rausgeschmissen hat:

Code: Alles auswählen

summary(na.omit(...))
Gruß, Jörg
Josh

Re: Problem bei Dummycodierung in multivariatem Regressionsmodell

Beitrag von Josh »

Hallo Jörg,

ich habe jetzt nochmal alle Faktoren zu Faktoren umgewandelt.

Das ist der Output zum Befehl summary(na.omit(data_c)).

Code: Alles auswählen

> summary(na.omit(data_c))
       X            alter       frau   dummy_erwerbsstatus g.humanitaer dummy_gewicht  psychegesund   sammelunterkunft
 Min.   : 2.0   Min.   :20.00   0:18   0: 0                0: 8         0:11          Min.   :31.94   0:10            
 1st Qu.:13.0   1st Qu.:37.25   1:12   1:30                1:22         1:19          1st Qu.:44.16   1:20            
 Median :59.5   Median :43.00                                                         Median :50.26                   
 Mean   :48.6   Mean   :43.27                                                         Mean   :49.04                   
 3rd Qu.:81.5   3rd Qu.:50.00                                                         3rd Qu.:56.37                   
 Max.   :91.0   Max.   :68.00                                                         Max.   :68.58                   
    b.income      bmi    verheiratet mediensprache_deutsch dummy_europa
 Min.   : 200.0   1: 1   0: 6        0: 5                  0:12        
 1st Qu.: 812.5   2:11   1:24        1:25                  1:18        
 Median :1724.5   3:16                                                 
 Mean   :1694.4   4: 2                                                 
 3rd Qu.:2400.0                                                        
 Max.   :4077.0                                                        
Interessant ist, dass die Kategorie 0 bei der Variablen dummy_erwerbsstatus nicht besetzt ist. Wenn ich mir die Variable jedoch mit dem table Befehl anzeigen lasse sieht die Verteilung anders aus.

Code: Alles auswählen

> table(data_c$dummy_erwerbsstatus)

  0   1 
 82 120 

Gruß

Joshua
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Problem bei Dummycodierung in multivariatem Regressionsmodell

Beitrag von jogo »

Hallo Joshua,

das ist zwar interessant, aber nicht sonderlich verwunderlich. Bitte vergleiche:

Code: Alles auswählen

table(data_c$dummy_erwerbsstatus) # mit
table(na.omit(data_c)$dummy_erwerbsstatus)
Auch kannst Du Dir die 82 Beobachtungen ansehen, bei denen data_c$dummy_erwerbsstatus==0 ist, um festzustellen, dass bei jeder dieser Beobachtungen in irgendeiner anderen Spalte ein NA auftaucht.

Gruß, Jörg
Josh

Re: Problem bei Dummycodierung in multivariatem Regressionsmodell

Beitrag von Josh »

Hallo Jörg,

vielen Dank für deine ausführlichen und hilfreichen Antworten. Ich habe auf jeden Fall das Problem nun verstanden und werde meine Analyse umstrukturieren.


Gruß

Joshua
Antworten