uu="https://raw.githubusercontent.com/vmoprojs/DataLectures/master/CAEMP.DAT"
datos=read.csv(url(uu),sep=",",header=T)
d2s=ts(datos,st=1962,frequency = 4)
plot(d2s)
interpretar: La gráfica muestra que desde 1960 hasta mediados de los 70 los valores fueron subiendo, pero después la serie se volvió muy inestable con caídas y recuperaciones, por lo que no tiene una tendencia de crecimiento constante. No se nota un patrón que se repita cada cierto tiempo, así que no hay estacionalidad, pero sí se ven ciclos económicos de subidas y bajadas. Los cambios parecen ser de tipo aditivo porque las variaciones no dependen del nivel de la serie. Los valores más altos se dieron alrededor de 1975 y 1990, mientras que los más bajos fueron al inicio de los 60 y a comienzos de los 90. Para que la serie sea estacionaria haría falta aplicar por lo menos una diferencia.
acf(d2s)
library(tseries)
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
adf.test(d2s)
##
## Augmented Dickey-Fuller Test
##
## data: d2s
## Dickey-Fuller = -2.6391, Lag order = 5, p-value = 0.3106
## alternative hypothesis: stationary
Basado en la prueba de dicker Fuller la serie no es estacionaria, ademas la funcion de autocorrelacion muestra un decenso suave en los 12 primeros resagos o valores.
d2sd=diff(d2s)
acf(d2sd)
adf.test(d2sd)
## Warning in adf.test(d2sd): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: d2sd
## Dickey-Fuller = -4.0972, Lag order = 5, p-value = 0.01
## alternative hypothesis: stationary
El p-valor de la prueba de dickey Fuller dicta que la serie es estacional, por que este es menor que alfa=5% o 0,05
acf(d2sd)
pacf(d2sd)
m1=arima(d2s,order = c(0,1,2))
m1$aic
## [1] 488.5535
m2=arima(d2s,order = c(1,1,0))
m2$aic
## [1] 485.4119
m3=arima(d2s,order = c(1,1,2))
m3$aic
## [1] 489.1799
De los tres modelos presentes se escoge aquel que presente el valor mas bajo del indicador de AIC. En este caso el modelo 2 (aic=485.41)
d2sp=predict(m2,3)
d2sp
## $pred
## Qtr1 Qtr2 Qtr3
## 1996 92.17202 92.24426 92.27748
##
## $se
## Qtr1 Qtr2 Qtr3
## 1996 1.437907 2.544385 3.499883
start(d2s)
## [1] 1962 1
end(d2s)
## [1] 1995 4
start(d2sp)
## [1] 1 1
end(d2sp)
## [1] 2 1
str(d2s)
## Time-Series [1:136, 1] from 1962 to 1996: 83.1 82.8 84.6 85.4 86.2 ...
## - attr(*, "dimnames")=List of 2
## ..$ : NULL
## ..$ : chr "caemp"
str(d2sp)
## List of 2
## $ pred: Time-Series [1:3] from 1996 to 1996: 92.2 92.2 92.3
## $ se : Time-Series [1:3] from 1996 to 1996: 1.44 2.54 3.5
inicio=1962
final=1996.5
fecha=seq(inicio,final,by=0.25)
length(fecha)
## [1] 139
desempleo=c(d2s,d2sp$pred)
length(desempleo)
## [1] 139
data=c(rep("real",136),rep("pronostico",3))
length(data)
## [1] 139
datosd=data.frame(fecha,desempleo,data)
SOLUCION PARA QUE CORRA DATA.FRAME: #el error estaba en desempleo en la parte de (d2s,d2sp) ya que solo se tomo en cuenta que si se escribe d2sp, solo se intenta pegar toda la lista al vector d2s, y eso falla ya que una lista no es directamente numérica.En cambio si escribimos (d2sp\(pred). Estamos diciendo que: la lista (d2sp) tiene unicamente el vector con los valores pronosticados.de esta forma ambos (d2s y d2sp\)pred) son vectores numericos y se pueden unir.