Ich habe ein Modell mit mehreren unabhängigen Variablen, von denen eine die Verzögerung der abhängigen Variablen ist, mithilfe des Dynlm-Pakets angepasst.
Angenommen, ich habe 1-Schritt-Voraus-Prognosen für meine unabhängigen Variablen. Wie erhalte ich 1-Schritt-Voraus-Prognosen für meine abhängigen Variablen?
Hier ist ein Beispiel:
library(dynlm)
y<-arima.sim(model=list(ar=c(.9)),n=10) #Create AR(1) dependant variable
A<-rnorm(10) #Create independant variables
B<-rnorm(10)
C<-rnorm(10)
y<-y+.5*A+.2*B-.3*C #Add relationship to independant variables
data=cbind(y,A,B,C)
#Fit linear model
model<-dynlm(y~A+B+C+L(y,1),data=data)
#Forecast
A<-c(A,rnorm(1)) #Assume we already have 1-step forecasts for A,B,C
B<-c(B,rnorm(1))
C<-c(C,rnorm(1))
y=window(y,end=end(y)+c(1,0),extend=TRUE)
newdata<-cbind(y,A,B,C)
predict(model,newdata)
Und hier ist ein Beispiel mit dem Dyn-Paket, das funktioniert.
library(dyn)
#Fit linear model
model<-dyn$lm(y~A+B+C+lag(y,-1),data=data)
#Forecast
predict(model,newdata)the dyn packages, which works:
r
dynamic-regression
Zach
quelle
quelle
dynlm
Paket verwenden, werden keine Prognosen für Ihre abhängigen Variablen bereitgestellt. Für die Bereitstellung von Prognosen für Ihre abhängigen Variablen sind ein Modell zur Erläuterung und wahrscheinlich zusätzliche Daten erforderlich. Ich empfehle Ihnen, etwas über multivariate Regression zu lesen, wie "Applied Multivariate Statistical Analysis" von Johnson und Wichern. oder ein Kurs über Prognosen: duke.edu/~rnau/411home.htmAntworten:
Herzlichen Glückwunsch, Sie haben einen Fehler gefunden. Die Vorhersage für
dynlm
mit neuen Daten wird unterbrochen, wenn verzögerte Variablen verwendet werden. Um zu sehen, warum schauen Sie sich die Ausgabe von anDie Ergebnisse sollten gleich sein, sind es aber nicht. Ohne
newdata
Argumentpredict
erfasst die Funktion grundsätzlich einmodel
Element aus derdynlm
Ausgabe. Mitnewdata
Argument wirdpredict
versucht, eine neue Modellmatrix aus zu bildennewdata
. Da dies das Parsen der gelieferten Formel beinhaltetdynlm
und die Formel eine Funktion hatL
, die nur intern in der Funktion definiert istdynlm
, wird die falsche Modellmatrix gebildet. Wenn Sie versuchen zu debuggen, werden Sie feststellen, dass die verzögerte abhängige Variable im Fall der angegebenennewdata
Argumentation nicht verzögert wird.Sie können die abhängige Variable verzögern und in die Variable aufnehmen
newdata
. Hier ist der Code, der diesen Ansatz veranschaulicht. Ich benutzeset.seed
es also leicht reproduzierbar.Hier ist das Buggy-Verhalten:
Bilde die
newdata
Vergleichen Sie die Prognose mit der Modellanpassung:
Wie Sie für historische Daten sehen können, stimmt die Prognose überein und das letzte Element enthält die Prognose für einen Schritt voraus.
quelle
lag(y,-1)+lag(y,-2)
?Auf Anfrage von @ md-azimul-haque habe ich meinen 4 Jahre alten Quellcode durchgesehen und die folgende entsprechend benannte Funktion gefunden. Sie sind sich nicht sicher, ob @ md-azimul-haque danach sucht?
quelle