2

我正在尝试使用相关矩阵作为 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 也会发生同样的情况

4

0 回答 0