将 statistics.stdev 值转换为 np.std 值

问题描述

有没有办法手动将statistics.stdev输出的值转换成np.std输出的值?我知道一个取总体的标准差,另一个取样本的标准差。

statistics.stdev([10,8,2]) = 4.163331998932266 np.std([10,2]) = 3.39934634239519

解决方法

区别在于,statistics.stdev() 返回方差的平方根,该方差的计算方法是将均值偏差的平方和除以整个样本量 n,而 np.std() 返回平方通过将均值偏差的平方和除以 n - 1(以获得无偏估计量)计算出的方差的根。

因此,将标准偏差的一个估计值转换为另一个估计值的因子是 (n - 1) / n 的平方根:

import statistics

sample = [10,8,2]
n = len(sample)

statistics.stdev(sample) * ((n - 1) / n) ** 0.5
3.3993463423951904