Dapatkah chi square digunakan untuk membandingkan proporsi?

13

Saya telah membaca bahwa uji chi square berguna untuk melihat apakah sampel berbeda secara signifikan dari serangkaian nilai yang diharapkan.

Misalnya, berikut adalah tabel hasil survei mengenai warna favorit orang (n = 15 + 13 + 10 + 17 = 55 total responden):

red,blue,green,yellow

15,13,10,17

Sebuah uji chi square dapat memberitahu saya jika sampel ini berbeda secara signifikan dari hipotesis nol probabilitas yang sama orang menyukai setiap warna.

Pertanyaan: Dapatkah tes dijalankan pada proporsi total responden yang menyukai warna tertentu? Seperti di bawah ini:

red,blue,green,yellow

0.273,0.236,0.182,0.309

Di mana, tentu saja, 0,273 + 0,236 + 0,182 + 0,309 = 1.

Jika uji chi square tidak cocok dalam kasus ini, tes apa yang akan dilakukan? Terima kasih!

Sunting: Saya mencoba @Roman Luštrik menjawab di bawah, dan mendapatkan output berikut, mengapa saya tidak mendapatkan nilai-p dan mengapa R mengatakan "Perkiraan Chi-squared mungkin salah"?

> chisq.test(c(0,0,0,8,6,2,0,0),p = c(0.406197174,0.088746395,0.025193306,0.42041479,0.03192905,0.018328576,0.009190708,0))

    Chi-squared test for given probabilities

data:  c(0, 0, 0, 8, 6, 2, 0, 0) 
X-squared = NaN, df = 7, p-value = NA

