Anpassen eines ARIMAX-Modells mit Regularisierung oder Bestrafung (z. B. mit Lasso, elastischem Netz oder Kammregression)

29

Ich verwende die auto.arima () -Funktion im Vorhersagepaket , um ARMAX-Modelle mit einer Vielzahl von Kovariaten zu kombinieren. Ich habe jedoch oft eine große Anzahl von Variablen zur Auswahl und erhalte normalerweise ein endgültiges Modell, das mit einer Teilmenge von ihnen funktioniert. Ich mag keine Ad-hoc-Techniken für die Variablenauswahl, weil ich menschlich bin und Vorurteile habe, aber die Kreuzvalidierung von Zeitreihen ist schwierig . Daher habe ich keine gute Möglichkeit gefunden, verschiedene Teilmengen meiner verfügbaren Variablen automatisch auszuprobieren Ich kann meine Modelle nicht nach meinem besten Ermessen einstellen.

Wenn ich glm-Modelle anpasse, kann ich das elastische Netz oder das Lasso zur Regularisierung und variablen Auswahl über das glmnet- Paket verwenden. Gibt es in R ein Toolkit für die Verwendung des elastischen Netzes bei ARMAX-Modellen, oder muss ich mein eigenes rollen? Ist das überhaupt eine gute Idee?

edit: Wäre es sinnvoll, die AR- und MA-Terme (etwa bis zu AR5 und MA5) manuell zu berechnen und die Verwendung von glmnet für das Modell zu verwenden?

edit 2: Es scheint, dass das FitAR- Paket mir einen Teil, aber nicht den ganzen Weg dorthin verschafft.

Zach
quelle
2
Ich wäre gespannt, ob Sie jemals etwas gegen dieses Problem unternommen haben. Ich hatte es für jedes Update markiert - also nur Basis hier berühren.
Vishal Belsare
Niemals umgebracht, um das zu lösen. Ich habe überlegt, meine eigene Implementierung zu schreiben, bin aber nicht dazu gekommen. Vielleicht könnten Sie die AR- und MA-Terme manuell berechnen und dann glmnet auf diese Daten anwenden?
Zach
1
Hallo Zach, ich habe mich gefragt, ob du das noch weiter gebracht hast oder ob es noch geparkt ist. Ich brauche einen solchen Algorithmus, um eine große Anzahl von Reihen vorherzusagen.
Matt Weller
3
@MattWeller Ich habe mich ein wenig mit Rob Hyndman unterhalten, dem Autor des hervorragenden forecastPakets für R. Er sagte, dass es mit der vollständigen ARIMA schwierig sein würde, weil Sie das Lasso um den nichtlinearen ARIMA-Optimierer wickeln müssten. Eine Teillösung wäre die Anpassung eines AR-Modells glmnetmit verzögerten Variablen. Soweit ich weiß, hat dies noch niemand mit einem vollständigen ARIMA-Modell gemacht.
Zach

Antworten:

7

Dies ist keine Lösung, sondern einige Überlegungen zu den mir bekannten Möglichkeiten und Schwierigkeiten.

Wann immer es möglich ist, ein Zeitreihenmodell als mit x t zu spezifizieren, das aus Kovariaten und zeitverzögerten Beobachtungen berechnet werden kann, ist es auch möglich, das elastische Netz der kleinsten Quadrate zu berechnen, das bestraft wird Schätzer von β

Y.t+1=xtβ+ϵt+1
xtβ Verwendung von glmnet in R. Sie müssen Code schreiben, um zu berechnen und die Modellmatrix zu bilden, die in glmnet angegeben werden soll. Das funktioniert für AR-Modelle, aber nicht direkt für ARMA-Modelle. Darüber hinaus sind die Kreuzvalidierungsverfahren von glmnet für Zeitreihendaten per se nicht sinnvoll.xt

Y.t+1=f(xt,β)+ϵt+1
β
Y.t+1=xtG(β)+ϵt+1
βG(β)-

Ein weiteres Problem ist die Auswahl des Strafmaßes (der Abstimmungsparameter). Es wird im Allgemeinen eine Form der Kreuzvalidierung für Zeitreihen erfordern, aber ich hoffe, für bestimmte Modelle einige weniger rechenintensive Methoden ausarbeiten zu können.

NRH
quelle
Das Caret-Paket für R bietet eine gute Implementierung der Kreuzvalidierung von Zeitreihen, mit der die Parameter für glmnet ausgewählt werden können. Danke für die Antwort.
Zach
2

Ich wurde von einem Kunden aufgefordert, dieses Problem automatisch, dh schlüsselfertig, zu lösen. Ich habe einen Ansatz implementiert, bei dem für jedes Paar (dh y und ein Kandidat x) Kreuzkorrelationen der vorgebleichten Reihe vorgebleicht, die PDL (oder ADL AUTOREGRESSIVE DISTRIBUTED LAG MODEL einschließlich einer TOTEN ZEIT) unter Einbeziehung der Interventionserkennung ermittelt werden robuste Schätzungen liefern, ein "Maß" für diese Struktur entwickeln. Nachdem Sie dies für ALLE Regressionskandidaten durchgeführt haben, ordnen Sie sie nach der "Kennzahl" und wählen Sie dann die Top-K-Regressoren basierend auf der "Kennzahl" aus. Dies wird manchmal als lineare Filterung bezeichnet. Wir haben diese Heuristik erfolgreich in unser im Handel erhältliches Zeitreihenpaket aufgenommen. Sie sollten in der Lage sein, "ROLL YOUR OWN"

IrishStat
quelle
Ich möchte speziell das Lasso oder das elastische Netz in ein ARIMA-Modell integrieren.
Zach
3
Ich bin nicht wirklich auf der Suche nach einem linearen Filter (obwohl dies nützlich ist). Ich möchte speziell die Möglichkeit haben, das Lasso, die Gratregression oder das elastische Netz in ein ARIMAX-Modell zu integrieren.
Zach
2
Im Moment interessiere ich mich nicht für Pegelverschiebungen, lokale Zeittrends, Koeffizientenverschiebungen oder nicht konstante Fehlervarianz. Ich bin ganz speziell daran interessiert, Lasso, Ridge oder elastische Netz-Regularisierung auf ARIMAX-Modelle anzuwenden.
Zach
2
Wenn Sie Lasso, Ridge oder Elastic Net Regularization in die obige Methodik integrieren und einen Beispielcode in einer Open-Source-Programmiersprache veröffentlichen können, würde ich Sie gerne mit dem Kopfgeld belohnen.
Zach
1
@frank Sie versuchen, eine Identifizierung durch Schätzung (Step-Down) vorzunehmen, und das funktioniert nicht, da zu viele Kombinationen von möglichen Impulsen, Pegelverschiebungen, saisonalen Impulsen und Zeittrends vorliegen. Wenn diese Strukturen benötigt, aber ignoriert werden, wird die Parameterschätzung verzerrt und parametrische Signifikanztests gehen aus dem Fenster.
IrishStat