R 如何使用大型数据集进行引导?
我想使用R 如何使用大型数据集进行引导?,r,memory,statistics-bootstrap,R,Memory,Statistics Bootstrap,我想使用library(“boot”)中的boot()和boot.ci()函数来处理带有type=“bca”的大型数据集(~20000) 如果R(引导数)太小(我尝试了1k-10k),则会出现以下错误: bca.ci(boot.out,conf,index[1L],L=L,t=t.o,t0=t0.o,: 估计调整“a”为NA 但是,如果我进行15k-20+k引导,那么我会得到: 无法分配向量大小#GB (通常在1.7到6.4gb之间,具体取决于数据集和引导) 我读到我需要更多的内存,但我有16g
library(“boot”)
中的boot()
和boot.ci()
函数来处理带有type=“bca”
的大型数据集(~20000)
如果R
(引导数)太小(我尝试了1k-10k),则会出现以下错误:
bca.ci(boot.out,conf,index[1L],L=L,t=t.o,t0=t0.o,:估计调整“a”为NA 但是,如果我进行15k-20+k引导,那么我会得到: 无法分配向量大小#GB (通常在1.7到6.4gb之间,具体取决于数据集和引导) 我读到我需要更多的内存,但我有16gb内存的Windows桌面,我使用的是64位R,这表明我的计算机应该能够处理这个问题 如果太少的引导无法产生估计,而足够的引导导致内存不足,那么如何在较大的数据集上使用引导方法 我的代码:
multRegress<-function(mydata){
numVar<<-NCOL(mydata)
Variables<<- names(mydata)[2:numVar]
mydata<-cor(mydata, use="pairwise.complete.obs")
RXX<-mydata[2:numVar,2:numVar]
RXY<-mydata[2:numVar,1]
RXX.eigen<-eigen(RXX)
D<-diag(RXX.eigen$val)
delta<-sqrt(D)
lambda<-RXX.eigen$vec%*%delta%*%t(RXX.eigen$vec)
lambdasq<-lambda^2
beta<-solve(lambda)%*%RXY
rsquare<<-sum(beta^2)
RawWgt<-lambdasq%*%beta^2
import<-(RawWgt/rsquare)*100
result<<-data.frame(Variables, Raw.RelWeight=RawWgt,
Rescaled.RelWeight=import)
}
# function passed to boot
multBootstrap <- function(mydata, indices){
mydata<-mydata[indices,]
multWeights<-multRegress(mydata)
return(multWeights$Raw.RelWeight)
}
# call boot
multBoot<-boot(thedata, multBootstrap, 15000)
multci<-boot.ci(multBoot,conf=0.95, type="bca")
multregress您正在引导多少统计信息?…从似乎您需要重复次数至少等于数据的行数当我添加重复次数大于或等于行数时,我的内存不足,即使是1.7gb(即使我的cpu上有16gb内存)这就是为什么我问你要引导多少个参数?…如果你运行一个简单的bs的例子