无法在R

时间:2017-06-29 08:40:03

标签: r logistic-regression glm logistf

我正在尝试对data.frame进行逻辑回归(11359行,137列)。 data.frame包含Y(一个因变量)和预测变量(136个独立变量)。所有变量都是二进制的。

我根据" my_data"创建的公式data.frame是f = as.formula(paste('y ~', paste(colnames(my_data)[c(3:52, 54:133, 138:143)], collapse = '+')))。 我按如下方式应用了glm,logistf和pmlr

  • glm(f, family = binomial(link = "logit"), data = my_data)
  • logistf(f, my_data)
  • pmlr(f, data = my_data, method = "likelihood", joint = TRUE)

Glm函数估计一些参数,但给出Warning message: glm.fit: fitted probabilities numerically 0 or 1 occurred。我发现这条消息是由于分离问题而生成的,所以我尝试了logistf和pmlr函数。

使用logistf,50小时后没有任何错误,我没有得到任何结果,所以我决定终止te进程。 (cpu使用率为23-27%,前10个小时内RAM使用量约为1100mb,然后是2-3mb)。

对于pmlr,我得到了这个Error: cannot allocate vector of size 28.9 Gb

我根据137个变量中的10个尝试了logistf和pmlr来检查问题是否是预测变量的数量而且我得到了相同的结果。 Logistf工作了#34;永远"和pmlr给出了不同大小的矢量相同类型的错误(比以前更大!!!!,如果我没记错的话大约45 Gb)。

我是否应该更新笔记本电脑的RAM以执行此计算,找到一些其他功能(如果还有其他包用于惩罚性逻辑回归)或者它是一种不同类型的问题,例如:很多变数?

Windows 10 x64,处理器:i3-2.4GHz,Ram:8.00Gb,R版本:x64 3.4.0,Rstudio:1.0.143。

1 个答案:

答案 0 :(得分:1)

https://cran.r-project.org/web/packages/biglm/biglm.pdfhttps://www.rdocumentation.org/packages/biglm/versions/0.9-1/topics/biglm

biglm创建一个线性模型对象,该对象仅对p变量使用p ^ 2内存。可以使用更新使用更多数据进行更新。这允许对大于存储器的数据集进行线性回归。

bigglm 创建仅使用的广义线性模型对象 p变量的p ^ 2内存。

bigglm 使用

bigglm(formula, data, family=gaussian(),...)
## S3 method for class
'
data.frame
'
bigglm(formula, data,...,chunksize=5000)
## S3 method for class
'
function
'
bigglm(formula, data, family=gaussian(),
weights=NULL, sandwich=FALSE, maxit=8, tolerance=1e-7,
start=NULL,quiet=FALSE,...)
## S3 method for class
'
RODBC
'
bigglm(formula, data, family=gaussian(),
tablename, ..., chunksize=5000)
## S4 method for signature
'
ANY,DBIConnection
'
bigglm(formula, data, family=gaussian(),
tablename, ..., chunksize=5000