引导程序按r中的数据帧的行进行采样

时间:2016-10-25 07:30:48

标签: r row bootstrapping weighted-average

我正在尝试在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

理想情况下,我想要做的是为第一行和第二行获取引导加权平均值,第三行中的权重,但我甚至无法使循环工作。必须有更好的方法来做到这一点。任何帮助表示赞赏

2 个答案:

答案 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), ]
  }