在R中计算带bootstrap的样本的标准差



想象一下:我抽样了10,000个人,测量了他们的身高(以厘米为单位),并绘制了如下分布:

# Generate sample data
sampleSize = 10000
sampleData = round(rnorm(n=sampleSize, mean=175, sd=14))
# Draw histogram of sample
h = hist(sampleData, breaks=max(sampleData)-min(sampleData))
######################################################################
# Calculate the mean of the measurement
meanMeasure = mean(sampleData)
meanMeasure
abline(v=meanMeasure, col="red")
# Calculate the standard deviation of the measurement
sdMeasure = sd(sampleData)
sdMeasure
rect(
    xleft=meanMeasure-sdMeasure,
    ybottom=min(h$counts),
    xright=meanMeasure+sdMeasure,
    ytop=max(h$counts),
    col="#0000ff22"
)

现在我想估计每个测量的身高的标准差有多大。我认为引导我的原始数据集将是一个很好的方法,即从我的原始数据集用替换采样体大小。

这是一个好方法吗?我如何在R中执行此分析(例如,在1000个周期的bootstrap分析中每个高度的标准偏差)?

如果你只测量每个人一次,就没有办法获得"每个测量身高"的标准差。只有当您希望获得一个以上的估计数据点时,才能使用自举。

为了获得"每一次测量的身高"的标准差,每一次身高都必须测量不止一次。

然而,如果你想获得总体样本标准差的自举估计,那么其他两个答案也适用。

此外,这个问题更适合crossvalidated.com。

当您的样本量如此之大时,完全没有必要为此使用引导。如果你想知道在只有100或200甚至500个人的样本中标准差的合理变化程度,那么自举法将是有用的。但是对于10000个人,标准差的自举变化会非常非常小

Bootstrapping通常用于计算一个估计量的方差,在你的例子中,是样本平均高度。当你只是想找到人们身高的方差时,你不需要做bootstrap。

我们为什么要引导?因为对于一个样本,我们只有一个样本均值。所以我们需要很多样本来得到很多样本均值来计算估计量的方差。Bootstrapping是一种在只有一个样本的情况下获得许多伪样本的方法。

在你的例子中,我们已经有很多关于高度的个人观察,所以我们不需要更多的——我们可以根据我们的"真实"观察直接计算方差。

最新更新