嵌套设置中的混合效应模型或多元回归比较

Mixed effect model or multiple regressions comparison in nested setup

我有一个回复 Y,它是一个介于 0-1 之间的百分比。我的数据按分类学或进化关系嵌套,比如 phylum/genus/family/species,我有一个连续协变量 temp 和一个分类协变量 fac,级别为 fac1fac2

我有兴趣估价:

  1. fac1fac2(截距)之间的 Y 有区别吗?
  2. fac 的每个级别对 temp 的响应是否不同(线性斜率)
  3. 我的分类法的每个级别在 Y 中是否存在差异以及这些差异解释了多少差异(参见 varcomp
  4. 我的分类法的每个级别对 temp 的响应是否不同(线性斜率)

一个蛮力的想法是将我的数据分成最低的分类这里的物种,对每个物种 i 作为 betareg(Y(i)~temp) 进行线性 beta 回归。然后提取每个物种的斜率和截距,并将它们分组到每个 fac 的更高分类水平,并比较斜率(截距)的分布,比如通过 Kullback-Leibler 散度与我在引导我的 Y 值时得到的分布。或者比较分类水平或我的因子 fac respectively.Or 之间斜率(或截距)的分布,只比较分类水平或我的因子水平之间的平均斜率和截距。 不确定这是个好主意。也不确定如何回答我的分类水平解释了多少方差的问题,就像在嵌套随机混合效应模型中一样。

另一种选择可能只是那些混合模型,但我怎样才能在一个模型中包含我想测试的所有方面

说我可以使用“gamlss”包来做:

library(gamlss)

model<-gamlss(Y~temp*fac+re(random=~1|phylum/genus/family/species),family=BE)

但在这里我看不到合并随机斜率的方法,或者我可以这样做:

model<-gamlss(Y~re(random=~temp*fac|phylum/genus/family/species),family=BE)

但是对 lme 的内部调用在这方面有一些问题,我猜这不是正确的表示法。 有什么方法可以实现我想要测试的结果,不一定是使用 gamlss,而是使用任何其他包含嵌套结构和 beta 回归的包? 谢谢!

glmmTMB 中,如果 您的响应中没有确切的 0 或 1 值,这样的事情应该有效:

library(glmmTMB)
glmmTMB(Y ~ temp*fac + (1 + temp | phylum/genus/family/species),
           data = ...,
           family = beta_family)
  • 如果您的价值观为零,您将需要做一些事情。例如,您可以在 glmmTMB 中添加一个零 inflation 项; brms 可以处理 0-1-inflated Beta 响应;您可以稍微“挤压”0/1 值(请参阅 Smithson 和 Verkuilen 关于 Beta 回归的论文的附录)。如果你只有几个 0/1 值,那么你做什么都无关紧要。如果你有很多,你需要花一些认真的时间思考它们的含义,这将影响你处理它们的方式。它们是否代表审查(即不完全为 0/1 但过于接近边界而无法衡量差异的值)?它们是质量不同的反应吗?等等...)
  • 正如我在评论中所说,计算 GLMM 的方差分量非常棘手 - 不一定是简单的分解,例如参见 here。但是,您可以计算每个分类级别的截距和斜率的方差并进行比较(您可以使用标准差与固定效应的大小进行比较...)
  • 此处给出的模型可能要求很高,具体取决于系统发育的大小 - 例如,您可能在门级没有足够的复制(在这种情况下,您可以适合模型 ~ temp*(fac + phylum) + (1 + temp | phylum:(genus/family/species)),即拉出门效应作为固定效应)。
  • 这是假设您愿意假设 fac 的影响及其与 temp 的相互作用,系统发育...