需要应用Branch and bound方法来选择最佳模型。只有当数据没有leaps()
值时,来自leaps包的NA
才能正常工作,否则会抛出错误:
#dummy data
x<-matrix(rnorm(100),ncol=4)
#convert to 0,1,2 - this is a genetic data, NA=NoCall
x<-matrix(round(runif(100)*10) %% 3,ncol=4)
#introduce NA=NoCall
x[1,1] <-NA
#response, case or control
y<-rep(c(0,1,1,0,1),5)
leaps(x,y)
Error in leaps.setup(x, y, wt = wt, nbest = nbest, nvmax = NCOL(x) + int, :
NA/NaN/Inf in foreign function call (arg 4)
仅使用complete.cases()
不是一种选择,因为我丢失了80%的数据。
可以处理leap
的{{1}}的替代方案是什么?我正在编写自己的功能来做类似的事情,但它变得越来越笨重,我觉得我正在重新发明轮子......
更新
我尝试使用NA
,面临同样的数据丢失问题:
stepAIC()
答案 0 :(得分:1)
你可以尝试bestglm :: bestglm,其中可以指定分支绑定方法。 NA可以通过na.action参数来处理,就像在glm中一样。请点击此处获取更多信息: http://cran.r-project.org/web/packages/bestglm/vignettes/bestglm.pdf
答案 1 :(得分:0)
这是一个统计问题,因为AIC无法比较建立的模型 不同的数据集。所以比较模型有没有确定 变量,您需要删除那些缺少值的行 变量。您可能需要“重新考虑您的建模策略”,to quote Ben Bolker。 否则,您可能还想查看AIC的变体,快速 谷歌搜索最近出现JASA article 这可能是一个很好的起点。