当使用lme重复测量和varIdent时,我遇到了奇怪的结果。任何帮助都将非常感谢!
我正在测试沿着时间序列的叶子的13C信号是否在2种(A和B)之间不同。我基本上对物种之间的整体差异感兴趣,而不是在特定的时间点。
这是我的数据集:
403
我正在应用以下模型:
Block Species time X13C
1 B 2 0.775040865
2 B 2 0.343913792
3 B 2 0.381053614
1 A 2 0.427101597
2 A 2 0.097743662
3 A 2 0.748345826
1 B 24 0.416700446
2 B 24 0.230773558
3 B 24 0.681386484
1 A 24 0.334026511
2 A 24 0.866426406
3 A 24 0.606346215
1 B 48 0.263085491
2 B 48 0.083323709
3 B 48 0.534697801
1 A 48 0.30594443
2 A 48 0.024555489
3 A 48 0.790670392
1 B 96 0.158090804
2 B 96 0.254880689
3 B 96 0.082666799
1 A 96 0.139189281
2 A 96 0.300340119
3 A 96 0.233149535
1 B 192 0.055421148
2 B 192 0.082582155
3 B 192 0.136636735
1 A 192 0.03641637
2 A 192 0.06082544
3 A 192 0.126029308
由于残差的时间存在异质性,我应用了varIdent,这改进了模型拟合(AIC)。标准化的残差图也看起来很好。
bulk<-lme(X13Catex ~ Species*time, random = ~1|Block/Species, method='REML', na.action=na.exclude, data=VacL, corAR1())
问题在于,通过这段代码,我得到了物种的重要p值,但是看看我的数据看起来物种看起来并不完全......我认为得到如此低的p值是非常奇怪的值,因为误差条在每个时间点重叠,并且在某些时间点A大于B,而在某些时间点则反之亦然。
bulk.var<-lme(X13Catex ~ Species*time, random = ~1|Block/Species, method='REML', na.action=na.exclude, data=VacL, corAR1(), weights=varIdent(form=~1|time))
当我分析其他类似的变量时,它又发生了......
我想知道每个采样时间(n = 3)每个物种的复制是否有问题。难道应用varIdent和具有如此少量重复的“相对复杂”模型可以解释发现的重要p值吗?有关如何处理这个的任何建议?
谢谢!
答案 0 :(得分:0)
好的,让我试试。
首先,您的相关结构对我来说似乎不正确。你需要在那里使用时间协变量。
fit0 <- lme(X13C ~ Species*time, random = ~1|Block/Species, method='REML',
na.action=na.exclude, data=VacL,
corAR1(0.9, form = ~ time | Block/Species))
summary(fit0)
然后嵌套随机效应的方差似乎相当小。我们尝试删除此参数。
fit1 <- lme(X13C ~ Species*time, random = ~1|Block, method='REML',
na.action=na.exclude, data=VacL,
corAR1(0.9, form = ~ time | Block/Species))
summary(fit1)
anova(fit0, fit1)
# Model df AIC BIC logLik Test L.Ratio p-value
#fit0 1 8 35.47003 45.5348 -9.735014
#fit1 2 7 33.47003 42.2767 -9.735014 1 vs 2 8.37192e-09 0.9999
plot(fit1)
情节确实显示出强烈的异质性。在这一点上,我会认真考虑一个GLMM。记住,δ13C是(转化的)级分13C / 12C。一个正态假设似乎有点可疑(尽管我偶尔会将它用于delta值)。然而,在我看来,我们可以根据拟合值对方差进行建模。
fit2 <- lme(X13C ~ Species*time, random = ~1|Block, method='REML',
na.action=na.exclude, data=VacL,
corAR1(0.9, form = ~ time | Block/Species),
weights = varPower())
plot(fit2, resid(., type = "normalized") ~ fitted(.))
anova(fit1, fit2)
# Model df AIC BIC logLik Test L.Ratio p-value
#fit1 1 7 33.47003 42.27670 -9.735014
#fit2 2 8 11.34319 21.40796 2.328405 1 vs 2 24.12684 <.0001
还不错。让我们检查一下p值。
coef(summary(fit2))
# Value Std.Error DF t-value p-value
#(Intercept) 0.3906798322 0.0640391495 24 6.1006405 2.661703e-06
#SpeciesB -0.0303078937 0.0777180616 24 -0.3899723 6.999965e-01
#time -0.0016541839 0.0003059863 24 -5.4060727 1.491893e-05
#SpeciesB:time 0.0002578782 0.0004048368 24 0.6369930 5.301592e-01
拦截和斜坡都没有明显的不同。现在,让我们尝试ANOVA。
anova(fit2)
numDF denDF F-value p-value
(Intercept) 1 24 9.0061 0.0062
Species 1 24 525.7457 <.0001
time 1 24 56.5135 <.0001
Species:time 1 24 0.4058 0.5302
没有方差结构的比较:
anova(fit1)
numDF denDF F-value p-value
(Intercept) 1 24 29.536428 <.0001
Species 1 24 0.319802 0.5770
time 1 24 17.602173 0.0003
Species:time 1 24 0.041482 0.8403
因此,对于使用较少四个参数的模型,您会遇到同样的问题。现在我不知道为什么物种效应在顺序ANOVA中是显着的,如果包括方差结构,尽管相应的模型参数不重要。你可以学习Pinheiro&amp; Bates 2000并尝试找出自己或在Cross Validated上询问。