##################################################################### ##################################################################### ####### TEMA 1: ANÁLISIS DESCRIPTIVO DE UNA SERIE DE TIEMPO ####### ##################################################################### ##################################################################### ############################### ### Ejercicio 1: LakeHuron ### ############################### # (a) Realizamos el gráfico de secuencia de la serie de tiempo contenida en el objeto "serie de tiempo" LakeHuron windows() plot(LakeHuron, type="o") # (b) Proponemos un modelo con tendencia. Aplicamos 3 filtros de medias móviles a dicha serie de tiempo: k=1,4,7 suavizacion3 <- filter(LakeHuron, sides=2, rep(1/3,3)) suavizacion9 <- filter(LakeHuron, sides=2, rep(1/9,9)) suavizacion15 <- filter(LakeHuron, sides=2, rep(1/15,15)) # (c) Dibujamos la serie junto con cada suavización windows() plot(LakeHuron, type="o") lines(suavizacion3, col="blue", lwd=2) lines(suavizacion9, col="red", lwd=2) lines(suavizacion15, col="purple", lwd=2) # Me quedo con el suavizacion9 # De otra forma: windows() par(mfrow=c(3,1)) plot(LakeHuron, type="o") lines(suavizacion3, col="blue", lwd=2) plot(LakeHuron, type="o") lines(suavizacion9, col="red", lwd=2) plot(LakeHuron, type="o") lines(suavizacion15, col="purple", lwd=2) # (d) Nos quedamos con k=4. Dibujamos la descomposición de la serie windows() residuos9 <- LakeHuron-suavizacion9 par(mfrow=c(3,1)) plot(LakeHuron, type="l") plot(suavizacion9, type="l", ylab="Tendencia") plot(residuos9, type="l", ylab="Residuos") # (e) Dibujamos la serie junto con la suavización elegida (k=4) windows() plot(LakeHuron, type="o") lines(suavizacion9, col="red", lwd=2) # (f) Calculamos el error cuadrático medio y la varianza residual. mean(residuos9^2, na.rm=TRUE) var(residuos9, na.rm=TRUE) ################################### ### Ejercicio 2: JhonsonJhonson ### ################################### # (a) Realizamos el gráfico de secuencia de la serie de tiempo contenida en el objeto "serie de tiempo" JohnsonJohnson windows() plot(JohnsonJohnson , type="o") # (b) Proponemos un modelo multiplicativo puro (es el que hace el R). Realizamos la descomposición multiplicativa: descomposicion <- decompose(JohnsonJohnson, type="multiplicative") # (c) Dibujamos dicha descomposición windows() plot(descomposicion) # (d) Dibujamos la serie junto con la suavización obtenida windows() plot(JohnsonJohnson, type="o") lines(descomposicion$trend * descomposicion$seasonal, col="red", lty="dashed") # (e) Dibujamos la serie transformada a través del logaritmo neperiano windows() log.JohnsonJohnson<- log(JohnsonJohnson) plot(log.JohnsonJohnson, type="o") # (f) Proponemos un modelo aditivo. Realizamos la descomposición aditiva: descomposicion.log <- decompose(log.JohnsonJohnson, type="additive") # (g) Dibujamos dicha descomposición windows() plot(descomposicion.log) # (h) Dibujamos la serie transformada junto con la suavización obtenida windows() plot(log.JohnsonJohnson, type="o") lines(descomposicion.log$trend + descomposicion.log$seasonal, col="purple", lty="dashed") # (i) Dibujamos la serie original junto con la suavización obtenida deshaciendo la suavización aplicada a la serie transformada windows() plot(JohnsonJohnson, type="o") lines(exp(descomposicion.log$trend)* exp(descomposicion.log$seasonal), col="blue", lty="dotted") # (j) Dibujamos la serie original y sus dos suavizaciones windows() plot(JohnsonJohnson, type="o") lines(descomposicion$trend * descomposicion$seasonal, col="red", lty="dashed") lines(exp(descomposicion.log$trend) * exp(descomposicion.log$seasonal), col="blue", lty="dotted") # De otra forma: windows() par(mfrow=c(1,2)) plot(JohnsonJohnson, type="o") lines(descomposicion$trend * descomposicion$seasonal, col="red", lty="dashed") plot(JohnsonJohnson, type="o") lines(exp(descomposicion.log$trend)* exp(descomposicion.log$seasonal), col="blue", lty="dotted") # (k) Calculamos el error cuadrático medio cometido con cada suavizacion error1 <- JohnsonJohnson - descomposicion$trend * descomposicion$seasonal mean(error1^2, na.rm=TRUE) error2 <- JohnsonJohnson - exp(descomposicion.log$trend) * exp(descomposicion.log$seasonal) mean(error2^2, na.rm=TRUE)