4

我正在用 numpy 生成一堆 N 正常 rvs(平均 0 sd 1),然后用 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 = 1 时的 KDE ddof = 2 ddof = 2 时的 KDE 由于样本量小,请原谅粗糙的曲线。

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

4

1 回答 1

4

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

这实际上在 scipy 的文档中:链接(请参阅“注释”部分)。

于 2012-08-24T13:10:53.307 回答