Is there any difference between numpy.std and excel STDEV function?

做~自己de王妃 提交于 2019-12-23 09:18:46

问题


I have a list:

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]

where I calculated its standard deviation in Excel, I got the answer: 0.005106477, the function I used was: =STDEV(C5:N5)

Then I do the same calculation using numpy.std as:

import numpy as np

print np.std(s)

However, I got the answer: 0.0048890791894

I even wrote up my own std function:

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)

and my own function gives the same result as numpy.

So I am wondering is there such a difference? Or it just I made some mistake?


回答1:


There's a difference: Excel's STDEV calculates the sample standard deviation, while NumPy's std calculates the population standard deviation by default (it is behaving like Excel's STDEVP).

To make NumPy's std function behave like Excel's STDEV, pass in the value ddof=1:

>>> np.std(s, ddof=1)
0.0051064766704396617

This calculates the standard deviation of s using the sample variance (i.e. dividing by n-1 rather than n.)



来源:https://stackoverflow.com/questions/34133939/is-there-any-difference-between-numpy-std-and-excel-stdev-function

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!