Hier mal was zum Lernen. Ich habe Deinem Beispiel von oben ein set.seed(4711) vorangesetzt, um es voll reproduzierbar zu machen. Da alle Variablen außer age reine Zufallsvariablen sind, haben Sie keinen Vorhersagewert für age. Das sieht auch lm() so (p = 0,450). Trotzdem findet eine einfache schrittweise Regression darin ein signifikantes Modell mit p = 0,015 und "belegt", dass var1 der richtige von den fünf Pädiktoren ist:
Code: Alles auswählen
set.seed(4711)
data <- data.frame(
age = c(10,15,20,22,10,60,66,70,65,77),
var1 = runif(10, min = 1, max = 2),
var2 = runif(10, min = 1, max = 4),
var3 = runif(10, min = 1, max = 6),
var4 = runif(10, min = 1, max = 3),
var5 = runif(10, min = 1, max = 4)
)
summary(lm(age ~ ., data = data))
#>
#> Call:
#> lm(formula = age ~ ., data = data)
#>
#> Residuals:
#> 1 2 3 4 5 6 7 8
#> -2.0450 -21.5073 -0.3204 -29.6045 -11.0714 31.8487 19.0272 4.0935
#> 9 10
#> 10.0069 -0.4276
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) 64.310 184.191 0.349 0.745
#> var1 -49.023 40.874 -1.199 0.297
#> var2 7.646 16.326 0.468 0.664
#> var3 2.603 12.736 0.204 0.848
#> var4 4.993 20.959 0.238 0.823
#> var5 4.817 15.474 0.311 0.771
#>
#> Residual standard error: 27.2 on 4 degrees of freedom
#> Multiple R-squared: 0.583, Adjusted R-squared: 0.06173
#> F-statistic: 1.118 on 5 and 4 DF, p-value: 0.4699
optimiert <- step(lm(age ~ ., data = data))
#> Start: AIC=68.9
#> age ~ var1 + var2 + var3 + var4 + var5
#>
#> Df Sum of Sq RSS AIC
#> - var3 1 30.91 2990.2 67.005
#> - var4 1 41.98 3001.3 67.042
#> - var5 1 71.68 3031.0 67.141
#> - var2 1 162.28 3121.6 67.435
#> <none> 2959.3 68.901
#> - var1 1 1064.25 4023.5 69.973
#>
#> Step: AIC=67.01
#> age ~ var1 + var2 + var4 + var5
#>
#> Df Sum of Sq RSS AIC
#> - var4 1 14.62 3004.8 65.054
#> - var5 1 41.09 3031.3 65.142
#> - var2 1 170.89 3161.1 65.561
#> <none> 2990.2 67.005
#> - var1 1 2235.27 5225.5 70.587
#>
#> Step: AIC=65.05
#> age ~ var1 + var2 + var5
#>
#> Df Sum of Sq RSS AIC
#> - var5 1 72.91 3077.7 63.294
#> - var2 1 165.02 3169.9 63.589
#> <none> 3004.8 65.054
#> - var1 1 2246.70 5251.5 68.637
#>
#> Step: AIC=63.29
#> age ~ var1 + var2
#>
#> Df Sum of Sq RSS AIC
#> - var2 1 169.95 3247.7 61.831
#> <none> 3077.7 63.294
#> - var1 1 2197.01 5274.8 66.681
#>
#> Step: AIC=61.83
#> age ~ var1
#>
#> Df Sum of Sq RSS AIC
#> <none> 3247.7 61.831
#> - var1 1 3848.8 7096.5 67.648
summary(optimiert)
#>
#> Call:
#> lm(formula = age ~ var1, data = data)
#>
#> Residuals:
#> Min 1Q Median 3Q Max
#> -38.816 -6.569 5.975 9.743 25.866
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) 133.35 30.50 4.372 0.00238 **
#> var1 -61.32 19.91 -3.079 0.01514 *
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 20.15 on 8 degrees of freedom
#> Multiple R-squared: 0.5424, Adjusted R-squared: 0.4851
#> F-statistic: 9.481 on 1 and 8 DF, p-value: 0.01514
Soviel nur um zu verdeutlichen, welchen Unsinn das Herumprobieren mit Prädiktoren fördert. Stell Dir nur mal vor, das wären nicht offensichtliche Zufallszahlen, sondern die Ergebnisse einer Pilotstudie. Das könnte ganz leicht zur Folge haben, dass die Hauptstudie jetzt mit Aufwand var1 untersucht, obwohl var1 nun wirklich gar nichts taugt.
LG,
Bernhard