0

我正在尝试在符合 GEE 的边缘模型之间进行正向模型选择,使用准 Akaike 标准 (QIC) 作为选择标准。但是,当我使用 MuMIn 包中的疏浚函数时,我的全局模型是秩不足的。

这个问题上,通过“欺骗”MuMIn 解决了类似的问题。这是通过拟合一个较小的有效全局模型、更新该模型的公式参数并使用它来完成的。但是,在使用 wgeesel 包中的 wgee() 函数时,我无法让它工作。

这是 R 中使用 IMPS 纵向数据集的可重现示例。

####Example1
data(imps)
library(wgeesel)
imps.complete <- na.omit(imps)
imps.complete$repd<-imps.complete$Drug #repeat a column to make model rank-deficient
fit <- wgee(IMPS79 ~ Drug+Sex+Time+repd, data=imps.complete, 
            id=imps.complete$ID, family="gaussian",
            corstr="exchangeable", scale=NULL)

gee.min <- wgee(IMPS79 ~ Drug+Sex+Time, data=imps.complete, 
                id=imps.complete$ID, family="gaussian",
                corstr="exchangeable", scale=NULL) #this model can be fit
gee.min$model #IMPS79 ~ Drug + Sex + Time
gee.min$model <- IMPS79 ~ Drug + Sex + Time + repd #update model argument

#try the solution from other stackoverflow page. doesn't work
options(na.action=na.fail)
gee.retry <- model.sel(lapply(
  dredge(gee.min,fixed=c("Drug","Sex"),rank="QIC",evaluate=FALSE),
  eval),rank="QIC")  

# note that the call argument cannot be updated
gee.min$call <- wgee(model = IMPS79 ~ Drug + Sex + Time + repd, data = imps.complete, 
                     id = imps.complete$ID, family = "gaussian", corstr = "exchangeable", 
                     scale = NULL)

我得到的错误代码是“QIC(global.model)中的错误:模型矩阵秩不足;geeglm 无法继续”。我猜疏浚正试图在全球模型上评估 QIC,这是它无法做到的

任何帮助,将不胜感激!我正在对许多不同的模型执行类似的程序,并且希望我的方法具有可重复性,因此我正在寻找某种自动化方法来使用 QIC 进行正向模型选择。

4

1 回答 1

0

我无法使用 MuMIn 包解决此问题。

但是,我使用Peter DeWitt 在 GitHub 上发布的pstools包找到了一种解决方法。他有一个名为 gee_stepper 的便捷函数,该函数使用 QIC 执行前向模型选择并在运行时输出结果。在对函数进行一些小的编辑后,我可以将它用于我的目的:

(1) 将正在使用的 QIC 更改为根据 MuMIn 包计算的实际 QIC;gee_stepper 似乎使用了 MESS 包中的准似然值

(2) 让函数使用用户指定的最小模型,例如总是包含某些协变量,而不是使用仅截距模型作为最小模型。

于 2019-10-29T20:07:03.293 回答