0%

最大似然

基本思想

当从模型总体随机抽取n组样本观测值后,最合理的参数估计量应该使得从模型中抽取该n组样本观测值的概率最大,而不是像最小二乘估计法旨在得到使得模型能最好地拟合样本数据的参数估计量。
最大似然估计(Maximum Likelihood Estimation,MLE)是一种常用的参数估计方法,用于根据观测数据来估计模型的参数,使得观测数据在该模型下的概率最大化。在统计学和机器学习中广泛应用。

以下是一个使用Python实现最大似然估计的示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import numpy as np
from scipy.stats import norm
import matplotlib.pyplot as plt

# 生成服从正态分布的随机样本
np.random.seed(0)
mu_true = 2.0
sigma_true = 1.5
data = np.random.normal(mu_true, sigma_true, 100)

# 定义似然函数
def likelihood(params, data):
mu, sigma = params
log_likelihood = np.sum(np.log(norm.pdf(data, loc=mu, scale=sigma)))
return log_likelihood

# 通过最大化似然函数来估计参数
from scipy.optimize import minimize

initial_params = [0, 1] # 初始参数猜测
result = minimize(lambda params: -likelihood(params, data), initial_params, method='Nelder-Mead')

estimated_mu, estimated_sigma = result.x
print("Estimated mu:", estimated_mu)
print("Estimated sigma:", estimated_sigma)

# 绘制原始数据和拟合的正态分布
plt.hist(data, bins=20, density=True, alpha=0.6, label='Data')
x = np.linspace(-5, 10, 100)
plt.plot(x, norm.pdf(x, loc=estimated_mu, scale=estimated_sigma), 'r', label='MLE Fit')
plt.xlabel('Value')
plt.ylabel('Probability Density')
plt.legend()
plt.show()

在上述代码中,我们首先生成了服从正态分布的随机样本数据。然后,定义了似然函数,该函数计算给定参数下观测数据的似然。接着,我们使用scipy.optimize.minimize函数来最大化似然函数,从而估计模型参数。

通过最大似然估计,我们得到了估计的均值和标准差,然后绘制了原始数据的直方图以及拟合的正态分布。这个示例展示了如何使用最大似然估计来拟合一个简单的正态分布模型。在实际应用中,您可能会遇到更复杂的模型和数据。