我希望这里是合适的地方而不是数学论坛。
我正在尝试在R中计算负二项式分布的密度。我的参数目前采用mu
(期望的失败次数)和过度离散参数k
的形式。由于我在编译的C代码中调用了dnbinom
,因此我需要将这些参数转换为dnbinom
的默认参数化形式,该函数期望每个试验成功的概率p
和在计数停止之前的成功次数n
。 我使用以下方程式来解出p
和n
与mu
和k
的关系:
n = mu*p/(1-p)
mu + mu^2/k = n(1-p)/p^2
经过一些代数运算,我得到:
p = k/mu + 1
n = -(mu^2+k*mu)/k
使用R中不同的dnbinom
参数化来检查这些方程式会发现一个问题:
> k = 1.2
> mu = 15
> p = k/mu+1
> n = -(mu*k+mu^2)/k
> dnbinom(10,size=n,prob=p)
[1] NaN
Warning message:
In dnbinom(x, size, prob, log) : NaNs produced
> dnbinom(10,mu=mu,size=k)
[1] 0.03560668
我错过了R的参数化吗?我相当确定我的代数是正确的。或者,在从C中调用dnbinom
时,是否有一种方法可以坚持使用原始参数化(以mu
和k
为单位)?
n = -(mu^2+k*mu)/k
的,因为在这个公式之前你写的n = mu*p/(1-p)
看起来是正确的。 - daroczigp = k/(k+mu)
这意味着n
=k
,正如应该的那样。 - Sarah