PYMC3 - Прогнозирование случайных прогулок - PullRequest
0 голосов
/ 03 марта 2020

Я надеялся, что кто-то сможет кое-что прояснить для меня. Я пытаюсь сделать прогноз временных рядов с помощью функции GaussianRandomWalk в PyMC3. Мне предположили, что мой код неверен, так как я смоделировал его так, чтобы стандартное отклонение скрытого блуждания было таким же, как и шум наблюдения, что может показаться ошибкой. Это ошибка? Как бы я изменил это?

 import pymc3 as pm
#import seaborn as sns
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# generate a random walk

sd = .1
N = 200
deltas = np.random.normal(scale=sd, size=N)
y = np.cumsum(deltas)
x = np.arange(N)
df = pd.DataFrame({‘y’: y})
df = df.reindex(np.arange(250))

with pm.Model() as model:
    sd = pm.HalfNormal(‘sd’)
    mu = pm.Uniform(“mu”, 0, 100)
    prior = pm.GaussianRandomWalk(‘prior’, mu=mu, sd=sd, shape=len(df))

    obs = pm.Normal("obs", mu=prior, sd=sd, observed=df["y"])

    # graph = pm.model_to_graphviz(model)
    # print(graph)

    trace = pm.sample(2000, chains=1)
    pm.traceplot(trace)
    plt.show()

with model:
    ppc = pm.sample_posterior_predictive(trace)
    pm.traceplot(ppc)
    plt.show()
    print(ppc)

Forecast starting after 200

1 Ответ

0 голосов
/ 03 марта 2020

GuassianRandomWalk чисто случайный, без какой-либо тенденции / инерции. Возможно, вы захотите взглянуть на tfp.sts.LocalLinearTrend или pm.AR, в которых есть некоторая «инерция».

Я не знаю больше о том, как моделировать временные ряды.

...