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

带偏移项的Poisson GLMM中单日处理暴露的平均边际效应计算

问题:计算带偏移项的Poisson模型中处理的单日平均边际效应

我需要计算单日平均边际效应——即参与者暴露于处理时,响应变量的单日平均变化,但不同参与者的处理暴露天数存在差异。

我用brms拟合了带偏移项的Poisson回归模型,代码如下:

library(brms)
library(marginaleffects)
set.seed(42) # 保证结果可复现

# 样本量
n <- 100

# 生成模拟数据
DF_anly_1 <- data.frame(
  catch_count = rpois(n, lambda = 2), # 泊松分布模拟计数响应变量
  Treatment = sample(c('Control', 'Treatment'), n, replace = TRUE), # 处理分组
  village = sample(c('Village1', 'Village2', 'Village3'), n, replace = TRUE), # 村庄类别
  phase_exp = sample(c('Phase1', 'Phase2'), n, replace = TRUE), # 实验阶段
  boat = sample(c('Boat1', 'Boat2', 'Boat3'), n, replace = TRUE), # 船只随机效应
  day_count = sample(1:30, n, replace = TRUE) # 暴露天数/计数天数
)

# 拟合模型
m1.WF_brms <- brm(catch_count ~ Treatment + village + phase_exp + (1|boat) + offset(log(day_count)),
              data = DF_anly_1, family = poisson(),
              chains = 4, core = 4, iter = 4000)

现有计算方法与疑问

方法1:计算AME后除以日均暴露天数

我用marginaleffects包在响应尺度上计算了处理的平均边际效应(AME):

# 计算处理的边际效应
AME <- comparisons(
  m1.WF_brms, 
  variables = "Treatment", 
  re_formula = NULL,
  type = "response") %>% 
  tidy()

我知道这个函数会控制其他协变量的平均效应来计算处理的总体水平效应,但不确定是否同样适用于偏移项。请问:直接将得到的AME除以暴露天数的均值,能否得到单日处理暴露的平均边际效应?

AME$estimate / mean(DF_anly_1$day_count)   

方法2:固定暴露天数为1计算边际效应

我尝试了另一种方法,固定day_count=1来计算边际效应:

marginal_effects(m1.WF_brms, 
                 conditions = data.frame(day_count = 1), 
                 effects  = "Treatment", 
                 type = "response")

但我感觉这个方法得到的是条件边际效应,而非我需要的平均边际效应,不确定是否正确。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 16:00:13