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

使用JMBayes拟合mvglmer时出现Error in x$terms错误求助

排查jmbayes::mvglmer函数的报错问题

问题概况

用jmbayes包的mvglmer拟合多变量混合模型,数据是患者重复测量的二分类结局(ecgrate_binary、ecgpri_binary),首条数据片段:

id1     predx    
1011025 Prednisolone        

wks ecgrate_binary ecgpri_binary 
  0              1                 0    

运行以下代码时触发错误:

mvFit1 <-  mvglmer(ecgrate_binary ~treatment+ time+(time|id),
                   ecgpri_binary ~treatment+time +(1|id),
                   data = my_df, 
                   families = list(binomial(link = "logit", binomial(link = "logit")),
                   engine ="STAN")

错误信息:

Error in x$terms : object of type 'symbol' is not subsettable

错误原因与修正步骤

1. families参数语法错误

原代码中families的写法完全不符合要求:

  • 每个结局变量需要对应一个独立的binomial()构造器,列表元素要分开定义
  • 存在多余的嵌套括号,导致参数解析失败

正确写法:

families = list(binomial(link = "logit"), binomial(link = "logit"))

2. engine参数位置错误

engine是mvglmer的顶层参数,不能放在families列表内部,必须移到函数参数的顶层位置。

3. 变量名不匹配

从数据片段看:

  • 时间变量列名是wks,但代码里写的是time,需统一为数据中实际存在的列名
  • ID列名是id1,代码里用的是id,同样要统一(要么改代码里的id为id1,要么重命名数据列)

修正后的完整代码

假设数据中时间列是wks、ID列是id1,修正后代码:

mvFit1 <- mvglmer(
  ecgrate_binary ~ treatment + wks + (wks|id1),
  ecgpri_binary ~ treatment + wks + (1|id1),
  data = my_df, 
  families = list(binomial(link = "logit"), binomial(link = "logit")),
  engine = "STAN"
)

额外验证项

  • 确认my_df中存在treatment列,且无格式错误
  • 检查结局变量是否都是0/1编码的二分类变量
  • 若数据存在缺失值,需按STAN的要求预处理(比如删除缺失行或指定处理方式)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 12:10:07