FUNCIÓN tendencia

A continuación se presenta una función que recibe como parámetro un objeto de la clase ts (time series) y el número de pasos que desea el usuario para calcular las medias móviles. La función regresa un gráfico de la serie de tiempo que fue recibida como parámetro, las médias móviles y un subtítulo que especifica la tendencia que sigue la serie (creciente, decreciente o constante).

Parámetros

tendencia<-function(s,periodo) {
  if(class(s)=="ts"){
    s<-as.numeric(s)
    mean_number<-MA(s,periodo,pad=NULL)
    mm<-na.omit(mean_number)
    if(mm[1]<mm[length(mm)]){tendencia <-"La tendencia de la serie es creciente"
    } else if(mm[1]>mm[length(mm)]){tendencia <- "La tendencia de la serie es decreciente"
    }else{ tendencia<-"La tendencias de la serie es constante"}
    Tiempo<-c(1:length(s))
    Tiempo1<-c(1:length(mean_number))
    
    g1<-ggplot()+geom_line(aes(x=Tiempo, y=s), color="sienna2", size=1.2)+geom_smooth(aes(x=Tiempo1, y=mean_number), color="orangered1")+
      geom_point(aes(x=Tiempo, y=s), color="sienna4")+ labs(x="Tiempo", y="Serie de tiempo", title = "Serie de Tiempo con Medias Moviles",
                      subtitle = tendencia)+theme_bw()+theme(plot.title = element_text(hjust = 0.5))+theme(plot.subtitle = element_text(hjust = 0.5))
    return(list(g1, mean_number))
    
  }else{
    stop('class(s1) is not ts')
  }
  
}

Ejemplos

A continuación se presentan varios ejemplos que permiten poner a prueba la función declarada anteriormente.

Ejemplo 1

tendencia(AirPassengers,4)
## [[1]]
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

## 
## [[2]]
##   [1]  28.00  57.50  90.50 122.75 125.00 129.25 133.25 138.00 141.75 137.75
##  [11] 126.75 119.25 114.00 115.75 125.00 129.25 131.75 137.50 144.75 153.50
##  [21] 161.75 157.75 143.75 136.25 133.00 137.25 153.25 159.00 165.75 172.75
##  [31] 178.00 187.00 190.00 186.00 172.75 164.50 161.25 165.75 177.50 181.25
##  [41] 184.25 193.75 203.00 218.25 224.75 218.00 203.50 191.50 188.25 189.50
##  [51] 205.50 215.75 224.00 235.75 242.75 252.00 254.00 246.00 225.00 207.25
##  [61] 199.00 193.25 207.00 213.50 221.00 240.00 256.75 273.25 279.50 270.75
##  [71] 246.00 230.00 225.75 226.75 242.75 252.75 259.75 280.25 304.50 324.00
##  [81] 334.50 324.25 292.50 275.25 268.25 269.00 289.00 297.75 306.25 330.50
##  [91] 354.50 377.50 386.75 369.75 334.25 309.50 299.50 298.25 319.50 330.00
## [101] 340.00 370.25 397.50 427.25 439.50 420.75 380.75 348.00 332.00 324.75
## [111] 339.00 342.00 347.75 377.00 409.25 448.50 458.75 439.75 394.50 352.50
## [121] 341.50 337.25 361.25 376.00 391.00 423.50 459.00 499.75 510.50 494.25
## [131] 447.75 409.25 397.75 393.75 408.00 422.00 435.75 471.75 522.50 558.75
## [141] 567.75 549.25 491.25 447.75

Ejemplo 2

s2<-ts(na.omit(t(series[19,-c(1:7)])), frequency=12,start=c(as.numeric(format(fechas[1], "%Y")),
                                                            as.numeric(format(fechas[1], "%m"))))
tendencia(s2,12)
## [[1]]
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

## 
## [[2]]
##  [1]  182.4408  418.3275  606.3292  831.1658 1112.1933 1450.9283 1770.0183
##  [8] 2107.2367 2451.8942 2859.8208 3296.8542 3753.4608 4018.1650 4256.5800
## [15] 4540.0633 4812.7850 5060.6617 5233.6408 5485.1283 5753.5892 5980.3042
## [22] 6179.7167 6507.4000 6910.3433 7336.2483 7830.8467 8306.3033

Ejemplo 3

s3<-ts(na.omit(t(series[101,-c(1:7)])), frequency=12,start=c(as.numeric(format(fechas[110], "%Y")),
                                                             as.numeric(format(fechas[110], "%m"))))

tendencia(s3,12)
## [[1]]
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

## 
## [[2]]
##  [1]   7.166667  14.333333  20.250000  25.750000  32.416667  39.666667
##  [7]  48.000000  56.416667  65.166667  73.666667  82.666667  92.583333
## [13]  95.250000  97.500000 100.333333 103.583333 105.500000 106.500000
## [19] 106.333333 106.333333 105.916667 106.333333 104.666667 100.583333
## [25]  96.000000  91.500000  86.916667  82.666667  81.000000  80.250000
## [31]  80.083333  80.750000  82.250000  83.833333  87.250000  92.500000
## [37]  98.916667 106.333333 115.083333 124.000000