【问题标题】:What is an alternative to leap() that can handle NAs?可以处理 NA 的 jump() 的替代方法是什么?
【发布时间】:2013-12-15 14:43:57
【问题描述】:

需要使用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% 的数据。

可以处理NAs 的leap 的替代品是什么?我正在编写自己的函数来做类似的事情,但它变得又大又笨重,我觉得我在重新发明轮子......

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

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

【问题讨论】:

  • 对您的数据估算 NA 是否合理? stepAIC()(前后)真的不行吗?
  • 插补不是一种选择。 stepAIC() 是否经过所有可能的组合?
  • 没有 MASS::stepAIC()step() 一样前进,后退或两者兼而有之。对于大多数数据集,通常会找到与 leaps() 相同的模型(我认为???)。
  • 好的,需要大图说明;您如何考虑比较基于不同数据集构建的两个模型?或者这是问题的一部分?
  • 不过,这部分是统计问题,因为 AIC 无法比较使用不同数据集构建的模型。因此,要比较具有和不具有某些变量的模型,您需要删除这些变量缺少值的行。您可能需要“重新考虑您的建模策略”,引用Ben Bolker。否则,您可能还想查看 AIC 的变体,快速 Google 搜索会找到 recent JASA article,这可能是一个很好的起点。

标签: r na genetics


【解决方案1】:

这是一个统计问题,因为 AIC 无法比较所构建的模型 不同的数据集。因此,比较具有和不具有确定性的模型 变量,您需要删除那些缺失值的行 变量。您可能需要“重新考虑您的建模策略”to quote Ben Bolker。 否则,您可能还想研究 AIC 的变体,快速 谷歌搜索显示最近的JASA article 这可能是一个很好的起点。

- Aaron

【讨论】:

  • 我在使用bestglm(train, IC="AIC") 时遇到了完全相同的错误。我的数据框没有空值,而是一些零。
【解决方案2】:

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

【讨论】:

  • 感谢参考bestglm 包,不知道。这个包还需要消除 NA 行,我试图避免这种情况。
猜你喜欢
  • 2018-10-22
  • 2014-03-23
  • 1970-01-01
  • 2022-11-13
  • 2015-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多