我正在尝试在r中的数据帧的行上运行一个简单的引导程序。这是我到目前为止所做的工作,但我已经走到了尽头。
x1 <- c(1:5)
x2 <- c(6:10)
y <- runif(5)
z <- as.data.frame(rbind(x1, x2, y))
trial <- 10
avg <- rep(0, trial)
for(i in 1:trial){
ind <- sample(ncol(z), size = ncol(z), replace = TRUE)
z.boot <- z[ind, ]
mean[i] <- mean(z.boot)
}
mean
理想情况下,我想要做的是为第一行和第二行获取引导加权平均值,第三行中的权重,但我甚至无法使循环工作。必须有更好的方法来做到这一点。任何帮助表示赞赏
答案 0 :(得分:1)
试试这个...我不太了解加权平均值......但你可以从这里解决这个问题:
n= seq( 100, 500, 50)
bootdata=list()
for (i in 1:length(n)) {
bootdata[[i]]=data[sample(nrow(data), n[i], replace=TRUE), ]
}
bootdata
str(bootdata[[1]])
答案 1 :(得分:0)
这是可以完成非参数引导的方法。 (根据您的代码,这似乎是您要尝试的类型。)请注意,nrow()
而不是ncol()
是正确的功能。可以通过它们的索引(如bootResult[[2]]
来检索存储为“ bootResult”列表项的引导程序,并执行以下步骤:
nBoots<-10 #number of bootstraps
bootResult<-list()
for (i in seq_len(nBoots)){
bootResult[[i]]<-z[sample(seq_len(nrow(z)), nrow(z), replace=TRUE), ]
}