09 Regressionen II

Einführung in die quantitativen Forschungsmethoden

Quiz

slido.com #2960 401

Interpretation von Regressionen

Beispiele aus den Übungsaufgaben

lm1 <- lm(ccrdprs~agea,data=ess8)
summary(lm1)

Call:
lm(formula = ccrdprs ~ agea, data = ess8)

Residuals:
    Min      1Q  Median      3Q     Max 
-5.9155 -1.6290  0.3512  2.1635  4.8947 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept)  6.0637563  0.0376406  161.10   <2e-16 ***
agea        -0.0098809  0.0007187  -13.75   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 2.719 on 41794 degrees of freedom
  (2591 Beobachtungen als fehlend gelöscht)
Multiple R-squared:  0.004502,  Adjusted R-squared:  0.004478 
F-statistic:   189 on 1 and 41794 DF,  p-value: < 2.2e-16

→ Alter hat einen kleinen negativen Effekt

Beispiele aus den Übungsaufgaben

ess8$climate_responsible <- ifelse(ess8$ccrdprs==10,1,0)

table(ess8$climate_responsible)

    0     1 
39090  2837 

→ Regression: Wahrscheinlichkeit persönliche Verantwortung für Klimawandel als sehr hoch anzugeben (2837 Teilnehmende)

Beispiele aus den Übungsaufgaben

lm2 <- lm(climate_responsible~agea,data=ess8)
summary(lm2)

Call:
lm(formula = climate_responsible ~ agea, data = ess8)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.07138 -0.06874 -0.06756 -0.06632  0.93479 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) 6.411e-02  3.478e-03  18.432   <2e-16 ***
agea        7.341e-05  6.642e-05   1.105    0.269    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.2512 on 41794 degrees of freedom
  (2591 Beobachtungen als fehlend gelöscht)
Multiple R-squared:  2.923e-05, Adjusted R-squared:  5.302e-06 
F-statistic: 1.222 on 1 and 41794 DF,  p-value: 0.2691

e-05: ‘wissenschaftliche Schreibweise’ für \(10^{-5}\) / 0,00001

→ sehr langsam ansteigende Wahrscheinlichkeit

Beispiele aus den Übungsaufgaben

Vielleicht variiert der Effekt von Alter ja nach Altersgruppe?

→ neue Variable: Alterskategorien

# cut() schneidet Variable in Teile
# seq definiert eine Sequenz von 10 bis 110 in 10er Schritten
seq(10,110,10)
 [1]  10  20  30  40  50  60  70  80  90 100 110
ess8$agecat <- cut(ess8$agea, breaks=seq(10,110,10))
table(ess8$agecat)

  (10,20]   (20,30]   (30,40]   (40,50]   (50,60]   (60,70]   (70,80]   (80,90] 
     2838      5924      6897      7322      7693      7380      4364      1659 
 (90,100] (100,110] 
      155         0 

Beispiele aus den Übungsaufgaben

lm3 <- lm(ccrdprs~agecat,data=ess8)
summary(lm3)

Call:
lm(formula = ccrdprs ~ agecat, data = ess8)

Residuals:
   Min     1Q Median     3Q    Max 
-5.838 -1.551  0.219  2.162  6.824 

Coefficients:
               Estimate Std. Error t value Pr(>|t|)    
(Intercept)     5.54026    0.05208 106.386  < 2e-16 ***
agecat(20,30]   0.01066    0.06337   0.168 0.866424    
agecat(30,40]   0.24077    0.06190   3.889 0.000101 ***
agecat(40,50]   0.29822    0.06130   4.865 1.15e-06 ***
agecat(50,60]   0.27419    0.06091   4.502 6.76e-06 ***
agecat(60,70]  -0.07492    0.06131  -1.222 0.221714    
agecat(70,80]  -0.35988    0.06722  -5.354 8.65e-08 ***
agecat(80,90]  -1.19689    0.08720 -13.725  < 2e-16 ***
agecat(90,100] -2.36469    0.24188  -9.776  < 2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 2.703 on 41787 degrees of freedom
  (2591 Beobachtungen als fehlend gelöscht)
Multiple R-squared:  0.01586,   Adjusted R-squared:  0.01567 
F-statistic: 84.19 on 8 and 41787 DF,  p-value: < 2.2e-16

→ der Einfluss von Alter ist nicht linear, sondern steigt erst an und sinkt dann wieder

→ Interpretation im Verhältnis zur Referenzgruppe (10-20jährige)

