簡體   English   中英

numpy.std和excel 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM