2. Seminar: Paneldaten

Fortgeschrittene quantitative Methoden
Wintersemester 2024-2025

Daria Tisch

Erhebung und Auswertung von Paneldaten

Heutige Sitzung

  1. Erhebungsdesigns: Querschnitt-, Trend- und Paneldaten
  2. Fehlerquellen: Datenerhebung vs. Datenauswertung
  3. Kausalanalyse mit Paneldaten
  4. Regressionsmodelle mit Paneldaten

Pflichtlektüre:

  • Elwert, F. and Winship, C. (2014). ‘Endogenous Selection Bias: The Problem of Conditioning on a Collider Variable’. Annual Review of Sociology 40: 31–53.

  • Brüderl, J. (2010). Kausalanalyse mit Paneldaten. In Handbuch der sozialwissenschaftlichen Datenanalyse (pp. 963-994). VS Verlag für Sozialwissenschaften.

Erhebungsdesigns

Erhebungsdesigns vergleichen

  • Querschnittdesign: Daten zu einem Zeitpunkt von verschiedenen Personen

  • Trenddesign: Daten zu mehreren Zeitpunkten, aber unterschiedliche Personen

  • Paneldesign: Daten zu mehreren Zeitpunkten von denselben Personen

Querschnitt-, Trend- und Paneldaten

Welche Fragestellungen bieten sich bei welchem Studiendesign an?

Paneldaten

  • Paneldaten: wiederholte Messung derselben Variablen an denselben Untersuchungseinheiten (Brüderl 2010)
  • Wenn N = 1: Zeitreihendaten
  • Vorteile gegenüber Querschnittsdaten
    • intraindividuelle Veränderungen
    • zeitliche Abfolge von Veränderungen
    • Problem der unbeobachteter Heterogenität abmildern

Wichtige Panelstudien

  • Panel Study of Income Dynamics (PSID)

  • SOEP

  • Understanding Society (UKHLS)

  • Familienpanel (pairfam)

  • FreDa

  • Nationales Bildungspanel (NEPS)

  • Survey of Health, Ageing and Retirement in Europe (SHARE)

  • Arbeitsmarkt und soziale Sicherung (PASS)

  • TwinLife

  • Children of Immigrants (CILS4EU)

  • GESIS Panel (auch offline)

  • SoSci Panel

  • Übersicht: Forschungsdaten in Deutschland

Fehlerquellen: Datenerhebung &. Datenauswertung

Fehlerquellen

M. Groves, Lars Lyberg, Total Survey Error: Past, Present, and Future, Public Opinion Quarterly, Volume 74, Issue 5, 2010, Pages 849–879, https://doi.org/10.1093/poq/nfq065

Potentielle Panelprobleme

Konstanz der Messinstrumente: Semantische Gehalt von Begriffen kann sich über die Jahre ändern (Frageformulierungen)

Ausfallrate / Panelmortalität: Befragte nehmen nicht mehr an der Umfrage teil

  • Ursachen: Fehlende Motivation, Umzug, Tod/Krankheit

  • Problem: systematischer Ausfall

  • Lösungsansatz: Höherer Stichprobenumfang, intensive Panelpflege; Anreize (Incentivierung)

Paneleffekte (reaktive Messungen):

  • Interviewereffekte (Interviewer und Befragte lernen sich über die Wellen kennen)
  • Verhalten des Interviewers weicht von Erstbefragung ab (kennt den Ablauf)
  • Belastungs- und Gewöhnungseffekte

Gütekriterien für Messinstrumente:

  • Validität (Gültigkeit): Messen wir eigentlich das richtige?

  • Reliabilität (Zuverlässigkeit): Wiederholte Messungen müssen zum gleichen Ergebnis führen

    • Voraussetzung für Validität (aber nicht umgekehrt)
  • Objektivität: Unabhängigkeit der Ergebnisse von der jeweiligen Person, die das Messinstrument anwendet

Validität

Externe Validität

  • Auf Grundgesamtheit übertragbar?

  • Validität des Messinstruments wird vorausgesetzt

Interne Validität

  • Eindeutigkeit der Ergebnisinterpretation

  • „Je besser ein Design dazu geeignet ist, die aufgestellten Hypothesen zu prüfen und Alternativerklärungen auszuschließen, umso höher ist die interne Validität“

  • Kausalanalytischer Anspruch von Experimenten (können Störfaktoren eliminieren)

