一般线性混合效应(glmer)异方差建模

4

我的变量是在随机分块和子采样设计的测量下进行的,其中我的处理为23个接种物。我有3个完整的块和每块6个样本。示例数据框包括4个响应变量(LH、REN、FTT、DFR)、Accesion(处理)、Bloque(块编号)和Plot(用于解释子采样的变量)。数据的头部如下:

  Plot Accesion Bloque   LH  REN FTT DFR
1  221       22      1 20.6 1127  23  88
2  221       22      1 20.5 1638  20  88
3  221       22      1 24.5 1319  16  88
4  221       22      1 21.4  960  17  88
5  221       22      1 25.7 1469  18  88
6  221       22      1 25.8 1658  21  88

因此,在各种转换(对数、boxcox、幂等等)后,几乎所有的100个响应变量的数据都是非正态和异方差的。大多数变量显示出具有不同方差的卡方或泊松分布。

FTT的直方图

到目前为止,我一直在运行一个广义线性模型-使用Poisson作为响应变量的效应,我正在使用以下代码:glmer()

FTTglme = glmer(FTT ~ Accesion + Bloque + (1|Plot), data = Lyc,   
family=poisson(link="identity"))

残差不服从shapiro.test()的正态分布。我认为这是因为残差中存在异方差性。通过根据Accesion绘制残差箱线图可以看出方差之间的差异: Boxplot of Residuals by Accesion 预计在植物群体之间会存在异方差性,但我知道它可以在glme内进行建模。我已经调查了需要添加的代码:
vf <- varIdent(form=~Accesion)

FTTglme = glmer(FTT ~ Accesion + Bloque + (1|Plot), data = Lyc,   
family=poisson(link="identity"), weights = vf)

我希望不同的方差可以考虑每个接入类别。但是我一直收到错误提示:
Error in model.frame.default(data = Lyc, weights = varIdent(form = ~Accesion),  : 
  variable lengths differ (found for '(weights)')

有人知道如何在glmer()内考虑访问之间方差差异吗?

欢迎提出任何其他分析数据的建议。


(1) 为什么需要身份链接? (2) 您正在尝试将 nlmelme4 语法混合使用于权重:这是行不通的... - Ben Bolker
glmer有一个权重参数。正确的语法是什么? - Adolfo Donoso
1个回答

1

我已经解决了这个问题。在glmer()中,权重参数对应于与原始向量长度相同的向量。为了建模异方差性,我生成了一个方差数据框:

VAR<-aggregate(Lyc[,6],by=list(Lyc$Accesion), var)
colnames(VAR)<-c("Accesion", "Var")

那将产生一个数据框 Treatment/Variance,其头部如下:
 Accesion       Var
1       22  4.369281
2       23 16.251634
3       24 13.911765
4       25 15.404412
5       26 15.895833
6       27 44.838095

然后我创建一个新的数据框,将两个数据框合并。
Lyc2<-merge(VAR, Lyc, by="Accesion")

我曾经因为错误地使用了一次,发现需要使用反向方差来修正方差。

Lyc2$Var<-(1/Lyc2$Var)

在所有数据步骤完成后,我运行了代码:

After all the data steps, i run the code:

FTTglme = glmer(FTT ~ Accesion + Bloque + (1|Plot), data = Lyc2,    
family=poisson(link="log"), weights = Lyc2$Var)

这解决了方差问题:

Corrected variance residuals boxplot


恭喜你解决了这个问题。这并不完全等同于为每个组估计不同的方差。https://stackoverflow.com/questions/21409340/how-to-allow-for-factor-specific-variance-of-random-effect-in-lme提供了一个链接,但对于你的例子来说并不是非常实用,因为它需要为每个组设置单独的虚拟变量... - Ben Bolker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接