Código realizado para extraer y describir la tendencia de una serie de tiempo contenida en un objeto de clase ts. Por lo que bastará que nuestra función reciba dos parámetros, uno que indique la serie de tiempo y el otro el número de pasos que se desea calcular las medias móviles.
También clasificará a la serie según sea el caso: creciente, constante o decreciente.
Medias_moviles<-function(serie_tiempo,periodos) {
if(class(serie_tiempo)=="ts"){
serie_tiempo<-as.numeric(serie_tiempo)
mediamov<-c()
for (i in 1:floor(length(serie_tiempo)/periodos)) {
mediamov[i]<-mean(serie_tiempo[(periodos*(i-1)):(periodos*i)] %>% t() %>% as.vector(), na.rm = T)
}
if(mediamov[1]<mediamov[length(mediamov)]){tendencia <-"La serie tiene tendencia creciente"
}
else if(mediamov[1]>mediamov[length(mediamov)]){tendencia <- "La serie tiene tendencia decreciente"
}
else{ tendencia<-"La serie tiene tendencia constante"}
grafica<-ggplot()+geom_line(aes(x=c(1:length(serie_tiempo)),y=serie_tiempo), color="deepskyblue",size=1.5)+geom_point(aes(x=c(1:length(serie_tiempo)), y=serie_tiempo), color="darkorchid4")+labs(x="Tiempo", y="Serie de Tiempo") + ggtitle("Serie de Tiempo con Medias Moviles")+theme_bw()
return(list(grafica,tendencia))
}else{
stop(ggplot()+
annotate(geom = "text", x = 1, y = 1, label = "Error!\n, class(s1) is not ts. ", size = 12,
colour = "#FF0000")+
theme(axis.title = element_blank(),
axis.text = element_blank(), axis.ticks = element_blank(),
panel.background = element_blank()))
}
}
Ejemplo1<-c(as.numeric(fechas[123], "%y"),as.numeric(fechas[123], "%m"))
s1<-ts(series[450,-c(1:7)] %>% t() %>% na.omit(),frequency = 12, start=Ejemplo1[1])
Medias_moviles(s1,4)
## [[1]]
##
## [[2]]
## [1] "La serie tiene tendencia creciente"
Ejemplo2<-c(as.numeric(fechas[98], "%y"),as.numeric(fechas[98], "%m"))
s2<-ts(series[231,-c(1:7)] %>% t() %>% na.omit(),frequency = 12, start=Ejemplo2[1])
Medias_moviles(s2,4)
## [[1]]
##
## [[2]]
## [1] "La serie tiene tendencia creciente"
Medias_moviles(JohnsonJohnson,7)
## [[1]]
##
## [[2]]
## [1] "La serie tiene tendencia creciente"
j<-1