获取来自 bootstrap 的样本的均值
get means across samples from bootstrap
我想获取 20 个采样数据的均值和 sds,但不确定如何操作。我当前的代码可以为我提供每个样本内的方法,而不是跨样本的方法。
## create data
data <- round(rnorm(100, 5, 3))
data[1:10]
## obtain 20 boostrap samples
## display the first of the boostrap samples
resamples <- lapply(1:20, function(i) sample(data, replace = T))
resamples[1]
## calculate the means for each bootstrap sample
r.mean <- sapply(resamples, mean)
r.median
## calculate the sd of the distribution of medians
sqrt(var(r.median))
从上面的代码中,我从每个采样数据中得到了 20 个均值,以及均值分布的 sd。我怎样才能得到 100 个均值,每个均值来自 20 个样本的分布?标准差也一样吗?
非常感谢!!
用你的样本制作一个矩阵
mat <- do.call(rbind, resamples)
然后
rowMeans(mat)
会给你 "within sample" 的平均值和
colMeans(mat)
"across sample"的意思。对于其他数量,例如您可以使用 apply
的标准偏差,例如apply(mat, 1, sd)
或 matrixStats
包中的函数,例如matrixStats::rowSds(mat)
.
虽然@konvas 的回答可能是您想要的,但在引导时我仍然会看一下基础包 boot
。
看看下面的例子是否能让你更接近你想要做的事情。
set.seed(6929) # Make the results reproducible
data <- round(rnorm(100, 5, 3))
boot_mean <- function(data, indices) mean(data[indices])
boot_sd <- function(data, indices) sd(data[indices])
Runs <- 100
r.mean <- boot::boot(data, boot_mean, Runs)
r.sd <- boot::boot(data, boot_sd, Runs)
r.mean$t
r.sd$t
sqrt(var(r.mean$t))
# [,1]
#[1,] 0.3152989
sd(r.mean$t)
#[1] 0.3152989
现在,查看自举均值和标准误的分布。
op <- par(mfrow = c(1, 2))
hist(r.mean$t)
hist(r.sd$t)
par(op)
我想获取 20 个采样数据的均值和 sds,但不确定如何操作。我当前的代码可以为我提供每个样本内的方法,而不是跨样本的方法。
## create data
data <- round(rnorm(100, 5, 3))
data[1:10]
## obtain 20 boostrap samples
## display the first of the boostrap samples
resamples <- lapply(1:20, function(i) sample(data, replace = T))
resamples[1]
## calculate the means for each bootstrap sample
r.mean <- sapply(resamples, mean)
r.median
## calculate the sd of the distribution of medians
sqrt(var(r.median))
从上面的代码中,我从每个采样数据中得到了 20 个均值,以及均值分布的 sd。我怎样才能得到 100 个均值,每个均值来自 20 个样本的分布?标准差也一样吗?
非常感谢!!
用你的样本制作一个矩阵
mat <- do.call(rbind, resamples)
然后
rowMeans(mat)
会给你 "within sample" 的平均值和
colMeans(mat)
"across sample"的意思。对于其他数量,例如您可以使用 apply
的标准偏差,例如apply(mat, 1, sd)
或 matrixStats
包中的函数,例如matrixStats::rowSds(mat)
.
虽然@konvas 的回答可能是您想要的,但在引导时我仍然会看一下基础包 boot
。
看看下面的例子是否能让你更接近你想要做的事情。
set.seed(6929) # Make the results reproducible
data <- round(rnorm(100, 5, 3))
boot_mean <- function(data, indices) mean(data[indices])
boot_sd <- function(data, indices) sd(data[indices])
Runs <- 100
r.mean <- boot::boot(data, boot_mean, Runs)
r.sd <- boot::boot(data, boot_sd, Runs)
r.mean$t
r.sd$t
sqrt(var(r.mean$t))
# [,1]
#[1,] 0.3152989
sd(r.mean$t)
#[1] 0.3152989
现在,查看自举均值和标准误的分布。
op <- par(mfrow = c(1, 2))
hist(r.mean$t)
hist(r.sd$t)
par(op)