Kausalanalyse mit Paneldaten

Kontrafaktischer Kausalitätsbegriff

X ➯ Y

\[ \Delta_i = Y(X=1, t_0) - Y(X=0, t_0) \] Vergleich eines faktischen und eines kontrafaktischen Outcomes.

Between-Schätzer

X ➯ Y

Between-Schätzer:

\[ \Delta_i^B = Y_i(X=1, t_0) - Y_j(X=0, t_0) \]

Zentrale Annahme: \(Person_i\) und \(Person_j\) unterscheiden sich nur in X

⇨ keine unbeobachtete Heterogenität (unbeobachtete personen- oder zeitspezifische Einflussfaktoren)

Within-Schätzer

X ➯ Y

Within-Schätzer:

\[ \Delta_i^W = Y_i(X=1, t_1) - Y_i(X=0, t_0) \] Zentrale Annahme: \(Person_i\) unterscheidet sich über die Zeit nur in X (keine zeitveränderliche unbeobachtete Heterogenität)

Regressionsmodelle mit Paneldaten

Regressionsmodelle: POLS

POLS (pooled OLS): Wir behandeln die Daten, als wären es eine Reihe von Querschnittsdaten (Personen- und Zeitdimension wird ignoriert)

Annahme: unabhängige Beobachtungen

\[ y_{it} = \alpha + \beta_{POLS} x_{it} + \upsilon_{it}, \]

i: individual

t: time point

POLS

\[ y_{it} = \alpha + \beta_{POLS} x_{it} + \upsilon_{it}, \]

  lz
Predictors Estimates CI p
(Intercept) 5.40 3.83 – 6.96 <0.001
alter 0.04 0.01 – 0.07 0.007
Observations 34
R2 / R2 adjusted 0.207 / 0.182
m_pols <- lm(lz ~ alter, data = df)
tab_model(m_pols)
  lz
Predictors Estimates CI p
(Intercept) 5.40 3.83 – 6.96 <0.001
alter 0.04 0.01 – 0.07 0.007
Observations 34
R2 / R2 adjusted 0.207 / 0.182

POLS, graphisch

# The palette with black:
cbp2 <- c("#000000", 
          "#E69F00", 
          "#56B4E9", 
          "#009E73",
          "#F0E442", 
          "#0072B2", 
          "#D55E00", 
          "#CC79A7")

# Save the residual values
df$predicted <- predict(m_pols)
df$residuals <- residuals(m_pols)

p_pols <- ggplot(df, aes(alter, lz)) +
  geom_point( aes(x = alter, y = lz, shape = id_name, colour = id_name, fill = id_name), 
              size = 2, stroke = 1) +
  geom_smooth(method = 'lm', formula = y ~ x, se = FALSE,
              color  = "cyan") +
  geom_segment(aes(xend = alter, yend = predicted), 
               alpha = .3, color = "deeppink") +
  annotate("text", x = 30, y = 9.9, 
           label = paste0("beta[POLS] ==", round(m_pols$coefficients[2], 3)), 
           parse = TRUE) +
  scale_colour_manual(values = cbp2[-c(1)]) +
  scale_fill_manual(values = cbp2[-c(1)]) +
  scale_shape_manual(values = c(15:18, 25, 20, 21)) +
  ggtitle("POLS") +
  theme_classic() +
  theme(legend.key = element_blank(), 
        legend.title = element_blank(),
        text = element_text(size = 10),
        legend.position = c(1,0), 
        legend.justification = c("right", "bottom"),
        legend.background = element_blank(),
        legend.box.background = element_rect(colour = "black")) 
p_pols

Interpretation: Je höher das Alter einer Person, desto höher ihre Lebenszufriedenheit.

Regressionsmodelle: BE

BE (Between Estimator): vergleicht verschiedene Personen und ignoriert die innerpersonelle Varianz. Modell verwendet nur die personenspezifischen Mittelwerte.

\[ \bar{y_{i}} = \alpha + \beta_{BE} \bar{x_{i}} + \bar{\upsilon_{i}}, \]

  m lz
