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

使用equatiomatic提取混合模型公式时vapply错误排查求助

问题与代码

我正在运行如下混合模型:

assign(
  paste("M_FACTOR_", h, sep = ""),
  lmerTest::lmer(
    LogT ~ 1 + as.factor(Monthly) * gender + (as.factor(Monthly) | ID),
    data = plot_data,
    REML = TRUE,
    control = lmerControl(optimizer = 'optimx', optCtrl = list(method = 'nlminb'))
  )
) # apply model (Monthly as factor)
eq_fac <- equatiomatic::extract_eq(get(eval(paste("M_FACTOR_", h, sep = ""))), 
                                   wrap = TRUE)

运行后出现以下错误:

Error in vapply(names(pred_level), function(x) { :
values must be length 1,
but FUN(X[[1]]) result is length 0

请问该错误是否因我将Monthly转换为因子类型导致?

解答

这个错误确实和Monthly转为因子的操作高度相关,具体细节如下:

  • 问题核心:equatiomatic::extract_eq在解析含因子交互项的混合模型时,旧版本或特定场景下的因子水平提取逻辑存在缺陷。你在公式里直接用as.factor(Monthly)生成临时因子,同时搭配交互项与随机效应,会导致函数在识别预测变量的水平信息时返回空值,触发vapply对返回值长度的校验错误。
  • 验证方法:临时将公式中的as.factor(Monthly)替换为原始数值型的Monthly(假设原变量是数值),重新拟合模型后再运行extract_eq,若错误消失即可确认因子转换是诱因。
  • 修复方案:
    1. 提前在数据框中转换因子:先运行plot_data$Monthly <- as.factor(plot_data$Monthly),再在模型公式中直接使用Monthly(无需嵌套as.factor()),避免临时因子导致的解析问题。
    2. 更新equatiomatic包:该函数的后续版本已修复部分混合模型因子解析的bug,升级到最新版可能直接解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 00:26:06