2014-03-29 43 views
1

我有一個問題,使用費舍爾的精確測試R與模擬的P值,但我不知道它是否是由「技術」( R)還是(在統計上)意圖以這種方式工作。費舍爾的精確測試(R) - 模擬的P值不變

一個我要使用的數據集:

matrix(c(103,0,2,1,0,0,1,0,3,0,0,3,0,0,0,0,0,0,19,3,57,11,2,87,1,2,0,869,4,2,8,1,4,3,18,16,5,60,60,42,1,1,1,1,21,704,40,759,404,151,1491,9,40,144),ncol=2,nrow=27) 

得到的p值始終是相同的,不管我怎麼經常重複測試:

p = 1/(B+1) 
(B = number of replicates used in the Monte Carlo test) 

當我縮短如果行數低於19,它會工作的矩陣。然而,它不是矩陣中單元的數量的問題。將它轉換成3列的矩陣之後,它仍然不起作用,儘管它只在兩列中使用相同的數字。

變模擬p值:在ab細胞

>a <- matrix(c(103,0,2,1,0,0,1,0,3,0,0,3,0,0,0,0,0,0,869,4,2,8,1,4,3,18,16,5,60,60,42,1,1,1,1,21),ncol=2,nrow=18) 

>b <- matrix(c(103,0,2,1,0,0,1,0,3,0,0,3,0,0,0,0,0,0,19,869,4,2,8,1,4,3,18,16,5,60,60,42,1,1,1,1,21,704),ncol=2,nrow=19) 

>c <- matrix(c(103,0,2,1,0,0,1,0,3,0,0,3,0,0,0,0,0,0,869,4,2,8,1,4,3,18,16,5,60,60,42,1,1,1,1,21),ncol=3,nrow=12) 

>fisher.test(a,simulate.p.value=TRUE)$p.value 

號碼是相同的,但是仿真只能用矩陣工作。 有誰知道這是一個統計問題還是一個R問題,如果有的話,它是如何解決的?

感謝您的建議

+0

當我重溫幾次時,它給了我不同的價值。你有多少次嘗試重新運行代碼? – Dason

回答

4

我認爲你只是看到了一個非常重要的結果。 p值的計算方法是模擬(和原始)矩陣的數量與原始矩陣相比極端或極端。如果沒有一個隨機產生的矩陣是或者更加極端的,那麼p值將會是1(原始矩陣與它自己一樣極端)除以矩陣總數$ B + 1 $(B模擬的和1個原始矩陣)。如果用足夠多的樣本(足夠高的B)運行函數,那麼您將開始看到一些隨機矩陣或者更加極端,並因此改變p值,但這樣做的時間可能不合理。