极大似然估计(Maximum Likelihood Estimation,MLE)是统计学中最重要的参数估计方法之一。本文将从理论基础出发,结合Python代码实现,帮助读者深入理解这一核心概念。
2. 理论基础
2.1 什么是似然函数
似然函数是统计模型中关于参数的函数,它表示在给定观测数据下,模型参数取某个值时的"可能性"。
对于一组独立同分布的观测数据
,假设它们来自某个概率分布
,其中
是未知参数。似然函数定义为:
通常为了计算方便,我们会取对数似然:
2.2 极大似然估计的原理
极大似然估计的核心思想是:选择一个参数值
,使得观测数据出现的可能性最大。数学表达为:
或等价地:
2.3 求解步骤
-
-
-
-
-
3. 实践案例
3.1 正态分布参数估计
假设数据来自正态分布
,我们用Python来实现参数估计:
import numpy as np
from scipy.stats import norm
import matplotlib.pyplot as plt
# 生成模拟数据
np.random.seed(42)
true_mu = 2.5
true_sigma = 1.5
sample_size = 1000
data = np.random.normal(true_mu, true_sigma, sample_size)
# MLE估计
mu_mle = np.mean(data)
sigma_mle = np.std(data, ddof=0) # ddof=0 for MLE
print(f"真实参数: μ = {true_mu}, σ = {true_sigma}")
print(f"MLE估计: μ = {mu_mle:.4f}, σ = {sigma_mle:.4f}")
# 可视化
x = np.linspace(min(data)-2, max(data)+2, 100)
plt.hist(data, bins=30, density=True, alpha=0.7, label='观测数据')
plt.plot(x, norm.pdf(x, mu_mle, sigma_mle),
'r-', label='MLE拟合')
plt.plot(x, norm.pdf(x, true_mu, true_sigma),
'g--', label='真实分布')
plt.legend()
plt.title('正态分布MLE估计结果')
plt.xlabel('x')
plt.ylabel('密度')
plt.show()
3.2 泊松分布参数估计
对于泊松分布
,其概率质量函数为:
似然函数为:
对数似然:
Python实现:
import numpy as np
from scipy.stats import poisson
import matplotlib.pyplot as plt
# 生成模拟数据
np.random.seed(42)
true_lambda = 3.5
sample_size = 1000
data = np.random.poisson(true_lambda, sample_size)
# MLE估计
lambda_mle = np.mean(data) # 泊松分布的MLE就是样本均值
print(f"真实参数: λ = {true_lambda}")
print(f"MLE估计: λ = {lambda_mle:.4f}")
# 可视化
x = np.arange(0, max(data)+5)
plt.hist(data, bins=range(max(data)+2), density=True,
alpha=0.7, label='观测数据')
plt.plot(x, poisson.pmf(x, lambda_mle), 'ro-',
label='MLE拟合')
plt.plot(x, poisson.pmf(x, true_lambda), 'go--',
label='真实分布')
plt.legend()
plt.title('泊松分布MLE估计结果')
plt.xlabel('k')
plt.ylabel('概率')
plt.show()
4. 优缺点分析
4.1 优点
-
-
-
4.2 缺点