Cara Anda melakukan tes chi-squared tidak benar. Ada beberapa masalah. Pertama, bingkai data Anda terlihat seperti ini:
variable frequency
1 0 20
2 1 10
3 2 5
4 3 3
5 4 2
6 5 1
Jadi, ketika Anda berlari mean(df$variable)
, Anda dapatkan 2.5
, yang hanya berarti dari 0:5
. Artinya, tidak tertimbang. Sebagai gantinya, buat variabel Anda seperti ini:
x = rep(0:5, times=c(20, 10, 5, 3, 2, 1))
table(x)
# x
# 0 1 2 3 4 5
# 20 10 5 3 2 1
mean(x)
# [1] 1.02439
The table()
panggilan menunjukkan bahwa kode memberi kita apa yang kita inginkan, dan mean()
memperkirakan lambda dengan benar.
Selanjutnya, perkiraan probabilitas Anda hanya berlaku 5
, tetapi distribusi Poisson pergi hingga tak terbatas. Jadi, Anda perlu memperhitungkan probabilitas nilai-nilai yang tidak Anda miliki dalam dataset Anda. Ini tidak sulit dilakukan, Anda hanya menghitung komplemen:
probs = dpois(0:5, lambda=mean(x))
probs
# [1] 0.359015310 0.367771781 0.188370912 0.064321775 0.016472650 0.003374884
comp = 1-sum(probs)
# [1] 0.0006726867
Terakhir, di R
's chisq.test()
fungsi, x=
dan y=
argumen yang tidak tepat untuk nilai-nilai yang diharapkan dan diamati dalam cara Anda mengatur ini. Untuk satu hal, apa yang Anda sebut "diharapkan" sebenarnya adalah probabilitas (yaitu, output dari dpois()
), untuk membuat nilai-nilai yang diharapkan ini, Anda harus melipatgandakan probabilitas tersebut (dan pastikan untuk memasukkan pujian) dengan jumlah total. Tetapi meskipun begitu, Anda tidak akan menggunakannya untuk itu y=
. Bagaimanapun, Anda tidak benar-benar harus melakukan itu, Anda hanya dapat menetapkan probabilitas untuk p=
argumen. Selain itu, Anda perlu menambahkan a 0
ke vektor nilai yang Anda amati untuk mewakili semua nilai yang mungkin tidak muncul dalam dataset Anda:
chisq.test(x=c(20, 10, 5, 3, 2, 1, 0), p=c(probs, comp))
# Chi-squared test for given probabilities
#
# data: c(20, 10, 5, 3, 2, 1, 0)
# X-squared = 12.6058, df = 6, p-value = 0.04974
#
# Warning message:
# In chisq.test(x = c(20, 10, 5, 3, 2, 1, 0), p = c(probs, comp)) :
# Chi-squared approximation may be incorrect
Pesan peringatan menyarankan agar kami lebih memilih untuk mensimulasikan, jadi kami coba lagi:
chisq.test(x=c(20, 10, 5, 3, 2, 1, 0), p=c(probs, comp), simulate.p.value=TRUE)
# Chi-squared test for given probabilities with simulated p-value
# (based on 2000 replicates)
#
# data: c(20, 10, 5, 3, 2, 1, 0)
# X-squared = 12.6058, df = NA, p-value = 0.07046
Ini mungkin nilai p yang lebih akurat, tetapi menimbulkan pertanyaan tentang bagaimana hal itu harus ditafsirkan. Anda bertanya "Karena nilai-P> 0,05, saya telah menyimpulkan di bawah ini bahwa distribusi variabel mengikuti distribusi Poisson - dapatkah seseorang mengkonfirmasi hal ini?" Dengan menggunakan pendekatan yang benar, kami mencatat bahwa nilai p pertama hanya <.05, tetapi nilai p kedua (disimulasikan) hanya> .05. Meskipun p-value terakhir lebih akurat, saya tidak akan terburu-buru untuk menyimpulkan bahwa data memang berasal dari distribusi Poisson. Berikut adalah beberapa fakta yang perlu diingat: