我正在生成一堆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 ddof = 2 由于样本量小,请原谅粗糙的曲线。
ddof = 1有明显的偏见,ddof = 2就消除了。我在这里做错了什么?
答案 0 :(得分:3)
无偏估计方差的平方根不一定是方差平方根的无偏估计。在数学术语中,sum [(su)²] /(N-1)是方差V的无偏估计,即使sqrt {sum [(xu)²] /(N-1)}不是sqrt的无偏估计。 (V)。
这实际上是在scipy的文档中:link(参见“注释”部分)。