伽马分布的极大似然法

2024-05-28 22:48:38 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

您可以在此问题中看到详细信息: Fitting Distributions with Maximum Likelihood Method

现在我想对gamma分布实现这个方法

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

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()

然而,在伽马分布的结果中,似然值是无限的。所以,我不确定我是否能正确地将它应用于伽马方法

有人能帮忙吗


Tags: 方法importalphavarval经验mean思想
1条回答
网友
1楼 · 发布于 2024-05-28 22:48:38

您将Gamma distribution的定义与\alpha\beta一起使用,而NumPy和SciPy使用的是形状和比例参数,它们是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'])

相关问题 更多 >

    热门问题