由于统计经验有限,我对此非常陌生,所以请耐心等待。我正在尝试使用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
答案 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