4

Rバージョン2.15.0(2012-03-30)RStudio 0.96.316 Win XP、最終更新

40個の変数と15.000個の観測値を持つデータセットがあります。bestglmを使用して、可能な適切なモデル(ロジスティック回帰)を検索したいと思います。bestglmを試しましたが、このような中規模のデータセットでは機能しません。いくつかの試行の後、少なくとも私のコンピューター(4G RAM、デュアルコア)に約30を超える変数がある場合、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で使用できる代替案はありますか?

4

2 に答える 2

7

さて、初心者にとって、40変数の最良のサブセットを徹底的に検索するには、1兆を超える2^40モデルを作成する必要があります。それはおそらくあなたの問題です。

網羅的な最良のサブセット検索は、通常、20を超える変数に対して最適であるとは見なされません。

より良い賭けは、約(40 ^ 2 + 40)/ 2モデル、つまり約800であるフォワードステップワイズ選択のようなものです。

glmnetまたは、パッケージを介してラッソを使用して、より良い(私の意見では最高の)正規化されたロジスティック回帰ですらあります。

ここに良い概要があります。

于 2014-03-25T18:20:26.677 に答える
5

モデル選択のためのツールもあるパッケージカレットを探索してみることができます。私は問題なく15000の観測値を持つモデルを適合させることができました:

number_of_vars <- 40

dat <- as.data.frame(matrix(rnorm(15000*number_of_vars), 15000))
dat[,number_of_vars][dat[,number_of_vars] > mean(dat[,number_of_vars]) ] <- 1
dat[,number_of_vars][dat[,number_of_vars] != 1 ] <- 0

library(caret)
result <- train(dat[,1:39], dat[,40], family = "binomial", method = "glm")
result$finalModel

モデルのフィッティングをより細かく制御するには、広範なドキュメントを参照してください。

于 2012-08-17T23:07:49.737 に答える