Select 一个随机样本,并用它生成 1000 个 bootstrap 个样本
Select a sample at random and use it to generate 1000 bootstrap samples
我想从标准正态分布生成 1000 个大小为 25 的样本,计算每个样本的方差,并创建直方图。我有以下内容:
samples = replicate(1000, rnorm(25,0,1), simplify=FALSE)
hist(sapply(samples, var))
然后我想从这 1000 个样本中随机 select 一个样本,并从该样本中提取 1000 个 bootstraps。然后计算每个的方差并绘制直方图。到目前为止,我有:
sub.sample = sample(samples, 1)
这就是我卡住的地方,我知道这里需要一个 for 循环来进行引导,所以我有:
rep.boot2 <- numeric(lengths(sub.sample))
for (i in 1:lengths(sub.sample)) {
index2 <- sample(1:1000, size = 25, replace = TRUE)
a.boot <- sub.sample[index2, ]
rep.boot2[i] <- var(a.boot)[1, 2]
}
但是 运行 上述会产生 "incorrect number of dimensions" 错误。哪个部分导致了错误?
我在这里看到 2 个问题。一个是您正在尝试像使用向量一样对 sub.sample 进行子集化,但它实际上是一个长度为 1 的列表。
a.boot <- sub.sample[index2, ]
要解决此问题,您可以更改
sub.sample = sample(samples, 1)
到
sub.sample = as.vector(unlist(sample(samples, 1)))
第二个问题是您正在生成 1 到 1000 之间的 25 个索引的样本
index2 <- 样本(1:1000,大小 = 25,替换 = 真)
但随后您尝试从长度仅为 25 的列表中提取这些索引。因此您最终将在 a.boot.
中得到大部分 NA 值
如果我理解你想要做什么,那么这应该可行:
samples = replicate(1000, rnorm(25,0,1), simplify=FALSE)
hist(sapply(samples, var))
sub.sample = as.vector(unlist(sample(samples, 1)))
rep.boot2=list()
for (i in 1:1000) {
index2 <- sample(1:25, size = 25, replace = TRUE)
a.boot <- sub.sample[index2]
rep.boot2[i] <- var(a.boot)
}
我想从标准正态分布生成 1000 个大小为 25 的样本,计算每个样本的方差,并创建直方图。我有以下内容:
samples = replicate(1000, rnorm(25,0,1), simplify=FALSE)
hist(sapply(samples, var))
然后我想从这 1000 个样本中随机 select 一个样本,并从该样本中提取 1000 个 bootstraps。然后计算每个的方差并绘制直方图。到目前为止,我有:
sub.sample = sample(samples, 1)
这就是我卡住的地方,我知道这里需要一个 for 循环来进行引导,所以我有:
rep.boot2 <- numeric(lengths(sub.sample))
for (i in 1:lengths(sub.sample)) {
index2 <- sample(1:1000, size = 25, replace = TRUE)
a.boot <- sub.sample[index2, ]
rep.boot2[i] <- var(a.boot)[1, 2]
}
但是 运行 上述会产生 "incorrect number of dimensions" 错误。哪个部分导致了错误?
我在这里看到 2 个问题。一个是您正在尝试像使用向量一样对 sub.sample 进行子集化,但它实际上是一个长度为 1 的列表。
a.boot <- sub.sample[index2, ]
要解决此问题,您可以更改
sub.sample = sample(samples, 1)
到
sub.sample = as.vector(unlist(sample(samples, 1)))
第二个问题是您正在生成 1 到 1000 之间的 25 个索引的样本
index2 <- 样本(1:1000,大小 = 25,替换 = 真)
但随后您尝试从长度仅为 25 的列表中提取这些索引。因此您最终将在 a.boot.
中得到大部分 NA 值如果我理解你想要做什么,那么这应该可行:
samples = replicate(1000, rnorm(25,0,1), simplify=FALSE)
hist(sapply(samples, var))
sub.sample = as.vector(unlist(sample(samples, 1)))
rep.boot2=list()
for (i in 1:1000) {
index2 <- sample(1:25, size = 25, replace = TRUE)
a.boot <- sub.sample[index2]
rep.boot2[i] <- var(a.boot)
}