3

需要应用分支定界法来选择最佳模型。leaps()来自 jumps 包的效果很好,只有当数据没有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可以处理NAs的替代方法是什么?我正在编写自己的函数来做类似的事情,但它变得又大又笨重,我觉得我正在重新发明轮子......

更新: 我尝试过使用stepAIC(),面临同样的数据丢失问题:

Error in stepAIC(fit) : 
  number of rows in use has changed: remove missing values?
4

2 回答 2

1

您可以尝试 bestglm::bestglm ,其中可以指定分支绑定方法。NA 可以由 na.action 参数处理,就像它在 glm 中一样。有关更多信息,请参见此处:http: //cran.r-project.org/web/packages/bestglm/vignettes/bestglm.pdf

于 2013-12-02T18:20:48.347 回答
0

这是一个统计问题,因为 AIC 无法比较使用不同数据集构建的模型。因此,要比较具有和不具有某些变量的模型,您需要删除这些变量缺少值的行。引用 Ben Bolker 的话,您可能需要“重新考虑您的建模策略” 。否则,您可能还想查看 AIC 的变体,快速 Google 搜索会显示最近的JASA 文章 ,这可能是一个很好的起点。

- 亚伦

于 2016-12-21T07:58:25.737 回答