进阶篇 模型选择

模型选择与 AIC

使用赤池信息量准则比较和选择最优模型

📚
学习提示: 本教程内容仅供学习参考,实际应用时请结合具体数据和场景进行调整。 代码和方法可能需要根据实际情况进行修改。
📐

AIC(Akaike Information Criterion,赤池信息量准则)是衡量模型拟合优度的常用指标。它同时考虑模型拟合度和模型复杂度,AIC 越小的模型越优。

1. AIC 的基本概念

AIC = -2 × 对数似然 + 2 × 参数数量

特性 说明
拟合优度 对数似然越高(拟合越好),AIC 越低
惩罚项 参数越多,惩罚越大,AIC 越高
目的 在拟合和简洁之间找到平衡

ΔAIC 解读规则

ΔAIC < 2

模型无实质性差异

4 ≤ ΔAIC < 7

有一定差异

ΔAIC ≥ 10

有显著差异

2. 计算和比较 AIC

基本代码

# 计算两个模型的AIC
aic_basic <- AIC(basic_model)
aic_interaction <- AIC(interaction_model)

# 输出AIC值
cat("AIC for Basic Model:", aic_basic, "\n")
cat("AIC for Interaction Model:", aic_interaction, "\n")

计算 ΔAIC 并判断

# 计算ΔAIC
delta_aic <- abs(aic_basic - aic_interaction)

# 判断模型优劣
if (delta_aic < 2) {
  cat("Models are essentially equivalent.\n")
} else if (delta_aic < 7) {
  cat("Some evidence favoring the lower AIC model.\n")
} else {
  cat("Strong evidence favoring the lower AIC model.\n")
}

3. 多模型比较

使用 AICcmodavg 包

library(AICcmodavg)

# 创建模型列表
models <- list(
  basic = basic_model,
  interaction = interaction_model,
  full = full_model
)

# 比较所有模型
aictab <- aictab(models, sort = TRUE)
print(aictab)

手动创建比较表

# 提取AIC值
aics <- sapply(models, AIC)

# 创建比较表
comparison <- data.frame(
  Model = names(aics),
  AIC = round(aics, 2),
  Delta_AIC = round(aics - min(aics), 2)
)

# 按AIC排序
comparison <- comparison[order(comparison$AIC), ]

4. 嵌套模型比较(似然比检验)

对于嵌套模型(一个模型是另一个的特例),还可以使用似然比检验:

# 比较嵌套模型
anova(basic_model, interaction_model, test = "Chisq")
指标 说明
Deviance 两个模型的 -2 对数似然差值
Df 自由度差(参数数量差)
Pr(>Chi) p 值,<0.05 说明复杂模型显著更优

5. 注意事项

📌 不要仅依赖 AIC

模型选择还需考虑:理论依据、可解释性、临床意义、外部验证等因素。

理论依据

模型是否有理论支持

可解释性

结果是否容易解释

临床意义

效应大小是否有临床价值

外部验证

模型是否在其他数据中有效

📝 总结

✅ AIC 要点

  • • AIC 越小越好
  • • ΔAIC < 2 无实质差异
  • • ΔAIC ≥ 10 显著差异

🔧 常用函数

  • AIC() 计算 AIC
  • anova() 似然比检验
  • aictab() 多模型比较