2012-08-24 428 views
3

我生成一串N正常rvs(平均0 sd 1)與numpy,然後採用ddof = 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) 

然而,我遵守以下KDEs代替:

ddof = 1 KDEs at ddof = 1 ddof = 2 KDEs at ddof = 2 赦免由於樣本量較小粗糙曲線。

有ddof = 1的明顯偏差,ddof = 2可以消除。我在這裏做錯了什麼?

回答

3

無偏估計量方差的平方根不一定是方差平方根的無偏估計量。在數學術語中,即使sqrt {sum [(xu)2] /(N-1)}不是sqrt的無偏估計量,sum [(su)2] /(N-1)也是方差V的無偏估計量(V)。

這實際上是在scipy的文檔中:link(請參閱「註釋」部分)。

+0

當我的ddof = 1 SDs被[維基百科上的校正因子](http://en.wikipedia.org/wiki/Unbiased_estimation_of_standard_deviation#Results_for_the_normal_distribution)分開時,我仍然看到一個偏差 – Bicubic

+0

@Bicubic:如果它不是太很麻煩,你可以用新的情節更新你的原始問題嗎?我想親自看看情節。 – HerrKaputt

+1

對於遲到的回覆感到抱歉。維基百科的修正功能正常工作。密度圖是誤導的,因爲在小樣本尺寸下模式偏離平均值。 – Bicubic