[問題] 關於hypergeometric計算一問

看板R_Language作者 (山裡的人)時間10年前 (2014/11/17 15:14), 10年前編輯推噓2(207)
留言9則, 5人參與, 最新討論串1/1
[問題類型]: 經驗諮詢(我想用R 連接某些資料庫,請問大家的經驗) [軟體熟悉度]: 使用者(已經有用R 做過不少作品) [問題敘述]: 大家好,我在計算超幾何分配的機率分佈時遇到了一個問題: 首先, 我總共有24607顆球, 其中白球有1865顆, 黑球有22742顆 要算的是...現在我不放回抽了3460顆,其中至少有379顆白球的機率 在R底下我用的是phyper, python下我用的是stats.hypergeom.sf 但兩者算出的結果有點不同,請問我該相信哪一種方法算出來的結果? [程式範例]: R: 1 - phyper(379-1,1865,22742,3460) = 7.993606e-15 Python: stats.hypergeom.sf(379-1,24607,1865,3460) = 7.96882090302e-15 奇怪的是, 如果我在phyper當中開啟log.p的設定: -phyper(379-1,1865,22742,3460,log.p=TRUE) = 7.968821e-15 就可以得到跟python一樣的結果, 請問為何會這樣? *[m [關鍵字]: hypergeometric -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.215.229 ※ 文章網址: http://www.ptt.cc/bbs/R_Language/M.1416208463.A.59F.html ※ 編輯: Godkin (140.116.215.229), 11/17/2014 15:27:06 ※ 編輯: Godkin (140.116.215.229), 11/17/2014 15:46:45

11/17 16:37, , 1F
結果好像只差一點點, 可能是浮點數運算導致的不一致
11/17 16:37, 1F

11/17 16:53, , 2F
看文件裡有沒有寫log.p代表什麼設定,感覺是approximation
11/17 16:53, 2F

11/17 16:58, , 3F
可能是計算過程中,有沒有把機率變成log表示?
11/17 16:58, 3F

11/17 17:31, , 4F
log.p =>if TRUE, probabilities p are given as log(p).
11/17 17:31, 4F

11/17 17:33, , 5F
用phyper比較慘的是-算抽到5704球,至少694顆白球的機率
11/17 17:33, 5F

11/17 17:34, , 6F
用phyper的結果會變成0, 但是用python可以得到6.088e-46
11/17 17:34, 6F

11/17 17:35, , 7F
不過加上log.p還有取負值, 結果就會跟python一樣了
11/17 17:35, 7F

11/25 21:02, , 8F
R在 10^-14 ~ 10^-22 的數字都不太可信
11/25 21:02, 8F

12/10 16:12, , 9F
機率太小的話都要取log 否則在R裡會顯示0
12/10 16:12, 9F
文章代碼(AID): #1KQQ1FMV (R_Language)
文章代碼(AID): #1KQQ1FMV (R_Language)