lm-standardfehler

inference
lm
qm2
Published

September 4, 2022

Exercise

Man kann angeben, wie genau eine Schätzung von Regressionskoeffizienten die Grundgesamtheit widerspiegelt. Zumeist wird dazu der Standardfehler (engl. standard error, SE) verwendet.

In dieser Übung untersuchen wir, wie sich der SE als Funktion der Stichprobengröße, \(n\), verhält.

Erstellen Sie dazu folgenden Datensatz:

library(tidyverse)

n <- 2^4

d <-
  tibble(x = rnorm(n = n),  # im Default: mean = 0, sd = 1
         y = x + rnorm(n, mean = 0, sd = .5))

Hier ist das Ergebnis. Uns interessiert v.a. Std. Error für den Prädiktor x:

lm(y ~ x, data = d) %>% 
summary()

Call:
lm(formula = y ~ x, data = d)

Residuals:
    Min      1Q  Median      3Q     Max 
-0.8473 -0.3360  0.0867  0.2621  0.6737 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  -0.1081     0.1136  -0.951    0.358    
x             0.9908     0.1394   7.106 5.29e-06 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.4379 on 14 degrees of freedom
Multiple R-squared:  0.7829,    Adjusted R-squared:  0.7674 
F-statistic:  50.5 on 1 and 14 DF,  p-value: 5.287e-06

Hier haben wir eine Tabelle mit zwei Variablen, x und y, definiert mit n=16.

Verdoppeln Sie die Stichprobengröße 5 Mal und betrachten Sie, wie sich die Schätzgenauigkeit, gemessen über den SE, verändert. Berechnen Sie dazu für jedes n eine Regression mit x als Prädiktor und y als AV!

Bei welcher Stichprobengröße ist SE am kleinsten?

Answerlist

  • \(2^5\)
  • \(2^6\)
  • \(2^7\)
  • \(2^8\)
  • \(2^9\)











Solution

Probieren wir es aus!

Erste Verdopplung, \(n=2^5\):

n <- 2^5

d5 <-
  tibble(x = rnorm(n = n),  # im Default: mean = 0, sd = 1
         y = x + rnorm(n, mean = 0, sd = .5))

lm5 <- lm(y ~ x, data = d5)

lm5 %>% summary()

Call:
lm(formula = y ~ x, data = d5)

Residuals:
    Min      1Q  Median      3Q     Max 
-0.8204 -0.3276 -0.0594  0.3072  0.9153 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  0.08478    0.08132   1.043    0.305    
x            0.98617    0.11198   8.807 8.09e-10 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.4588 on 30 degrees of freedom
Multiple R-squared:  0.7211,    Adjusted R-squared:  0.7118 
F-statistic: 77.56 on 1 and 30 DF,  p-value: 8.087e-10

Man kann sich den Standardfehler komfortabler ausgeben lassen, wenn man das Paket easystats verwendet:

library(easystats)
lm5 %>% 
  parameters()
Parameter Coefficient SE CI CI_low CI_high t df_error p
(Intercept) 0.0847795 0.0813190 0.95 -0.0812961 0.2508551 1.042554 30 0.3054839
x 0.9861727 0.1119792 0.95 0.7574807 1.2148646 8.806752 30 0.0000000

Jetzt mit den anderen Stichprobengrößen:

n <- 2^6

d <-
  tibble(x = rnorm(n = n),  # im Default: mean = 0, sd = 1
         y = x + rnorm(n, mean = 0, sd = .5))

mein_lm <- lm(y ~ x, data = d)

mein_lm %>% 
  parameters
Parameter Coefficient SE CI CI_low CI_high t df_error p
(Intercept) -0.0389530 0.0608241 0.95 -0.1605386 0.0826327 -0.6404197 62 0.5242597
x 0.9073131 0.0624433 0.95 0.7824907 1.0321355 14.5301853 62 0.0000000
n <- 2^7

d <-
  tibble(x = rnorm(n = n),  # im Default: mean = 0, sd = 1
         y = x + rnorm(n, mean = 0, sd = .5))

mein_lm <- lm(y ~ x, data = d)

mein_lm %>% 
  parameters()
Parameter Coefficient SE CI CI_low CI_high t df_error p
(Intercept) 0.0141756 0.0468481 0.95 -0.0785355 0.1068866 0.3025855 126 0.7627048
x 0.9129665 0.0514853 0.95 0.8110786 1.0148544 17.7325697 126 0.0000000
n <- 2^8

d <-
  tibble(x = rnorm(n = n),  # im Default: mean = 0, sd = 1
         y = x + rnorm(n, mean = 0, sd = .5))

mein_lm <- lm(y ~ x, data = d)

mein_lm %>% 
  parameters()
Parameter Coefficient SE CI CI_low CI_high t df_error p
(Intercept) -0.0193540 0.0310668 0.95 -0.0805353 0.0418272 -0.6229816 254 0.5338556
x 0.9076199 0.0320783 0.95 0.8444467 0.9707932 28.2939271 254 0.0000000
n <- 2^9

d <-
  tibble(x = rnorm(n = n),  # im Default: mean = 0, sd = 1
         y = x + rnorm(n, mean = 0, sd = .5))

mein_lm <- lm(y ~ x, data = d)

mein_lm %>% 
  parameters()
Parameter Coefficient SE CI CI_low CI_high t df_error p
(Intercept) 0.0086872 0.0223631 0.95 -0.0352479 0.0526223 0.3884632 510 0.6978354
x 0.9998069 0.0225113 0.95 0.9555805 1.0440332 44.4134720 510 0.0000000

Answerlist

  • Falsch
  • Falsch
  • Falsch
  • Falsch
  • Wahr. Die größte Stichprobe impliziert den kleinsten SE, ceteris paribus.

Categories:

  • inference
  • lm
  • qm2