Multiple Regression

Ausgangslage

Häufig gibt es nicht eine, sondern mehrere Variablen, die für uns relevant sind

Oft sind diese Variablen Confounders oder Störfaktoren, die evtl. Einfluss auf unsere abhängige & unsere unabhängige Variable haben

  • Besuch einer guten Schule → bessere Noten im Studium
    • gebildetes / reiches Elternhaus → Besuch einer guten Schule
    • gebildetes / reiches Elternhaus → bessere Noten im Studium

Ausgangslage

  • Störfaktoren verhindern eine kausale Interpretation
    • es bleibt unklar, ob X Y verursacht, da Z auch im Spiel ist
  • unberücksichtigte Faktoren verringern die Güte unserer Vorhersage
    • einzelne Variablen reichen nicht aus, um Y genau vorherzusagen

Ausgangslage

Wir können einfach weitere Prädiktoren hinzufügen, um y zu erklären.

→ jeder Prädiktor hat einen eigenen Koeffizienten

→ die Konstante ist (weiterhin) der Wert, wenn der Wert aller Prädiktoren null ist

→ gemeinsame Variation wird auf Koeffizienten aufgeteilt

\(Y_i = \alpha + \beta_1 X_i1 + \beta_2 X_i2 + ... + \epsilon_i\)

Umsetzung in R

Beispiel: Glück

happy_lm <- lm(happy~hinctnta,data=ess8)
happy_lm

Call:
lm(formula = happy ~ hinctnta, data = ess8)

Coefficients:
(Intercept)     hinctnta  
     6.6711       0.1504  

→ Welche weiteren Einflussfaktoren könnte es geben?

Beispiel: Glück

happy_lm2 <- lm(happy~hinctnta+agea+gndr+health+sclmeet,data=ess8)

z.B.

  • \(agea\): Alter
  • \(gndr\): Gender
  • \(health\): Subjektive Gesundheit
  • \(sclmeet\): How often do you meet with friends?

Beispiel: Glück

summary(happy_lm2)

Call:
lm(formula = happy ~ hinctnta + agea + gndr + health + sclmeet, 
    data = ess8)

Residuals:
    Min      1Q  Median      3Q     Max 
-8.8031 -0.8666  0.1747  1.0969  5.1018 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept)  6.6592700  0.0584089 114.011  < 2e-16 ***
hinctnta     0.1008661  0.0033864  29.786  < 2e-16 ***
agea         0.0099924  0.0005351  18.675  < 2e-16 ***
gndr         0.0960442  0.0178009   5.395 6.88e-08 ***
health      -0.6278477  0.0106665 -58.861  < 2e-16 ***
sclmeet      0.2118415  0.0058797  36.029  < 2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 1.682 on 36117 degrees of freedom
  (8264 Beobachtungen als fehlend gelöscht)
Multiple R-squared:  0.1744,    Adjusted R-squared:  0.1743 
F-statistic:  1526 on 5 and 36117 DF,  p-value: < 2.2e-16

→ auch andere Faktoren haben einen Einfluss

→ der Wert für hinctnta verändert sich, da gemeinsam erklärte Variation aufgeteilt wird

→ Wie interpretieren wir die Werte?

Beispiel: Glück

print_labels(ess8$health)

Labels:
 value      label
     1  Very good
     2       Good
     3       Fair
     4        Bad
     5   Very bad
 NA(a)    Refusal
 NA(b) Don't know
 NA(c)  No answer

Beispiel: Glück

print_labels(ess8$sclmeet)

Labels:
 value                  label
     1                  Never
     2 Less than once a month
     3           Once a month
     4  Several times a month
     5            Once a week
     6   Several times a week
     7              Every day
 NA(a)                Refusal
 NA(b)             Don't know
 NA(c)              No answer

Beispiel: Glück

print_labels(ess8$gndr)

Labels:
 value     label
     1      Male
     2    Female
 NA(a) No answer

Problem bei Geschlecht ist eine lineare Interpretation unangebracht, female ist nicht mehr als male

→ für die Statistik ist Geschlecht binär, kein Spektrum

Beispiel: Glück

Variablen mit wenigen Werten oder ohne Reihenfolge sollten als Faktorvariablen eingebunden werden - sonst interpretiert R sie numerisch

ess8$gndr <- as_factor(ess8$gndr)
happy_lm2 <- lm(happy~hinctnta+agea+gndr+health+sclmeet,data=ess8)

