【发布时间】:2022-01-23 05:39:29
【问题描述】:
我有一个回复Y,这是一个介于 0-1 之间的百分比。我的数据按分类或进化关系嵌套,例如 phylum/genus/family/species,我有一个连续协变量 temp 和一个分类协变量 fac,级别为 fac1 和 fac2。
我有兴趣估算:
-
Y在fac1和fac2之间是否存在差异(截距)以及由此解释的差异程度 - 每个级别的 fac 对
temp的响应是否不同(线性斜率) -
Y对于我的分类的每个级别是否存在差异,以及它们解释了多少差异(请参阅 varcomp) - 我的分类的每个级别对
temp的响应是否不同(线性斜率)
一个蛮力的想法是将我的数据拆分为这里分类最低的物种,为每个物种 i 做一个线性 beta 回归 betareg(Y(i)~temp) 。然后提取每个物种的斜率和截距,并将它们分组到每个 fac 更高的分类水平,并比较斜率(截距)的分布,例如,通过 Kullback-Leibler 散度与我在引导我的 Y 值时得到的分布。或者分别比较分类水平或我的因子 fac 之间的斜率(或截距)分布。或者只比较分类水平或我的因子水平之间的平均斜率和截距。
不确定这是不是个好主意。而且也不确定如何回答我的分类级别解释了多少方差的问题,例如在嵌套随机混合效应模型中。
另一种选择可能只是那些混合模型,但我怎样才能在一个模型中包含我想要测试的所有方面
说我可以使用“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 回归的包? 谢谢!
【问题讨论】:
-
您的数据中是否有精确的 0/1 值(尤其是精确的 1 值)?
glmmTMB应该能够处理具有随机斜率的 Beta 分布响应......请注意,在简单的方差分解不一定有效的混合模型世界中,“解释了多少方差”可能是一个棘手的问题... -
brms也可以做到这一点,我认为,虽然你必须弄清楚整个贝叶斯/MCMC 的事情(值得注意的是,它也可以处理零一膨胀的 Beta) -
非常感谢您的帮助!你知道带有 glmmTMB 包的模型是什么样子吗?我不确定如何将因子 fac 放在那里同时回答上面的 2) 和 4)。你会说蛮力方法通常也可以接受吗?再次感谢
标签: r regression lme4 mixed-models