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

在mice调用中向glm.fit传递参数遇错求助

解决mice中传递glm.fit控制参数的问题

我刚看完你的问题,你之前的参数传递方式完全搞错了——mice()函数根本不接受直接把glm.fit()作为参数传入,这也是你两次尝试都报错的原因。让我一步步给你讲清楚正确的做法:

为什么之前的写法会报错?

  • Try 1的错误:你调用glm.control(list(epsilon = 1e-08, maxit = 100, trace = FALSE))是错的,glm.control()的参数是单独传入的,不是把所有参数打包成一个列表丢进去。而且你直接把glm.fit(...)放在mice()的参数列表里,mice()根本不认识这个参数,自然会报错。
  • Try 2的错误:glm.fit()是底层拟合函数,必须传入x和y等必填参数才能运行,你单独只传control参数,它肯定会提示缺少x参数。

正确传递maxit参数的方法

要给基于glm的插补方法(比如你用到的logreg)传递拟合控制参数,你需要用mice()的glm.args参数,把控制参数打包成列表传进去:

test_data <- data.frame(x = as.factor(round(rnorm(100))), 
                        y = as.factor(round(rnorm(100, 1,1))),
                        z = rnorm(100,5,1))
test_data[3:4, 1] <- NA
test_data[5:8, 2] <- NA

test_init <- mice(test_data, max = 0, print = F, visitSequence = "monotone", 
                  defaultMethod = c("pmm", "logreg", "polyreg", "polr"))

predictor_matrix <- quickpred(test_data)

# 正确的写法
test_data_mice <- mice::mice(test_data, print = F, 
                        predictorMatrix = predictor_matrix,
                        method = test_init$method,
                        visitSequence = test_init$visitSequence,
                        glm.args = list(control = glm.control(maxit = 100))
)

更精准的参数传递(可选)

如果你只想给特定的插补方法(比如只有logreg需要增加迭代次数)传递参数,可以用methodArgs参数,这样不会影响其他方法:

test_data_mice <- mice::mice(test_data, print = F, 
                        predictorMatrix = predictor_matrix,
                        method = test_init$method,
                        visitSequence = test_init$visitSequence,
                        methodArgs = list(logreg = list(control = glm.control(maxit = 100)))
)

关于futuremice找不到本地函数的小提示

顺便提一下你之前遇到的futuremice问题:本地函数找不到通常是因为future的全局变量默认不包含这些函数,你可以在设置future计划时加上globals = TRUE,或者把本地函数明确传入futuremice()的globals参数里,比如:

library(future)
plan(multisession, globals = TRUE)
# 然后运行futuremice

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 17:30:42