Übungsblatt 8

Effektgrößen und Stichprobenumfangsplanung bei der ELR und MLR

  1. Im Übungsblatt 6 haben Sie mit dem Datensatz „Beziehungen.csv” eine Regressionsanalyse zur Vorhersage der Dauer von Beziehungen aus der Altersdifferenz der beiden Partner*innen durchgeführt. Der Output wurde als Objekt gespeichert, das wir im Folgenden „fit” nennen.

    Ermitteln Sie in R die Schätzwerte und Konfidenzintervalle für die unbekannten Effektgrößen \(\beta_{z}\) und \(\rho^{2}\). Für das KI für \(\rho^{2}\) können Sie die Funktion ci.R2() aus dem MBESS package verwenden: ci.R2(R2 = r-quadrat, p = Anzahl der Prädiktoren, N = Stichprobengröße). Für den Schätzwert und das KI für \(\beta_{z}\) müssen die Variablen mithilfe der Funktion scale() z-standardisiert werden. Diese kann direkt in der lm-Funktion angewandt werden: fit2 <- lm(scale(Beziehungsdauer) ~ scale(Altersdifferenz), data = Daten)

    Interpretieren Sie jeweils die Konfidenzintervalle für \(\beta_{z}\) und \(\rho^{2}\).

    Schätzwerte:

    Daten <- read.csv2("Beziehungen.csv")
    fit2 <- lm(scale(Beziehungsdauer) ~
    scale(Altersdifferenz), data = Daten)
    
    ## Schätzwerte für beta_z und rho^2
    summary(fit2)
    
    Call:
    lm(formula = scale(Beziehungsdauer) ~ scale(Altersdifferenz), 
        data = Daten)
    
    Residuals:
         Min       1Q   Median       3Q      Max 
    -0.71590 -0.14417  0.00337  0.14691  0.67518 
    
    Coefficients:
                             Estimate Std. Error t value Pr(>|t|)    
    (Intercept)             1.560e-16  7.071e-03     0.0        1    
    scale(Altersdifferenz) -9.747e-01  7.075e-03  -137.8   <2e-16 ***
    ---
    Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
    
    Residual standard error: 0.2236 on 998 degrees of freedom
    Multiple R-squared:   0.95, Adjusted R-squared:   0.95 
    F-statistic: 1.898e+04 on 1 and 998 DF,  p-value: < 2.2e-16

    Konfidenzintervall für \({\ \beta}_{z}\):

    ## KI für beta_z
    confint(fit2)
                                2.5 %     97.5 %
    (Intercept)            -0.0138765  0.0138765
    scale(Altersdifferenz) -0.9885862 -0.9608193

    Wir gehen davon aus, dass die Korrelation zwischen der Altersdifferenz und der Beziehungsdauer in der Population zwischen -0.96 und -0.99 liegt.

    Alternativ: Wir gehen davon aus, dass in der Population die durchschnittliche Beziehungsdauer um 0.96 bis 0.99 Standardabweichungen sinkt, falls sich die Altersdifferenz um eine Standardabweichung erhöht.

    Konfidenzintervall für \(\rho^{2}\):

    ## KI für rho^2
    library(MBESS)
    ci.R2(R2 = 0.95, p = 1, N = 1000)
    $Lower.Conf.Limit.R2
    [1] 0.9435282
    
    $Prob.Less.Lower
    [1] 0.025
    
    $Upper.Conf.Limit.R2
    [1] 0.9556628
    
    $Prob.Greater.Upper
    [1] 0.025

    Wir gehen davon aus, dass der Anteil an der Gesamtvarianz der Beziehungsdauer in der Population, der durch die Altersdifferenz erklärt werden kann, zwischen 94.35 und 95.57% liegt.

  2. Berechnen Sie mit R den Mindeststichprobenumfang für den Hypothesentest einer ELR für die Hypothesen

    \[ \begin{align*} H_{0}:\beta = 0 \\ H_{1}:\beta \neq 0 \end{align*} \]

    Gehen Sie von einer Power von \(1 - \beta = 0.8\) und einer Irrtumswahrscheinlichkeit von \(\alpha = \ 0.005\) aus. Der Mindesteffekt soll \(\rho^{2}\ = \ 0.1\) betragen. Sie brauchen dafür die Funktion pwr.f2.test() aus dem Package “pwr”.

    \[f^{2} = \frac{\rho^{2}}{1 - \rho^{2}} = \frac{0.1}{0.9} = \frac{1}{9} \approx 0.11\]

    library(pwr)
    pwr.f2.test(u = 1, f2 = 0.11, sig.level = 0.005, power = 0.8)
    
         Multiple regression power calculation 
    
                  u = 1
                  v = 123.0059
                 f2 = 0.11
          sig.level = 0.005
              power = 0.8

    Da \(\nu\) die Anzahl der Freiheitsgrade angibt, die mindestens benötigt werden, und \(\nu\) = n – 2 ist, müssen wir zu \(\nu\) noch 2 hinzuaddieren: 123.0059 + 2 = 125.0059.

    Insgesamt sollten also (aufgerundet) 126 Personen erhoben werden.

  3. BONUS: Ziehen Sie in R jeweils eine Stichprobe mit n1 = 50 und n2 = 100.000 basierend aus dem statistischen Modell: \(Y_{i} = 10 + 2X_{i} + \ \varepsilon_{i}\), \(\varepsilon_{i}\ \sim\ N(0,4)\). Ziehen Sie dafür für die X-Werte mit dem Befehl runif() gleichverteilte Zufallszahlen zwischen 5 und 25. Simulieren Sie die Werte für \(\varepsilon_{i}\) mit dem Befehl rnorm(). Speichern Sie anschließend die Stichproben in einem Dataframe ab. Führen Sie vor der Simulation den Befehl set.seed(1) aus, um dieselben Zufallszahlen wie später im Lösungsblatt zu erhalten.

    ## Simulation
    ## Setze Seed
    set.seed(1)
    ## Simuliere x-Werte
    x1 <-  runif(50,5,25)
    x2 <-  runif(100000,5,25)
    
    ## Simuliere Fehlerterme
    eps1 <- rnorm(50,0,2)
    eps2 <- rnorm(100000,0,2)
    
    ## Berechne y-Werte
    y1 <- 10 + 2*x1 + eps1
    y2 <- 10 + 2*x2 + eps2
    
    ## Stichprobendatensätze erstellen
    Stichprobe1 <- data.frame(x = x1, y = y1)
    Stichprobe2 <- data.frame(x = x2, y = y2)
    1. Erstellen Sie für beide Stichproben das Streudiagramm.

      plot(Stichprobe1$x, Stichprobe1$y)

      plot(Stichprobe2$x, Stichprobe2$y)

    2. Bestimmen Sie für beide Stichproben die 95%-Konfidenzintervalle der Koeffizienten \(\alpha\) und \(\beta\) und vergleichen Sie diese mit den Werten für \(\alpha\) und \(\beta\) aus dem statistischen Modell.

      fit_1 <- lm(y ~ x, data = Stichprobe1)
      fit_2 <- lm(y ~ x, data = Stichprobe2)
      
      confint(fit_1)
                     2.5 %    97.5 %
      (Intercept) 7.189840 10.601337
      x           1.930984  2.137068
      confint(fit_2)
                     2.5 %    97.5 %
      (Intercept) 9.952609 10.021589
      x           1.998900  2.003192

      Sowohl für \(\alpha\) als auch \(\beta\) enthalten die Konfidenzintervalle beider Stichproben die wahren Werte aus dem Modell. Dabei ist das KI für die Stichprobe 1 aufgrund des geringeren Stichprobenumfangs breiter.

      Bemerkung: Würde man die Simulation für Stichproben der gleichen Größe sehr oft wiederholen, würde man erwarten, dass das 95%-Konfidenzintervall für \(\beta\) in etwa fünf Prozent der Simulationsdurchgänge das wahre \(\beta\) nicht enthält (analog für \(\alpha\))

  4. Geben Sie alle Effektgrößen an, die Sie im Rahmen der multiplen linearen Regression kennengelernt haben.

    \[\ \beta_{z_{j}},\ \rho_{j}^{2},\ \rho^{2}\]

  5. Sie betrachten ein multiples lineares Regressionsmodell mit zwei Prädiktoren.

    1. Wie groß muss die Stichprobe sein, damit der statistische Hypothesentest mit \(\alpha = 0.005\) für die Hypothesen

      \[ \begin{align*} H_{0}:\ \beta_{1} = 0 \\ H_{1}:\ \beta_{1} \neq 0 \end{align*} \]

      bei einem \(\rho_{1}^{2} = 0.05\) und einem \(\rho^{2} = 0.1\) eine Power von \(1 - \beta = 0.8\) aufweist?
      Hinweis: Verwenden Sie die Funktion pwr.f2.test() aus dem pwr package (mit u = 1).

      Berechnung von \(f_{1}^{2}\): \[f_{1}^{2} = \frac{\rho_{1}^{2}}{1 - \rho^{2}} = \frac{0.05}{1 - 0.1} \approx 0.06\]

      Berechnung der Stichprobengröße:

      library(pwr)
      ## Stichprobenplanung einzelnes beta_j
      pwr.f2.test(u = 1, f2 = 0.06, sig.level = 0.005, power = 0.8)
      
           Multiple regression power calculation 
      
                    u = 1
                    v = 223.8409
                   f2 = 0.06
            sig.level = 0.005
                power = 0.8

      Es müssen also wegen \(\nu = n - k - 1 = n - 3\) aufgerundet 227 Personen erhoben werden.

    2. Wie groß muss die Stichprobe sein, damit der statistische Hypothesentest mit \(\alpha = 0.005\) für die Hypothesen

      \[ \begin{align*} H_{0}&:\ \beta_{1} = \beta_{2} = 0 \\ H_{1}&:\ \beta_{1} \neq 0 \text{ oder } \beta_{2} \neq 0 \end{align*} \]

      bei einem \(\rho^{2} = 0.1\) eine Power von \(1 - \beta = 0.8\) aufweist?
      Hinweis: Verwenden Sie die Funktion pwr.f2.test() aus dem pwr package (mit u = Anzahl der Prädiktoren).

      Berechnung von \(f^{2}\): \[f^{2} = \frac{\rho^{2}}{1 - \rho^{2}} = \frac{0.1}{1 - 0.1} \approx 0.11\]

      ## Stichprobenplanung Omnibustest
      pwr.f2.test(u = 2, f2 = 0.11, sig.level = 0.005, power = 0.8)
      
           Multiple regression power calculation 
      
                    u = 2
                    v = 144.6068
                   f2 = 0.11
            sig.level = 0.005
                power = 0.8

      Es müssen also wegen \(\nu = n - k - 1 = n - 3\) aufgerundet 148 Personen erhoben werden.

  6. Sie wollen auf Basis der Daten der PISA-Studie von 2012 untersuchen, wie die folgenden Variablen mit der Matheleistung deutscher Schüler zusammenhängen:

    • Interesse an Mathematik
    • Motivation in Bezug auf Mathematik
    • Selbstvertrauen in Bezug auf Mathematik
    • Lernaufwand für Mathematik
    • Angst vor Mathematik
    • wahrgenommene Unterstützung durch den Mathelehrer
    • Zugehörigkeitsgefühl in der Schule
    • Häufigkeit des Zuspätkommens in der Schule
    • Zeit, die pro Tag mit Internet-Surfen verbracht wird
    • Zeit, die pro Tag in sozialen Netzwerken verbracht wird
    • Bildung der Eltern
    • Anzahl der Bücher zu Hause
    • Lernressourcen zu Hause
    • Sozioökonomischer Status (SES)

    Laden Sie hierzu den PISA-Datensatz von Moodle herunter und speichern Sie ihn in ein Objekt „Daten”. Sie können davon ausgehen, dass die Modellannahmen erfüllt sind.

    Daten <- read.csv2("data/Pisa.csv")
    1. Für welche Prädiktoren ergeben sich die vier größten Schätzwerte für \(\beta_{z_{j}}\) (im Betrag)?

      Hinweise
      1. Bevor Sie die Variablen standardisieren, müssen sie Beobachtungen mit fehlenden Werten aus dem Datensatz entfernen:

        Daten_komplett <- Daten[complete.cases(Daten), ]

      2. Um alle Variablen im Datensatz zu standardisieren, können Sie die Funktion scale() auf den kompletten Datensatz anwenden:

        Daten_z <- data.frame(scale(Daten_komplett))

      3. Um in die lm()-Funktion nicht alle Prädiktoren einzeln eintippen zu müssen, können Sie einen Punkt eingeben:

        fit <- lm(Matheleistung ~ ., data = Daten_z)

        Mit dem Punkt spezifizieren Sie, dass Sie alle Variablen aus dem Datensatz (bis auf das Kriterium) als Prädiktoren in das Modell aufnehmen wollen.

      ## Beobachtungen mit fehlenden Werten entfernen
      Daten_komplett <- Daten[complete.cases(Daten), ]
      
      ## Alternative
      Daten_komplett <- na.omit(Daten)
      
      ## Verbleibende Stichprobengröße
      nrow(Daten_komplett)
      [1] 1250
      ## z-Standardisierung aller Variablen
      Daten_z <- data.frame(scale(Daten_komplett))
      
      ## Berechnung der Schätzwerte und Konfidenzintervalle für beta_z_j
      fit <- lm(Matheleistung ~ ., data = Daten_z)
      summary(fit)
      
      Call:
      lm(formula = Matheleistung ~ ., data = Daten_z)
      
      Residuals:
          Min      1Q  Median      3Q     Max 
      -2.8714 -0.4580  0.0344  0.4799  1.9854 
      
      Coefficients:
                               Estimate Std. Error t value Pr(>|t|)    
      (Intercept)            -9.097e-15  2.079e-02   0.000 1.000000    
      Zuspaetkommen          -4.355e-02  2.158e-02  -2.018 0.043824 *  
      Buecher_Zuhause         1.922e-01  2.518e-02   7.633 4.58e-14 ***
      Zeit_Soziale_Netzwerke -5.367e-02  2.599e-02  -2.065 0.039156 *  
      Zeit_Internetsurfen    -3.642e-02  2.595e-02  -1.404 0.160693    
      Angst                  -2.049e-01  2.505e-02  -8.180 6.96e-16 ***
      Zugehoerigkeitsgefuehl -4.420e-02  2.196e-02  -2.013 0.044332 *  
      SES                     2.340e-01  4.440e-02   5.271 1.60e-07 ***
      Lernresourcen           2.465e-02  2.370e-02   1.040 0.298510    
      Motivation             -3.385e-02  2.828e-02  -1.197 0.231574    
      Interesse               9.835e-03  3.080e-02   0.319 0.749554    
      Selbstvertrauen         3.914e-01  2.413e-02  16.218  < 2e-16 ***
      Lernaufwand            -4.217e-02  2.449e-02  -1.722 0.085310 .  
      UnterstuetzungLehrer   -7.399e-02  2.232e-02  -3.315 0.000943 ***
      BildungEltern          -6.496e-02  3.922e-02  -1.656 0.097903 .  
      ---
      Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
      
      Residual standard error: 0.7351 on 1235 degrees of freedom
      Multiple R-squared:  0.4657, Adjusted R-squared:  0.4597 
      F-statistic:  76.9 on 14 and 1235 DF,  p-value: < 2.2e-16

      Selbstvertrauen in Bezug auf Mathematik: bz Selbstvertrauen = 0.391

      Anzahl der Bücher zu Hause: bz Bücher = 0.192

      Angst vor Mathematik: bz Angst = -0.205

      SES: bz SES = 0.234

    2. Berechnen Sie ein 95%-Konfidenzintervall für \(\beta_{z_{SES}}\ \) und interpretieren Sie dieses. Beziehen Sie Stellung zu der Aussage, dass der Zusammenhang zwischen SES und der Matheleistung dadurch erklärt werden kann, dass Eltern mit einem höheren SES einfach gebildeter sind und diese Bildung an ihre Kinder weitergeben (z.B. durch Erziehung oder Vererbung).

      confint(fit)
                                   2.5 %       97.5 %
      (Intercept)            -0.04078919  0.040789186
      Zuspaetkommen          -0.08589273 -0.001207649
      Buecher_Zuhause         0.14277991  0.241572556
      Zeit_Soziale_Netzwerke -0.10467042 -0.002673695
      Zeit_Internetsurfen    -0.08732138  0.014485731
      Angst                  -0.25404273 -0.155761335
      Zugehoerigkeitsgefuehl -0.08727241 -0.001122124
      SES                     0.14691707  0.321137859
      Lernresourcen          -0.02184400  0.071136632
      Motivation             -0.08932881  0.021633329
      Interesse              -0.05059223  0.070261263
      Selbstvertrauen         0.34406604  0.438764980
      Lernaufwand            -0.09021241  0.005873029
      UnterstuetzungLehrer   -0.11778537 -0.030201240
      BildungEltern          -0.14189167  0.011981388

      Wir gehen davon aus, dass sich die durchschnittliche Matheleistung um 0.147 bis 0.321 Standardabweichungen erhöht, falls sich der SES um eine Standardabweichung erhöht und alle anderen Prädiktoren gleich bleiben.

      Prinzipiell sind hier (ohne zusätzliche Annahmen) keine kausalen Schlüsse möglich. Aber auch wenn es sich um Daten aus einem Experiment handelt würde: Die Variable Bildung wurde als Prädiktor mit in das Modell aufgenommen. Das heißt bei einem \(\beta_{z_{SES}} \neq 0\), dass sich zwei Personen mit unterschiedlichem SES im Mittel in der Matheleitung unterscheiden, auch wenn deren Eltern den gleichen Bildungsgrad aufweisen. Der SES hängt also über den Effekt der Bildung der Eltern hinaus mit der Matheleistung zusammen.

    3. Wie viel Varianz in der Matheleistung können die Prädiktoren gemeinsam erklären? Berechnen Sie ein 95%-Konfidenzintervall für die entsprechende Effektgröße. (Hinweis: Gleiche R-Funktion wie bei der ELR.)

      ## Berechnung des Konfidenzintervalls für rho^2
      library(MBESS)
      ci.R2(R2 = 0.4657, conf.level = 0.95, N = 1250, p = 14)
      $Lower.Conf.Limit.R2
      [1] 0.4183962
      
      $Prob.Less.Lower
      [1] 0.025
      
      $Upper.Conf.Limit.R2
      [1] 0.5000534
      
      $Prob.Greater.Upper
      [1] 0.025

      Wir gehen davon aus, dass alle Prädiktoren zusammen 41.84 bis 50.00% der Varianz der Matheleistung erklären.