Python 实现极大似然估计
时间: 2023-11-05 11:22:22 浏览: 605
极大似然估计(Maximum Likelihood Estimation,简称MLE)是一种常用的统计方法,用于估计参数的值。在Python中,我们可以使用以下步骤来实现极大似然估计:
1. 定义概率分布函数:首先,需要定义一个概率分布函数,例如正态分布、泊松分布等。这个函数将接受参数和待估计的数据,并计算出给定参数下观测数据出现的概率。
2. 定义似然函数:接下来,定义一个似然函数,该函数将接受参数和观测数据,并计算出给定参数下观测数据的似然。似然函数的计算通常是通过对每个观测数据点的概率求乘积得到的。
3. 最大化似然函数:使用优化算法(如梯度下降、牛顿法等),找到使似然函数最大化的参数值,即极大似然估计值。在Python中,可以使用`scipy.optimize`模块中的函数来实现参数的最大化。
以下是一个简单的示例,演示如何使用Python实现正态分布的极大似然估计:
```python
import numpy as np
from scipy.stats import norm
from scipy.optimize import minimize
# 生成一组观测数据
data = np.array([1.2, 2.5, 0.8, 1.5, 1.9])
# 定义正态分布的概率密度函数
def normal_pdf(x, mu, sigma):
return norm.pdf(x, loc=mu, scale=sigma)
# 定义似然函数
def likelihood(params):
mu, sigma = params
pdf_vals = normal_pdf(data, mu, sigma)
return -np.log(pdf_vals).sum()
# 使用最小化算法最大化似然函数
initial_guess = [0, 1]
result = minimize(likelihood, initial_guess)
# 输出估计出的参数值
estimated_mu, estimated_sigma = result.x
print("Estimated mu:", estimated_mu)
print("Estimated sigma:", estimated_sigma)
```
在上述示例中,首先使用`numpy`生成了一组观测数据`data`。然后,定义了正态分布的概率密度函数`normal_pdf`和似然函数`likelihood`。最后,使用`scipy.optimize.minimize`函数找到使似然函数最大化的参数值。输出结果为估计出的均值(`mu`)和标准差(`sigma`)。
阅读全文