Sind die von auto.arima () identifizierten Modelle sparsam?


13

Ich habe versucht, ARIMA-Modelle zu lernen und anzuwenden. Ich habe einen ausgezeichneten ARIMA-Text von Pankratz gelesen - Forecasting with Univariate Box - Jenkins Models: Concepts and Cases . Der Autor betont im Text insbesondere das Prinzip der Sparsamkeit bei der Auswahl von ARIMA-Modellen.

Ich fing an, mit der auto.arima()Funktion in der R- Paket- Vorhersage zu spielen . Hier ist, was ich getan habe, ich habe ARIMA simuliert und mich dann beworben auto.arima(). Unten sind 2 Beispiele. Wie Sie in beiden Beispielen sehen können auto.arima(), wurde ein Modell eindeutig identifiziert, das viele als nicht sparsam betrachten würden. Insbesondere in Beispiel 2, in dem auto.arima()ARIMA (3,0,3) als tatsächlich ARIMA (1,0,1) identifiziert wurde, wäre dies ausreichend und sparsam.

Unten sind meine Fragen. Über Anregungen und Empfehlungen würde ich mich freuen.

  1. Gibt es Hinweise, wann die mit automatischen Algorithmen identifizierten Modelle zu verwenden / zu ändern sind, wie z auto.arima().
  2. Gibt es Fallstricke bei der Verwendung von AIC (was meiner Meinung auto.arima()nach zur Identifizierung von Modellen verwendet wird)?
  3. Kann ein automatischer Algorithmus erstellt werden, der sparsam ist?

Übrigens habe ich auto.arima()nur als Beispiel genommen. Dies würde für jeden automatischen Algorithmus gelten.

Unten ist Beispiel # 1:

set.seed(182)
y <- arima.sim(n=500,list(ar=0.2,ma=0.6),mean = 10)

auto.arima(y)

qa <- arima(y,order=c(1,0,1))
qa

Unten sind die Ergebnisse von auto.arima(). Bitte beachten Sie, dass alle Koeffizienten unwesentlich sind. dh t Wert <2.

ARIMA(1,0,2) with non-zero mean 

Coefficients:
         ar1     ma1      ma2  intercept
      0.5395  0.2109  -0.3385    19.9850
s.e.  0.4062  0.4160   0.3049     0.0878

sigma^2 estimated as 1.076:  log likelihood=-728.14
AIC=1466.28   AICc=1466.41   BIC=1487.36

Unten sehen Sie die Ergebnisse der regulären Ausführung arima()mit der Bestellung von ARIMA (1,0,1).

Series: y 
ARIMA(1,0,1) with non-zero mean 

Coefficients:
         ar1     ma1  intercept
      0.2398  0.6478    20.0323
s.e.  0.0531  0.0376     0.1002

sigma^2 estimated as 1.071:  log likelihood=-727.1
AIC=1462.2   AICc=1462.28   BIC=1479.06

Beispiel 2:

set.seed(453)
y <- arima.sim(n=500,list(ar=0.2,ma=0.6),mean = 10)

auto.arima(y)

qa <- arima(y,order=c(1,0,1))
qa

Unten sind die Ergebnisse von auto.arima():

ARIMA(3,0,3) with non-zero mean 

Coefficients:
         ar1      ar2     ar3     ma1     ma2     ma3  intercept
      0.7541  -1.0606  0.2072  0.1391  0.5912  0.5491    20.0326
s.e.  0.0811   0.0666  0.0647  0.0725  0.0598  0.0636     0.0939

sigma^2 estimated as 1.027:  log likelihood=-716.84
AIC=1449.67   AICc=1449.97   BIC=1483.39

Nachfolgend sind die Ergebnisse aufgeführt, die regelmäßig arima()mit der Bestellung von ARIMA (1,0,1) ausgeführt werden.

Series: y 
ARIMA(1,0,1) with non-zero mean 

Coefficients:
         ar1     ma1  intercept
      0.2398  0.6478    20.0323
s.e.  0.0531  0.0376     0.1002

sigma^2 estimated as 1.071:  log likelihood=-727.1
AIC=1462.2   AICc=1462.28   BIC=1479.06

Sie scheinen hier auf dem laufenden zu sein, da das AIC-Verfahren möglicherweise das einfachste Modell falsch identifiziert. Zusätzlich setzen die AIC-Kriterien keine Impulse / keine Pegelverschiebungen / keine saisonalen Impulse / keine lokalen Zeittrends / Parameterkonstanz / Fehlervarianzkonstanz voraus.
IrishStat

