ndof = 1的numpy标准差估计偏差

时间:2012-08-24 13:00:46

标签: python numpy statistics

我正在生成一堆N个普通rvs(平均0 sd 1)和numpy,然后用ddof = 1取样本的标准偏差,这可能会给我一个无偏估计。这个过程大致如下:

def genData(samples = 20, mean = 333.8, sd = 3.38):
    bl = scipy.stats.norm.rvs(loc = mean, scale = sd, size = samples)
    return [np.mean(bl), np.std(bl, ddof = 1)]

means = {}
sds = {}

n = 50000

for size in range(5,21):
    x = [genData(size, mean = 0, sd = 1) for x in range(n)]
    means[size] = map(lambda d: d[0], x)
    sds[size] = map(lambda d: d[1], x)

但是,我会观察以下KDE:

ddof = 1 KDEs at ddof = 1 ddof = 2 KDEs at ddof = 2 由于样本量小,请原谅粗糙的曲线。

ddof = 1有明显的偏见,ddof = 2就消除了。我在这里做错了什么?

1 个答案:

答案 0 :(得分:3)

无偏估计方差的平方根不一定是方差平方根的无偏估计。在数学术语中,sum [(su)²] /(N-1)是方差V的无偏估计,即使sqrt {sum [(xu)²] /(N-1)}不是sqrt的无偏估计。 (V)。

这实际上是在scipy的文档中:link(参见“注释”部分)。