Titik pengujian adalah bahwa Anda ingin menolak hipotesis nol Anda, bukan mengkonfirmasinya. Fakta bahwa tidak ada perbedaan yang signifikan, sama sekali bukan bukti dari tidak adanya perbedaan yang signifikan. Untuk itu, Anda harus menentukan ukuran efek apa yang Anda anggap wajar untuk menolak nol.
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
Sekarang Anda harus menyadari fakta bahwa ukuran efek yang menjadi perbedaan signifikan adalah
> qt(0.975,DF)*seslope
[1] 0.08672358
asalkan kita memiliki penduga yang layak untuk kesalahan standar pada lereng. Oleh karena itu, jika Anda memutuskan bahwa perbedaan yang signifikan hanya terdeteksi dari 0,1, Anda dapat menghitung DF yang diperlukan sebagai berikut:
optimize(
function(x)abs(qt(0.975,x)*seslope - 0.1),
interval=c(5,500)
)
$minimum
[1] 6.2593
Pikiran Anda, ini sangat tergantung pada perkiraan seslope. Untuk mendapatkan perkiraan yang lebih baik pada seslope, Anda bisa melakukan resampling data Anda. Cara yang naif adalah:
n <- length(y)
seslope2 <-
mean(
replicate(n,{
id <- sample(seq.int(n),1)
model <- lm(y[-id]~x[-id])
coef(summary(model))[2,2]
})
)
menempatkan seslope2 di fungsi optimisasi, mengembalikan:
$minimum
[1] 6.954609
Semua ini akan memberi tahu Anda bahwa dataset Anda akan mengembalikan hasil yang signifikan lebih cepat dari yang Anda anggap perlu, dan bahwa Anda hanya perlu 7 derajat kebebasan (dalam hal ini 9 pengamatan) jika Anda ingin memastikan bahwa non-signifikan berarti apa yang Anda inginkan cara.