GLMM glmer和glmmADMB - 比较错误

时间:2017-10-12 13:35:54

标签: comparison mixed-models

我试图比较在不同的应用处理的五个不同群体中获得的种子数量是否存在差异,并且将母本植物和父本植物作为随机效应。首先,我尝试使用glmer模型。

dat <-dat [,c(12,7,6,13,8,11)] 
dat$parents<-factor(paste(dat$mother,dat$father,sep="_")) 

compareTreat <- function(d)

{ 
d$treatment <-factor(d$treatment)
print (tapply(d$pop,list(d$pop,d$treatment),length))
print(summary(fit<-glmer(seed_no~treatment+(1|pop/mother)+
(1|pop/father),data=d,family="poisson")))
}

然后,我比较了两个群体中的两种治疗方法(pop 64和pop 121,在这种情况下)。其他人群没有这种特殊的治疗方法,所以我得到那些NA值。

compareTreat(subset(dat,treatment%in%c("IE 5x","IE 7x")&pop%in%c(64,121)))

这是输出:

IE 5x IE 7x
10     NA    NA
45     NA    NA
64     31    27
121    33    28
144    NA    NA
Generalized linear mixed model fit by maximum likelihood (Laplace
Approximation) [glmerMod]
Family: poisson  ( log )
Formula: seed_no ~ treatment + (1 | pop/mother) + (1 | pop/father)
Data: d

AIC      BIC   logLik deviance df.resid 
592.5    609.2   -290.2    580.5      113 

Scaled residuals: 
Min      1Q  Median      3Q     Max 
-1.8950 -0.8038 -0.2178  0.4440  1.7991 

Random effects:
Groups     Name        Variance  Std.Dev. 
father.pop (Intercept) 3.566e-01 5.971e-01
mother.pop (Intercept) 9.456e-01 9.724e-01
pop        (Intercept) 1.083e-10 1.041e-05
pop.1      (Intercept) 1.017e-10 1.008e-05
Number of obs: 119, groups:  father:pop, 81; mother:pop, 24; pop, 2

Fixed effects:
       Estimate Std. Error z value Pr(>|z|)   
(Intercept)     0.74664    0.24916   2.997  0.00273 **
treatmentIE 7x -0.05789    0.17894  -0.324  0.74629   
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
    (Intr)
tretmntIE7x -0.364

似乎治疗之间没有差异。但由于数据中有很多零,因此零膨胀模型值得尝试。我尝试使用glmmabmd,我写了这样的脚本:

compareTreat<-function(d)

{
d$treatment<-factor(d$treatment)
print(tapply(d$pop,list(d$pop,d$treatment), length))
print(summary(fit_zip<-glmmadmb(seed_no~treatment + (1|pop/mother)+
(1|pop/father),data=d,family="poisson", zeroInflation=TRUE)))
}  

然后我再次比较治疗方法。在这里,我没有更改代码。

compareTreat(subset(dat,treatment%in%c("IE 5x","IE 7x")&pop%in%c(64,121)))

但在这种情况下,输出是

IE 5x IE 7x
10     NA    NA
45     NA    NA
64     31    27
121    33    28
144    NA    NA
Error in pop:father : NA/NaN argument
In addition: Warning messages:
1: In pop:father :
numerical expression has 119 elements: only the first used
2: In pop:father :
numerical expression has 119 elements: only the first used
3: In eval(parse(text = x), data) : NAs introduced by coercion
Called from: eval(parse(text = x), data)

我试图改变我想出的所有内容,但我仍然不知道问题出在哪里。

如果我从glmmadmb脚本中删除(1 | pop / father),模型会运行,但感觉不正确。我想知道错误是否在glmmadmb之前的循环中,但它在glmer模型中工作正常,或者它是否在模型之后的比较中。我试过用na.omit删除NA,以防这是一个问题,但它没有什么区别。为什么脚本会停止并且不会继续运行?

我是RStudio的初学者,我的版本是3.4.2,名为Short Summer。如果有经验的人能指出我正确的方向,我将非常感激!

小时。

0 个答案:

没有答案