ทำไมค่า p แตกต่างกัน
มีเอฟเฟกต์สองอย่างเกิดขึ้น:
เนื่องจากความแตกต่างของค่าที่คุณเลือก 'น่าจะเกิดขึ้นมากที่สุด' 0 2 1 1 1 เวกเตอร์ แต่นี้จะแตกต่างจาก (เป็นไปไม่ได้) 0 1.25 1.25 1.25 1.25 ซึ่งจะมีขนาดเล็กคุ้มค่าχ2
ผลที่ได้คือเวกเตอร์ 5 0 0 0 0 ไม่ได้ถูกนับอีกต่อไปเพราะอย่างน้อยกรณีสุดโต่ง (5 0 0 0 0 0 มีขนาดเล็กกว่ามากกว่า 0 2 1 1 1) นี่เป็นกรณีก่อน การทดสอบฟิชเชอร์สองด้านในตาราง 2x2 นับทั้งสองกรณีของการเปิดรับแสง 5 ครั้งที่อยู่ในกลุ่มแรกหรือกลุ่มที่สองอย่างสุดขั้วเท่ากันχ2
นี่คือสาเหตุที่ค่า p แตกต่างกันเกือบเป็น 2 เท่า (ไม่ใช่เพราะจุดถัดไป)
ในขณะที่คุณปล่อย 5 0 0 0 0 เป็นกรณีที่รุนแรงเท่า ๆ กันคุณจะได้รับ 1 4 0 0 0 เป็นกรณีที่รุนแรงกว่า 0 2 1 1 1
ดังนั้นความแตกต่างอยู่ในขอบเขตของค่า (หรือ p-value ที่คำนวณโดยตรงที่ใช้โดยการใช้งาน R ของการทดสอบฟิชเชอร์ที่แน่นอน) หากคุณแบ่งกลุ่ม 400 ออกเป็น 4 กลุ่มจาก 100 กรณีที่แตกต่างกันจะถือเป็น 'มาก' มากกว่าหรือน้อยกว่า 5 0 0 0 0 ตอนนี้น้อยมาก 'สุดขีด' มากกว่า 0 2 1 1 1. แต่ 1 4 0 0 0 มากกว่า 'สุดขีด'χ2
ตัวอย่างรหัส:
# 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)
เอาต์พุตของบิตสุดท้าย
> 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
มันมีผลต่อพลังงานอย่างไรเมื่อแยกกลุ่ม
มีความแตกต่างบางประการเนื่องจากขั้นตอนที่ไม่ต่อเนื่องในระดับ 'พร้อมใช้' ของค่า p และการอนุรักษ์ของการทดสอบที่แน่นอนของ Fishers (และความแตกต่างเหล่านี้อาจกลายเป็นเรื่องใหญ่)
การทดสอบแบบฟิชเชอร์ยังสอดคล้องกับโมเดล (ไม่ทราบ) ตามข้อมูลจากนั้นใช้โมเดลนี้เพื่อคำนวณค่า p รูปแบบในตัวอย่างคือมีบุคคลที่ถูกเปิดเผย 5 คน หากคุณจำลองข้อมูลด้วยทวินามสำหรับกลุ่มที่แตกต่างกันคุณจะได้รับบุคคลมากกว่าหรือน้อยกว่า 5 คนเป็นครั้งคราว เมื่อคุณใช้การทดสอบการประมงกับสิ่งนี้ข้อผิดพลาดบางอย่างจะถูกติดตั้งและส่วนที่เหลือจะเล็กลงเมื่อเปรียบเทียบกับการทดสอบที่มีระยะขอบคงที่ ผลที่ได้คือการทดสอบนั้นค่อนข้างอนุรักษ์นิยมเกินไปไม่แน่นอน
ฉันคาดว่าผลกระทบของความน่าจะเป็นข้อผิดพลาดประเภทการทดสอบจะไม่ดีนักหากคุณแยกกลุ่มแบบสุ่ม หากสมมุติฐานว่างเป็นจริงคุณจะต้องเจอกันอย่างคร่าวๆαร้อยละของกรณีที่มีค่า p สำคัญ สำหรับตัวอย่างนี้ความแตกต่างมีขนาดใหญ่ดังภาพที่แสดง เหตุผลหลักคือเนื่องจากการเปิดรับแสงทั้งหมด 5 ครั้งมีความแตกต่างแน่นอนเพียงสามระดับเท่านั้น (5-0, 4-1, 3-2, 2-3, 1-4, 0-5) และเพียงสามจุดต่อเนื่อง ค่า (ในกรณีของสองกลุ่ม 400)
สิ่งที่น่าสนใจที่สุดคือโครงเรื่องของความน่าจะเป็นที่จะปฏิเสธ H0 ถ้า H0 เป็นจริงและถ้า Haเป็นความจริง. ในกรณีนี้ระดับอัลฟาและการแยกส่วนไม่สำคัญมาก (เราวางแผนอัตราการปฏิเสธที่มีประสิทธิภาพ) และเรายังคงเห็นความแตกต่างใหญ่
คำถามยังคงอยู่ว่าสิ่งนี้จะเป็นไปตามสถานการณ์ที่เป็นไปได้หรือไม่
การปรับรหัสสามเท่าของการวิเคราะห์พลังงานของคุณ (และ 3 ภาพ):
ใช้การ จำกัด ทวินามกับกรณีของ 5 คนสัมผัส
พล็อตของความน่าจะเป็นที่มีประสิทธิภาพที่จะปฏิเสธ H0เป็นฟังก์ชั่นของอัลฟาที่เลือก เป็นที่ทราบกันดีว่าสำหรับการทดสอบแบบฟิชเชอร์ของฟิชเชอร์นั้นค่า p-value นั้นถูกคำนวณอย่างแม่นยำ แต่มีเพียงไม่กี่ระดับ (ขั้นตอน) ที่เกิดขึ้นบ่อยครั้งที่การทดสอบอาจจะระมัดระวังเกินไป
เป็นที่น่าสนใจที่จะเห็นว่าเอฟเฟกต์นั้นแข็งแกร่งมากขึ้นสำหรับเคส 400-400 (สีแดง) เมื่อเทียบกับเคส 400-100-100-100-100 (สีฟ้า) ดังนั้นเราอาจใช้การแบ่งนี้เพื่อเพิ่มพลังทำให้มีแนวโน้มที่จะปฏิเสธ H_0 (แม้ว่าเราจะไม่สนใจมากนักเกี่ยวกับการทำให้ข้อผิดพลาดประเภทที่ 1 มีแนวโน้มมากขึ้นดังนั้นจุดที่ทำแยกนี้เพื่อเพิ่มพลังอาจไม่แข็งแกร่งเสมอไป)
ใช้ทวินามโดยไม่ จำกัด บุคคลที่ได้รับสัมผัส 5 คน
หากเราใช้ทวินามแบบที่คุณทำไม่เช่นนั้นทั้งสองกรณี 400-400 (สีแดง) หรือ 400-100-100-100-100 (สีน้ำเงิน) ให้ค่า p ที่ถูกต้อง นี่เป็นเพราะการทดสอบฟิชเชอร์ที่แน่นอนถือว่าผลรวมแถวและคอลัมน์คงที่ แต่รูปแบบทวินามช่วยให้สิ่งเหล่านี้เป็นอิสระ การทดสอบของฟิชเชอร์จะทำให้พอดีกับแถวและคอลัมน์ทั้งหมดทำให้คำที่เหลือมีขนาดเล็กกว่าคำที่ผิดพลาดจริง
พลังงานที่เพิ่มขึ้นมีค่าใช้จ่ายอย่างไร
หากเราเปรียบเทียบความน่าจะเป็นของการปฏิเสธเมื่อ H0 เป็นจริงและเมื่อ Ha เป็นจริง (เราต้องการให้ค่าแรกต่ำและสูงกว่าค่าที่สอง) จากนั้นเราจะเห็นว่าแท้จริงอำนาจ (ปฏิเสธเมื่อใด Ha เป็นจริง) สามารถเพิ่มขึ้นได้โดยไม่ต้องเสียค่าใช้จ่ายที่เพิ่มความผิดพลาดประเภทที่ 1
# 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")
ทำไมมันส่งผลกระทบต่อพลังงาน
ฉันเชื่อว่ากุญแจของปัญหาคือความแตกต่างของค่าผลลัพธ์ที่ได้รับเลือกให้เป็น "สำคัญ" สถานการณ์เป็นบุคคลที่เปิดเผยห้าคนที่ถูกดึงออกมาจาก 5 กลุ่มขนาด 400, 100, 100, 100 และ 100 การเลือกที่แตกต่างกันสามารถทำได้ซึ่งถือเป็น 'สุดขีด' เห็นได้ชัดว่ากำลังเพิ่มขึ้น (แม้ว่าข้อผิดพลาดประเภท I ที่มีประสิทธิภาพจะเหมือนกัน) เมื่อเราใช้กลยุทธ์ที่สอง
ถ้าเราจะร่างความแตกต่างระหว่างกลยุทธ์แรกและกลยุทธ์ที่สองแบบกราฟิก จากนั้นฉันจินตนาการถึงระบบพิกัดที่มี 5 แกน (สำหรับกลุ่ม 400 100 100 100 และ 100) โดยมีจุดสำหรับค่าสมมติฐานและพื้นผิวที่แสดงระยะห่างของการเบี่ยงเบนซึ่งความน่าจะเป็นต่ำกว่าระดับที่แน่นอน ด้วยกลยุทธ์แรกพื้นผิวนี้เป็นทรงกระบอกด้วยกลยุทธ์ที่สองพื้นผิวนี้เป็นทรงกลม เช่นเดียวกับค่าที่แท้จริงและพื้นผิวรอบ ๆ สำหรับข้อผิดพลาด สิ่งที่เราต้องการคือการทับซ้อนที่จะเล็กที่สุด
เราสามารถสร้างกราฟิกที่เกิดขึ้นจริงเมื่อเราพิจารณาปัญหาที่แตกต่างกันเล็กน้อย (ด้วยมิติที่ต่ำกว่า)
ลองนึกภาพเราต้องการทดสอบกระบวนการ Bernoulli H0:p=0.5โดยทำการทดลอง 1,000 ครั้ง จากนั้นเราสามารถทำกลยุทธ์เดียวกันโดยแบ่ง 1,000 ขึ้นเป็นกลุ่มออกเป็นสองกลุ่มขนาด 500 ลักษณะนี้เป็นอย่างไร (ให้ X และ Y เป็นจำนวนในทั้งสองกลุ่ม)
พล็อตแสดงวิธีกระจายกลุ่ม 500 และ 500 (แทนที่จะเป็นกลุ่มเดียว 1,000)
การทดสอบสมมติฐานมาตรฐานจะประเมิน (สำหรับระดับอัลฟา 95%) ว่าผลรวมของ X และ Y มากกว่า 531 หรือเล็กกว่า 469
แต่สิ่งนี้รวมถึงการกระจาย X และ Y ที่ไม่เท่ากันอย่างไม่น่าเป็นไปได้
ลองนึกภาพการเปลี่ยนแปลงของการกระจายจาก H0 ถึง Ha. จากนั้นพื้นที่ในขอบไม่สำคัญมากนักและขอบเขตวงกลมที่มากขึ้นจะทำให้เกิดความรู้สึกมากขึ้น
อย่างไรก็ตามนี่ไม่ใช่ (จำเป็น) จริงเมื่อเราไม่เลือกการแบ่งกลุ่มแบบสุ่มและเมื่ออาจมีความหมายกับกลุ่ม