低估标准误

机器算法验证 可能性 数理统计 标准差 标准错误
2022-03-18 22:55:46

计算标准误差(即样本均值的标准差)的公式是但我们通常不知道总体标准差所以我们必须首先从我们的样本 (注意:它是一个有偏的估计量)。使用这个估计的标准偏差,我们的新公式是σx¯=σnσσσx¯σxn

我做了一个蒙特卡罗模拟,发现这个估计的标准误差系统地低于确切的标准误差。我想知道为什么会这样?如果有人能证明这一点,将不胜感激。

如果您想尝试,我在这里附上了一些 R 代码。请注意,第三个结果低于其他结果。

# draw 100000 samples, each sample has 5 data point
mat = matrix(nrow = 100000,ncol = 5)
for (i in 1:100000){
  mat[i,1:5] <- rnorm(5)
}



# Method1: Calculate standard error by definition: standard error is the standard deviation of sample means
sd(rowMeans(mat))


# Method2: Calculate standard error using the population std: sigma/sqrt(n)
1/sqrt(5)


# Method3: Calculate standard error using the sample std: sigma_hat/sqrt(n)
row_std = apply(mat, 1, sd)
row_se = row_std/sqrt(5)
mean(row_se)
2个回答

这就是正在发生的事情

> summary(row_std)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
0.05212 0.69485 0.91762 0.94109 1.15915 2.56883 
> summary(row_std^2)
    Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
0.002717 0.482820 0.842034 1.001564 1.343628 6.598870 

因为 2是无偏的,所以是无偏的。s2σ2sσ

第一个近似值 其中二阶导数是方差(对于高斯),第一次修正为 -0.075。这矫枉过正。此外,它取决于未知的和峰度,因此如果我们不假装我们知道这些值,则不会从五个观察值中很好地估计它。

E[f(Z)]=f(E[Z])+f(E[Z])var(Z)2
12σ3σ2n×(22n1)σ2

更重要的是,如果数据是高斯分布,在计算置信区间时已经考虑s2

> in_interval<-function(theta,hat,se,tcrit){ (hat-tcrit*se <= theta) & (hat+tcrit*se>=theta)}
> meanhat<-rowMeans(mat)
> table(in_interval(0,meanhat, row_se,abs(qt(.025,4))))

FALSE  TRUE 
 4783 95217 

根据 Jensen 不等式,样本标准差是对真实标准差的低估(在预期中),因为平方根是凹的,并且对于第二个中心矩是无偏的。S2