我正在尝试对 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小时后我没有得到任何结果,没有错误,所以我决定终止这个过程。(cpu 使用率 23-27%,ram 使用率在前 10 小时内约为 1100mb,然后是 2-3mb)。
对于 pmlr,我得到了这个Error: cannot allocate vector of size 28.9 Gb
。
我根据 137 个变量中的 10 个尝试了 logistf 和 pmlr 来检查问题是否是预测变量的数量,我得到了相同的结果。Logistf 一直在工作,并且 pmlr 给出了相同类型的错误,但向量的大小不同(比以前大!!!!,如果我没记错的话,大约 45 Gb)。
我是否应该更新笔记本电脑的 RAM 以执行此计算,找到一些其他功能(如果有其他用于惩罚逻辑回归的软件包)或者它是一种不同类型的问题,例如很多变量?
Windows 10 x64,处理器:i3-2.4GHz,内存:8.00Gb,R 版本:x64 3.4.0,Rstudio:1.0.143。