взвешенная скользящая средняя в пандах - возникли проблемы с реализацией - PullRequest
0 голосов
/ 24 января 2019

У меня есть одномерный временной ряд (ниже), созданный с помощью панд. что у меня проблемы с созданием взвешенной скользящей средней для. Я видел, как другие сталкивались с этой проблемой в пандах, но, похоже, нет единого решения из того, что я читал.

1899    0.780
1900    -3.278
1901    1.096
1902    0.578
1903    4.608
1904    4.208
1905    -0.416
1906    1.392
1907    5.242
1908    2.922
1909    1.696
1910    2.984
1911    3.882
1912    0.536
1913    0.512
1914    0.170
1915    1.554
1916    3.936
1917    3.256
1918    1.404
... ...

Код, который я сейчас использую, приведен ниже с использованием весов (1-3-5-6-5-3-1), но я не получаю точных результатов. Любая помощь будет оценена.

wts = np.array([1, 3, 5, 6, 5, 3, 1])
def f(w):                        
         def g(x):
            return (w*x).mean()
        return g
anom_winter_av_npi.rolling(window=7).apply(f(wts))

1 Ответ

0 голосов
/ 24 января 2019

Я думаю, что ваша средневзвешенная функция может быть неправильной (код выглядит нормально). Попробуйте:

# use the .dot method for shortness' sake
anom_winter_av_npi.rolling(window=7).apply(lambda x: wts.dot(x) / wts.sum())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...