Mam wygenerowane 3 miesiące danych (każdy wiersz odpowiadający każdemu dniu) i chcę przeprowadzić analizę wielu szeregów czasowych dla tego samego:
dostępne kolumny to -
Date Capacity_booked Total_Bookings Total_Searches %Variation
Każda data ma 1 pozycję w zbiorze danych i ma 3 miesiące danych i chcę dopasować model szeregów czasowych na wielu zmiennych, aby prognozować również inne zmienne.
Jak dotąd była to moja próba i starałem się to osiągnąć, czytając artykuły.
Zrobiłem to samo -
df['Date'] = pd.to_datetime(Date , format = '%d/%m/%Y')
data = df.drop(['Date'], axis=1)
data.index = df.Date
from statsmodels.tsa.vector_ar.vecm import coint_johansen
johan_test_temp = data
coint_johansen(johan_test_temp,-1,1).eig
#creating the train and validation set
train = data[:int(0.8*(len(data)))]
valid = data[int(0.8*(len(data))):]
freq=train.index.inferred_freq
from statsmodels.tsa.vector_ar.var_model import VAR
model = VAR(endog=train,freq=train.index.inferred_freq)
model_fit = model.fit()
# make prediction on validation
prediction = model_fit.forecast(model_fit.data, steps=len(valid))
cols = data.columns
pred = pd.DataFrame(index=range(0,len(prediction)),columns=[cols])
for j in range(0,4):
for i in range(0, len(prediction)):
pred.iloc[i][j] = prediction[i][j]
Mam zestaw sprawdzania poprawności i zestaw przewidywania. Jednak prognozy są znacznie gorsze niż oczekiwano.
Wykresy zestawu danych to - 1.% Zmienność
Dane wyjściowe, które otrzymuję to -
Ramka danych prognozy -
Ramka danych walidacji -
Jak widać, przewidywania są dalekie od oczekiwanych. Czy ktoś może doradzić sposób na zwiększenie dokładności. Ponadto, jeśli dopasuję model do całych danych, a następnie wydrukuję prognozy, nie weźmie się pod uwagę, że rozpoczął się nowy miesiąc, a zatem przewiduję jako taki. Jak można to tutaj włączyć. każda pomoc jest doceniana.
EDYTOWAĆ
Link do zestawu danych - Zestaw danych
Dzięki
Odpowiedzi:
Jednym ze sposobów na zwiększenie dokładności jest sprawdzenie autokorelacji każdej zmiennej, zgodnie z sugestią na stronie dokumentacji VAR:
https://www.statsmodels.org/dev/vector_ar.html
Im większa wartość autokorelacji dla określonego opóźnienia, tym bardziej przydatne będzie to opóźnienie w procesie.
Innym dobrym pomysłem jest przyjrzenie się kryterium AIC i BIC w celu zweryfikowania Twojej dokładności (ten sam link powyżej zawiera przykład użycia). Mniejsze wartości wskazują, że istnieje większe prawdopodobieństwo znalezienia prawdziwego estymatora.
W ten sposób możesz zmieniać kolejność modelu autoregresyjnego i zobaczyć ten, który zapewnia najniższy AIC i BIC, oba analizowane razem. Jeśli AIC wskazuje, że najlepszy model ma opóźnienie 3, a BIC wskazuje, że najlepszy model ma opóźnienie 5, należy przeanalizować wartości 3,4 i 5, aby zobaczyć ten z najlepszymi wynikami.
Najlepszym scenariuszem byłoby posiadanie większej ilości danych (ponieważ 3 miesiące to niewiele), ale możesz wypróbować te metody, aby sprawdzić, czy to pomoże.
źródło