我的变量是在随机区块上测量的,采用子采样设计,其中我的治疗是23 Accesion.我有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
因此,在所有类型的转换(log,boxcox,power等)之后,几乎所有100个响应变量的数据都是非正态和异方差的.大多数变量显示卡方或泊松分布,每个Accesion的方差不同.
到目前为止,我一直致力于使用FTT上的glmer()作为响应变量来运行Poisson的广义线性模型效应.我正在使用此代码:
FTTglme = glmer(FTT ~ Accesion + Bloque + (1|Plot), data = Lyc,
family=poisson(link="identity"))
根据shapiro.test(),残差是非正常的.我认为,这是因为残差中观察到的异方差性.作为Accesion残差的箱线图,显示了差异的差异:
植物种群之间存在异方差性,但我知道它可以在内部模拟.正如我已经调查的那样,我应该添加的代码是:
vf <- varIdent(form=~Accesion)
FTTglme = glmer(FTT ~ Accesion + Bloque + (1|Plot), data = Lyc,
family=poisson(link="identity"), weights = vf)
我希望不同的差异来考虑每个Accesion类别.但我一直收到错误:
06003
有谁知道如何解释glmer()内部的Accesions之间的差异差异?
还欢迎任何其他分析数据的建议.
最佳答案 我已经解决了这个问题.在glmer()中,权重参数对应于与原始长度相同的向量.为了模拟异种性,我生成了一个方差数据帧:
VAR<-aggregate(Lyc[,6],by=list(Lyc$Accesion), var)
colnames(VAR)<-c("Accesion", "Var")
这产生了一个数据帧治疗/方差,它的头部是:
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)
完成所有数据步骤后,我运行代码:
FTTglme = glmer(FTT ~ Accesion + Bloque + (1|Plot), data = Lyc2,
family=poisson(link="log"), weights = Lyc2$Var)
这解决了方差问题: