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 0ke 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: