最大似然估计法python代码
时间: 2024-10-19 20:11:16 浏览: 50
矩法估计和极大似然估计-详解python中pyautogui库的最全使用方法
最大似然估计(Maximum Likelihood Estimation,MLE)是一种常用的数据统计方法,用于确定模型参数,使得数据样本出现的概率最大化。在Python中,我们可以使用NumPy库来计算MLE。以下是一个简单的例子,假设我们有一个正态分布的随机样本,想求出均值(μ)和方差(σ²):
```python
import numpy as np
# 假设我们有数据点
data = np.array([1, 2, 3, 4, 5])
# 定义正态分布的似然函数
def log_likelihood(μ, σ):
pdf = (1 / (np.sqrt(2 * np.pi) * σ)) * np.exp(-((data - μ)**2) / (2 * σ**2))
return np.sum(np.log(pdf))
# 初始化参数(例如μ=0,σ=1)
μ_init = 0
σ_init = 1
# 使用梯度下降或其他优化算法找到最大似然估计
from scipy.optimize import minimize_scalar
μ_mle = minimize_scalar(lambda μ: -log_likelihood(μ, σ_init), bounds=(min(data), max(data))).x
σ_mle = minimize_scalar(lambda σ: -log_likelihood(μ_mle, σ), bounds=(0, max(abs(data)))).x
print(f"最大似然估计的μ = {μ_mle}, σ = {σ_mle}")
阅读全文