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

在R中用Caret训练Firth模型时出现重采样性能指标缺失问题

Firth逻辑回归在caret中重采样指标NA的排查思路
  • 检查交叉验证折叠的数据分离/极端分布问题
    Firth回归虽针对分离数据设计,但如果某交叉验证折叠出现极端情况(比如某类别样本数为0、特征完全区分两类),模型可能无法生成有效预测,导致指标计算为NA。可手动遍历折叠验证:

    folds <- createFolds(y = train_data$target, k = 10, returnTrain = TRUE)
    for(i in 1:length(folds)){
      train_fold <- train_data[folds[[i]], ]
      test_fold <- train_data[-folds[[i]], ]
      # 以brglm2为例实现Firth回归
      fit <- brglm2::brglm(target ~ ., data = train_fold, 
                           family = binomial("logit"), method = "brglm.fit")
      pred <- predict(fit, newdata = test_fold, type = "response")
      print(table(pred > 0.5, test_fold$target))
    }
    

    查看是否有折叠出现无法生成有效分类预测的情况。

  • 确认caret调用Firth模型的参数正确性
    确保模型调用时的关键参数设置无误:

    • 分类任务需在trainControl中设置classProbs = TRUE,否则caret无法正确计算Accuracy、Kappa等指标;
    • 检查Firth回归包(如brglm2/logistf)的参数传递是否正确,避免参数冲突。例如用brglm2时,需在train中明确指定拟合方法:
      firth_fit <- train(
        target ~ .,
        data = train_data,
        method = "brglm2",
        family = binomial("logit"),
        trControl = trainControl(method = "repeatedcv", repeats = 5, classProbs = TRUE),
        control = list(method = "brglm.fit")
      )
      
  • 排查交叉验证折叠的类别完整性
    若某测试折叠中仅存在单一类别样本,Kappa指标会因计算逻辑要求两类都有样本而返回NA,极端情况下Accuracy也可能异常。可遍历折叠查看类别分布:

    for(i in 1:length(folds)){
      print(paste("Fold", i, "类别分布:"))
      print(table(train_data[-folds[[i]], "target"]))
    }
    

    若存在此类折叠,可调整交叉验证策略(如增加折叠数、重复次数),或使用分层折叠(caret默认分层,但可确认createFolds的stratify参数是否生效)。

  • 查看单折叠拟合的详细日志
    caret默认会掩盖单折叠的报错信息,可开启 verbose 模式定位问题:

    trControl <- trainControl(
      method = "repeatedcv",
      repeats = 5,
      verboseIter = TRUE,
      allowParallel = FALSE
    )
    firth_fit <- train(target ~ ., data = train_data, method = "brglm2", trControl = trControl)
    

    通过输出的折叠训练日志,检查是否存在模型收敛失败、系数无法估计等错误。

  • 验证依赖包版本兼容性
    caret与Firth回归包(brglm2/logistf)的版本冲突可能导致预测值提取失败。可尝试更新所有依赖包到最新版本,或切换另一个Firth回归实现包测试(比如将method改为"logistf"),看是否能正常生成指标。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 21:51:02