Der Sinn des Testens besteht darin, dass Sie Ihre Nullhypothese ablehnen und nicht bestätigen möchten. Die Tatsache, dass es keinen signifikanten Unterschied gibt, ist in keiner Weise ein Beweis für das Fehlen eines signifikanten Unterschieds. Dazu müssen Sie festlegen, welche Effektgröße Sie für sinnvoll halten, um die Null zurückzuweisen.
s l o p e - 1
set.seed(20); y = rnorm(20); x = y + rnorm(20, 0, 0.2)
model <- lm(y~x)
coefx <- coef(summary(model))[2,1]
seslope <- coef(summary(model))[2,2]
DF <- model$df.residual
# normal test
p <- (1 - pt(coefx/seslope,DF) )*2
# test whether different from 1
p2 <- (1 - pt(abs(coefx-1)/seslope,DF) )*2
Nun sollten Sie sich der Tatsache bewusst sein, dass die Effektgröße, für die ein Unterschied signifikant wird, ist
> qt(0.975,DF)*seslope
[1] 0.08672358
vorausgesetzt, wir haben einen anständigen Schätzer für den Standardfehler auf der Steigung. Wenn Sie also entscheiden, dass ein signifikanter Unterschied erst ab 0,1 erkannt werden soll, können Sie den erforderlichen DF wie folgt berechnen:
optimize(
function(x)abs(qt(0.975,x)*seslope - 0.1),
interval=c(5,500)
)
$minimum
[1] 6.2593
Wohlgemerkt, das ist ziemlich abhängig von der Schätzung der Seslope. Um eine bessere Schätzung für Seslope zu erhalten, können Sie Ihre Daten erneut abtasten. Ein naiver Weg wäre:
n <- length(y)
seslope2 <-
mean(
replicate(n,{
id <- sample(seq.int(n),1)
model <- lm(y[-id]~x[-id])
coef(summary(model))[2,2]
})
)
Wenn Sie seslope2 in die Optimierungsfunktion einfügen, wird Folgendes zurückgegeben:
$minimum
[1] 6.954609
All dies zeigt Ihnen, dass Ihr Datensatz schneller ein signifikantes Ergebnis liefert, als Sie es für notwendig halten, und dass Sie nur 7 Freiheitsgrade (in diesem Fall 9 Beobachtungen) benötigen, wenn Sie sicher sein möchten, dass Nicht-Signifikant bedeutet, was Sie wollen meint.