Scipy 和 numpy 標準差方法給出的結果略有不同。我不明白為什么。誰能給我解釋一下?
這是一個例子。
import numpy as np
import scipy.stats
ar = np.arange(20)
print(np.std(ar))
print(scipy.stats.tstd(ar))
回傳
5.766281297335398
5.916079783099616
uj5u.com熱心網友回復:
前段時間在我的腦海中..為了獲得相同的價值觀
import numpy as np
import scipy.stats
ar = np.arange(20)
print(np.std(ar, ddof=1))
print(scipy.stats.tstd(ar))
輸出 #
5.916079783099616
5.916079783099616
我的導師常說
-->
ddof=1如果您正在計算np.std()從完整資料集中獲取的樣本。--->
ddof=0如果您正在計算全部人口
uj5u.com熱心網友回復:
與np.std()您一起計算標準偏差:
x = np.abs(ar - ar.mean())**2
std = np.sqrt(np.sum(x) / len(ar)) # 5.766281297335398
但是,scipy.stats.tstd您正在計算修剪后的標準偏差:
x = np.abs(ar - ar.mean())**2
std = np.sqrt(np.sum(x) / (len(ar) - 1)) # 5.916079783099616
x請注意,您正在計算使用時的平均值的平方根np.std()(平均值x是的總和x除以的長度x)。在計算修剪后的版本時,您將除以n-1,n即陣列的長度。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/525360.html
上一篇:根據其他行的值添加行
