Mam doświadczenie dla początkujących w szeregach czasowych (niektóre oszacowania / prognozy ARIMA) i napotykam problem, którego nie do końca rozumiem. Każda pomoc byłaby bardzo mile widziana.
Analizuję wiele szeregów czasowych, w tym samym przedziale czasowym i na tej samej częstotliwości, wszystkie opisują podobny typ danych. Każda seria jest tylko jedną zmienną, nie ma innych odpowiednich predyktorów, na które patrzę.
Poproszono mnie o oszacowanie jednego modelu, który opisuje WSZYSTKIE serie - na przykład wyobraź sobie, że mógłbym znaleźć jeden ARIMA (p, d, q) o tych samych rzędach, współczynnikach itp., Które pasowałyby do całej serii. Mój przełożony nie chce, abym osobno oszacował każdą serię, ani nie chce, abym zrobił jakiś model VAR z zależnościami między seriami.
Moje pytanie brzmi: jak nazwałbym taki model i jak mógłbym zająć się jego szacowaniem / prognozowaniem? Jeśli łatwiej ci użyć przykładów kodu, mówię zarówno SAS, jak i R.
źródło
Jednym ze sposobów jest zbudowanie długiego szeregu czasowego ze wszystkimi danymi i sekwencjami brakujących wartości między szeregami w celu ich rozdzielenia. Na przykład, w R, jeśli trzy serie (
x
,y
iz
), każdy długości 100 i częstotliwości 12 można połączyć je następującoZauważ, że wybrano liczbę brakujących wartości, aby zapewnić zachowanie okresu sezonowego. Wypełniłem ostatni rok 8 brakującymi wartościami, a następnie dodałem cztery brakujące lata (48 wartości) przed następną serią. To powinno wystarczyć, aby wszelkie szeregowe korelacje zostały wymyte między seriami.
Następnie możesz użyć,
auto.arima()
aby znaleźć najlepszy model:Na koniec możesz zastosować połączony model do każdej serii osobno, aby uzyskać prognozy:
źródło
Szacowanie jednego modelu dla wielu szeregów czasowych jest dziedziną ekonometrii danych panelowych . Jednak w twoim przypadku bez zmiennej objaśniającej @Rob Hyndman odpowiedź jest prawdopodobnie najlepsza. Jeśli jednak okaże się, że średnie szeregów czasowych są różne (przetestuj, ponieważ w tym przypadku metoda @Rob Hyndman powinna zawieść!), Ale struktura ARMA jest taka sama, wtedy będziesz musiał użyć Arellano-Bond (przepraszam, wikipedia ma nie ma na nim żadnej strony, więc wyszukaj w google) estymator typu. Modelem w takim przypadku byłby:
źródło
Alternatywą dla podejścia Roba Hyndmana, aby stworzyć jedną serię danych, jest scalenie danych. Może to być odpowiednie, jeśli wiele szeregów czasowych reprezentuje zaszumione odczyty z zestawu maszyn rejestrujących to samo zdarzenie. (Jeśli każda seria czasowa ma inną skalę, najpierw musisz znormalizować dane.)
UWAGA: nadal masz tylko 28 odczytów, tylko mniej hałasu, więc może to nie być odpowiednie dla twojej sytuacji.
źródło
Patrzyłem na ukryte modele Markowa i dynamiczne sieci bayesowskie. Modelują dane szeregów czasowych. Są również szkoleni przy użyciu wielu szeregów czasowych, np. Wielu szeregów czasowych ciśnienia krwi od różnych osób. Powinieneś znaleźć pakiety w Pythonie i R. Może być konieczne zdefiniowanie struktury dla tych modeli.
źródło
Próbuję zrobić to samo. Wygląda na to, że istnieje coś takiego jak model „Multivariate AutoRegressive”. Znalazłem odniesienie do tego, ale nie jak go używać. Na podstawie powiązanego dokumentu zakładam, że został on wdrożony w języku R.
http://journal.r-project.org/archive/2012-1/RJournal_2012-1_Holmes~et~al.pdf
źródło