summary(happy_lm2)

Call:
lm(formula = happy ~ hinctnta + agea + gndr + health + sclmeet, 
    data = ess8)

Residuals:
    Min      1Q  Median      3Q     Max 
-8.8030 -0.8665  0.1746  1.0965  5.1019 

Coefficients:
               Estimate Std. Error t value Pr(>|t|)    
(Intercept)    6.755094   0.052390 128.939  < 2e-16 ***
hinctnta       0.100882   0.003386  29.793  < 2e-16 ***
agea           0.009997   0.000535  18.685  < 2e-16 ***
gndrFemale     0.096045   0.017800   5.396 6.87e-08 ***
gndrNo answer  1.051632   0.752485   1.398    0.162    
health        -0.627841   0.010666 -58.865  < 2e-16 ***
sclmeet        0.211822   0.005879  36.028  < 2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 1.682 on 36121 degrees of freedom
  (8259 Beobachtungen als fehlend gelöscht)
Multiple R-squared:  0.1744,    Adjusted R-squared:  0.1743 
F-statistic:  1272 on 6 and 36121 DF,  p-value: < 2.2e-16

Übung

Bearbeiten Sie den ersten Teil der Übungsaufgaben

Vergleiche

Vergleich zwischen Ländern

Szenario: Wir wollen den Einfluss verschiedener Variablen in zwei unterschiedlichen Ländern vergleichen

→ Wir berechnen zwei Regressionen mit gefilterten Datensätzen

happy_de <- lm(happy~hinctnta+agea+gndr+health+sclmeet,
               data=filter(ess8,cntry=="DE"))
happy_es <- lm(happy~hinctnta+agea+gndr+health+sclmeet,
               data=filter(ess8,cntry=="ES"))

Vergleich zwischen Ländern

summary(happy_de)

Call:
lm(formula = happy ~ hinctnta + agea + gndr + health + sclmeet, 
    data = filter(ess8, cntry == "DE"))

Residuals:
    Min      1Q  Median      3Q     Max 
-8.1361 -0.7520  0.1583  0.9970  4.3260 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept)  7.088590   0.203653  34.807  < 2e-16 ***
hinctnta     0.125119   0.011560  10.824  < 2e-16 ***
agea         0.007648   0.001856   4.121 3.90e-05 ***
gndrFemale   0.151610   0.062980   2.407   0.0161 *  
health      -0.531950   0.036888 -14.421  < 2e-16 ***
sclmeet      0.149422   0.023724   6.298 3.54e-10 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 1.582 on 2538 degrees of freedom
  (308 Beobachtungen als fehlend gelöscht)
Multiple R-squared:  0.1594,    Adjusted R-squared:  0.1578 
F-statistic: 96.26 on 5 and 2538 DF,  p-value: < 2.2e-16
summary(happy_es)

Call:
lm(formula = happy ~ hinctnta + agea + gndr + health + sclmeet, 
    data = filter(ess8, cntry == "ES"))

Residuals:
    Min      1Q  Median      3Q     Max 
-7.4794 -0.8923  0.1603  1.0798  3.8302 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept)  7.542539   0.258566  29.171  < 2e-16 ***
hinctnta     0.065621   0.015945   4.115 4.08e-05 ***
agea         0.001564   0.002639   0.593    0.553    
gndrFemale  -0.134370   0.083958  -1.600    0.110    
health      -0.396944   0.049848  -7.963 3.29e-15 ***
sclmeet      0.146325   0.028672   5.103 3.76e-07 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 1.617 on 1497 degrees of freedom
  (455 Beobachtungen als fehlend gelöscht)
Multiple R-squared:  0.0905,    Adjusted R-squared:  0.08746 
F-statistic: 29.79 on 5 and 1497 DF,  p-value: < 2.2e-16

Vergleich zwischen Ländern

Eine Alternative ist die Berechnung sogenannter Interaktionen: Die Beziehung von Variable X1 zur abhängigen Variable Y hängt vom Wert von Variable X2 ab

z.B.: Der Effekt von Kindern im Haushalt (chldm) auf politisches Interesse (polintr) könnte für Frauen und Männer unterschiedlich sein

→ Fokus auf einen oder einige wenige Koeffizienten (→ alle Koeffizienten für Land)

→ Möglichkeit kontinuierliche Variablen zu interagieren (→ Untergruppen z.B. nach Land, Alter, Geschlecht, …)

