大Pandasewm var和std

2024-05-13 01:48:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图复制指数加权移动方差的计算,但没有成功。 这是我使用的代码

import pandas as pd
import numpy as np


l = [12., 12.5, 13.1, 14.6, 17.8, 19.1, 24.5]
df = pd.DataFrame(data=l, columns=['data'])
N = 5

a = 2./(1+N)
bias = (2-a)/2./(1-a)
ewma = df.ewm(span=N).mean()
var_pandas = df.ewm(span=N, adjust=False).var()

var_calculated = (1-a) * (var_pandas.shift(1) + bias * a * (df - ewma.shift(1))**2)

var_pandas
Out[100]: 
        data
0        NaN
1   0.125000
2   0.359231
3   1.582143
4   7.157121
5  10.080647
6  26.022245

var_calculated
Out[101]: 
        data
0        NaN
1        NaN
2   0.261111
3   1.264610
4   6.246149
5   9.135133
6  24.123265

正如你所看到的,我仍然有一个我无法理解的差异。 感谢您的见解

我使用了以下公式:pandas ewm.std calculation


Tags: importpandasdfdatashiftvarasnan