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

在R语言中使用glmulti时如何指定变量必纳入所有候选模型?

解决glmulti强制纳入变量时的公式弃用警告

问题原因

你自定义的glm.redefined函数中,always参数传入的是长度为2的字符向量c("+vb","+vv"),直接用paste(deparse(formula), always)会生成长度大于1的字符向量,而as.formula处理这类向量的方式已被弃用,因此触发警告。

修复方案

修改自定义函数,先将always中的多个强制纳入项合并为单个字符串,再与原公式拼接:

# 生成模拟数据
vy2 <- round(runif(100, 0,20)*round(runif(100)))
va <- runif(100)
vb <- runif(100)
vv <- rep(c("A","B","C","D"), each=25)
vv <- as.factor(vv)

# 修复后的自定义glm函数
glm.redefined = function(formula, data, always="", ...) {
  # 合并always中的所有强制项为单个字符串
  always_combined <- paste(always, collapse = " ")
  # 拼接完整公式并转换格式
  full_formula <- as.formula(paste(deparse(formula), always_combined))
  glm(full_formula, data=data, ...)
}

# 运行glmulti筛选模型
bab <- glmulti(vy2~va+va:vb+va:vv+vb:vv,level=2,fitfunc=glm.redefined,always=c("+vb","+vv"))

说明

  • 修复核心是通过paste(always, collapse = " ")把c("+vb","+vv")合并成"+vb +vv",确保传入as.formula的是单个字符串,符合当前R的语法规范。
  • 运行修改后的代码,原有的弃用警告会消失,同时vb和vv会被强制纳入所有候选模型,满足你的筛选需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 07:53:13