Я могу вычислить простое скользящее среднее с помощью кода:
def movingaverage (values, window):
s = pd.Series(values)
sma = s.rolling(window).mean()
return sma
Но теперь я хочу добавить веса в свою функцию, чтобы она могла вычислять взвешенное скользящее среднее, я попробовал это:
def movingaverage (values, window):
s = pd.Series(values)
weights = np.arange(1,window)
sma = s.rolling(window).mean().apply(lambda values: np.dot(values, weights)/weights.sum())
return sma
Но результаты таковы:
0 [nan, nan]
1 [nan, nan]
2 [27.555555555555557, 55.111111111111114]
3 [26.88888888888889, 53.77777777777778]
4 [25.444444444444443, 50.888888888888886]
...
360 [28.777777777777775, 57.55555555555555]
361 [28.11111111111111, 56.22222222222222]
362 [27.0, 54.0]
363 [25.666666666666668, 51.333333333333336]
364 [25.777777777777775, 51.55555555555555]
В какой части я ошибся? Как мне добавить вес в мою функцию? Спасибо!