即使考虑了不同的参数化,R `dnbinom` 也给出与 Python `scipy.stats.nbinom.pmf` 不同的结果

问题描述 投票:0回答:1

我正在尝试将同事的 R 代码翻译成 Python。它涉及使用负二项式分布的概率质量函数进行计算,但问题是 R 的

dnbinom
使用与 Python 的
scipy.stats.nbinom.pmf
不同的参数化。根据this问题及其答案,给定R的
mu
(平均值)和
size
(分散),我应该能够使用以下代码获得Scipy的
n
p

 p = 1 / (1 + size * mu)
 n = 1 / size

但是,如果我假设

convert_params
执行上述计算并像这样应用它:

 from scipy.stats import nbinom
 n, p = convert_params(15, 0.463965)
 nbinom.pmf(3, n, p) 

我得到

0.036
,而如果我在 R 中这样做:

 dnbinom(3, mu=15, size=0.463965)

我明白了

0.05

有人知道这是怎么回事吗?我是否使用了错误的公式来更改参数化?

python r statistics
1个回答
0
投票

注意 R 的文档,

size——成功试验次数的目标,或分散参数(伽玛混合分布的形状参数)。必须严格为正数,不必是整数。

来自Python:

n 是成功次数。成功次数 n 也可以用 a 来指定 “分散”、“异质性”或“聚集”参数。 ...

平均值 mu 与成功概率相关,如下所示

p = n/(n + mu)

因此你需要直接将 python 的

n
等同于 R 的
size
:

mu, size = 15, 0.463965
scipy.stats.nbinom(n = size, p = 1/(1 + mu/size)).pmf(3)
0.050034315664281
© www.soinside.com 2019 - 2024. All rights reserved.