Descripción
Función para graficar objetos de tipo ts y obtener su tendencia. Basado en el método de medias móviles.
Uso
tendencia(serie, per, plotly = FALSE)
Argumentos
- serie: objeto de clase ts.
- per: número de observaciones para realizar el cálculo de las medias móviles.
- plotly: logical; si
TRUE, hace una gráfica con el paqueteplotly
Función
tendencia <- function(serie,per,plotly=F) {
if(class(serie)=="ts"){
serie <- as.numeric(serie)
med_mov <- c()
for (i in 1:floor(length(serie)/per)) {
med_mov[i]<-mean(serie[(per*(i-1)):(per*i)] %>% t() %>% as.vector(), na.rm = T)
}
if(med_mov[1]<med_mov[length(med_mov)]){
tendencia <-"La serie tiene tendencia creciente"
}
else if(med_mov[1]>med_mov[length(med_mov)]){
tendencia <- "La serie tiene tendencia decreciente"
}
else{
tendencia<-"La serie tiene tendencia constante"
}
if(plotly==F){
grafica<-ggplot()+geom_line(aes(x=c(1:length(serie)), y=serie),color="navyblue")+
geom_point(aes(x=c(1:length(serie)), y=serie), color="darkred")+
geom_smooth(aes(x=seq(from=round(per/2), to=length(serie), by=per), y=med_mov),color="black")+
labs(x="Tiempo", y="Observaciones", title = "Serie de Tiempo con Medias Moviles", subtitle = tendencia)
return(list(grafica,tendencia))
} else{
grafica<-ggplot()+geom_line(aes(x=c(1:length(serie)),y=serie), color="navyblue")+
geom_smooth(aes(x=seq(from=round(per/2), to=length(serie), by=per), y=med_mov), color="black")+
geom_point(aes(x=c(1:length(serie)), y=serie), color="darkred")+
labs(x="Tiempo", y="Observaciones", title = "Serie de Tiempo con Medias Moviles", subtitle = tendencia)
grafica <- ggplotly(grafica)
return(grafica)
}
} else {
warning("serie no es de clase ts")
}
}Ejemplos
Ejemplo 1
## [[1]]
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
##
## [[2]]
## [1] "La serie tiene tendencia creciente"
Ejemplo 2
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'