2

我使用矩量法来拟合负二项式、泊松和几何分布。

基本思想:得到经验的第一、第二等矩,然后从这些矩中推导出分布参数。

您可以在此问题中查看详细信息: 使用最大似然法拟合分布

现在我想为伽玛分布实现这种方法;

对于伽玛分布,我应用了这个;

import pandas as pd
from scipy.stats import gamma

x = pd.Series(x)
mean = x.mean()
var = x.var()
likelihoods = {}

alpha = (mean**2)/var
beta = alpha / mean
likelihoods['gamma'] = x.map(lambda val: gamma.pdf(val, alpha)).prod()

但是,Gamma 分布的结果中的似然值是无限的。所以,我不确定我是否可以正确地将这种方法应用于 Gamma。

有没有人可以为此提供帮助?

4

1 回答 1

1

您使用 和 定义Gamma 分布\alpha而NumPy 和 SciPy 使用的是和\beta形状和比例参数。k\theta

基本上,你必须回报 \beta 才能缩小规模。

import numpy as np
import pandas as pd
from scipy.stats import gamma

shape = 2.0
scale = 1.3

x = pd.Series(gamma.rvs(shape, loc = 0.0, scale=scale, size = 100000))
#x = pd.Series(np.random.gamma(shape, scale=scale, size=100000))

mean = x.mean()
var  = x.var()

alpha = (mean**2)/var
beta  = alpha / mean

print((alpha, 1.0/beta)) # NB! scale is 1/beta

likelihoods = {}
likelihoods['gamma'] = x.map(lambda val: gamma.pdf(val, alpha, loc = 0.0, scale = 1.0/beta)).prod()
print(likelihoods['gamma'])
于 2020-02-12T16:20:08.177 回答