[英]how may I get a p.value from chisq.test() function?
m1 <- data.frame(a=1, b=2, d=0)
chisq.test(m)$p.value
# 0.3678794
m2 <- data.frame(a=c(1,2,0), b=c(2,12,0), d=c(0,0,0))
chisq.test(m2)$p.value
# NaN
我不明白為什么chisq.test()
函數無法測試像m2這樣的表的差異。 有什么方法可以獲取第三列為零的m1之類的數據幀的ap值?
您可以使用Fisher的精確測試:
fisher.test(m1)$p.value
[1] 0.4647059
馬可·證明, Fisher精確檢驗會給你一個p值,但即使χ2檢驗做給你,你還是應該用費舍爾的價值。 該χ2檢驗給出了一個近似的,只適用於大型數據集。
至於為什么得到NaN
,lukeA是正確的,盡管您可以這樣說:如果任何行或列的總和為零或邊際為零,則測試將不起作用。
m2 <- data.frame(a=c(1, 2, 0), b=c(2, 12, 0), d=c(0, 0, 0))
chisq.test(m2, simulate.p.value=TRUE)$p.value
# Warning messages:
# 1: In chisq.test(m2, simulate.p.value = TRUE) :
# cannot compute simulated p-value with zero marginals
演示近似值和精確值之間的差異
m3 <- data.frame(a=c(1, 2, 0), b=c(2, 12, 0), d=c(0, 0, 1))
chisq.test(m3, simulate.p.value=TRUE)$p.value
# 0.05147
fisher.test(m3)$p.value
# 0.06324
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.