问题描述
有没有办法手动将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