En la presente practica se hacen cuatro funciones:
tendencia
Grafica la tendencia de la serie
estacionalidad
Grafica la estacionalidad de la serie
aleatorio
Grafica el componente aleatorio.
descomponer
Grafica las 3 anteriores en una sola salida.
Con estas funciones se realizaran las graficas de 3 series distintas de tipo ts:
AirPassengers
En nuestro primer ejemplo se usan los datos de la aerolínea Box & Jenkins totales mensuales de pasajeros de aerolíneas internacionales, 1949 a 1960.
airmiles
En nuestro segundo ejemplo usamos los datos de los ingresos por millas recorridas por las aerolíneas comerciales en los Estados Unidos para cada año desde 1937 hasta 1960.
austres
En nuestro tercer ejemplo se usan los números (en miles) de residentes australianos medidos trimestralmente desde marzo de 1971 hasta marzo de 1994. El objeto es de clase “ts”.
tendencia<-function(serie,m_movil) {
if(class(serie)=="ts"){
serie<-as.numeric(serie)
media<-ma(serie, m_movil, centre=TRUE)
m_movil<-na.omit(media); media<-as.numeric(media)
if(m_movil[1]<m_movil[length(m_movil)]){tendencia <-"La tendencia de la serie es creciente"
} else if(m_movil[1]>m_movil[length(m_movil)]){tendencia <- "La tendencia de la serie es decreciente"
}else{ tendencia<-"La tendencias de la serie es constante"}
Tiempo<-c(1:length(serie))
Tiempo1<-c(1:length(media))
grafica<-ggplot()+geom_line(aes(x=Tiempo, y=media), color="red", size=1.1)+
labs(x="Tiempo", y="Tendencia", title = "Tendencia con Medias Moviles",
subtitle = tendencia)+theme_bw()+theme(plot.title = element_text(hjust = 0.5))+theme(plot.subtitle = element_text(hjust = 0.5))
return(list(grafica, media))
return(list(grafica, media))
}else{
stop('class(s) no es de tipo ts')
}
}
Grafica ggplot de tipo “tendencia” de la serie “Airpassengers”
estacionaldiad <- function(serie, tipo, m_movil){
if(class(serie)=="ts"){
if(tipo=="aditiva"){
tendence<-tendencia(serie,m_movil); serie<-as.numeric(serie)
detrend<-serie-tendence[[2]]
matriz<-t(matrix(data = detrend, nrow = 4))
estacionaldiad<-colMeans(matriz, na.rm=TRUE)
estacionaldiad<-rep_len(estacionaldiad, length.out = length(serie))
d_frame<-data.frame(Tiempo=c(1:length(serie)), Serie=serie, Tendencia=tendence[[2]], Estacionalidad=estacionaldiad)
grafica<-ggplot(d_frame)+geom_line(aes(x=Tiempo, y=Estacionalidad), color="dodgerblue2", size=1.1)+
geom_point(aes(x=Tiempo, y=Estacionalidad), color="deepskyblue4")+
labs(x="Tiempo", y="Estacionalidad", title = "Estacionalidad de Serie de Tiempo")+theme_bw()+
theme(plot.title = element_text(hjust = 0.5))
return(list(grafica, d_frame$Estacionalidad))
}else if(tipo=="multiplicativa"){
tendence<-tendencia(serie,m_movil); serie<-as.numeric(serie)
detrend<-serie/tendence[[2]]
matriz<-t(matrix(data = detrend, nrow = 4))
estacionaldiad<-colMeans(matriz, na.rm=TRUE)
estacionaldiad<-rep_len(estacionaldiad, length.out = length(serie))
d_frame<-data.frame(Tiempo=c(1:length(serie)), Serie=serie, Tendencia=tendence[[2]], Estacionalidad=estacionaldiad)
grafica<-ggplot(d_frame)+geom_line(aes(x=Tiempo, y=Estacionalidad), color="dodgerblue2", size=1.1)+
geom_point(aes(x=Tiempo, y=Estacionalidad), color="deepskyblue4")+
labs(x="Tiempo", y="Estacionalidad", title = "Estacionalidad de Serie de Tiempo")+theme_bw()+
theme(plot.title = element_text(hjust = 0.5))
return(list(grafica, d_frame$Estacionalidad))
}else {stop('El parametro no es correcto')}
}else{stop('class(s1) no es de tipo ts')}
}
Grafica ggplot de tipo “estacionalidad” de la serie “Airpassengers”
Grafica ggplot de tipo “estacionalidad” de la serie “airmiles”
Grafica ggplot de tipo “estacionalidad” de la serie “austres”
aleatorio<-function(serie, tipo, m_movil){
if(class(serie)=="ts"){
if(tipo=="aditiva"){
tendence<-tendencia(serie,m_movil)
seasonality <- estacionaldiad(serie, tipo, m_movil)
serie<-as.numeric(serie)
error<-serie-tendence[[2]]-seasonality[[2]]
d_frame<-data.frame(Tiempo=c(1:length(serie)), Error=error)
grafica<-ggplot(d_frame)+geom_line(aes(x=Tiempo, y=Error), color="olivedrab4", size=1.1)+
geom_point(aes(x=Tiempo, y=Error), color="green")+
labs(x="Tiempo", y="Error Aleatorio", title = "Error Aleatorio de Serie de Tiempo")+theme_bw()+
theme(plot.title = element_text(hjust = 0.5))
return(list(grafica,error))
}else if(tipo=="multiplicativa"){
tendence<-tendencia(serie,m_movil)
seasonality <- estacionaldiad(serie, tipo, m_movil)
serie<-as.numeric(serie)
error<-serie/(tendence[[2]]*seasonality[[2]])
d_frame<-data.frame(Tiempo=c(1:length(serie)), Error=as.numeric(error))
grafica<-ggplot(d_frame)+geom_line(aes(x=Tiempo, y=Error), color="olivedrab4", size=1.1)+
geom_point(aes(x=Tiempo, y=Error), color="green")+
labs(x="Tiempo", y="Error Aleatorio", title = "Error Aleatorio de Serie de Tiempo")+theme_bw()+
theme(plot.title = element_text(hjust = 0.5))
return(list(grafica,error))
}else(stop('El parametro no es correcto'))
}else{stop('class(s1) no es de tipo ts')}
}
Grafica ggplot de tipo “aleatorio” de la serie “AirPassengers”
descomponer <- function(serie, tipo, m_movil){
if(class(serie)=="ts"){
if(tipo=="aditiva" | tipo=="multiplicativa"){
tendence<-tendencia(serie,m_movil)
seasonality<-estacionaldiad(serie, tipo, m_movil)
error <- aleatorio(serie, tipo, m_movil)
d_frame<-data.frame(Tiempo=c(1:length(serie)), Serie=as.numeric(serie), Tendencia=tendence[[2]], Estacionalidad=seasonality[[2]], Comp_Aleatorio=error[[2]])
grafica<-ggplot(d_frame)+geom_line(aes(x=Tiempo, y=Serie), color="mediumpurple1", size=1.2)+
geom_point(aes(x=Tiempo, y=Serie), color="purple4")+labs(x="Tiempo", y="Serie", title = "Serie de Tiempo")+
theme_bw()+theme(plot.title = element_text(hjust = 0.5))
graficas<-grid.arrange(grafica, tendence[[1]], seasonality[[1]], error[[1]], ncol=1)
return(list(d_frame, graficas))
} else{stop('El parametro no es correcto')}
}else{stop('class(s) no es de tipo ts')}
}
Grafica ggplot de tipo “descomponer” de la serie “AirPassengers”
Grafica ggplot de tipo “descomponer” de la serie “airmiles”
Grafica ggplot de tipo “descomponer” de la serie “austres”