Смысл тестирования в том, что вы хотите отклонить свою нулевую гипотезу, а не подтвердить ее. Тот факт, что нет существенной разницы, никоим образом не является доказательством отсутствия существенной разницы. Для этого вам нужно будет определить, какой размер эффекта вы считаете разумным, чтобы отклонить ноль.
Проверить, значительно ли отличается ваш уклон от 1, не так уж сложно, вы просто проверяете, есть ли разница с л о п е - 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. Чтобы получить более точную оценку по 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 наблюдений), если вы хотите быть уверены, что незначимое означает то, что вы хотите средства.