C 统计作为参数估计中的对数似然函数,用python怎么求解
时间: 2024-10-10 12:08:07 浏览: 35
在统计学中,对数似然函数常用于参数估计,特别是贝叶斯方法中。对于二项分布、泊松分布等常见概率模型,我们可以使用对数似然函数来计算给定数据时参数的最优估计值。在Python中,我们可以利用SciPy库中的`scipy.stats`模块来进行对数似然函数的计算。
以二项分布为例,假设我们有一个二项试验的结果`y`,每个试验的成功次数服从伯努利分布,参数为`p`。对数似然函数为:
\[ L(p) = \sum_{i=1}^{n} y_i \ln(p) + (n - y_i) \ln(1-p) \]
其中`n`是总实验次数,`y_i`是第`i`次试验成功的次数。
在Python中求解这个对数似然函数并找到最大值(即最优`p`值)可以这样做:
```python
from scipy.stats import bernoulli
import numpy as np
def log_likelihood(p, data):
n = len(data)
return sum([bernoulli.logpmf(y, p) for y in data])
# 假设我们有数据['success', 'fail', 'success', ..., 'fail']
data = np.array([...]) # 将实际数据替换这里
initial_guess = 0.5 # 初始猜测的概率值
optimal_p = optimize.fmin(log_likelihood, initial_guess, args=(data,), disp=False)
optimal_p_value, optimal_log_likelihood = optimal_p[0], log_likelihood(optimal_p[0], data)
```
这里使用了`optimize.fmin`函数,它是Scipy优化包的一部分,通过迭代寻找最小化对数似然函数的最大值。
阅读全文