如何模拟标准偏差

机器算法验证 r 标准差 样本量 模拟
2022-03-27 21:10:04

我想根据捕获的真实数据模拟数据。捕获的真实数据是 15 个观测值。基于现有数据的模拟是 100 个观测值。我有 15 个观察值的平均值和标准偏差,但是如何根据较小的实际数据模拟较大样本(100 个观察值)的标准偏差?标准偏差通常应该随着样本量的增加而减小,但以什么速率?

3个回答

标准偏差随样本量而减小。您的样本越大,标准差应该越接近总体的标准差。接下来,随着样本量的增加,在较大样本和较小样本上估计的标准偏差的分布会减小,因为基于较大的样本,我们会得到更精确的结果。

您可以在下面看到 R 中的一个数值示例,我们在其中模拟 15 和 100 个样本的标准正态分布(sd=1)的抽取,然后估计它们的标准偏差。

> summary(replicate(100000, sd(rnorm(15))))
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
 0.3039  0.8515  0.9762  0.9824  1.1061  1.8886 
> summary(replicate(100000, sd(rnorm(100))))
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
 0.6916  0.9498  0.9971  0.9980  1.0451  1.3089 

标准误差随着样本量的增加而减小。标准差是一个相关的概念,但可能没有足够的相关性来保证使用这种相似的术语,这会使每个开始学习统计的人感到困惑。

抽样分布是如果您每次从总体中重复抽样并计算一些统计数据(例如平均值),您将获得的值的分布。该抽样分布的标准偏差是标准误差。对于均值的标准误差,它减少,因此作为标准误差的估计值(其中是样本标准差)。ns/ns

分布的标准偏差是什么,它不关心你抽取的样本有多大,甚至根本不关心你是否抽样。

听起来您想使用从样本中计算出的均值和标准差来模拟分布中的数据,因此请这样做。如果你愿意假设一个正态分布,R 命令是 rnorm,Python 命令是 numpy.random.normal。15

您专门询问模拟。在@Dave 的回答 (+1) 之后,这里有几个 R 中的模拟。

假设我从分布为的样本,因此总体平均值为 总体方差为并且n=16Gamma(shape=4,rate=.1),μ=40σ2=400,σ=20.

那么样本均值(平均值)和标准误差有一百万个样本,模拟结果应该精确到大约三位有效数字。A=X¯15E(A)=40SD(A)=σ/n=5.

set.seed(904)
a = replicate(10^6, mean(rgamma(16, 4, .1)))
mean(a);  sd(a)
[1] 40.00176     # aprx 40
[1] 4.996061     # aprx 5

相比之下,让我们对 来自同一群体现在n=100E(X¯100)=40SD(X¯100)=σ/n=20/100=2.

set.seed(2020)
a = replicate(10^6, mean(rgamma(100, 4, .1)))
mean(a);  sd(a)
[1] 40.0014     # aprx 40
[1] 2.001084    # aprx 20/10 = 2