python - ddof = 1 的 numpy 标准偏差估计器偏差

标签 python numpy statistics

我正在用 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 KDEs at ddof = 1 自由度 = 2 KDEs at ddof = 2 由于样本量小,请原谅粗糙的曲线。

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

最佳答案

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

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

关于python - ddof = 1 的 numpy 标准偏差估计器偏差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12109908/

相关文章:

python - C中的numpy数组类型转换

python - 在 db 中存储为字符串后检索相等的 numpy 数组

r - 为什么两个独立样本 t 检验和双向方差分析在同一数据集上给出不同的结果?

python - Scikit-learn 返回的确定系数 (R^2) 值小于 -1

python - 如果在 csv 文件中找到字符串,如何通过 python 发送电子邮件警报?

python - pip install -e 。与 setup.py

python 和 cx_Oracle - 动态 cursor.setinputsizes

python - 使用 Neo4j Python 驱动程序时如何在密码查询中将标签设置为变量

Python:如何使这个颜色阈值功能更有效

python - 使用python计算不适合内存的数据的均值和标准差