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

如何编写参数化因变量的lcga0函数以复用lcmm模型?

问题排查与解决

错误原因

  1. 原代码中demomodel的写法存在语法错误,遗漏了核心的lcmm()函数调用,导致实际并未生成预期模型。
  2. 使用reformulate()构造公式时,尽管公式形式看似正确,但lcmm函数对这类公式的解析逻辑存在特殊性,无法正确关联poly()调用中的变量与输入数据框,进而触发“未定义列被选择”的错误。

修正方案

改用字符串拼接生成公式文本,再通过as.formula()转换为标准公式对象,确保lcmm能正确识别公式中的函数调用与数据列关联。

完整修正代码

# 构造测试数据
dataframe <- data.frame(id = c(1, 2, 1 ,2), time = c(1, 1, 2,2), rt=c(12, 13, 11, 15))

# 正确的基准模型构造
demomodel <- lcmm(rt ~ poly(time, degree = 2, raw = TRUE),
                  subject = "id", data = dataframe)

# 修正后的参数化函数
rlcga0 <- function(y, z){
  # 拼接公式字符串并转换为公式对象
  model_formula <- as.formula(paste(y, "~ poly(time, degree = 2, raw = TRUE)", sep = ""))
  lcmm(model_formula,
       subject = "id", data = z,
       link = "9-quant-splines")
}

# 测试函数调用
Model <- rlcga0("rt", dataframe)

说明

通过字符串拼接生成的公式,as.formula()会完整解析poly(time, ...)的函数调用逻辑,lcmm处理时能准确从输入数据框z中读取time列,避免列匹配错误,最终生成的模型与基准demomodel结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 12:52:59