Der AIC und der BIC sind proportional zur Varianz der Fehler aus einem erratenen Modell. Dieser Ansatz ist meiner Erfahrung nach zu einfach, da einige der Probleme, die ich bereits angesprochen habe, und die Umkehrbarkeitsprobleme hier auftreten. Es gibt keinen Ersatz für ein intelligentes Identifikationssystem, das iterative Modelle erstellt, die schließen, wenn keine nicht benötigten Parameter mehr vorhanden sind und keine Informationen / Strukturen in den Residuen erkennbar sind. Zusammenfassend ist die automatische Modellidentifikation ein iterativer Prozess und kein einstufiger Prozess wie bei allen statistischen Analysen.
IrishStat

@Irishstat Was ist das Vorzeichen für einen Koeffizienten, der als -0,1391 -0,5912 -0,5491 interpretiert werden soll?
Prognose

im Sinne des Pankratz Textes .. ja! . Sie können die Wurzeln des Ma-Polynoms überprüfen, um festzustellen, ob sie die Invertierbarkeitsanforderungen erfüllen.
IrishStat

Das obige auto.arima ist also nicht invertierbar, dh -0.1391-0.5912-0.5491 ist <1, daher ist das Modell in Ordnung.
Prognose

Antworten:


17

Hier gibt es ein paar Probleme. Stellen Sie sich zunächst nicht vor, dass die simulierte ARIMA tatsächlich in der von Ihnen angegebenen Reihenfolge vorliegt. Sie entnehmen eine Stichprobe aus dem angegebenen Modell, und aufgrund der Zufälligkeit ist das am besten passende Modell für die bestimmte Stichprobe möglicherweise nicht das Modell, aus dem die Simulationen erstellt wurden.

Ich erwähne dies wegen des zweiten und wichtigeren Problems: Die auto.arima()Funktion kann Modelle über einen effizienteren Anpassungsalgorithmus unter Verwendung von bedingten Quadratsummen schätzen, um eine übermäßige Rechenzeit für lange Reihen oder für komplexe saisonale Modelle zu vermeiden. Wenn dieser Schätzprozess verwendet wird,auto.arima() die Informationskriterien für ein Modell angenähert (da die Protokollwahrscheinlichkeit des Modells nicht berechnet wurde). Eine einfache Heuristik wird verwendet, um zu bestimmen, ob die bedingte Schätzung der Quadratsummen aktiv ist, wenn der Benutzer nicht angibt, welcher Ansatz verwendet werden soll .

approximation(length(x)>100 | frequency(x)>12)approximationTRUE n=100n=500 approximationauto.arima()approximation = TRUEarima()

Für Ihr Beispiel 1 sollten wir haben

> auto.arima(y, approximation = FALSE)
Series: y 
ARIMA(0,0,1) with non-zero mean 

Coefficients:
         ma1  intercept
      0.7166    19.9844
s.e.  0.0301     0.0797

sigma^2 estimated as 1.079:  log likelihood=-728.94
AIC=1463.87   AICc=1463.92   BIC=1476.52
> qa
Series: y 
ARIMA(1,0,1) with non-zero mean 

Coefficients:
         ar1     ma1  intercept
      0.0565  0.6890    19.9846
s.e.  0.0626  0.0456     0.0830

sigma^2 estimated as 1.078:  log likelihood=-728.53
AIC=1465.06   AICc=1465.14   BIC=1481.92

Daher auto.arima()hat ein sparsameres Modell als das wahre Modell gewählt; ein ARIMA (0, 0, 1) wird gewählt. Dies basiert jedoch auf den Informationskriterien, und jetzt stimmen sie überein. Das ausgewählte Modell hat einen niedrigeren AIC, AICc und BIC, obwohl die Unterschiede für AIC und AICc gering sind. Zumindest jetzt entspricht die Auswahl den Normen für die Auswahl von Modellen auf der Grundlage von Informationskriterien.

Der Grund für die Wahl des MA (1) bezieht sich meines Erachtens auf das erste von mir erwähnte Thema. Das heißt, dass das am besten zu einer Stichprobe passende Modell, das aus einer angegebenen ARIMA (p, d, q) gezogen wurde, möglicherweise nicht in der gleichen Größenordnung wie das wahre Modell liegt. Dies ist auf Stichproben zurückzuführen. Eine längere Serie oder ein längerer Einbrennzeitraum kann dazu beitragen, die Wahrscheinlichkeit zu erhöhen, dass das richtige Modell ausgewählt wird, aber setzen Sie nicht darauf.

Unabhängig davon lautet die Moral hier: Wenn etwas offensichtlich falsch aussieht, wie in Ihrer Frage, lesen Sie die zugehörige Manpage oder Dokumentation, um sich zu vergewissern, dass Sie verstehen, wie die Software funktioniert.


danke für die ausführliche antwort. Ich habe Ihren Ansatz für das zweite Beispiel verwendet: set.seed (453) y <- arima.sim (n = 500, liste (ar = 0,2, ma = 0,6), mean = 10) auto.arima (y, approximation = FALSE) und dies ist, was ich bekomme, es ist eindeutig die Daten - ARIMA (2,0,4) mit Nicht-Null-Mittelwert-Koeffizienten überzurüsten: 0,0533 0,0630 0,0793 0,0574 0,0927 Sigma ^ 2, geschätzt als 1,024: Log-Wahrscheinlichkeit = -716,17 AIC = 1448,33 AICc = 1448,63 BIC = 1482,05
Prognose vom

Ich habe das Kapitel mit der Bezeichnung "Invertiblität" noch nicht gelesen. Verstößt die auto.arima im zweiten Fall gegen die "Invertiblity" -Regel in der Modelldiagnose?
Prognose

1
@forecaster Angenommen, Sie kennen die Wahrheit nicht. Sie haben nur die Probe zur Hand. Unter diesen Umständen tun AIC usw. das, was Sie von ihnen verlangen. Wie ich oben sagte, ist die simulierte Serie möglicherweise nicht die, nach der Sie gefragt haben, oder es ist möglicherweise nicht möglich, die wahre Serie anhand der kleinen Stichprobe, die Sie genommen haben, erfolgreich zu identifizieren. Hier oder anderswo in den Statistiken ist nichts impliziert, was Sie als einziges WAHRES Modell erhalten. Wenn Sie als Statistiker der Meinung sind, dass die Serie überarbeitet ist (etwa aufgrund von Vorkenntnissen), beschränken Sie die Reihenfolge der gesuchten Begriffe. Oder verwenden Sie BIC als Stoppkriterium.
Wiedereinsetzung von Monica - G. Simpson

Ich weiß nicht genau genug, was Umkehrbarkeit bedeutet, um diese Frage beantworten zu können. Vielleicht als neue Frage hier stellen?
Wiedereinsetzung von Monica - G. Simpson

@forecaster (Grund, warum ich BIC sage, ist, dass es die Komplexität zusätzlich beeinträchtigt. In diesem Fall hat der BIC der ARIMA (1, 0, 1) einen niedrigeren BIC als das Modell, auto.arima()auf das sich festgelegt hat, wenn dies also die einzigen beiden wären Kandidatenmodelle, die einfachere wäre ausgewählt worden ...)
Wiedereinsetzung von Monica - G. Simpson

2

Vielen Dank an @ Gavin, @Irishstat und @Rob für die Beantwortung meiner Frage. Es ist klar, dass, wenn ich ein sparsames Modell von einem automatischen Algorithmus wie auto.arima benötige, das BIC-Informationskriterium im Gegensatz zum AIC verwendet werden sollte, besonders nachdem ich diesen Beitrag gelesen habe und den obigen @ Gavin .

Ich stimme auch @Irishstat sehr zu, dass die Auswahl eines Modells basierend auf dem IC-Kriterium Einschränkungen dahingehend aufweist, dass kein besseres Modell ausgewählt wird, um Daten mit Ausreißern und Ebenenverschiebungen anzupassen. Meiner Meinung nach sind Ausreißer + Pegelverschiebungen + unordentliche Daten = echte Geschäftsdaten , alles andere sind Lehrbuchdatensätze. Jedes automatische Modell, das Ausreißer + Pegelverschiebungen nicht berücksichtigt, sollte meiner Meinung nach mit Vorsicht verwendet werden.

Kommen wir zum Code - auto.arima hat die Möglichkeit, zwischen AIC und BIC zu wählen. Siehe unten, der Code wurde von den obigen Fragen geändert.

Vielen Dank Cross-validierte Community. Ich lerne jeden Tag neue und interessante Dinge.

###############
set.seed(453)
y <- arima.sim(n=500,list(ar=0.2,ma=0.6),mean = 10)

