2017-07-05 2 views
1

Ich verwende die Funktion tbats() in r, um ein Prognosemodell zu erstellen.Wie manuell p und q in tbats() in r?

Ich fragte mich, ob jemand wusste, wie man den ARMA (p, q) direkt in die Funktion tbats() übergibt?

edit: Ich entschuldige mich, wenn die Frage vage war. In den Dokumenten für das Paket wird die folgende Argumentbeschreibung gedruckt:

"Zusätzliche Argumente, die an auto.arima übergeben werden, wenn ein ARMA (p, q) -Modell für die Fehler ausgewählt wird. (Beachten Sie, dass xreg ignoriert wird. wie, alle Argumente Saisonalität und differenzier über aber die Werte von p und q Steuern Argumente werden verwendet werden.)“

Es stellt klar, dass die Steuerung manuell die ARMA (p, q) mit einem Argument erfolgen bestanden direkt in die Funktion tbats(). Weiß jemand, wie man das macht?

https://www.rdocumentation.org/packages/forecast/versions/7.3/topics/tbats

+0

Es wäre einfacher, Ihnen zu helfen, wenn Sie ein [reproduzierbares Beispiel] zur Verfügung gestellt (https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) Anhand der Beispieldaten und des Codes wird versucht, klarzustellen, was Sie zu tun versuchen. – MrFlick

Antwort

0

In Kürze können Sie nicht.

tbats ist ein hybrider Algorithmus, also sollten Sie nicht darüber nachdenken, ein ARMA-Modell damit zu erstellen. Die tbats-Funktion führt die Anwendung der arma-Fehlerterme automatisch durch den booleschen Parameter use.arma.errors=TRUE/FALSE aus. Dadurch wird versucht, die Residuen besser zu modellieren.

Wenn Sie ein ARIMA-Modell erstellen möchten, können Sie das Paket "auto.arima from forecast" verwenden.

Beispiel über auto.arima

auto.arima(USJudgeRatings[,1], ic='aicc', stepwise=FALSE, start.p=3, start.q=1, max.p=3, max.q=3) 

Beispiel über TBATS

omega<-USJudgeRatings[,1];p<-10; q<-2; phi<-3; 
tbats(omega, p,q, phi,use.arma.errors=TRUE) 
BATS(0, {0,0}, 0.979, -) 

Call: tbats(y = omega, use.box.cox = p, use.trend = q, use.damped.trend = phi, 
    use.arma.errors = TRUE) 

Parameters 
    Lambda: 0 
    Alpha: -0.04239053 
    Beta: 0.04362955 
    Damping Parameter: 0.978616 

Seed States: 
     [,1] 
[1,] 1.917976 
[2,] 0.017468 

Sigma: 0.1206409 
AIC: 163.774 

wo meine Parameter p, q und phi stehen für use.box.cox, use.trend und benutze.damped.trend.

Weitere Informationen


  1. Es ist eine hervorragende Demonstration über die verschiedenen Modelle der Prognose Paket here verwenden.

  2. Definition von TBATS ist folgende:

[TBATS] Zeitreihe Aufspaltungsmodell besteht eine Zeit Serie in Trend zu zersetzen, saisonal, zyklisch, und unregelmäßige Komponenten. Dann wird jede Komponente explizit geschätzt und statistisch gemessen. Jede geschätzte Komponente wird dann rekombiniert, um ein endgültiges Modell zu schätzen und zukünftige Vorhersagen zu berechnen.A -SCHLÄGER Modell werden dann zusätzliche autoregressive inkorporieren und gleitender Durchschnitt Komponenten (p, q), um besseres Modell alle übrig gebliebenen in präsentiert Muster die Modellresiduen. (Source)

+1

Ich verstehe. Vielen Dank für die Erklärung. Ich glaube, ich war verwirrt - in den Dokumenten scheint es, als ob man die ARMA (p, q) -Elemente der Funktion manuell steuern kann: "Zusätzliche Argumente, die an auto.arima übergeben werden, wenn ein ARMA gewählt wird (p, q) Modell für die Fehler. (Beachten Sie, dass xreg ignoriert wird, ebenso wie Argumente zur Saisonalität und Differenzierung, ** aber Argumente, die die Werte von p und q steuern, werden verwendet **.) " – TrevUsesR

0

Das ... Argument von tbats wird auto.arima,

...: Additional arguments to be passed to ‘auto.arima’ when 
     choose an ARMA(p, q) model for the errors. (Note that 
     xreg will be ignored, as will any arguments concerning 
     seasonality and differencing, but arguments controlling 
     the values of p and q will be used.) 

an der Dokumentation übergeben werden Blickt man von der Dokumentation (?tbats)

für auto.arima wir sehen, dass es Argumente zum Einstellen der Werte für und q.

auto.arima(y, d = NA, D = NA, max.p = 5, max.q = 5, max.P = 2, 
    max.Q = 2, max.order = 5, max.d = 2, max.D = 1, start.p = 2, 
    start.q = 2, start.P = 1, start.Q = 1, stationary = FALSE, 
    seasonal = TRUE, ic = c("aicc", "aic", "bic"), stepwise = TRUE, 
    trace = FALSE, approximation = (length(x) > 150 | frequency(x) > 12), 
    truncate = NULL, xreg = NULL, test = c("kpss", "adf", "pp"), 
    seasonal.test = c("ocsb", "ch"), allowdrift = TRUE, allowmean = TRUE, 
    lambda = NULL, biasadj = FALSE, parallel = FALSE, num.cores = 2, 
    x = y, ...) 

Also, für die Arbeit hinzugefügt Sie tun, die Argumente start.p, start.q und trace zum tbats Aufruf, die Startwerte zu kontrollieren und die Suche zu sehen. Das beste Modell in diesem Beispiel ist ARIMA(0, 0, 0) with zero mean. Die BATS(0, {0,0}, 0.979, -) sagt uns die Werte {p, q} = {0, 0} wurden ausgewählt.

library(forecast) 

omega <- USJudgeRatings[,1] 

tbats(y    = omega, 
     use.box.cox  = TRUE, 
     use.trend  = TRUE, 
     use.damped.trend = TRUE, 
     use.arma.errors = TRUE, 
     start.p = 3, 
     start.q = 2, 
     trace = TRUE) 
# 
# ARIMA(3,0,2) with non-zero mean : Inf 
# ARIMA(0,0,0) with non-zero mean : -55.63664 
# ARIMA(1,0,0) with non-zero mean : -53.50348 
# ARIMA(0,0,1) with non-zero mean : -53.47905 
# ARIMA(0,0,0) with zero mean  : -57.75828 
# ARIMA(1,0,1) with non-zero mean : -51.19495 
# 
# Best model: ARIMA(0,0,0) with zero mean  
# 
# BATS(0, {0,0}, 0.979, -) 
# 
# Call: tbats(y = omega, use.box.cox = TRUE, use.trend = TRUE, use.damped.trend = TRUE, 
#  use.arma.errors = TRUE, start.p = 3, start.q = 2, trace = TRUE) 
# 
# Parameters 
# Lambda: 0 
# Alpha: -0.04239053 
# Beta: 0.04362955 
# Damping Parameter: 0.978616 
# 
# Seed States: 
#   [,1] 
# [1,] 1.917976 
# [2,] 0.017468 
# 
# Sigma: 0.1206409 
# AIC: 163.774 
+0

Fantastisch! Vielen Dank. Das war genau das, wonach ich suchte. Ich habe das Argument "trace = T" nicht berücksichtigt. Ich habe Sie neu eingestellt und markiert. Mein Konto ist jedoch neu. – TrevUsesR

Verwandte Themen