📐
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()多模型比较