模型平均glmer问题

时间:2018-04-14 18:02:04

标签: r

由于统计经验有限,我对此非常陌生,所以请耐心等待。我正在尝试使用glmer在我的数据上运行模型平均值。

我的数据有3个解释性分类变量,并已成功运行dredge()及其相互作用以获取AICc值。但是,当我运行model.avg()时,我获得了某些模型的输出,但没有输出其他模型。这就是我的意思。

ae <- read.csv(file=file.choose())
options(na.action="na.fail")
global.model<-glmer(
     cbind(numerator,total-numerator)~d+s+t+d:s:t+d:s+d:t+s:t+(1|random), 
     data=ae, family=binomial)   
options(max.print=1000000)
dredge(global.model,beta=c("none"),evaluate=TRUE,rank="AICc") 
ae.model <- glmer(
     cbind(numerator,total-numerator)~d+s+t+d:s:t+d:s+d:t+s:t+(1|random),
    data=ae,family=binomial)
models <- dredge(ae.model)  
summary(model.avg(get.models(models,subset=delta<5)))

出现错误消息:

  

model.avg.default中的错误(get.models(models,subset = delta&lt; 5)):   模型并不是唯一的。重复:'2 = 3 = 4'和'10 = 11'

我真的不明白我哪里出错了,为什么我要为某些互动获得输出而不是其他人。

提前感谢您提供的任何帮助。

summary(ae)
  p                   t           day             hour            scan             random    behaviour  
 ae:182   blood        :42   Min.   :1.000   Min.   :1.000   Min.   : 0   ae_blood_1_1:  7   alert:182  
          egg          :35   1st Qu.:1.000   1st Qu.:1.000   1st Qu.:10   ae_blood_1_2:  7              
          repellentfree:63   Median :2.000   Median :2.000   Median :30   ae_blood_1_3:  7              
          wolf         :42   Mean   :1.654   Mean   :1.962   Mean   :30   ae_blood_2_1:  7              
                             3rd Qu.:2.000   3rd Qu.:3.000   3rd Qu.:50   ae_blood_2_2:  7              
                             Max.   :3.000   Max.   :3.000   Max.   :60   ae_blood_2_3:  7              
                                                                          (Other)     :140              
   numerator           total      proportion        percentage      d                        s     
 Min.   : 0.0000   Min.   :17   Min.   :0.00000   Min.   : 0.000   E :14   1 - very light wind:21  
 1st Qu.: 0.0000   1st Qu.:17   1st Qu.:0.00000   1st Qu.: 0.000   SE:84   2 - light wind     :70  
 Median : 0.0000   Median :17   Median :0.00000   Median : 0.000   SW:35   3 - moderate wind  :77  
 Mean   : 0.5824   Mean   :17   Mean   :0.03426   Mean   : 3.426   W :49   4 - heavy wind     :14  
 3rd Qu.: 0.0000   3rd Qu.:17   3rd Qu.:0.00000   3rd Qu.: 0.000                                   
 Max.   :16.0000   Max.   :17   Max.   :0.94118   Max.   :94.118 

1 个答案:

答案 0 :(得分:0)

猜测问题是由于您的实验设计(实际表示的因素组合)与您编写因素的方式的某种组合,您的某些交互术语彼此之间是多余的。猜测您可能会更好地将您的模型公式表达为cbind(numerator,total-numerator)~d*s*t+(1|random),这将使R更容易自动排除冗余条款。

我很难复制这个。 (这不是一个完全答案,但对于评论来说太长了......)当我随机抽取因子水平以获得与数据集中相同数量的重复时,大多数交互项最终都是共线的,所以模型或多或少崩溃了。我构建了一个阶乘设计(平衡,4x4x4x2 = 128个总观测值)并随机添加了其余的必要变量:

set.seed(101)
ae <- expand.grid(d=c("E","SE","SW","W"),
                 s=c("very_light","light","moderate","heavy"),
                 t=c("blood","egg","rf","wolf"),
                 rep=1:2)
ae <- data.frame(ae,
      random=sample(LETTERS,size=nrow(ae),replace=TRUE),
      total=17,
      numerator=sample(c(0,16),prob=c(0.96,0.04),replace=TRUE,size=nrow(ae)))

(请注意,您的响应变量的边际分布非常偏斜 - 第三个四分位数为零,最大值为16/17,平均值仅为0.5左右,这意味着您大多数为零且具有一些大值。二项式模型可能效果不佳。)

这个稍微简化的代码版本会产生 lot 的警告(部分原因是因为响应变量中没有实际信号),但没有错误(我使用{{1对所有模型进行模型平均,因为在这个示例集中只有一个delta-AIC <5的模型):

subset=TRUE