2

首先,我想说我对 R 和编码本身一无所知。我只需要对我的学士论文进行聚集标准误差的回归,而我不能在 Excel 中这样做。我设法用聚集标准误差进行线性回归,但多元回归(即使没有集群)给了我错误信息:无法分配大小为 4.7gb 的向量。我有一个 64 位 windows7 版本在我的 PC 上运行,可用 8gb RAM。R 也考虑了那些 8gb。
> 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

4

0 回答 0