我试图在R中复制超几何测试(只有pmf参数,等于R中的dhyper
函数。)
我做了这个公式:
choose(K,k)*choose(N-K,n-k)/choose(N,n)
当我使用这些数字时,我得到:
K=8
k=20
N=10000
n=35
> choose(K,k)*choose(N-K,n-k)/choose(N,n)
[1] 0
这是假的。期望的结果是:
dhyper(8,35,10000,20)
> dhyper(8,35,10000,20)
[1] 1.128574e-15
为什么我得到错误的结果?我甚至尝试使用lchoose
,我只得-Inf
。 R能够做到吗?
答案 0 :(得分:0)
从我对你的公式的理解。
K =瓮中的白球数量 k =我们想要提取的白球数量
在您的情况下,k> K,所以我们想要提取比我们更多的白球,概率为0。
dhyper的输入是不同的。
dhyper(k, K, N - K, n)
结果是0,正如预期的那样。
答案 1 :(得分:0)
在dhyper(x,m,n,k)中你有:
x从未包含黑色和白色球的骨灰盒中取出的白球数量。
是瓮中白球的数量。
n瓮中黑球的数量。
k从瓮中抽出的球数。
所以,你的公式必须是:
choose(m,k)*choose(N-m,k-x)/choose(N,k)
其中
N = m + n
所以:
choose(35,8)*choose(10035-35,20-8)/choose(10035,20)
必须提供所需的结果。