Dopasowanie modelu ARIMAX z regularyzacją lub penalizacją (np. Z regresją lasso, elastyczną siatką lub kalenicą)


29

Korzystam z funkcji auto.arima () w pakiecie prognozy , aby dopasować modele ARMAX do różnych zmiennych towarzyszących. Jednak często mam dużą liczbę zmiennych do wyboru i zwykle kończę na ostatecznym modelu, który działa z ich podzbiorem. Nie lubię technik ad hoc do wybierania zmiennych, ponieważ jestem człowiekiem i podlegam tendencyjności, ale szeregi czasowe walidacji krzyżowej są trudne , więc nie znalazłem dobrego sposobu na automatyczne wypróbowanie różnych podzbiorów moich dostępnych zmiennych, i Utknąłem strojenie moich modeli przy użyciu własnego osądu.

Kiedy pasuję do modeli glm, mogę użyć elastycznej siatki lub lasso do regulacji i wyboru zmiennych za pośrednictwem pakietu glmnet . Czy w R istnieje istniejący zestaw narzędzi do korzystania z elastycznej siatki w modelach ARMAX, czy też będę musiał rzucić własną? Czy to w ogóle dobry pomysł?

edycja: Czy miałoby sens ręczne obliczanie warunków AR i MA (powiedzmy do AR5 i MA5) oraz użycie glmnet do dopasowania do modelu?

edycja 2: Wygląda na to, że pakiet FitAR zapewnia mi część, ale nie całą drogę.


2
Byłbym ciekawy, czy kiedykolwiek udało ci się coś z tym zrobić. Oznaczono go dla każdej aktualizacji - wystarczy dotknąć tutaj bazy.
Vishal Belsare,

Nigdy nie zmuszony do rozwiązania tego. Myślałem o napisaniu własnej implementacji, ale nie udało mi się. Może mógłbyś ręcznie obliczyć warunki AR i MA, a następnie zastosować glmnet do tych danych?
Zach.

1
Cześć Zach, zastanawiałem się, czy posunąłeś się dalej, czy nadal jest zaparkowany. Potrzebuję takiego algorytmu do prognozowania dużej liczby serii.
Matt Weller

3
@MattWeller Rozmawiałem trochę z Robem Hyndmanem, autorem doskonałego forecastpakietu dla R. Powiedział, że byłoby to trudne z pełną wersją ARIMA, ponieważ będziesz musiał owinąć lasso wokół nieliniowego optymalizatora ARIMA. Jednym częściowym rozwiązaniem byłoby dopasowanie modelu AR za glmnetpomocą zmiennych opóźnionych. O ile mi wiadomo, nikt jeszcze tego nie zrobił z pełnym modelem ARIMA.
Zach.

Odpowiedzi:


7

To nie jest rozwiązanie, ale niektóre refleksje na temat możliwości i trudności, które znam.

Ilekroć możliwe jest określenie modelu szeregów czasowych jako z x t obliczalnym na podstawie zmiennych towarzyszących i obserwacji opóźnionych w czasie, można również obliczyć siatkę elastyczną najmniejszych kwadratów karaną estymator β przy użyciu glmnet w R. To wymaga napisania kodu do obliczenia celu utworzenia macierzy modelu, która ma być określona w glmnet. Powiedzmy, że działa to dla modeli AR, ale nie bezpośrednio dla modeli ARMA. Ponadto procedury walidacji krzyżowej glmnet nie są per se sensowne w przypadku danych szeregów czasowych.

Yt+1=xtβ+ϵt+1
xtβxt

W przypadku bardziej ogólnych modeli implementacja algorytmu do obliczania nieliniowego elastycznego estymatora siatki najmniejszych kwadratów jest potrzebna. Według mojej najlepszej wiedzy nie ma takiej implementacji w R. Obecnie piszę implementację, aby rozwiązać przypadek, w którym chodzi o to, że dla wyboru modelu najważniejsze jest, aby penalizacja lasso była na a nie na . Jeśli dobrze przywołam parametryzację ARIMA, również ona przyjmuje ten formularz ale w tej chwili nie mogę zaoferować żadnego kodu. Jest (będzie) oparty na

Yt+1=fa(xt,β)+ϵt+1
β
Yt+1=xtsol(β)+ϵt+1
βsol(β)-Metoda opadania z wykorzystaniem współrzędnych gradientu w celu zapewnienia niepodzielnej minimalizacji .

Kolejną kwestią jest wybór wielkości kary (parametry strojenia). Zasadniczo będzie to wymagało pewnej formy weryfikacji krzyżowej szeregów czasowych, ale mam nadzieję, że uda mi się opracować mniej wymagające obliczeniowo metody dla konkretnych modeli.


Pakiet karetki dla R ma dobrą implementację krzyżowej weryfikacji szeregów czasowych, którą można wykorzystać do wyboru parametrów dla glmnet. Dziękuję za odpowiedź.
Zach

2

Klient wezwał mnie do rozwiązania tego problemu w sposób automatyczny, tj. Pod klucz. Wdrożyłem podejście, które dla każdej pary (tj. Y i kandydata x), wcześniej obliczono korelacje krzyżowe wstępnie bielonej serii, zidentyfikowano PDL (LUB ADL AUTOREGRESYWNY MODEL DYSTRYBUCYJNEJ LAGI, w tym dowolny CZAS ŚMIERTELNY), jednocześnie włączając wykrywanie interwencji do uzyskać wiarygodne szacunki, opracować „miarę” dla tej struktury. Po przeprowadzeniu tego dla WSZYSTKICH kandydatów na regresory, uszereguj je według „miary”, a następnie wybierz najlepsze K regresorów na podstawie „miary”. Jest to czasami nazywane filtrowaniem liniowym. Z powodzeniem wprowadziliśmy tę heurystykę do naszego komercyjnie dostępnego pakietu szeregów czasowych. Powinieneś być w stanie „ZWRÓCIĆ WŁASNE”


W szczególności chcę włączyć lasso lub elastyczną siatkę do modelu ARIMA.
Zach.

3
Tak naprawdę nie szukam filtra liniowego (chociaż jest to przydatne). W szczególności chcę sposobu na włączenie lasso, regresji grzbietu lub elastycznej siatki do modelu ARIMAX.
Zach

2
W tej chwili nie jestem zainteresowany przesunięciami poziomów, trendami czasu lokalnego, przesunięciami współczynników lub niestałymi wariancjami błędów. Jestem szczególnie zainteresowany zastosowaniem lasso, kalenicy lub regularyzacji elastycznej siatki do modeli ARIMAX.
Zach

2
Jeśli możesz włączyć regulację lasso, grzbiet lub elastyczną siatkę do powyższej metodologii i zamieścić przykładowy kod w języku programowania open source, chętnie przyznam ci nagrodę.
Zach

1
@frank próbujesz dokonać identyfikacji poprzez oszacowanie (obniżenie) i to nie działa, ponieważ istnieje zbyt wiele kombinacji możliwych pulsów, przesunięć poziomów, pulsów sezonowych i trendów czasowych.,. Jeśli te struktury są potrzebne, ale ignorowane, estymacja parametrów jest stronnicza, a parametryczne testy istotności wychodzą z okna.
IrishStat
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.