最大似然估计python
时间: 2023-06-28 12:11:56 浏览: 41
最大似然估计(Maximum Likelihood Estimation, 简称MLE)是一种常用的参数估计方法,它的基本思想是:在给定一组数据的情况下,我们通过调整模型参数的取值来使得这组数据的出现概率最大,从而估计出模型参数的取值。
在Python中,我们可以使用scipy库中的optimize模块来进行最大似然估计。具体实现过程如下:
1. 定义似然函数,即给定参数下数据出现的概率分布函数。例如,对于正态分布,似然函数可以定义为:
```python
import numpy as np
from scipy.stats import norm
def likelihood(parameters, data):
mu, sigma = parameters
likelihoods = norm.pdf(data, loc=mu, scale=sigma)
return np.prod(likelihoods)
```
其中,parameters为模型参数,data为给定的数据。
2. 使用optimize模块中的`minimize`函数来最小化负对数似然函数,从而求出最大似然估计值。例如,对于正态分布,代码可以如下实现:
```python
from scipy.optimize import minimize
data = np.array([1.2, 3.4, 5.6, 7.8, 9.0])
result = minimize(lambda x: -likelihood(x, data), [0, 1])
mu_mle, sigma_mle = result.x
```
其中,`lambda x: -likelihood(x, data)`定义了负对数似然函数,[0, 1]为初始参数取值。
最大似然估计是一种常用的参数估计方法,但也有其局限性,在实际应用中需要结合具体情况进行选择。