我试图使用相关矩阵作为MuMIn(R)中dredge()的“子集”参数选择变量。
我的问题正如this unresolved post中所述: 我运行一个模型fm1 *,并使用dredge来测试所有变量组合。为了排除某些组合,我按照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
会发生同样的情况