## Adequetly describes the unknown data
fit.aic <- auto.arima(y,ic = c("aic"))
fit.aic

## Selects the model that is parsimonious
fit.bic <- auto.arima(y,ic = c("bic"))
fit.bic

BIC IC wählt ein MA (2) Modell.

> fit.bic
Series: y 
ARIMA(0,0,2) with non-zero mean 

Coefficients:
         ma1     ma2  intercept
      0.9256  0.2335    20.0326
s.e.  0.0453  0.0444     0.0992

sigma^2 estimated as 1.059:  log likelihood=-724.19
AIC=1456.39   AICc=1456.47   BIC=1473.24

1

Ich habe die 500 Werte in AUTOBOX (ein Stück kommerzieller Software, an dessen Entwicklung ich mitgewirkt habe) übernommen und den folgenden Hinweis erhalten, der Bildbeschreibung hier eingebenauf dem Chow-Test für die Konstanz von Parametern basiert. Ein sehr grundlegender Fehler, der bei der Untersuchung einer Zeitreihe gemacht wird, ist die Annahme, dass die Daten von einem bestimmten Modell mit konstanten Parametern gesteuert werden. AUTOBOX hat im Zeitraum 246 einen Haltepunkt festgestellt, der eine Simulation widerspiegeln könnte, die nicht "aufgewärmt" wurde. Bei der Simulation von Daten empfiehlt es sich, die ersten "n" Werte zu löschen und dann die verbleibenden zu untersuchen. Ich nahm die Daten und segmentierte sie in zwei Abschnitte. die ersten 245 und die restlichen 255. Hier sind die beiden Bildbeschreibung hier eingebensehr unterschiedlichen GrundstückeBildbeschreibung hier eingeben .

Zurück zur Analyse: Hier ist das Modell, das für die letzten 246 Werte Bildbeschreibung hier eingebenund hier Bildbeschreibung hier eingebenmit den folgenden Statistiken identifiziert wurde Bildbeschreibung hier eingeben. Das Ist / Fit und die Vorhersage sind hier Bildbeschreibung hier eingebenmit dem Restdiagramm hier Bildbeschreibung hier eingeben. Die ACF der Residuen deutet auf eine ausreichende Leistung hinBildbeschreibung hier eingeben. Beachten Sie, dass die 5 identifizierten Impulse einen sehr geringen Effekt hatten und leicht ignoriert werden konnten (in diesem Fall!). Zusammenfassend lässt sich sagen, dass wir manchmal zu viele Daten haben und Zeitänderungskoeffizienten berücksichtigen müssen. In diesem Fall stellen wir eine Änderung der Parameter fest, die (anscheinend) keinen wesentlichen Einfluss auf das resultierende Modell / die resultierenden Parameter hat, jedoch auf eine allgemein erforderliche Prozessverbesserung bei der Zeitreihenanalyse hinweist. Meine Erfahrung mit auto.arima legt nahe, dass es, da es Gaußsche Verstöße explizit nicht behandelt / behebt, dazu neigt, zu übermodellieren, indem es sich zu sehr auf historische Werte stützt, anstatt Struktur aus den Daten zu extrahieren. In diesem Fall funktionierte es, da es sich um eine streng kontrollierte Simulation ohne Gaußsche Verstöße handelte, aber ich würde allgemein den Verdacht hegen, dass es sich bei der Identifizierung von ARIMA-Modellen um eine bandbreitenbegrenzte und einstufige Methode handelt. Vertrauen aber überprüfen!


0

 exp(EINichCmichn-EINichCich)/2

WENN dies so ist, würde es Benutzern helfen, diese relativen Wahrscheinlichkeiten zusammen mit den AICs (?) Von zu sehen auto.arima( ... trace=TRUE ). Beispielsweise führen die Eier Daten wie in dieser Frage gibt

                                # relprob = exp( (AICmin - AIC) / 2 ) * 100
 ARIMA(0,1,0) with drift : 784.5    100
 ARIMA(0,1,1) with drift : 784.8     86
 ARIMA(1,1,0) with drift : 784.9     82
 ARIMA(0,1,0)            : 792.4      2
 ARIMA(2,1,2) with drift : Inf    0
 ARIMA(1,1,1) with drift : Inf    0

1
Dies ist eine Antwort oder eine Frage?
Tim

@ Tim, ich bin so vorsichtig, weil ich nicht weiß, ob diese relativen Probleme "echt" oder zumindest üblich sind.
Denis
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.