Untuk melihat nilai-p mana yang benar (jika salah), mari kita ulangi perhitungan untuk data simulasi di mana hipotesis nol benar. Dalam pengaturan ini, perhitungannya adalah kuadrat-terkecil cocok dengan (x, y) data dan hipotesis nol adalah bahwa kemiringannya nol. Dalam pertanyaan ada empat x nilai 1,2,3,4 dan kesalahan yang diperkirakan sekitar 0,7, jadi mari kita memasukkan itu dalam simulasi.
Inilah pengaturannya, ditulis agar dapat dimengerti oleh semua orang, bahkan mereka yang tidak terbiasa dengannya R
.
beta <- c(intercept=0, slope=0)
sigma <- 0.7
x <- 1:4
y.expected <- beta["intercept"] + beta["slope"] * x
Simulasi menghasilkan kesalahan independen, menambahkannya y.expected
, memanggil lm
untuk membuat kecocokan, dan summary
untuk menghitung nilai-p. Meskipun ini tidak efisien, ia sedang menguji kode aktual yang digunakan. Kita masih bisa melakukan ribuan iterasi dalam sedetik:
n.sim <- 1e3
set.seed(17)
data.simulated <- matrix(rnorm(n.sim*length(y.expected), y.expected, sigma), ncol=n.sim)
slope.p.value <- function(e) coef(summary(lm(y.expected + e ~ x)))["x", "Pr(>|t|)"]
p.values <- apply(data.simulated, 2, slope.p.value)
01
h <- hist(p.values, breaks=seq(0, 1, length.out=20))
dan, bagi mereka yang mungkin membayangkan ini tidak cukup seragam, inilah tes chi-squared:
chisq.test(h$counts)
X-squared = 13.042, df = 18, p-value = 0.7891
Nilai p yang besar dalam tes ini menunjukkan hasil ini konsisten dengan keseragaman yang diharapkan. Dengan kata lain, lm
itu benar.
Lalu, dari mana datangnya perbedaan nilai p? Mari kita periksa rumus-rumus yang mungkin digunakan untuk menghitung nilai-p. Bagaimanapun, statistik pengujian akan menjadi
| t | = ∣∣∣∣β^- 0se( β^)∣∣∣∣,
β^β= 0
| t | = ∣∣∣3.050.87378∣∣∣= 3,491
untuk estimasi intersepsi dan
| t | = ∣∣∣- 1.380,31906∣∣∣= 4.321
t42 (jumlah perkiraan koefisien). Mari kita hitung untuk intersep:
pt(-abs(3.05/0.87378), 4-2) * 2
[1] 0.0732
t2H0: β= 0HSEBUAH: β≠ 0 Ini setuju dengan lm
output.
t
pnorm(-abs(3.05/0.87378)) * 2
[1] 0.000482
biglm
tbiglm
lm
0,05 , ambang standar "signifikansi." Itu kesalahan besar.
Beberapa pelajaran yang dapat kita pelajari dari penyelidikan kecil ini adalah:
Jangan gunakan perkiraan yang berasal dari analisis asimptotik (seperti distribusi Normal standar) dengan kumpulan data kecil.
Ketahui perangkat lunak Anda.
pt(-3.491, 2)*2
denganpnorm(-3.491)*2
, misalnya.