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

brms嵌套随机效应指定错误及模型设置疑问求助

问题解决与答疑

一、报错原因与修复

你的报错是cor_ar()语法使用错误导致的,具体问题及修复方式如下:

  1. 嵌套分组结构写法错误:brms中指定嵌套分组需用gr()函数包裹,不能直接用/连接变量。正确表示var1嵌套在var3中、var3嵌套在var4中的写法是gr(var4, var3, var1)。
  2. cor_ar参数顺序错误:cor_ar()第一个参数是自回归阶数(比如AR(1)就传入1),若要基于时间/序列变量var2建模自相关,需通过by参数指定,不能将var2与阶数用+连接。

修正后的完整代码:

result <- brm(
  bf(
    mvbind(var9, var10, var15, var16) ~ var2 + var13 + var14 + var19 + var20 + var34 + var46 + var47 + var50 + var51 + var52 + var56 + var57 + var59 + var60 + var62 + var65 + var66 + var89 + var90 + var91 + var92 + var93 + var94 + cor_ar(1, by = var2 | gr(var4, var3, var1)),
           zi ~ var2 + var5 + var114 + cor_ar(1, by = var2 | gr(var4, var3, var1))
    ),
  data = y,
  family = zero_inflated_negbinomial(),
  iter = 1000,
  chains = 4,
  future = TRUE
)

二、关于两个设置的答疑

1. 使用cor_ar()指定自回归协方差结构

语法修正后这个用法是合理的,补充几点注意事项:

  • 若要建模协方差结构而非相关结构,需添加cov = TRUE参数,示例:cor_ar(1, by = var2, cov = TRUE | gr(var4, var3, var1))。
  • 确保var2是代表时间/观测顺序的变量,自相关结构会基于该变量在分组内的排序计算。
  • gr()函数参数顺序:最外层分组在前,最内层在后,即gr(外层分组, 中层分组, 内层分组)。

2. 设置future = TRUE实现链的并行计算

这个设置是正确的,但需提前初始化future包的并行策略,否则无法真正启动并行。在运行brms代码前添加以下代码:

library(future)
plan(multisession) # 自动适配CPU核心数分配并行进程,RStudio中兼容性更好

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 16:37:52