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)
有如下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)