![](/img/trans.png)
[英]Which gives correct standard deviation ..numpy.std() or statistics.stdev()
[英]Is there any difference between numpy.std and excel STDEV function?
我有一個清單:
s = [0.995537725, 0.994532199, 0.996027983, 0.999891383, 1.004754272, 1.003870012, 0.999888944, 0.994438078, 0.992548715, 0.998344545, 1.004504764, 1.00883411]
我在Excel中計算了它的標准偏差,我得到了答案: 0.005106477
,我使用的函數是: =STDEV(C5:N5)
然后我使用numpy.std
進行相同的計算:
import numpy as np
print np.std(s)
但是,我得到了答案: 0.0048890791894
我甚至寫了自己的std函數:
def std(input_list):
count = len(input_list)
mean = float(sum(input_list)) / float(count)
overall = 0.0
for i in input_list:
overall = overall + (i - mean) * (i - mean)
return math.sqrt(overall / count)
而我自己的函數給出與numpy相同的結果。
所以我想知道是否有這樣的差異? 或者只是我犯了一些錯誤?
有區別:Excel的STDEV
計算樣本標准差,而NumPy的std
默認計算人口標准差(它的行為類似於Excel的STDEVP
)。
要使NumPy的std
函數表現得像Excel的STDEV
,傳入值ddof=1
:
>>> np.std(s, ddof=1)
0.0051064766704396617
這使用樣本方差計算s
的標准偏差(即除以n-1
而不是n
。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.