Vergleich zwischen Ländern

base <- lm(polintr~gndr+chldhm,data=ess8)
interact <- lm(polintr~gndr*chldhm,data=ess8)
summary(base)

Call:
lm(formula = polintr ~ gndr + chldhm, data = ess8)

Residuals:
    Min      1Q  Median      3Q     Max 
-1.7045 -0.7043  0.2955  0.5425  1.5714 

Coefficients:
                Estimate Std. Error t value Pr(>|t|)    
(Intercept)    2.4579035  0.0166048 148.023   <2e-16 ***
gndrFemale     0.2468070  0.0087266  28.282   <2e-16 ***
gndrNo answer -0.0289295  0.3458655  -0.084    0.933    
chldhm        -0.0002013  0.0091306  -0.022    0.982    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.9149 on 44275 degrees of freedom
  (108 Beobachtungen als fehlend gelöscht)
Multiple R-squared:  0.01783,   Adjusted R-squared:  0.01776 
F-statistic: 267.9 on 3 and 44275 DF,  p-value: < 2.2e-16
summary(interact)

Call:
lm(formula = polintr ~ gndr * chldhm, data = ess8)

Residuals:
    Min      1Q  Median      3Q     Max 
-1.7435 -0.6804  0.2565  0.5184  1.5940 

Coefficients: (1 not defined because of singularities)
                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)           2.33036    0.02365  98.532  < 2e-16 ***
gndrFemale            0.47621    0.03154  15.098  < 2e-16 ***
gndrNo answer        -0.05305    0.34566  -0.153    0.878    
chldhm                0.07563    0.01355   5.581 2.41e-08 ***
gndrFemale:chldhm    -0.13872    0.01833  -7.568 3.86e-14 ***
gndrNo answer:chldhm       NA         NA      NA       NA    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.9143 on 44274 degrees of freedom
  (108 Beobachtungen als fehlend gelöscht)
Multiple R-squared:  0.0191,    Adjusted R-squared:  0.01901 
F-statistic: 215.5 on 4 and 44274 DF,  p-value: < 2.2e-16

Vergleich zwischen Koeffizienten

Szenario: Manchmal wollen wir auch die Größe von Koeffizienten vergleichen: Hat z.B. Alter oder Gesundheit einen stärkeren Einfluss?

Regressionskoeffizienten sind pro Einheit der Variable → nicht direkt vergleichbar

→ dafür können wir standardisierte Koeffizienten berechnen, d.h. Werte abhängig von der Standardabweichung der jeweiligen Variable

Vergleich zwischen Koeffizienten

In R brauchen wir dafür ein weiteres Paket: lm.beta mit dem wir lm.beta() auf das Regressionsmodell anwenden

install.packages("lm.beta")
library(lm.beta)
happy_sd <- lm.beta(happy_lm2)
summary(happy_sd)

Call:
lm(formula = happy ~ hinctnta + agea + gndr + health + sclmeet, 
    data = ess8)

Residuals:
    Min      1Q  Median      3Q     Max 
-8.8030 -0.8665  0.1746  1.0965  5.1019 

Coefficients:
               Estimate Standardized Std. Error t value Pr(>|t|)    
(Intercept)    6.755094           NA   0.052390 128.939  < 2e-16 ***
hinctnta       0.100882     0.148885   0.003386  29.793  < 2e-16 ***
agea           0.009997     0.098102   0.000535  18.685  < 2e-16 ***
gndrFemale     0.096045     0.025912   0.017800   5.396 6.87e-08 ***
gndrNo answer  1.051632     0.006683   0.752485   1.398    0.162    
health        -0.627841    -0.312889   0.010666 -58.865  < 2e-16 ***
sclmeet        0.211822     0.177132   0.005879  36.028  < 2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 1.682 on 36121 degrees of freedom
  (8259 Beobachtungen als fehlend gelöscht)
Multiple R-squared:  0.1744,    Adjusted R-squared:  0.1743 
F-statistic:  1272 on 6 and 36121 DF,  p-value: < 2.2e-16

Voraussetzungen für Regressionen

Voraussetzungen für Regressionen

Vier wichtige Annahmen bei Regressionen für korrekte Schätzungen:

  • lineare Beziehung zwischen den Variablen x und y
  • Unabhängigkeit der Variablen vom Fehler → Inklusion relevanter Variablen, keine konfundierenden Variablen
  • gleiche Verteilung der Residuen (‘Homoskedastizität’)
  • multivariate Regression: Unabhängigkeit der Residuen → Überprüfen auf ‘Multikollinearität’

