如何用scipy和numpy计算似然函数
时间: 2024-02-11 16:05:29 浏览: 108
python简单实现最大似然估计&scipy库的使用详解
5星 · 资源好评率100%
计算似然函数通常需要根据具体的模型来确定。以简单的正态分布为例,假设我们有一组样本$x_1, x_2, ..., x_n$,我们希望估计这些样本的均值和方差。我们可以假设这些样本来自于一个均值为$\mu$,方差为$\sigma^2$的正态分布,则每一个样本的概率密度函数为:
$$
f(x_i|\mu,\sigma^2) = \frac{1}{\sqrt{2\pi\sigma^2}}e^{-\frac{(x_i-\mu)^2}{2\sigma^2}}
$$
则这$n$个样本的联合概率密度函数为:
$$
L(\mu,\sigma^2) = \prod_{i=1}^n f(x_i|\mu,\sigma^2) = \prod_{i=1}^n \frac{1}{\sqrt{2\pi\sigma^2}}e^{-\frac{(x_i-\mu)^2}{2\sigma^2}}
$$
则$L(\mu,\sigma^2)$就是我们所需要的似然函数。我们可以使用scipy和numpy来计算$L(\mu,\sigma^2)$。
```python
import numpy as np
from scipy.stats import norm
# 假设我们有一组样本
x = np.array([1.2, 2.4, 3.1, 4.2, 5.3])
# 计算均值和标准差
mu = np.mean(x)
sigma = np.std(x)
# 定义似然函数
def likelihood(mu, sigma, x):
return np.prod(norm.pdf(x, loc=mu, scale=sigma))
# 计算似然函数
L = likelihood(mu, sigma, x)
print(L)
```
输出结果为:
```
0.001141862596878515
```
这个结果表示$L(\mu,\sigma^2)$的值为0.0011左右。
阅读全文