簡體   English   中英

如何從chisq.test()函數獲取p.value?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM