python: pd.rolling_std 函数结果与标准偏差计算器不同

python: pd.rolling_std function result is different from the standard deviation calculator

有如下dataframe,我想计算关闭列:volatility,例如window=2,即两行的volatility。我

   Date      close
2010-06-09    3160.0
2010-06-10    3180.0
2010-06-11    3215.0
2010-06-14    3255.0

我使用了以下使用函数的代码:

stdDeviation = pd.rolling_std(df['Close'],window=2)
stdDeviation.head(4)

结果是:

      Date
2010-06-09          NaN
2010-06-10    14.142136
2010-06-11    24.748737
2010-06-14    28.284271
Name: Close, dtype: float64

但是用计算器计算标准差时https://en.wikipedia.org/wiki/Standard_deviation

我找到了前两个数:3160、3180,这两个数的标准差是10,与function.pd.rolling_std计算的14.142136不同。

你能告诉我更多关于函数的信息吗rolling_std,这个函数的细节是什么。为什么不同,我的问题有什么问题吗?谢谢!

pandas 默认计算样本标准偏差。样本标准偏差的分母有一个校正因子,因此我们将平方和除以 n-1 而不是 n。这里的 1 是由于样本均值而丢失的自由度。如果你想得到相同的结果,你可以将 ddof=0 传递给 rolling_std,这会给你 10 作为结果。

stdDeviation = pd.rolling_std(df['Close'], window=2, ddof=0)