Chodzi o to, że chcesz odrzucić hipotezę zerową, a nie ją potwierdzić. Fakt, że nie ma znaczącej różnicy, nie jest w żaden sposób dowodem braku znaczącej różnicy. W tym celu musisz określić, jaki rozmiar efektu uważasz za rozsądny, aby odrzucić wartość null.
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
Teraz powinieneś zdawać sobie sprawę z faktu, że wielkość efektu, dla którego różnica staje się znacząca, jest
> qt(0.975,DF)*seslope
[1] 0.08672358
pod warunkiem, że mamy przyzwoity estymator błędu standardowego na zboczu. Dlatego jeśli zdecydujesz, że istotną różnicę należy wykryć tylko od 0,1, możesz obliczyć niezbędny DF w następujący sposób:
optimize(
function(x)abs(qt(0.975,x)*seslope - 0.1),
interval=c(5,500)
)
$minimum
[1] 6.2593
Pamiętaj, że to dość zależy od oszacowania seslope. Aby uzyskać lepsze oszacowanie na seslope, możesz dokonać ponownego próbkowania swoich danych. Naiwnym sposobem byłoby:
n <- length(y)
seslope2 <-
mean(
replicate(n,{
id <- sample(seq.int(n),1)
model <- lm(y[-id]~x[-id])
coef(summary(model))[2,2]
})
)
umieszczenie seslope2 w funkcji optymalizacji zwraca:
$minimum
[1] 6.954609
Wszystko to powie Ci, że Twój zestaw danych zwróci znaczący wynik szybciej, niż uważasz za niezbędny, i że potrzebujesz tylko 7 stopni swobody (w tym przypadku 9 obserwacji), jeśli chcesz mieć pewność, że nieistotne oznacza to, czego chcesz. znaczy.