概念
对数似然(Log-Likelihood)是统计学中一种常用的方法,用于估计模型参数。在概率统计中,似然函数表示给定观测数据,关于模型参数的概率分布。对数似然则是似然函数取对数后的结果。
假设有一组观测数据 x1, x2, …, xn,它们来自一个概率分布,且这个概率分布有一些未知的参数 θ 需要估计。似然函数 L(θ) 表示在给定参数 θ 下观测数据出现的概率。对数似然函数 LL(θ) 则是似然函数的对数形式:
LL(θ) = log(L(θ))
作用
通过最大化对数似然函数,可以找到在给定观测数据下最有可能的模型参数值。
常见的使用场景包括:
参数估计: 通过最大化对数似然函数,可以找到使观测数据在模型中出现概率最大的参数值,从而对模型参数进行估计。
模型选择: 对比不同模型的对数似然函数,可以评估哪个模型更好地拟合观测数据。较高的对数似然值通常表示模型与数据拟合较好。
假设检验: 在假设检验中,可以通过比较不同参数值下的对数似然函数来判断哪个假设更合理。
正则化: 在正则化方法中,对数似然函数可以结合一个惩罚项,从而实现对模型参数的约束,防止过拟合。
通常,对数似然函数的具体形式取决于所使用的概率分布以及问题的特定背景。在实际应用中,通过数值优化方法(如梯度下降)来最大化对数似然函数,从而找到最优的参数值。
需要注意的是,对数似然函数通常用于连续型数据,对于离散型数据,可能会使用类似的对数似然概念来进行模型参数估计和推断。
代码实现
import numpy as np
import scipy.stats
# 生成一组模拟观测数据
np.random.seed(42)
data = np.random.normal(5, 2, 100)
# 定义对数似然函数
def log_likelihood(params, data):
mu, sigma = params
return np.sum(np.log(scipy.stats.norm.pdf(data, mu, sigma)))
# 初始参数值
initial_params = [0, 1]
# 最大化对数似然函数
from scipy.optimize import minimize
result = minimize(lambda params: -log_likelihood(params, data), initial_params)
# 输出估计的参数值
estimated_mu, estimated_sigma = result.x
print("Estimated mu:", estimated_mu)
print("Estimated sigma:", estimated_sigma)