【问题标题】:Maximum Likelihood Method for Gamma Distribution伽玛分布的最大似然法
【发布时间】:2020-05-27 16:48:00
【问题描述】:

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

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

您可以在此问题中查看详细信息: 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()

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

有人可以帮忙吗?

【问题讨论】:

  • 而且,坦率地说,我不知道x.map(...) 应该计算什么?

标签: python scipy statistics distribution


【解决方案1】:

您将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'])

【讨论】:

    猜你喜欢
    • 2013-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-26
    • 1970-01-01
    • 2019-07-17
    相关资源
    最近更新 更多