Predictors Estimates CI p
(Intercept) 5.49 1.79 – 9.19 0.013
m alter 0.04 -0.03 – 0.10 0.208
Observations 7
R2 / R2 adjusted 0.295 / 0.154
df$m_lz <- ave(df$lz, df$id, FUN = mean)
df$m_alter <- ave(df$alter, df$id, FUN = mean)

m_be <- lm(m_lz ~ m_alter, data = df %>% filter(count_within_group ==1))
tab_model(m_be)
  m lz
Predictors Estimates CI p
(Intercept) 5.49 1.79 – 9.19 0.013
m alter 0.04 -0.03 – 0.10 0.208
Observations 7
R2 / R2 adjusted 0.295 / 0.154
library(plm)
m_be2 <- plm(lz ~ alter, data = df,
           index = c("id", "syear"),
           effect = "individual", model = "between")
tab_model(m_be2)
  lz
Predictors Estimates CI p
(Intercept) 5.49 1.79 – 9.19 0.013
alter 0.04 -0.03 – 0.10 0.208
Observations 7
R2 / R2 adjusted 0.295 / 0.154

BE, graphisch

df2 <- df
df2$lz <- df2$m_lz
df2$alter <- df2$m_alter
df2 <- df2[which(df2$syear == 2019), ]

# Save the residual values
m_be <- lm(m_lz ~ m_alter, data = df2)
df2$predicted <- predict(m_be)
df2$residuals <- residuals(m_be)

p_be <- ggplot(df, aes(alter, lz)) +
  geom_point(aes(x = alter, y = lz, shape = id_name), 
              size = 2, stroke = 1, colour = alpha("black", .3), fill = alpha("black", .3)) +
  geom_point(aes(x = m_alter, y = m_lz, shape = id_name, colour = id_name,
                 fill = id_name), 
             size = 2, stroke = 1) +
  geom_smooth(data = df2, 
              method = 'lm', formula = y ~ x, se = FALSE,
              color  = "cyan") +
  geom_segment(data = df2, aes(xend = alter, yend = predicted), 
               alpha = .3, color = "deeppink") +
  annotate("text", x = 30, y = 9.9,
           label = paste0("beta[Between] ==", round(m_be$coefficients[2], 3)), 
           parse = TRUE) +
  scale_colour_manual(values = cbp2[-c(1)]) + 
  scale_fill_manual(values = cbp2[-c(1)]) + 
  scale_shape_manual(values = c(15:18, 25, 20, 21)) +
  ggtitle("BE") +
  theme_classic() +
  theme(legend.key = element_blank(), 
        legend.title = element_blank(),
        text = element_text(size = 14),
        legend.position = c(1,0), 
        legend.justification = c("right", "bottom"),
        legend.background = element_blank(),
        legend.box.background = element_rect(colour = "black"))

p_be  

Regressionsmodelle: Within Schätzer

\[ y_{it} - \bar{y}_{i}= \alpha_i-\alpha_i + \beta_1(x_{it}- \bar{x}_i) + \beta_2(z_{i}- \bar{z}_i) + \epsilon_{it}-\bar{\epsilon}_{i} + u_{i}-\bar{u}_{i}, \]

\[ y_{it} - \bar{y}_{i}= \beta_1(x_{it}- \bar{x}_i) + \epsilon_{it}-\bar{\epsilon}_{i}, \]

Regressionsmodelle: Within Schätzer

\[ y_{it} - \bar{y}_{i}= \alpha_i-\alpha_i + \beta_1(x_{it}- \bar{x}_i) + \beta_2(z_{i}- \bar{z}_i) + \epsilon_{it}-\bar{\epsilon}_{i} + u_{i}-\bar{u}_{i}, \]

\[ y_{it} - \bar{y}_{i}= \beta_1(x_{it}- \bar{x}_i) + \epsilon_{it}-\bar{\epsilon}_{i}, \]

\[ y_{it} = \alpha_i + \beta_{WI} x_{it} + \epsilon_{it}, \]

Within-Schätzer: vergleicht nur verschiedene Zeitpunkte innerhalb derselben Person

Vorgehen: Für jede Person wird ein Dummy hinzugefügt

→ Kontrolle auf zeitkonstante unbeobachtete Heterogenität

Within Schätzer, Anwendung

  lz