Komplexere Beziehungen

Häufig sind diese Annahmen nicht automatisch gegeben

  • z.B. Covid Zahlen & exponentielles Wachstum
  • z.B. politische Einstellungen
  • z.B. Einkommen
  • z.B. Vorhersage binärer Variablen

→ hierfür können wir entweder spezielle Modelle verwenden (→ fortgeschrittene Statistik) oder versuchen unsere Variablen zu transformieren

Beispiel: politischer Extremismus

Szenario: Manche Variablen sind nicht unbedingt linear - z.B. kann links-rechts für die Ideologie, aber auch für die Extremität stehen

table(ess8$lrscale)

    0     1     2     3     4     5     6     7     8     9    10 
 1463   846  2121  3754  3780 12389  4105  4269  3265   999  1592 

→ Transformation der Variable mit Zentrierung

→ Einbindung des quadratischen Werts

# Transformation
ess8$leftright <- ess8$lrscale-5
table(ess8$leftright)

   -5    -4    -3    -2    -1     0     1     2     3     4     5 
 1463   846  2121  3754  3780 12389  4105  4269  3265   999  1592 
# Quadrierung
ess8$lr2 <- ess8$leftright*ess8$leftright
table(ess8$lr2)

    0     1     4     9    16    25 
12389  7885  8023  5386  1845  3055 

Beispiel: Einkommen, Alter, …

Szenario: Häufig steigen Beziehungen langsam an - z.B. machen 100€ mehr Gehalt bei kleinen Gehältern einen größeren Unterschied als bei hohen oder ein Jahr bei jungen Menschen mehr als bei alten

→ Einbindung als Logarithmus: log(agea)

Beispiel: Protest

Szenario: Auch was wir vorhersagen wollen ist nicht immer linear. z.B. gibt es in der ESS eine binäre Variable zu Protestbeteiligung:

print_labels(ess8$pbldmn)

Labels:
 value      label
     1        Yes
     2         No
 NA(a)    Refusal
 NA(b) Don't know
 NA(c)  No answer

→ Hier wollen wir erklären, ob jemand teilgenommen hat

Wir nennen das das ‘lineare Wahrscheinlichkeitsmodell’ / linear probability model, weil es die Wahrscheinlichkeit für einen Wert 1 schätzt und diese linear ansteigt

Beispiel: Protest

ess8$protest <- ifelse(ess8$pbldmn==1,1,0)
protest_lm1 <- lm(protest ~ agea+gndr+leftright+lr2+eduyrs,data=ess8)

→ Wir interpretieren die vorhergesagten Werte als Wahrscheinlichkeit teilzunehmen

Voraussetzungen für Regressionen

→ Wenn unsere abhängigen oder unabhängigen Variablen nicht den Voraussetzungen für eine Regression entsprechen können wir nach Transformationen suchen, die helfen unsere Variablen einzubinden

  • z.B. Transformation der abhängigen Variable in ‘Dummy’ (0/1) → lineares Wahrscheinlichkeitsmodell
  • z.B. Transformation durch log oder Quadrat
  • z.B. Anpassungen in der Berechnung von statistischer Signifikanz

Übung 2

Bearbeiten Sie den zweiten Teil der Übungsaufgaben

Zusammenfassung

Zusammenfassung

  • multiple Regression als Erweiterung der einfachen linearen Regression
  • Vergleiche
    • zwischen Ländern (Teilung des Datensatzes, Interaktionen)
    • zwischen Variablen (Standardisierung)
  • Voraussetzungen für Regressionen und Möglichkeiten zur Transformation

Aufgabe

Recherchieren Sie bis zur nächsten Stunde (in 2 Wochen - 05.06.) einen Artikel (idealerweise zu Ihrem Thema), der mit Daten aus der European Social Survey arbeitet.

  • Forschungsfrage & Literatur, auf die sich der Artikel bezieht
  • zentrale Konzepte & deren Operationalisierung
  • Analysestrategie

→ Recherche z.B. über Bibliothek oder Google Scholar mit Thema + “European Social Survey”

Nächste Sitzung: Diskussion zu Forschungsfragen

Thema: Diskutieren Sie Ihre Ideen für Forschungsfragen und ihre bisherige Kenntnis über die Literatur mit Kolleg:innen.

  • basierend auf dem von Ihnen herausgesuchten Forschungsartikel