python 极大似然
时间: 2023-11-09 20:01:58 浏览: 90
极大似然是一种统计学方法,用于估计模型的参数。在给定一组观测数据的情况下,极大似然方法会寻找最有可能产生这些数据的模型参数。在 Python 中,可以使用 Scipy 库中的 optimize 模块来实现极大似然估计。
具体来说,可以定义一个函数来计算给定参数下观测数据的似然值,然后使用 optimize 模块中的 minimize 函数来最小化负对数似然函数,从而得到最大似然估计值。
例如,假设我们有一组观测数据 x,我们认为这些数据服从正态分布,我们想要估计出正态分布的均值和方差。我们可以定义如下的负对数似然函数:
```python
import numpy as np
from scipy.stats import norm
from scipy.optimize import minimize
def neg_log_likelihood(params, x):
mu, sigma = params
return -np.sum(norm.logpdf(x, loc=mu, scale=sigma))
# 假设观测数据为 [1, 2, 3, 4, 5]
x = [1, 2, 3, 4, 5]
# 使用 minimize 函数来最小化负对数似然函数
result = minimize(neg_log_likelihood, [0, 1], args=(x,))
mu_ml, sigma_ml = result.x
print("Maximum likelihood estimates:")
print("mu = {:.2f}".format(mu_ml))
print("sigma = {:.2f}".format(sigma_ml))
```
输出结果为:
```
Maximum likelihood estimates:
mu = 3.00
sigma = 1.41
```
这表示在给定观测数据的情况下,最大似然估计值为均值为 3,方差为 1.41。
阅读全文