作者Godkin (山里的人)
看板R_Language
标题[问题] 关於hypergeometric计算一问
时间Mon Nov 17 15:14:21 2014
[问题类型]:
经验谘询(我想用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://webptt.com/cn.aspx?n=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
1F:→ Wush978: 结果好像只差一点点, 可能是浮点数运算导致的不一致 11/17 16:37
2F:推 bxxl: 看文件里有没有写log.p代表什麽设定,感觉是approximation 11/17 16:53
3F:推 bxxl: 可能是计算过程中,有没有把机率变成log表示? 11/17 16:58
4F:→ Godkin: log.p =>if TRUE, probabilities p are given as log(p). 11/17 17:31
5F:→ Godkin: 用phyper比较惨的是-算抽到5704球,至少694颗白球的机率 11/17 17:33
6F:→ Godkin: 用phyper的结果会变成0, 但是用python可以得到6.088e-46 11/17 17:34
7F:→ Godkin: 不过加上log.p还有取负值, 结果就会跟python一样了 11/17 17:35
8F:→ gsuper: R在 10^-14 ~ 10^-22 的数字都不太可信 11/25 21:02
9F:→ Carollax: 机率太小的话都要取log 否则在R里会显示0 12/10 16:12