我正在尝试data.frame逻辑回归(11359行,137列)。 data.frame包含Y(一个因变量)和预测变量(136个独立变量)。所有变量都是二进制的。无法在R中执行逻辑回归
我创建基于 “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
。
我试图基于10出的137变量logistf和pmlr检查,如果问题是预测数,我得到了相同的。 Logistf正在“永远”工作,并且pmlr给出了不同大小的向量的相同类型的错误(如果我正确记得大约45 Gb,则比以前大!)。
我应该更新我的笔记本电脑的内存来执行此计算,找到一些其他功能(如果有对罚逻辑回归其它包),或者它是一个不同类型的问题例如很多变数?
视窗10的X64,处理器:i3-2.4GHz,拉姆:8.00Gb,R版本:64 3.4.0,Rstudio:1.0.143。
还有就是在R A载体,它是2^31的最大尺寸的限制 - 1.也许你的数据超过此限制。无论您的机器是什么,这个大小都是R中矢量的极限。如果您的问题与此相关联,唯一的方法是使用其他算法来解决问题,包括分解数据并容许模型的准确性。 –
尝试用'speedglm':https://cran.r-project.org/web/packages/speedglm/speedglm.pdf –
你打算如何处理所有的预测因素:作为一个alt可能通过套索回归并看看预测指标会出现什么变化?见'glmnet' – user20650