FUNCIÓN PLOT_TS

A continuación se presenta una función que recibe como parámetro un objeto de la clase ts (time series), la frecuencia de la misma (“month”, “quarter”, “year”) y un engine en el que se especifica el tipo de gráfico en el que se desea presentar la serie de tiempo. La función regresa un gráfico de la serie de tiempo que fue recibida como parámetro.

Parámetros

s1: serie de tiempo. Objeto de la clase ts. La función regresa error si el objeto no es de la clase mencionada.

freq: frecuencia de la serie de tiempo. valores programados: “month”, “quarter”, “year”

engine: tipo de gráfico en el que se desea graficar la serie de tiempo valores programados: “plot”, “ggplot”, “plotly”

plot_ts<-function(s1,freq, engine){
  if(class(s1)=="ts"){
    if(freq=="month"){
      a<-paste(start(s1)[1],start(s1)[2],1,sep="/") %>% ymd()
      b<-paste(end(s1)[1],end(s1)[2],1,sep="/") %>% ymd()
      f<-seq.Date(from=a,to=b,by=freq)
    } else if(freq=="quarter"){
      a<-paste(start(s1)[1],start(s1)[2],sep="/") %>% yq()
      b<-paste(end(s1)[1],end(s1)[2],sep="/") %>% yq()
      f<-seq.Date(from = a,to=b,by=freq)
    }else if(freq=="year"){
      a<-paste(start(s1)[1],1,1,sep="/") %>% ymd()
      b<-paste(end(s1)[1],1,1,sep="/") %>% ymd()
      f<-seq.Date(from=a,to=b,by=freq)
    }
    s<-data.frame(Fechas=f,Valor=as.numeric(as.vector(s1)))
    
  } else{
    stop('class(s1) is not ts')
  }
  if(engine=="ggplot"){
    g1<-ggplot(s)+geom_line(aes(x=Fechas,y=Valor), color="hotpink2", size=1.3)+
      geom_point(aes(x=Fechas,y=Valor), color="violetred3", size=2)+ggtitle("Serie de tiempo")+
      labs(x="Tiempo", y="Serie")+
      theme_bw()+theme(plot.title = element_text(hjust = 0.5))
    return(g1)
  }else if(engine=="plot"){
    p1<-plot(x=s[,1],y=s[,2], col="mediumpurple1", main="Serie de tiempo", xlab = "Tiempo", ylab = "Serie",
             lwd=1.5,pch=19)
    lines(x=s[,1],y=s[,2], col="slateblue4", lwd=1.4)
    return(p1) 
    
  }else if(engine=="plotly"){
    g1<-ggplot(s)+geom_line(aes(x=Fechas,y=Valor), color="lightblue4", size=1.3)+
      geom_point(aes(x=Fechas,y=Valor), color="lightseagreen", size=2)+ggtitle("Serie de tiempo")+
      labs(x="Tiempo", y="Serie")+
      theme_bw()+theme(plot.title = element_text(hjust = 0.5))
    return(ggplotly(g1))
  }else{
    stop('This option is not available')
  }
}

Ejemplos

Por último, se presentan varios ejemplos en los que se emplean las funciones creadas anteriormente con el objetivo de explicar el funcionamiento de las mismas.

#Crea el objeto serie de tiempo
s1<-ts(na.omit(t(series[19,-c(1:7)])), frequency=12,start=c(as.numeric(format(fechas[1], "%Y")),
                                                            as.numeric(format(fechas[1], "%m"))))
plot_ts(s1,freq="month", engine = "plotly")
s2<-ts(AirPassengers, frequency = 12, start = c(1949,1))
plot_ts(s2, freq="month", engine="plot")

## NULL
s3<-ts(na.omit(t(series[110,-c(1:7)])), frequency=12,start=c(as.numeric(format(fechas[110], "%Y")),
                                                             as.numeric(format(fechas[110], "%m"))))

plot_ts(s3,freq="month", engine = "ggplot")