似然比检验(Likelihood Ratio Test, LRT)是统计学中用于比较两个嵌套模型的重要方法。所谓嵌套模型,是指其中一个模型(原假设模型)是另一个模型(备择假设模型)的特殊情况。举个实际例子,假设我们正在评估一个电商平台的用户购买行为,模型A可能只考虑用户年龄对购买金额的影响,而模型B则同时考虑年龄和收入水平。这里模型A就是模型B的特殊情况(当收入系数为0时)。
在实际操作中,LRT的计算分为三步:
这个D统计量在大样本下服从卡方分布,自由度等于两个模型参数数量的差值。我在实际项目中发现,当样本量较小时(n<30),这个渐近分布可能不太准确,这时可以考虑使用参数自助法(parametric bootstrap)来获得更精确的p值。
python复制# Python实现似然比检验示例
from scipy.stats import chi2
import numpy as np
# 假设两个模型的log-likelihood值
loglik_restricted = -150.2 # 简单模型(原假设)
loglik_full = -142.8 # 复杂模型(备择假设)
# 计算检验统计量
D = -2 * (loglik_restricted - loglik_full)
df = 2 # 参数差异数
p_value = 1 - chi2.cdf(D, df)
print(f"统计量D值: {D:.3f}")
print(f"p值: {p_value:.4f}")
拟合优度检验用于评估样本数据是否符合某个理论分布。最常用的方法是皮尔逊卡方检验,它通过比较观测频数与期望频数的差异来判断拟合优度。
以产品质量检测为例,假设某工厂生产的零件直径理论上应服从正态分布N(10, 0.5)。我们可以:
这里有个实用技巧:当某些区间的期望频数小于5时,需要合并相邻区间。我在实际分析中经常遇到这个问题,特别是在样本量不大或分布尾部较厚的情况下。
python复制# Python实现卡方拟合优度检验
from scipy.stats import chisquare
# 观测频数
observed = [45, 76, 85, 62, 32]
# 期望频数(理论分布预测)
expected = [50, 70, 90, 60, 30]
chi2_stat, p_val = chisquare(observed, f_exp=expected)
print(f"卡方统计量: {chi2_stat:.3f}")
print(f"p值: {p_val:.4f}")
虽然似然比检验和拟合优度检验都基于似然函数,但它们的应用场景有所不同:
| 检验类型 | 适用场景 | 比较对象 | 分布假设 |
|---|---|---|---|
| 似然比检验 | 模型选择 | 两个嵌套模型 | 需要指定参数分布 |
| 拟合优度检验 | 分布验证 | 数据与理论分布 | 需要指定完整分布 |
在A/B测试分析中,我经常同时使用这两种方法:
一个常见的误区是直接用拟合优度检验来比较两个样本组。实际上,这种情况下应该使用卡方独立性检验或两样本K-S检验。
在实际应用中,有几个关键点需要注意:
样本量敏感性:卡方检验要求每个区间的期望频数≥5。当数据稀疏时,可以考虑精确检验或蒙特卡洛模拟。
参数估计影响:如果理论分布的参数是从数据中估计得到的,卡方分布的自由度需要相应调整。例如,检验正态性时若同时估计了μ和σ,自由度要减少2。
连续分布检验:对于连续变量,K-S检验通常比卡方检验更有效,因为它不需要分组且对每个数据点都敏感。
多重比较问题:当进行多次检验时(如同时检验多个变量的分布),需要控制整体错误率,可以使用Bonferroni校正等方法。
我在一个金融风控项目中曾遇到过这样的情况:用卡方检验发现用户行为数据不符合泊松分布,但进一步分析发现是因为存在过度离散(overdispersion)。这时改用负二项分布后,拟合效果就好很多。
python复制# 处理小期望频数的实用方法
from scipy.stats import power_divergence
# 使用Cressie-Read幂散度统计量,对小样本更稳健
observed = [3, 7, 12, 8, 5]
expected = [5, 5, 10, 10, 5]
# lambda=2/3是推荐的折中值
stat, pval = power_divergence(observed, f_exp=expected, lambda_=2/3)
print(f"调整后的统计量: {stat:.3f}")
print(f"p值: {pval:.4f}")
最后要强调的是,这些检验结果只能告诉我们模型或分布是否不匹配,而不能证明完全匹配。在实际决策中,应该结合效应大小、业务理解和模型诊断图来综合判断。