Función

la función cuenta con dos parametros n y s; s recibe una serie de tiempo con el objeto de la clase Time Series y n es el número de pasos en que se quiere calcular las medias moviles.La primera parte de la función nos dice si es constante, creciente o decreciente. La segunda parte de la función grafica la Serie de Tiempo junto con sus medias móviles con los pasos que se desearon calcular.

series<-read_excel("MC1001.xls")
fecha<-series$`Starting date`
func_mediasmov<-function(s,n){
  if(class(s)=="ts"){
    s<-as.numeric(s)
    mediamov<-c()
    for (i in 1:floor(length(s)/n)) {
      mediamov[i]<-mean(s[(n*(i-1)):(n*i)] %>% t() %>% as.vector(), na.rm = T)
    }
    if(mediamov[1]<mediamov[length(mediamov)]){tendencia <-"La serie de tiempo tiene tendencia creciente."
    } else if(mediamov[1]>mediamov[length(mediamov)]){tendencia <- "La serie de tiempo tiene tendencia decreciente."
    }else{ tendencia<-"La serie de tiempo tiene tendencia constante."}
    
    g<-ggplotly(ggplot()+geom_line(aes(x=c(1:length(s)), y=s), color="brown3", size=1.2)+
    geom_smooth(aes(x=seq(from=round(n/2), to=length(s), by=n), y=mediamov), color="aquamarine4")+
    geom_point(aes(x=c(1:length(s)), y=s), color="darkgoldenrod")+ 
    labs(x="Tiempo", y="Observaciones") + 
    ggtitle("Serie de Tiempo y  Medias Moviles")+theme_calc())
   
    return(tagList(g,tendencia))
    
  }else{
    stop('class(s) no es una Serie de Tiempo')
  }
}

Ejemplos

Ejemplo 1

serie1<-c(as.numeric(fecha[123], "%y"),as.numeric(fecha[123], "%m"))

s1<-ts(series[500,-c(1:7)] %>% t() %>% na.omit(),frequency = 12, start=serie1[1])

func_mediasmov(s1,3)
La serie de tiempo tiene tendencia creciente.

Ejemplo 2

serie2<-c(as.numeric(fecha[123], "%y"),as.numeric(fecha[123], "%m"))

s2<-ts(series[450,-c(1:7)] %>% t() %>% na.omit(),frequency = 12, start=serie2[1])

func_mediasmov(s2,3)
La serie de tiempo tiene tendencia creciente.

Ejemplo 3

serie3<-c(as.numeric(fecha[123], "%y"),as.numeric(fecha[123], "%m"))

s3<-ts(series[849,-c(1:7)] %>% t() %>% na.omit(),frequency = 12, start=serie3[1])

func_mediasmov(s3,3)
La serie de tiempo tiene tendencia creciente.