Сенс тестування полягає в тому, що ви хочете відхилити свою нульову гіпотезу, а не підтверджувати її. Те, що суттєвої різниці немає, жодним чином не є доказом відсутності суттєвої різниці. Для цього вам доведеться визначити, який розмір ефекту ви вважаєте розумним для відхилення нуля.
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
Тепер вам слід знати про те, що розмір ефекту, для якого різниця стає значною, є
> qt(0.975,DF)*seslope
[1] 0.08672358
за умови, що у нас є гідний оцінювач стандартної помилки на схилі. Отже, якщо ви вирішите, що значну різницю слід виявити лише від 0,1, ви можете обчислити необхідний коефіцієнт DF таким чином:
optimize(
function(x)abs(qt(0.975,x)*seslope - 0.1),
interval=c(5,500)
)
$minimum
[1] 6.2593
Пам’ятайте, це досить залежить від оцінки сесоли. Щоб отримати кращу оцінку щодо seslope, ви можете зробити перекомпонування даних. Наївним способом було б:
n <- length(y)
seslope2 <-
mean(
replicate(n,{
id <- sample(seq.int(n),1)
model <- lm(y[-id]~x[-id])
coef(summary(model))[2,2]
})
)
помістивши seslope2 у функцію оптимізації, повертає:
$minimum
[1] 6.954609
Все це скаже вам, що ваш набір даних поверне вагомий результат швидше, ніж ви вважаєте за потрібне, і що вам потрібно лише 7 ступенів свободи (у цьому випадку 9 спостережень), якщо ви хочете бути впевнені, що несуттєве означає те, що ви хочете засоби.