在brms中丢弃空交互项:为何预期行为未出现?
brms未丢弃无数据交互项的原因解析
你遇到的是brms和rstanarm在分类变量交互项处理上的设计差异:
- rstanarm会自动检查数据,移除那些没有对应观测的交互项水平(也就是空单元格),所以在你的例子里
var1a:var2z会被丢弃。 - brms则遵循R基础公式系统的默认逻辑,会保留分类变量所有可能的交互项组合,哪怕某个组合在数据里没有观测值。这就是为什么你运行代码后,
var1a:var2z依然存在于模型中。
如果想让brms和rstanarm的行为一致,你可以手动构建只包含现有数据组合的交互项变量,再建模:
data$int <- interaction(data$var1, data$var2, drop = TRUE) fit <- brms::brm(y ~ -1 + int, data = data)
这样模型就只会保留有实际观测的交互项,和rstanarm的处理结果一致。
内容的提问来源于stack exchange,提问作者wati
相关产品推荐
相关产品推荐

