You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于数据框公式列循环拟合混合二项Logistic回归模型

批量拟合混合二项Logistic回归并筛选最优模型

单模型拟合示例

先给出单模型拟合的基础代码参考:

# 基于合并后的df3拟合单个混合二项Logistic回归模型
single_model <- gamlj::gamljGlmMixed(
  data = df3,
  formula = outcome ~ predictor1 + predictor2 + (1|group),
  family = "binomial"
)

# 提取该模型的AIC和BIC
single_aic <- single_model$model$aic
single_bic <- single_model$model$bic

批量循环实现步骤

假设df3中存在一列(示例命名为model_formula),存储了所有待拟合的模型公式(字符格式),可按以下流程批量处理:

  1. 批量拟合所有模型
    用lapply遍历公式列,逐个生成并拟合模型:
# 将字符格式的公式转为公式对象,批量拟合模型
model_list <- lapply(df3$model_formula, function(form_str) {
  gamlj::gamljGlmMixed(
    data = df3,
    formula = as.formula(form_str),
    family = "binomial"
  )
})
  1. 提取所有模型的AIC、BIC及对应公式
    遍历模型列表,将关键指标整理为便于对比的数据框:
# 逐个提取模型指标
model_metrics <- lapply(seq_along(model_list), function(i) {
  current_model <- model_list[[i]]
  data.frame(
    model_formula = df3$model_formula[i],
    AIC = current_model$model$aic,
    BIC = current_model$model$bic
  )
})

# 合并为统一数据框
model_metrics_df <- do.call(rbind, model_metrics)
  1. 筛选最优模型
    依据AIC/BIC值(值越小模型拟合效果相对越优)排序,选出最优模型:
# 按AIC升序排序,取首个为最优AIC模型
best_aic_model <- model_metrics_df[which.min(model_metrics_df$AIC), ]

# 按BIC升序排序,取首个为最优BIC模型
best_bic_model <- model_metrics_df[which.min(model_metrics_df$BIC), ]

# 查看最优模型结果
print(best_aic_model)
print(best_bic_model)

注意事项

  • 确保df3中model_formula列的公式格式正确,包含完整的固定效应与随机效应结构(如(1|group)这类随机项)
  • 若不同公式对应不同数据集子集,需在循环中为每个模型指定对应的数据子集
  • 可在循环中加入tryCatch捕获拟合错误,避免单个模型报错中断整个批量流程

内容的提问来源于stack exchange,提问作者confusedindividual

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 23:40:25