Estoy intentando hacer una previsión pseudo fuera de muestra usando R. Y, también tengo los siguientes datos iniciales (pib)
Time gdp
2004Q1 1.0
2004Q2 1.0
2004Q3 0.9
2004Q4 1.9
2005Q1 0.2
2005Q2 -0.2
2005Q3 0.9
2005Q4 0.4
2006Q1 2.3
2006Q2 0.5
2006Q3 0.8
2006Q4 1.0
2007Q1 1.8
2007Q2 1.6
2007Q3 0.7
2007Q4 1.8
2008Q1 -0.4
2008Q2 -0.7
2008Q3 0.0
2008Q4 -1.8
2009Q1 -6.8
2009Q2 -0.5
2009Q3 0.8
2009Q4 -0.2
2010Q1 0.4
2010Q2 2.8
2010Q3 -0.4
2010Q4 2.1
2011Q1 0.5
2011Q2 -0.3
2011Q3 0.3
2011Q4 0.1
2012Q1 0.0
2012Q2 -1.6
2012Q3 -0.3
2012Q4 -0.6
2013Q1 -0.1
2013Q2 0.4
2013Q3 0.3
2013Q4 -0.4
2014Q1 -0.7
2014Q2 0.0
2014Q3 0.3
2014Q4 0.0
2015Q1 -0.6
2015Q2 1.2
2015Q3 0.0
2015Q4 0.6
2016Q1 1.2
2016Q2 0.3
2016Q3 1.1
2016Q4 0.4
2017Q1 1.0
2017Q2 0.5
2017Q3 0.4
2017Q4 0.6
2018Q1 0.9
2018Q2 0.4
2018Q3 0.3
2018Q4 0.8
Ya he averiguado cómo escribir código para un modelo AR(1) simple, es decir, PIB_t= beta_0+beta_1*PIB_{t-1}. Además, en el futuro estoy planeando ampliar este modelo AR(1) con algunos factores adicionales por lo que he utilizado la función lm().
#data manipulation
gdpgrowth <- gdp[,2]
gdpgrowth_level <- as.numeric(gdpgrowth[-1])
gdpgrowth_lags <- as.numeric(gdpgrowth[-N])
#AR(1) model
armod <- lm(gdpgrowth_level ~ gdpgrowth_lags)
armod
Sin embargo, Pseudo fuera de la muestra (bucle for) ha demostrado ser bastante pesado. Intento utilizar el 20% de mi muestra de PIB como muestra de entrenamiento. En otras palabras, tiene 60 filas (60*0,2)=12 filas. Por lo tanto, 48 filas están fuera de la muestra. Por lo tanto, mi código inicial para el bucle Pseudo fuera de muestra es el siguiente:
#Pseudo out-of-sample
forecasts = list(length = 48)
for (i in 1:48) {
forecasts[i]<-lm(gdpgrowth_level[i:(12+i)] ~ gdpgrowth_lags[i:(12+i)])
}
forecasts
Sin embargo, las previsiones no parecen correctas cuando se comparan con los datos reales del PIB. ¿Están correctamente especificados el modelo AR(1) y el bucle?
Gracias de antemano por cualquier ayuda.