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ę.
forecast
pakietu 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 zaglmnet
pomocą zmiennych opóźnionych. O ile mi wiadomo, nikt jeszcze tego nie zrobił z pełnym modelem ARIMA.Odpowiedzi:
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.
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
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.
źródło
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”
źródło