Python使用极大似然估计法估计总体两个参数

题目描述

已知总体服从伽马分布 ,给定五个样本数据,用极大似然估计法估计总体两个参数 如何用python实现设1.297,2.071,2.546,3.819,4.020 是来自 Garnma(a, 入)的独立样本,请给出a>0和入>0的最大似然估计(保留不超过三位有效小数)。

解决思路

伽马分布的概率密度函数为:

f(x) = (1 / (Γ(α) * β^α)) * x^(α-1) * e^(-x/β)

其中,α和β是分布的两个参数,Γ(α)表示Γ函数,x表示随机变量的取值。

对于给定的五个样本数据,我们可以写出似然函数:

L(α, β) = f(x1) * f(x2) * f(x3) * f(x4) * f(x5)

由于要求最大似然估计,我们需要对似然函数进行求解,即求解使得似然函数取最大值的参数值。为了方便计算,我们可以对似然函数取自然对数,得到对数似然函数:

ln L(α, β) = -n * ln Γ(α) – n * α * ln β + (α – 1) * (ln x1 + ln x2 + ln x3 + ln x4 + ln x5) – (x1 + x2 + x3 + x4 + x5) / β

其中,n表示样本数量。

我们可以使用Python中的SciPy库中的optimize模块来实现最大似然估计。

具体实现代码

from scipy.special import gamma
from scipy.optimize import minimize
import numpy as np

# 定义对数似然函数
def log_likelihood(params, data):
    alpha, beta = params
    n = len(data)
    return -n * np.log(gamma(alpha)) - n * alpha * np.log(beta) + (alpha - 1) * np.sum(np.log(data)) - np.sum(data) / beta

# 给定样本数据
data = [1.297, 2.071, 2.546, 3.819, 4.020]

# 使用最小化函数minimize进行最大似然估计
res = minimize(lambda params: -log_likelihood(params, data), [1, 1])

# 输出估计结果
print("最大似然估计结果:")
print("alpha = %.3f" % res.x[0])
print("beta = %.3f" % res.x[1])

在上面的代码中,我们首先定义了对数似然函数log_likelihood,其中params表示分布的两个参数α和β,data表示样本数据。然后,我们给定了五个样本数据,并使用最小化函数minimize来求解使得对数似然函数取最大值的参数值。最后,我们输出了估计结果,保留不超过三位有效小数。

© 版权声明
THE END
喜欢就支持一下吧
点赞8赞赏 分享