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')
}
}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)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)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)