Warning message:
In chisq.test(c(0, 0, 0, 8, 6, 2, 0, 0), p = c(0.406197174, 0.088746395,  :
  Chi-squared approximation may be incorrect
hpy
sumber
1
Dalam kasus kedua, apakah Anda menganggap Anda tahu ukuran sampel total? Atau tidak?
kardinal
@ kardinal: ya saya tahu total ukuran sampel.
hpy
3
lalu gandakan proporsi dengan ukuran sampel total untuk berubah menjadi tabel perhitungan, dan terapkan chi-sq. metode yang sesuai dengan contoh pertama Anda.
Aaron
Saya menduga Anda bertanya tentang tes "goodness of fit" (menggunakan chi square). Penggunaannya dijelaskan di bawah ini. Cheers, Tal
Tal Galili

Jawaban:

7

Perbaiki saya jika saya salah, tapi saya pikir ini bisa dilakukan di R menggunakan perintah ini

> chisq.test(c(15,13,10,17))

    Chi-squared test for given probabilities

data:  c(15, 13, 10, 17) 
X-squared = 1.9455, df = 3, p-value = 0.5838

Ini mengasumsikan proporsi masing-masing 1/4. Anda dapat mengubah nilai yang diharapkan melalui argumen p. Misalnya, Anda berpikir orang mungkin lebih suka (karena alasan apa pun) satu warna daripada yang lain.

> chisq.test(c(15,13,10,17), p = c(0.5, 0.3, 0.1, 0.1))

    Chi-squared test for given probabilities

data:  c(15, 13, 10, 17) 
X-squared = 34.1515, df = 3, p-value = 1.841e-07
Roman Luštrik
sumber
2
Saya menduga Anda melihat ini karena jumlah sel yang rendah (beberapa buku yang saya baca menyarankan minimal 5 per sel). Mungkin seseorang yang lebih berpengetahuan tentang hal ini bisa ikut campur?
Roman Luštrik
1
Perhatikan juga bahwa Anda bisa mendapatkan nilai ap jika Anda membuat yang terakhir dari probabilitas Anda lebih dari nol (tetapi peringatan itu tetap ada).
Roman Luštrik
1
Ott & Longnecker (Pengantar metode statistik dan analisis data, edisi ke-5) menyatakan, di halaman 504, bahwa setiap sel harus setidaknya lima, untuk menggunakan perkiraan dengan nyaman.
Roman Luštrik
1
@penyuan: Anda seharusnya sudah menyebutkan bahwa Anda memiliki beberapa nol hitungan. Roman benar, menggunakan Chi-square dalam kasus ini tidak berfungsi karena alasan yang disebutkannya.
Joris Meys
1
@penyuan: Saya menambahkan jawaban yang memberi Anda beberapa opsi.
Joris Meys
6

Menggunakan informasi tambahan yang Anda berikan (karena sebagian dari nilai-nilai tersebut adalah 0), cukup jelas mengapa solusi Anda tidak menghasilkan apa-apa. Untuk satu, Anda memiliki probabilitas yaitu 0, jadi:

  • dalam solusi Henry adalah 0 untuk setidaknya satu iei
  • dalam solusi probabilityislogic adalah 0 untuk setidaknya satu inpi

Yang membuat divisi tidak mungkin. Sekarang mengatakan berarti bahwa tidak mungkin untuk mendapatkan hasil itu. Jika demikian, Anda mungkin juga menghapusnya dari data (lihat komentar @ cardinal). Jika yang Anda maksud sangat tidak mungkin, 'solusi' pertama mungkin untuk meningkatkan peluang 0 itu dengan angka yang sangat kecil.p=0

Diberikan:

X <- c(0,0,0,8,6,2,0,0)
p <- c(0.406197174,0.088746395,0.025193306,0.42041479,0.03192905,0.018328576,0.009190708,0)

Anda bisa melakukannya:

> p2 <- p + 1e-6
> chisq.test(X,p2)

        Pearson's Chi-squared test

data:  X and p2 
X-squared = 24, df = 21, p-value = 0.2931

Tapi ini bukan hasil yang benar. Dalam hal apa pun, seseorang harus menghindari penggunaan uji chi-square dalam kasus-kasus batas ini. Pendekatan yang lebih baik adalah menggunakan pendekatan bootstrap, menghitung statistik uji yang disesuaikan dan membandingkan yang dari sampel dengan distribusi yang diperoleh oleh bootstrap.

Dalam kode R ini bisa (langkah demi langkah):

# The function to calculate the adapted statistic.
# We add 0.5 to the expected value to avoid dividing by 0
Statistic <- function(o,e){
    e <- e+0.5
    sum(((o-e)^2)/e)
}

# Set up the bootstraps, based on the multinomial distribution
n <- 10000
bootstraps <- rmultinom(n,size=sum(X),p=p)

# calculate the expected values
expected <- p*sum(X)

# calculate the statistic for the sample and the bootstrap
ChisqSamp <- Statistic(X,expected)
ChisqDist <- apply(bootstraps,2,Statistic,expected)

# calculate the p-value
p.value <- sum(ChisqSamp < sort(ChisqDist))/n
p.value

Ini memberikan nilai p 0, yang jauh lebih sesuai dengan perbedaan antara yang diamati dan yang diharapkan. Ingat, metode ini menganggap data Anda diambil dari distribusi multinomial. Jika asumsi ini tidak berlaku, nilai-p tidak berlaku juga.

Joris Meys
sumber
1
Anda mungkin mempertimbangkan kembali pernyataan pertama Anda, yang menurut saya tidak benar. Jika untuk beberapa i dan jumlah yang diamati adalah nol (yang lebih baik), maka ini hanya mengurangi menjadi submodel. Efeknya adalah bahwa jumlah derajat kebebasan berkurang satu untuk setiap i sedemikian rupa sehingga p i = 0 . Sebagai contoh, mempertimbangkan pengujian untuk keseragaman mati enam sisi (yang p i = 1 / 6 untuk i 6 ). Tapi, misalkan kita (anehnya) memutuskan untuk mencatat berapa kali angka 1 , ... ,pi=0iipi=0pi=1/6i61,,10muncul. Kemudian, uji chi-square masih berlaku; kami hanya menjumlahkan enam nilai pertama.
kardinal
@ cardinal: Saya baru saja menggambarkan data, di mana nilai yang diharapkan adalah 0 tetapi yang diamati tidak harus. Itulah yang OP berikan kepada kami (meskipun pada pemikiran kedua itu memang terdengar agak tidak realistis). Oleh karena itu menambahkan sedikit ke nilai p untuk membuatnya sangat tidak mungkin bukannya tidak mungkin akan membantu, tetapi meskipun demikian chi-square dalam hal ini tidak valid karena jumlah besar sel tabel dengan jumlah kurang dari 5 (seperti yang ditunjukkan oleh kode). Saya menambahkan pertimbangan dalam jawaban saya, terima kasih untuk pointer.
Joris Meys
ya, saya akan mengatakan jika , tetapi Anda mengamati jumlah untuk sel itu, maka Anda punya masalah yang lebih serius di tangan Anda. :)pi=0
kardinal
4

Tes chi-square baik selama jumlah yang diharapkan besar, biasanya di atas 10 baik-baik saja. di bawah ini cenderung mendominasi tes. Statistik uji pasti diberikan oleh:1E(xi)

ψ=ixilog(xinpi)

Di mana adalah jumlah yang diamati dalam kategori i . i { merah, biru, hijau, kuning } dalam contoh Anda. n adalah ukuran sampel Anda, sama dengan 55 pada contoh Anda. p i adalah hipotesis yang ingin Anda uji - yang paling jelas adalah p i = p j (semua probabilitas sama). Anda dapat menunjukkan bahwa statistik chi-square:xiii{red, blue, green, yellow}n55pipi=pj

χ2=i(xinpi)2npi2ψ

Dalam hal frekuensi yang diamati, kita dapatkan:fi=xin

χ2=nΣi(fi-pi)2

ψ=nifilog(fipi)
χ2=ni(fipi)2pi

(Perhatikan bahwa adalah efektif perbedaan KL antara hipotesis dan nilai-nilai yang diamati). Anda mungkin dapat melihat secara intuitif mengapa ψ lebih baik untuk p i kecil , karena ia memiliki 1ψψpi1piψ

H1H2piψ1ψ2exp(ψ1ψ2)H2H1exp(12χ1212χ22)

H2ψ2=χ22=0

χ22npi<10ψ

probabilityislogic
sumber
1
Saya cukup yakin frekuensi yang diharapkan tidak boleh lebih dari 10. :)
kardinal
@ cardinal - senang karena ini adalah keberatan Anda - karena itu berarti sisa jawaban saya pasti bagus :).
probabilityislogic
Wow, saya harap saya tidak mendapatkan reputasi karena sangat pemilih / pemarah.
kardinal
1
ψ2ψχ2χ22ψ0χ22ψχ2
kardinal
χ22ψ
3

Ya, Anda dapat menguji hipotesis nol: "H0: prop (merah) = prop (biru) = prop (hijau) = prop (kuning) = 1/4" menggunakan uji chi square yang membandingkan proporsi survei (0,273 , ...) dengan proporsi yang diharapkan (1/4, 1/4, 1/4, 1/4)


sumber
Hanya untuk mengonfirmasi, itu juga akan bekerja dengan proporsi yang diharapkan yang tidak setara satu sama lain?
hpy
4
tes tidak akan berarti kecuali Anda tahu ukuran sampel lengkap. Proporsi 1,0 / 0,0 / 0,0 / 0,0 memiliki arti yang sangat berbeda jika mereka berasal dari sampel ukuran 1 sebagai lawan sampel berukuran 100.
Aaron
Ya, saya TIDAK tahu ukuran total sampel.
Hpy
2

Statistik uji untuk uji chi-square Pearson adalah

i=1n(OiEi)2Ei

If you write oi=Oin and ei=Ein to have proportions, where n=i=1nOi is the sample size and i=1nei=1, then the test statistic is is equal to

ni=1n(oiei)2ei

so a test of the significance of the observed proportions depends on the sample size, much as one would expect.

Henry
sumber