Mengapa nilai-p berbeda
Ada dua efek yang terjadi:
Karena diskritnya nilai Anda memilih vektor 'paling mungkin terjadi' 0 2 1 1 1. Tetapi ini akan berbeda dari (tidak mungkin) 0 1,25 1,25 1,25 1,25, yang akan memiliki nilai lebih kecil .χ2
Hasilnya adalah bahwa vektor 5 0 0 0 0 tidak dihitung lagi sebagai setidaknya kasus ekstrim (5 0 0 0 0 memiliki dari 0 2 1 1 1). Ini adalah kasus sebelumnya. The dua sisi uji Fisher pada jumlah meja 2x2 kedua kasus dari 5 eksposur berada di pertama atau kelompok kedua sama-sama ekstrem.χ2
Inilah sebabnya mengapa nilai-p hampir berbeda dengan faktor 2. (bukan karena poin berikutnya)
Ketika Anda kehilangan 5 0 0 0 0 sebagai kasus yang sama-sama ekstrim, Anda mendapatkan 1 4 0 0 0 sebagai kasus yang lebih ekstrim daripada 0 2 1 1 1.
Jadi perbedaannya adalah dalam batas nilai (atau nilai-p yang dihitung langsung seperti yang digunakan oleh implementasi R dari uji Fisher yang tepat). Jika Anda membagi kelompok yang terdiri dari 400 menjadi 4 kelompok yang terdiri dari 100, maka kasus yang berbeda akan dianggap lebih atau kurang 'ekstrem' daripada yang lain. 5 0 0 0 0 sekarang kurang 'ekstrem' dari 0 2 1 1 1. Tetapi 1 4 0 0 0 lebih 'ekstrem'.χ2
contoh kode:
# probability of distribution a and b exposures among 2 groups of 400
draw2 <- function(a,b) {
choose(400,a)*choose(400,b)/choose(800,5)
}
# probability of distribution a, b, c, d and e exposures among 5 groups of resp 400, 100, 100, 100, 100
draw5 <- function(a,b,c,d,e) {
choose(400,a)*choose(100,b)*choose(100,c)*choose(100,d)*choose(100,e)/choose(800,5)
}
# looping all possible distributions of 5 exposers among 5 groups
# summing the probability when it's p-value is smaller or equal to the observed value 0 2 1 1 1
sumx <- 0
for (f in c(0:5)) {
for(g in c(0:(5-f))) {
for(h in c(0:(5-f-g))) {
for(i in c(0:(5-f-g-h))) {
j = 5-f-g-h-i
if (draw5(f, g, h, i, j) <= draw5(0, 2, 1, 1, 1)) {
sumx <- sumx + draw5(f, g, h, i, j)
}
}
}
}
}
sumx #output is 0.3318617
# the split up case (5 groups, 400 100 100 100 100) can be calculated manually
# as a sum of probabilities for cases 0 5 and 1 4 0 0 0 (0 5 includes all cases 1 a b c d with the sum of the latter four equal to 5)
fisher.test(matrix( c(400, 98, 99 , 99, 99, 0, 2, 1, 1, 1) , ncol = 2))[1]
draw2(0,5) + 4*draw(1,4,0,0,0)
# the original case of 2 groups (400 400) can be calculated manually
# as a sum of probabilities for the cases 0 5 and 5 0
fisher.test(matrix( c(400, 395, 0, 5) , ncol = 2))[1]
draw2(0,5) + draw2(5,0)
output dari bit terakhir
> fisher.test(matrix( c(400, 98, 99 , 99, 99, 0, 2, 1, 1, 1) , ncol = 2))[1]
$p.value
[1] 0.03318617
> draw2(0,5) + 4*draw(1,4,0,0,0)
[1] 0.03318617
> fisher.test(matrix( c(400, 395, 0, 5) , ncol = 2))[1]
$p.value
[1] 0.06171924
> draw2(0,5) + draw2(5,0)
[1] 0.06171924
Bagaimana itu mempengaruhi kekuatan ketika memisahkan kelompok
Ada beberapa perbedaan karena langkah-langkah yang terpisah dalam tingkat nilai p yang tersedia dan konservatif dari uji eksak Nelayan (dan perbedaan ini mungkin menjadi sangat besar).
juga uji Fisher cocok dengan model (tidak diketahui) berdasarkan data dan kemudian menggunakan model ini untuk menghitung nilai-p. Model dalam contoh ini adalah persis ada 5 individu yang terpapar. Jika Anda memodelkan data dengan binomial untuk grup yang berbeda maka Anda akan mendapatkan lebih dari 5 individu. Ketika Anda menerapkan tes fisher untuk ini, maka beberapa kesalahan akan dipasang dan sisanya akan lebih kecil dibandingkan dengan tes dengan marjinal tetap. Hasilnya adalah tes ini terlalu konservatif, tidak tepat.
Saya menduga bahwa efek pada probabilitas kesalahan tipe I eksperimen tidak akan terlalu bagus jika Anda membagi grup secara acak. Jika hipotesis nol itu benar maka Anda akan menemukan dalam persen dari kasus nilai-p yang signifikan. Untuk contoh ini perbedaannya besar seperti yang ditunjukkan gambar. Alasan utama adalah bahwa, dengan total 5 eksposur, hanya ada tiga tingkat perbedaan absolut (5-0, 4-1, 3-2, 2-3, 1-4, 0-5) dan hanya tiga nilai (dalam kasus dua kelompok 400).α
Yang paling menarik adalah plot probabilitas untuk menolak jika benar dan jika benar. Dalam hal ini level alfa dan diskresi tidak terlalu penting (kami merencanakan tingkat penolakan efektif), dan kami masih melihat perbedaan besar.H 0 H aH0H0Ha
Pertanyaannya tetap apakah ini berlaku untuk semua situasi yang mungkin.
3 kali penyesuaian kode analisis daya Anda (dan 3 gambar):
menggunakan pembatasan binomial untuk kasus 5 orang yang terpapar
Plot probabilitas efektif untuk menolak sebagai fungsi dari alpha yang dipilih. Diketahui untuk uji eksak Fisher bahwa nilai-p tepat dihitung tetapi hanya beberapa level (langkah-langkah) yang terjadi sehingga seringkali tes mungkin terlalu konservatif dalam kaitannya dengan tingkat alfa yang dipilih.H0
Sangat menarik untuk melihat bahwa efeknya jauh lebih kuat untuk case 400-400 (merah) dibandingkan case 400-100-100-100-100 (biru). Jadi kita mungkin memang menggunakan pemisahan ini untuk meningkatkan kekuatan, membuatnya lebih cenderung untuk menolak H_0. (walaupun kami tidak terlalu peduli untuk membuat kesalahan tipe I lebih mungkin, jadi titik melakukan pemisahan ini untuk meningkatkan daya mungkin tidak selalu begitu kuat)
menggunakan binomial tidak terbatas pada 5 individu yang terpapar
Jika kami menggunakan binomial seperti yang Anda lakukan maka tak satu pun dari dua kasus 400-400 (merah) atau 400-100-100-100-100 (biru) memberikan nilai-p yang akurat. Ini karena uji eksak Fisher mengasumsikan total baris dan kolom tetap, tetapi model binomial memungkinkan ini menjadi gratis. Uji Fisher akan 'cocok' dengan jumlah baris dan kolom yang membuat istilah residual lebih kecil dari istilah kesalahan sebenarnya.
apakah peningkatan daya datang dengan biaya?
Jika kita membandingkan probabilitas penolakan ketika benar dan ketika benar (kami berharap nilai pertama rendah dan nilai kedua tinggi) maka kita melihat bahwa memang daya (menolak ketika benar) dapat ditingkatkan tanpa biaya bahwa kesalahan tipe I meningkat.H a H aH0HaHa
# using binomial distribution for 400, 100, 100, 100, 100
# x uses separate cases
# y uses the sum of the 100 groups
p <- replicate(4000, { n <- rbinom(4, 100, 0.006125); m <- rbinom(1, 400, 0.006125);
x <- matrix( c(400 - m, 100 - n, m, n), ncol = 2);
y <- matrix( c(400 - m, 400 - sum(n), m, sum(n)), ncol = 2);
c(sum(n,m),fisher.test(x)$p.value,fisher.test(y)$p.value)} )
# calculate hypothesis test using only tables with sum of 5 for the 1st row
ps <- c(1:1000)/1000
m1 <- sapply(ps,FUN = function(x) mean(p[2,p[1,]==5] < x))
m2 <- sapply(ps,FUN = function(x) mean(p[3,p[1,]==5] < x))
plot(ps,ps,type="l",
xlab = "chosen alpha level",
ylab = "p rejection")
lines(ps,m1,col=4)
lines(ps,m2,col=2)
title("due to concervative test p-value will be smaller\n leading to differences")
# using all samples also when the sum exposed individuals is not 5
ps <- c(1:1000)/1000
m1 <- sapply(ps,FUN = function(x) mean(p[2,] < x))
m2 <- sapply(ps,FUN = function(x) mean(p[3,] < x))
plot(ps,ps,type="l",
xlab = "chosen alpha level",
ylab = "p rejection")
lines(ps,m1,col=4)
lines(ps,m2,col=2)
title("overly conservative, low effective p-values \n fitting marginals makes residuals smaller than real error")
#
# Third graph comparing H_0 and H_a
#
# using binomial distribution for 400, 100, 100, 100, 100
# x uses separate cases
# y uses the sum of the 100 groups
offset <- 0.5
p <- replicate(10000, { n <- rbinom(4, 100, offset*0.0125); m <- rbinom(1, 400, (1-offset)*0.0125);
x <- matrix( c(400 - m, 100 - n, m, n), ncol = 2);
y <- matrix( c(400 - m, 400 - sum(n), m, sum(n)), ncol = 2);
c(sum(n,m),fisher.test(x)$p.value,fisher.test(y)$p.value)} )
# calculate hypothesis test using only tables with sum of 5 for the 1st row
ps <- c(1:10000)/10000
m1 <- sapply(ps,FUN = function(x) mean(p[2,p[1,]==5] < x))
m2 <- sapply(ps,FUN = function(x) mean(p[3,p[1,]==5] < x))
offset <- 0.6
p <- replicate(10000, { n <- rbinom(4, 100, offset*0.0125); m <- rbinom(1, 400, (1-offset)*0.0125);
x <- matrix( c(400 - m, 100 - n, m, n), ncol = 2);
y <- matrix( c(400 - m, 400 - sum(n), m, sum(n)), ncol = 2);
c(sum(n,m),fisher.test(x)$p.value,fisher.test(y)$p.value)} )
# calculate hypothesis test using only tables with sum of 5 for the 1st row
ps <- c(1:10000)/10000
m1a <- sapply(ps,FUN = function(x) mean(p[2,p[1,]==5] < x))
m2a <- sapply(ps,FUN = function(x) mean(p[3,p[1,]==5] < x))
plot(ps,ps,type="l",
xlab = "p rejecting if H_0 true",
ylab = "p rejecting if H_a true",log="xy")
points(m1,m1a,col=4)
points(m2,m2a,col=2)
legend(0.01,0.001,c("400-400","400-100-100-100-100"),pch=c(1,1),col=c(2,4))
title("comparing H_0:p=0.5 \n with H_a:p=0.6")
Mengapa itu mempengaruhi daya
Saya percaya bahwa kunci dari masalah adalah perbedaan nilai hasil yang dipilih untuk menjadi "signifikan". Situasinya adalah lima individu yang terpapar diambil dari 5 kelompok ukuran 400, 100, 100, 100 dan 100. Berbagai pilihan dapat dibuat yang dianggap 'ekstrem'. rupanya kekuatan meningkat (bahkan ketika kesalahan tipe I yang efektif adalah sama) ketika kita memilih strategi kedua.
Jika kita akan membuat sketsa perbedaan antara strategi pertama dan kedua secara grafis. Lalu saya membayangkan sistem koordinat dengan 5 sumbu (untuk kelompok 400 100 100 100 dan 100) dengan titik untuk nilai-nilai hipotesis dan permukaan yang menggambarkan jarak penyimpangan di luar yang probabilitasnya di bawah tingkat tertentu. Dengan strategi pertama permukaan ini adalah sebuah silinder, dengan strategi kedua permukaan ini adalah sebuah bola. Hal yang sama berlaku untuk nilai-nilai sebenarnya dan permukaan di sekitarnya untuk kesalahan. Yang kami inginkan adalah tumpang tindih sekecil mungkin.
Kita dapat membuat grafik aktual ketika kita mempertimbangkan masalah yang sedikit berbeda (dengan dimensi yang lebih rendah).
Bayangkan kita ingin menguji proses Bernoulli dengan melakukan 1000 percobaan. Kemudian kita dapat melakukan strategi yang sama dengan membagi 1000 menjadi kelompok menjadi dua kelompok dengan ukuran 500. Bagaimana ini terlihat (misalkan X dan Y menjadi jumlah di kedua kelompok)?H0:p=0.5
Plot menunjukkan bagaimana kelompok 500 dan 500 (bukan kelompok tunggal 1000) didistribusikan.
Uji hipotesis standar akan menilai (untuk tingkat alfa 95%) apakah jumlah X dan Y lebih besar dari 531 atau lebih kecil dari 469.
Tetapi ini termasuk distribusi X dan Y yang sangat tidak merata.
Bayangkan pergeseran distribusi dari ke . Maka daerah di tepi tidak terlalu penting, dan batas yang lebih melingkar akan lebih masuk akal.H aH0Ha
Namun ini tidak (perlu) benar ketika kita tidak memilih pemisahan kelompok secara acak dan ketika mungkin ada makna untuk kelompok.