R版本2.15.0(2012-03-30)
RStudio 0.96.316
Win XP,最新更新

我确实有一个包含40个变量和15.000个观察值的数据集。我想使用bestglm搜索可能的好模型(逻辑回归)。我已经尝试过bestglm,但是它不适用于中等大小的数据集。经过几次试验,我认为当至少有30个以上的变量时,至少在我的计算机(4G ram,双核)上,bestglm会失败。

您可以自己尝试bestglm限制:

library(bestglm)

bestBIC_test <- function(number_of_vars) {

# Simulate data frame for logistic regression
glm_sample <- as.data.frame(matrix(rnorm(100*number_of_vars), 100))

# Get some 1/0 variable
glm_sample[,number_of_vars][glm_sample[,number_of_vars] > mean(glm_sample[,number_of_vars]) ] <- 1
glm_sample[,number_of_vars][glm_sample[,number_of_vars] != 1 ] <- 0

# Try to calculate best model
bestBIC  <- bestglm(glm_sample, IC="BIC", family=binomial)

}

# Test bestglm with increasing number of variables
bestBIC_test(10) # OK, running
bestBIC_test(20) # OK, running
bestBIC_test(25) # OK, running
bestBIC_test(28) # Error: cannot allocate vector of size 1024.0 Mb
bestBIC_test(30) # Error: cannot allocate vector of size 2.0 Gb
bestBIC_test(40) # Error in rep(-Inf, 2^p) : invalid 'times' argument


我可以在R中使用任何替代方法来搜索可能的良好模型吗?

最佳答案

好吧,对于初学者来说,要穷举搜索40个变量的最佳子集,就需要创建2 ^ 40个超过一万亿的模型。那可能是您的问题。

详尽的最佳子集搜索通常不被认为对超过20个左右的变量是最优的。

更好的选择是像向前逐步选择,大约是(40 ^ 2 + 40)/ 2个模型,大约是800个。

甚至更好(我认为最好)通过glmnet包使用套索进行正则逻辑回归。

良好的概述here

08-28 23:57