gpt4 book ai didi

r - 具有许多变量的数据集的 bestglm 替代方案

转载 作者:行者123 更新时间:2023-12-02 01:46:22 28 4
gpt4 key购买 nike

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

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

您可以自己尝试 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 .

关于r - 具有许多变量的数据集的 bestglm 替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12012746/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com