似然函数定义
似然函数(Likelihood Function) 是统计学中用于描述在给定参数条件下观测到某一数据的可能性的函数。它是概率密度函数(对于连续分布)或概率质量函数(对于离散分布)的“反转”,即固定参数,将观测数据视为变量。
数学定义:
设 $X$ 是随机变量,$\theta$ 是参数,$x$ 是观测到的数据。似然函数 $L(\theta | x)$ 定义为在参数 $\theta$ 下观测到数据 $x$ 的概率(或概率密度):
- 对于离散随机变量:$L(\theta | x) = P(X = x | \theta)$
- 对于连续随机变量:$L(\theta | x) = f(x | \theta)$,其中 $f(x | \theta)$ 是概率密度函数
目的:
似然函数通常用于参数估计,特别是似然估计(MLE)。MLE 的目标是找到使似然函数的参数值,即:
$\hat{\theta} = \arg\max_{\theta} L(\theta | x)$
代码示例
以下是一个简单的 Python 示例,展示如何计算和使用似然函数进行似然估计。假设我们有一组观测数据,这些数据服从正态分布,我们需要估计其均值和标准差。
```python
import numpy as np
from scipy.stats import norm
from scipy.optimize import minimize
生成观测数据(假设真实均值为 5,标准差为 2)
np.random.seed(0)
data = np.random.normal(5, 2, 100)
定义负对数似然函数(因为优化函数通常最小化目标函数)
def negativeloglikelihood(params):
mu, sigma = params
# 计算对数似然(注意:norm.pdf 返回概率密度,需要取对数并求和)
loglikelihood = np.sum(norm.logpdf(data, mu, sigma))
# 返回负对数似然
return -loglikelihood
初始猜测参数值
initial_guess = [0, 1]
使用优化函数最小化负对数似然函数
result = minimize(negativeloglikelihood, initial_guess, method='L-BFGS-B',
bounds=[(None, None), (1e-10, None)]) # sigma 必须大于 0
输出估计的参数值
estimatedmu, estimatedsigma = result.x
print(f"Estimated mu: {estimatedmu}")
print(f"Estimated sigma: {estimatedsigma}")
```
代码解释
-
数据生成:
- 使用
np.random.normal
生成 100 个服从正态分布的观测数据,真实均值为 5,标准差为 2。
- 使用
-
负对数似然函数:
- 定义
negative_log_likelihood
函数,计算给定参数 $\mu$ 和 $\sigma$ 下的负对数似然。 - 使用
norm.logpdf
计算每个数据点的对数概率密度,并求和。
- 定义
-
参数估计:
- 使用
scipy.optimize.minimize
函数最小化负对数似然函数。 - 初始猜测参数值为
[0, 1]
。 - 设置参数边界,确保 $\sigma$ 大于 0。
- 使用
-
结果输出:
- 输出估计的均值 $\mu$ 和标准差 $\sigma$。
结果分析
运行上述代码后,你将得到估计的均值和标准差,这些值应该接近我们生成数据时使用的真实值(5 和 2)。似然估计通过化似然函数(或最小化负对数似然函数)来找到最可能的参数值,是统计学中常用的参数估计方法。