Predictors Estimates CI p
(Intercept) -2.42 -15.90 – 11.07 0.716
alter 0.17 -0.06 – 0.40 0.146
id name [17] 1.72 -0.68 – 4.12 0.152
id name [28] -2.14 -5.81 – 1.54 0.243
id name [29] 1.52 -0.88 – 3.92 0.204
id name [38] -1.49 -2.99 – 0.00 0.050
id name [4] 4.72 -3.48 – 12.93 0.248
id name [8] 1.35 -0.30 – 3.01 0.105
Observations 34
R2 / R2 adjusted 0.632 / 0.532

Interpretation: Zunehmendes Alter einer Person geht mit einer zunehmenden Zufriedenheit derselben Person einher. ## Code (by hand)

m_fe <- lm(lz ~ alter + id_name, data = df)
tab_model(m_fe)
  lz
Predictors Estimates CI p
(Intercept) -2.42 -15.90 – 11.07 0.716
alter 0.17 -0.06 – 0.40 0.146
id name [17] 1.72 -0.68 – 4.12 0.152
id name [28] -2.14 -5.81 – 1.54 0.243
id name [29] 1.52 -0.88 – 3.92 0.204
id name [38] -1.49 -2.99 – 0.00 0.050
id name [4] 4.72 -3.48 – 12.93 0.248
id name [8] 1.35 -0.30 – 3.01 0.105
Observations 34
R2 / R2 adjusted 0.632 / 0.532
m_fe2 <- plm(lz ~ alter, data = df,
           index = c("id", "syear"),
           effect = "individual", model = "within")
tab_model(m_fe2)
  lz
Predictors Estimates CI p
alter 0.17 -0.06 – 0.40 0.146
Observations 34
R2 / R2 adjusted 0.080 / -0.168

Within, graphisch

# Lineares regressionsmodell für jede Person i
# und Residuen speichern
for(i in unique(df$id)){
  oo <- which(df$id == i)
  lmt <- lm(lz ~ alter, data = df[oo, ])
  df$predicted[oo] <- predict(lmt)
  df$residuals[oo] <- residuals(lmt)
}


g_wi <- ggplot(df, aes(alter, lz)) +
  geom_point( aes(x = alter, y = lz, shape = id_name, colour = id_name, fill  = id_name), 
              size = 2, stroke = 1) +
  geom_smooth(method = 'lm', formula = y ~ x, se = FALSE, show.legend = FALSE,
              mapping = aes(group = id_name),
              color  = "blue", linetype = "dotted") +
  geom_segment(data = df, aes(xend = alter, yend = predicted), 
               alpha = .3, color = "deeppink") +
  annotate("text", x = 30, y = 9.9, 
           label = paste0("beta[Within] ==", round(m_fe$coefficients[2], 3)), 
           parse = TRUE) +
  scale_fill_manual(values = cbp2[-c(1)]) +
  scale_colour_manual(values = cbp2[-c(1)]) + 
  scale_shape_manual(values = c(15:18, 25, 20, 21)) +
  ggtitle("WI (Fixed Effects)") +
  theme_classic() +
  theme(legend.key = element_blank(), 
        legend.title = element_blank(),
        text = element_text(size = 14),
        legend.position = c(1,0), 
        legend.justification = c("right", "bottom"),
        legend.background = element_blank(),
        legend.box.background = element_rect(colour = "black"))

g_wi

Regressionsmodelle: RE

Random effects Schätzer:

  • wird häugig in Mehrebenenanalysen genutzt
  • Vorteile gegenüber FE:
    • effizienter (kleinere Standardfehler)
    • Effekte von zeitkonstanten Variablen können geschätzt werden
  • Aber: Annahme, dass es keine (zeitkonstante und zeitveränderliche) unbeobachtete Heterogenität gibt

Regressionsmodelle: RE

RE als quasi-demeaned Schätzer (gewichteter Durchschnitt des Between- und Within-Schätzers) \[ y_{it} - \lambda\bar{y}_{i}= (1-\lambda)\alpha_i+\beta_1(x_{it}- \lambda\bar{x}_i) + \epsilon_{it}-\lambda\bar{\epsilon}_{i}, \] mit \[ \hat{\lambda} = 1 - \sqrt{\frac{\sigma^2_\epsilon}{\sigma^2_\epsilon + T\sigma^2_\alpha}} \]
\(\lambda = 0\): POLS

