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

如何在二项模型中对序列相关性建模?海滩动物采样比例趋势分析求助

解决方案

你可以直接在glmmTMB框架内加入一阶自回归(AR1)结构处理时间序列相关性,不需要更换工具包,具体操作步骤如下:

步骤1:数据预处理

glmmTMB的AR1随机效应要求时间变量为有序因子,先对year做格式转换:

dat$year_fac <- factor(dat$year, ordered = TRUE)

你的数据每个海滩刚好对应12个完整年度的观测,没有缺失值,完全满足AR1结构对时间点等间隔、无缺失的要求。

步骤2:拟合加入自相关结构的模型

在随机效应部分指定每个海滩分组下的AR1自相关结构:

require(glmmTMB)
dat.TMB_ar1 <- glmmTMB(
  cbind(notthisbeach, thisbeach) ~ year * fBeach,
  family = "betabinomial",
  random = ~ ar1(year_fac + 0 | fBeach),
  data = dat
)

步骤3:验证自相关是否消除

用DHARMa重新做杜宾-沃森检验,确认序列相关问题已经解决:

require(DHARMa)
simres_ar1 <- simulateResiduals(dat.TMB_ar1, plot = T)
res_ar1 <- recalculateResiduals(simres_ar1, group = dat$year)
testTemporalAutocorrelation(res_ar1, time = unique(dat$year))

如果DW检验p值大于0.05,说明自相关已经被有效控制。

步骤4:提取每个海滩的单独趋势检验结果

使用emmeans包提取交互项中每个海滩对应的年份斜率和显著性:

require(emmeans)
# 提取每个海滩的year趋势值
beach_trends <- emtrends(dat.TMB_ar1, ~ fBeach, var = "year")
print(beach_trends)

输出结果中会直接给出每个海滩的趋势估计值、标准误、95%置信区间和对应p值,满足你单独做趋势检验的需求。

备选方案

如果glmmTMB的AR1结构无法完全消除自相关,可以改用brms包拟合贝叶斯beta二项模型,支持更灵活的自相关结构指定,参考代码:

require(brms)
dat_brm <- brm(
  cbind(notthisbeach, thisbeach) ~ year * fBeach + ar(year, gr = fBeach),
  family = "beta_binomial2",
  data = dat,
  chains = 4,
  cores = 4
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:54:03