Descripción

Esta función sirve para graficar datos del tipo ts(time series).

Modo de uso

graf_ts(s,animate=T)

Argumentos

Argumentos Descripcion
s Objeto del tipo ts (time series)
animate Indicador de si se quiere una gráfica animada (TRUE o T) o una sencilla (FALSE o F)

Librerías requeridas

library(ggplot2)
library(plotly)
library(lubridate)

Función

graf_ts<- function(s, animate= T ){
  if(is.ts(s)==F)stop('serie no es un objeto del tipo ts')
  #Primero sacamos el vector de fechas
  if(frequency(s)==4){
    inicio<- paste(start(s)[1],((start(s)[2]-1)*3+1),1,sep="/") %>% ymd()
    termino<- paste(end(s)[1],((end(s)[2]-1)*3+1),1,sep="/") %>% ymd()  
  }
  if(frequency(s)==6){
    inicio<- paste(start(s)[1],((start(s)[2]-1)*2+1),1,sep="/") %>% ymd()
    termino<- paste(end(s)[1],((end(s)[2]-1)*2+1),1,sep="/") %>% ymd()  
  }
  inicio<- paste(start(s)[1],start(s)[2],1,sep="/") %>% ymd()
  termino<- paste(end(s)[1],end(s)[2],1,sep="/") %>% ymd()
  if(frequency(s)==1){
    tiempo <- seq.Date(from = inicio,to=termino,by="year")
  }else if(frequency(s)==12){
    tiempo <- seq.Date(from = inicio,to=termino,by="month")
  }else if(frequency(s)==4){
    tiempo <- seq.Date(from = inicio,to=termino,by="quarter")
  }else if(frequency(s)==6){
    tiempo <- seq.Date(from = inicio,to=termino,by="2 month")
  }else stop('no se pueden graficar series de tiempo con frecuencias diferentes a anual, mensual, bimestral o trimestral')
  
  #Luego se saca la serie
  serie <- as.vector(s)
  #Luego se hace un data frame para trabajar con ggplot
  df <- data.frame(tiempo,serie)
  #luego se hace la grafica
  if(animate){
    ggplotly( ggplot(df,aes(tiempo,serie)) + geom_line(color="blue")+ labs(y="Observaciones", x="Tiempo")+
                ggtitle("Serie de tiempo") + theme_minimal())
  }else{
    ggplot(df,aes(tiempo,serie)) + geom_line(color="green")+ labs(y="Observaciones", x="Tiempo")+
      ggtitle("Serie de tiempo") + theme_minimal()
  }
}

Detalles

Esta graficadora está pensada para años y frecuencias anuales, mensuales, bimestrales y trimestrales. Sin embargo se puede generalizar a más formatos con otros if’s en los casos de la fecha de inicio.

Ejemplos

library(readr)
library(tidyr)
library(dplyr)
library(readxl)
library(stringr)

El primer ejemplo es una serie extraída de una base de datos proporcionada en clase. Este gráfico será interactivo usando la paquetería plotly.

series <- read_excel("MC1001.xls")
source("functions.R")
serie_random1<-get_series()
graf_ts(serie_random1)

El segundo ejemplo es otra serie random pero sencilla, en caso de que quiera usarse en algún documento como PDF o Word.

serie_random2<-get_series()
graf_ts(serie_random2,animate = F)

El tercer ejemplo es una serie de tiempo precargada en la base de R

x<-AirPassengers
graf_ts(x)