\(\lambda = 1\): FE

\(\sigma^2\) = Varianz

\(T\) = Anzahl an Zeitpunkten

RE Schätzer, Anwendung

  lz
Predictors Estimates CI p
(Intercept) 5.14 2.31 – 7.97 0.001
alter 0.04 -0.01 – 0.09 0.087
Observations 34
R2 / R2 adjusted 0.070 / 0.041
m_re <- plm(lz ~ alter, data = df,
           index = c("id", "syear"),
           effect = "individual", model = "random")
tab_model(m_re)
  lz
Predictors Estimates CI p
(Intercept) 5.14 2.31 – 7.97 0.001
alter 0.04 -0.01 – 0.09 0.087
Observations 34
R2 / R2 adjusted 0.070 / 0.041

Hausman Test

Testet ein „immer“ konsistentes Modell (FE-Modell) gegen ein „manchmal“ konsistentes aber dann effizientes Modell (RE-Modell) (Brüderl, S. 976)

Idee: Man berechnet die standardisierte Differenz der Parameterschätzer. Ist die groß, so weicht das RE-Modell stark vom FE-Modell ab und es sollte das FE-Modell verwendet werden.

\[ H = (\hat{\beta}_{RE} -\hat{\beta}_{FE})'[\hat{V}(\hat{\beta}_{RE}) -\hat{V}(\hat{\beta}_{FE})]^{-1}\hat{\beta}_{RE} -\hat{\beta}_{FE}), \] \(\hat{V}(.)\): geschätzte Varianz-Kovarianzmatrix der Schätzer

Hausman Test, Anwendung

phtest(m_fe2, m_re)

    Hausman Test

data:  lz ~ alter
chisq = 1.2944, df = 1, p-value = 0.2552
alternative hypothesis: one model is inconsistent

Vergleich RE versus FE

RE Modell FE Modell
Unbeobachtete Heterogenität Verzerrt, wenn personenspezifische unbeobachtete Heterogenität vorliegt (Selbstselektion) Nicht verzerrt durch personenspezifische unbeobachteter Heterogenität (within-Vergleich)
Zeitkonstante Variablen Können mitgeschätzt werden (sind aber verzerrt, wenn unbeobachtete Heterogenität vorliegt) Können nicht mitgeschätzt werden, werden aber implizit mitkontrolliert = konsistent
Standardfehler Tendenziell kleiner (da mehr Variation in den Daten genutzt wird) Tendenziell größer (da nur within-Varianz genutzt wird)
Zeitveränderliche Variablen Ohne Veränderung (before-after comparison) kann keine within-Varianz geschätzt werden

Vergleich

  POLS BE FE RE
Predictors Estimates p Estimates p Estimates p Estimates p
(Intercept) 5.395 <0.001 5.490 0.013 5.144 0.001
alter 0.040 0.007 0.037 0.208 0.169 0.146 0.044 0.087
Observations 34 7 34 34
R2 / R2 adjusted 0.207 / 0.182 0.295 / 0.154 0.080 / -0.168 0.070 / 0.041

Zurück zur Kausalanalyse

Drittvariablenkontrolle

Idee von Regressionsverfahren: Kontrolle von Drittvariablenkontrolle, um unbeobachtete Heterogenität zu verringern.

Aber: gezielte Auswahl von Variablen notwendig!

DAGs

Direct acyclic graph (DAG): eine grafische Darstellung der kausalen Annahmen in dem Datengenerierungsprozess

Elwert & Winship (2014)

3 Probleme bei der Drittvariablenkontrolle

  • Overcontrol bias

  • Confounding bias

  • Endogenous selection bias

Overcontrol bias

Elwert & Winship (2014)

Confounding

Elwert & Winship (2014)

Endogenous selection bias

Elwert & Winship (2014)

Ende

  • Dieser Foliensatz profitierte in großen Teilen von ehemaligen Veranstaltungen von Isabel Habicht sowie von

  • https://ruettenauer.github.io/Panel-Data-Analysis/

  • Weitere Literatur:

    • Josef Brüderl and Volker Ludwig: Folien