多元回归 - 无法分配大小为4.7gb的向量

时间:2016-03-18 10:17:13

标签: r memory-management cluster-analysis multiple-regression

首先,我想说我对R和编码本身一无所知。我只需要为我的学士论文做一个带有聚类标准错误的回归,我不能在Excel中做到这一点。 我设法用聚类标准错误进行线性回归,但多重回归(即使没有聚类)给我错误信息:无法分配大小为4.7gb的向量。 我的PC上运行了64位windows7版本,可用RAM为8GB。那些8gb也被R.
考虑 > memory.limit() [1] 8168

这是我使用的函数,错误消息R吐出:

mregt=biglm(GAAP.ETR~TIME+ADVERTISING.EXPENSE+INTANGIBLE.ASSETS+LEVERAGE+LOG.ASSETS+PP.E+R.D.EXPENSE+SPECIAL.ITEMS,data=Control.Variables)
Error: cannot allocate vector of size 4.7 Gb
In addition: Warning messages:
1: In array(c(rep.int(c(1, numeric(n)), n - 1L), 1), d, dn) :
  Reached total allocation of 8168Mb: see help(memory.size)
2: In array(c(rep.int(c(1, numeric(n)), n - 1L), 1), d, dn) :
  Reached total allocation of 8168Mb: see help(memory.size)
3: In array(c(rep.int(c(1, numeric(n)), n - 1L), 1), d, dn) :
  Reached total allocation of 8168Mb: see help(memory.size)
4: In array(c(rep.int(c(1, numeric(n)), n - 1L), 1), d, dn) :
  Reached total allocation of 8168Mb: see help(memory.size)

正如你在函数中看到的那样,我已经尝试使用big.memory包,要么我做错了(非常可能),要么就是没有用。

我使用的数据库具有38104个观察值,其中10列=> 38104 * 10

我用于聚类简单回归的函数是:

function(dat,fm, cluster1, cluster2){
attach(dat, warn.conflicts = F)
library(sandwich);library(lmtest)
cluster12 = paste(cluster1,cluster2, sep="")
M1  <- length(unique(cluster1))
M2  <- length(unique(cluster2))   
M12 <- length(unique(cluster12))
N   <- length(cluster1)          
K   <- fm$rank             
dfc1  <- (M1/(M1-1))*((N-1)/(N-K))  
dfc2  <- (M2/(M2-1))*((N-1)/(N-K))  
dfc12 <- (M12/(M12-1))*((N-1)/(N-K))  
u1j   <- apply(estfun(fm), 2, function(x) tapply(x, cluster1,  sum)) 
u2j   <- apply(estfun(fm), 2, function(x) tapply(x, cluster2,  sum)) 
u12j  <- apply(estfun(fm), 2, function(x) tapply(x, cluster12, sum)) 
vc1   <-  dfc1*sandwich(fm, meat=crossprod(u1j)/N )
vc2   <-  dfc2*sandwich(fm, meat=crossprod(u2j)/N )
vc12  <- dfc12*sandwich(fm, meat=crossprod(u12j)/N)
vcovMCL <- vc1 + vc2 - vc12
coeftest(fm, vcovMCL)}

随后我使用:

mcl(All,regt,All$Company.Name,All$Data.Year...Fiscal)

我在这里和其他网站上查了一些帖子。试了几件事,但它只是给了我同样的错误信息。 再一次,我真的不知道R和编码,所以我真的需要最简单的方法来做到这一点:D

0 个答案:

没有答案