我正在尝试使用相关矩阵作为 MuMIn (R) 中的 dredge() 的“子集”参数来选择变量。
我的问题正是在这篇未解决的帖子中描述的:我运行一个模型 fm1*,并使用挖泥机来测试所有变量组合。为了排除某些组合,我按照 dredge.subset demo中描述的方法使用子集矩阵 sub1 。
> sub1
X1 X2 X3 X4 X5 X6 X7 X8 X9 X10
X1 NA NA NA NA NA NA NA NA NA NA
X2 TRUE NA NA NA NA NA NA NA NA NA
X3 FALSE FALSE NA NA NA NA NA NA NA NA
X4 FALSE FALSE TRUE NA NA NA NA NA NA NA
X5 FALSE FALSE FALSE FALSE NA NA NA NA NA NA
X6 FALSE FALSE FALSE FALSE TRUE NA NA NA NA NA
X7 TRUE FALSE TRUE FALSE FALSE TRUE NA NA NA NA
X8 FALSE TRUE TRUE TRUE TRUE FALSE TRUE NA NA NA
X9 TRUE TRUE TRUE TRUE FALSE TRUE FALSE FALSE NA NA
X10 TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE TRUE NA
它最多可以处理 9 个变量;更多我收到一条错误消息:
> form
N ~ X1 + X2 + X3 + X4 + X5 + X6 + X7 + X8 + X9 + X10
> fm1<-glm(form,data=dfmod)
> ms1<-pdredge(fm1,subset=sub1,cluster=clust)
Warning message: In pdredge(fm1, subset = sub1, cluster = clust) :
non-missing values exist outside the lower triangle of 'subset'
这是不正确的,如下所示:
any(!is.na(sub1[!lower.tri(sub1)]))
[1] FALSE
除了警告之外,模型选择表还包括相关矩阵不允许的变量集。
我确实通过将矩阵 sub1 转换为逻辑表达式找到了一种解决方法,然后它可以作为子集条件正常工作。但是了解矩阵发生了什么会很有趣。
*请注意,glm 和 glmer 也会发生同样的情况