概念
最大似然估计(Maximum Likelihood Estimation,简称MLE)是一种统计方法,用于估计模型的参数,使得给定观测数据的似然函数达到最大。在最大似然估计中,我们寻找能够最大化观测数据的可能性(似然)的参数值。
假设我们有一组观测数据 x1, x2, …, xn,来自某个概率分布,且这个概率分布具有一些未知的参数 θ 需要估计。似然函数 L(θ) 表示在给定参数 θ 下观测数据出现的概率。我们的目标是找到能够最大化似然函数的参数值 θ,即:
θ^ = argmax L(θ)
通常,为了方便计算,我们计算对数似然函数 LL(θ) = log(L(θ)),然后寻找能够最大化对数似然函数的参数值。
具体步骤如下:
1确定参数化的概率分布以及参数的取值范围。
2编写似然函数或对数似然函数,根据数据和参数计算观测数据出现的概率。
3最大化对数似然函数,可以使用数值优化方法(如梯度下降、牛顿法等)来找到最优参数值。
4得到估计的参数值,它们是使得观测数据出现概率最大的参数。
代码实现
import numpy as np
from scipy.stats import norm
from scipy.optimize import minimize
# 生成一组模拟观测数据
np.random.seed(42)
data = np.random.normal(5, 2, 100)
# 定义对数似然函数
def log_likelihood(params, data):
mu, sigma = params
return -np.sum(norm.logpdf(data, mu, sigma))
# 初始参数值
initial_params = [0, 1]
# 最大化对数似然函数
result = minimize(lambda params: log_likelihood(params, data), initial_params)
# 输出估计的参数值
estimated_mu, estimated_sigma = result.x
print("Estimated mu:", estimated_mu)
print("Estimated sigma:", estimated_sigma)