Realizar una función que extraiga y describa la tendencia de una serie de tiempo contenida en un objeto de clase ts.
La función esta diseñada para recibir 2 objetos:
el objeto st: debe ser un objeto de clase "Time-Series"
el objeto periodo: es el número de observaciones a considerar para realizar las medias
medias_moviles<-function(st,pasos){
if(class(st)=="ts"){
s<-as.numeric(st)
mm<-c()
for (i in 1:floor(length(st)/pasos)) {
mm[i]<-mean(st[(pasos*(i-1)):(pasos*i)] %>% t() %>% as.vector(), na.rm = T)
}
if(mm[1]<mm[length(mm)]){tendencia <-"La tendencia de la serie de tiempo es CRECIENTE."
} else if(mm[1]>mm[length(mm)]){tendencia <- "La tendencia de la serie de tiempo es DECRECIENTE."
}else{ tendencia<-"La tendencia de la serie de tiempo es constante."}
graf<-ggplotly(ggplot()+geom_line(aes(x=c(1:length(st)), y=st), color="#0000FF", size=1.3)+
geom_smooth(aes(x=seq(from=round(pasos/2), to=length(st), by=pasos), y=mm), color="#FF3333")+
geom_point(aes(x=c(1:length(st)), y=st), color="#000066")+
labs(x="Tiempo", y="Observación") +
ggtitle(paste("Serie de Tiempo con Medias Moviles\n",tendencia))+theme_economist() )
return(tagList(graf,tendencia))
}else{
stop('El primer parámetro no es de clase Time-Series')
}
}ser1<-c(as.numeric(fecha[100], "%y"),as.numeric(fecha[100], "%m"))
st1<-ts(series[924,-c(1:7)] %>% t() %>% na.omit(),frequency = 12, start=ser1[1])
medias_moviles(st1,3)ser2<-c(as.numeric(fecha[93], "%y"),as.numeric(fecha[93], "%m"))
st2<-ts(series[387,-c(1:7)] %>% t() %>% na.omit(),frequency = 12, start=ser2[1])
medias_moviles(st2,9)ser3<-c(as.numeric(fecha[111], "%y"),as.numeric(fecha[111], "%m"))
st3<-ts(series[1000,-c(1:7)] %>% t() %>% na.omit(),frequency = 12, start=ser3[1])
medias_moviles(st3,6)st3<-c(as.numeric(fecha[111], "%y"),as.numeric(fecha[111], "%m"))
medias_moviles(st3,6)## Error in medias_moviles(st3, 6): El primer parámetro no es de clase Time-Series