Descomposición de series de tiempo

Itzel Escutia

2019-11-09


Introducción

Elanálisis clásico de las series de tiempo se basa en la suposición de que los valores que toma la variable de observación es la consecuencia de tres componentes, cuya actuación conjunta da como resultado los valores medidos.
Los componentes de una sere de tiempo son:

  • Tendencia \(T_t\)
  • Estacionalidad \(S_t\)
  • Componente aleatoria \(E_t\)

Las primeras dos son determinísticas mientras que la tercera es aleatoria.
En el modelo aditivo la serie de tiempo se puede expresar como \[X_t = T_t + S_t + I_t\]
Y en el modelo multiplicativo la serie puede expresarse como \[X_t = T_t * S_t * I_t\]
Las proximas funciones son para obtener estas componentes basándonos en alguno de estos modelos.
Ir al inicio
Función auxiliar
Para el funcionamiento de las cuatro funciones se requiere esta, la cual obtiene un vector de fechas para poder graficar las componentes de la serie de tiempo.

#Librerias
library(lubridate)
library(dplyr)
#Funcion
fecha_ts<- function(s){
  if(is.ts(s)==F)stop('Serie no es un objeto del tipo ts')
  if(frequency(s)==365){
    inicio<-paste(start(s)[1],1,1,sep = "/") %>% ymd()+(start(s)[2]-1)
    termino<-paste(end(s)[1],1,1,sep = "/") %>% ymd()+(end(s)[2]-1)
  }else{
    n=12/frequency(s)
    inicio<- paste(start(s)[1],((start(s)[2]-1)*n+1),1,sep="/") %>% ymd()
    termino<- paste(end(s)[1],((end(s)[2]-1)*n+1),1,sep="/") %>% ymd()
  }
  seq(from=inicio,to=termino,length.out = length(s))
}

Por último, se utilizarán las mismas tres series de ejemplo en las cuatro funciones para que se puedan comparar los resultados. Ir al inicio

Tendencia

Descripción

Esta función sirve para graficar e interpretar la tendencia de datos del tipo ts(time series), para obtener el vector de tendencia o para obtener la serie de tiempo sin la tendencia.

Modo de uso

tendencia(s,n=12,g=F,detrend=F,tipo="a")

Argumentos

Argumentos Descripcion
s Objeto del tipo ts (time series)
n Número de muestra para aplicar el método de medias móviles
g Si se quiere la interpretación de la tendencia gráfica o solo el vector (T y F respectivamente)
detrend Si se quiere la serie sin la tendencia (T) o no (F)
tipo En caso de que se quiera la serie sin tendencia se indica si la serie es aditiva (‘a’) o multiplicativa (‘m’)

Ir al inicio

Librerías requeridas

library(ggplot2)

Función

tendencia <- function(s,n="unidad",g=F,detrend=F, tipo="a"){
  if(is.ts(s)==F)stop('Serie no es un objeto del tipo ts')
  if(n=="unidad"){n<-frequency(s)}
  n<-ceiling(abs(n))
  if((length(s)/2)<n)stop('Use una n menor o igual a la longitud de s entre dos')
  if(tipo!="a"&tipo!="m")stop('Inique si es del tipo aditivo ("a") o multiplicativo ("m")')
  mm<-c()
  for (i in 1:floor(length(s)/n)){
    mm[i]<- mean(s[(n*(i-1)+1):(n*i)] %>% t() %>% as.vector(),na.rm = T)
  }
  if(length(s)%%n==0){x=seq(from=1, to=length(s), by=n)}else{ 
    x=seq(from=1, to=length(s), by=n)[-((length(s)%/%n)+1)]}
  x<-x+(n%/%2)
  m<- (mm[length(mm)]-mm[1])/(x[length(x)]-x[1])
  f<-approxfun(x=x,y=mm)
  mm<-f(1:length(s))
  
  if(g){
    if(m>.1){tend="a la alza"}else if(m>0.002&m<.1){tend="ligeramente a la alza"
    }else if(m<(-.1)){tend="a la baja"}else if(m<(-0.002)&m>(-.1)){
      tend="ligeramente a la baja"}else{tend="constante"}
    df<- data.frame(tiempo=fecha_ts(s),observacion=mm)
    graf <- ggplot(df,aes(tiempo,observacion))+geom_line(color="blue")+
      labs(title = "Tendencia de la serie",
           subtitle = paste("La tendencia es",tend),
           x= "Tiempo", y="Observaciones")
    return(graf)}else if(detrend==F){return(mm)}else if(tipo=="a"){
    return(s-mm)}else{return(s/mm)}
}

Ir al inicio

Detalles

Esta función está pensada para usar el método de medias móviles para calcular la tendencia y su interpretación está dada por la pendiente de la aproximación.
n tiene que ser un entero positivo diferente de cero, y menor o igual a la longitud de la serie entre 2.
Si g es T o TRUE se graficará e interpretará solamente la tendencia, de lo contrario se regresará la tendencia como un vector numérico, o la serie sin la tendencia.
En caso de querer regresar la serie sin la tendencia se tiene que escoger primero detrend = T y luego qué tipo de modelo o separación se quiere la serie de tiempo, si es aditiva tipo="a" y si es multiplicativa tipo="m", la función no aceptará otros valores.
Ir al inicio

Ejemplos

library(readr)
library(tidyr)
library(readxl)
library(stringr)
series <- read_excel("MC1001.xls")
source("functions.R")

Serie 1

El primer ejemplo es una serie extraída de una base de datos proporcionada en clase. Este gráfico usará las medias móviles con n default es decir 12.

serie1<-get_series(394)
tendencia(serie1,g=T)

Ir al inicio

t1<-tendencia(serie1) #El vector de tendencia de la serie
t1
##   [1]       NA       NA       NA       NA       NA       NA 6800.250
##   [8] 6819.104 6837.958 6856.812 6875.667 6894.521 6913.375 6932.229
##  [15] 6951.083 6969.938 6988.792 7007.646 7026.500 7035.236 7043.972
##  [22] 7052.708 7061.444 7070.181 7078.917 7087.653 7096.389 7105.125
##  [29] 7113.861 7122.597 7131.333 7091.826 7052.319 7012.812 6973.306
##  [36] 6933.799 6894.292 6854.785 6815.278 6775.771 6736.264 6696.757
##  [43] 6657.250 6570.868 6484.486 6398.104 6311.722 6225.340 6138.958
##  [50] 6052.576 5966.194 5879.812 5793.431 5707.049 5620.667 5615.104
##  [57] 5609.542 5603.979 5598.417 5592.854 5587.292 5581.729 5576.167
##  [64] 5570.604 5565.042 5559.479 5553.917 5612.111 5670.306 5728.500
##  [71] 5786.694 5844.889 5903.083 5961.278 6019.472 6077.667 6135.861
##  [78] 6194.056 6252.250 6243.708 6235.167 6226.625 6218.083 6209.542
##  [85] 6201.000 6192.458 6183.917 6175.375 6166.833 6158.292 6149.750
##  [92] 6100.625 6051.500 6002.375 5953.250 5904.125 5855.000 5805.875
##  [99] 5756.750 5707.625 5658.500 5609.375 5560.250 5512.750 5465.250
## [106] 5417.750 5370.250 5322.750 5275.250 5227.750 5180.250 5132.750
## [113] 5085.250 5037.750 4990.250 5002.292 5014.333 5026.375 5038.417
## [120] 5050.458 5062.500 5074.542 5086.583 5098.625 5110.667 5122.708
## [127] 5134.750 5110.507 5086.264 5062.021 5037.778 5013.535 4989.292
## [134] 4965.049 4940.806 4916.562 4892.319 4868.076 4843.833       NA
## [141]       NA       NA       NA       NA       NA       NA       NA
## [148]       NA       NA       NA

Ir al inicio

Serie 2

El segundo ejemplo es la serie 655 del archivo de clase, se usará una n igual a 10 y aunque no se pueda suavizar, la tendencia es constante ya que el primer y el último dato se encuentran cerca del valor “41”.

serie2<-get_series(655)
tendencia(serie2,n = 10,g=T)

tendencia(serie2,n = 27,g=T)
Esta gráfica es de la misma serie de tiempo pero con una muestra más grande, se ve que sigue sin suavizarse la gráfica y la tendencia cambia

Esta gráfica es de la misma serie de tiempo pero con una muestra más grande, se ve que sigue sin suavizarse la gráfica y la tendencia cambia

Ir al inicio

t2<-tendencia(serie2,n = 27) #El vector de tendencia de la serie
t2
##  [1]       NA       NA       NA       NA       NA       NA       NA
##  [8]       NA       NA       NA       NA       NA       NA 41.68889
## [15] 41.57435 41.45981 41.34527 41.23073 41.11619 41.00165 40.88711
## [22] 40.77257 40.65802 40.54348 40.42894 40.31440 40.19986 40.08532
## [29] 39.97078 39.85624 39.74170 39.62716 39.51262 39.39808 39.28354
## [36] 39.16900 39.05446 38.93992 38.82538 38.71084 38.59630 38.61248
## [43] 38.62867 38.64486 38.66104 38.67723 38.69342 38.70960 38.72579
## [50] 38.74198 38.75816 38.77435 38.79053 38.80672 38.82291 38.83909
## [57] 38.85528 38.87147 38.88765 38.90384 38.92003 38.93621 38.95240
## [64] 38.96859 38.98477 39.00096 39.01715 39.03333       NA       NA
## [71]       NA       NA       NA       NA       NA       NA       NA
## [78]       NA       NA       NA       NA       NA       NA

Ir al inicio

plot(serie2) 
Serie original

Serie original

Ir al inicio

sdta <- tendencia(serie2,n=27,detrend = T,tipo = "a")
plot(sdta) 
Serie sin tendencia, siendo esta del tipo aditivo

Serie sin tendencia, siendo esta del tipo aditivo

Ir al inicio

sdtm <- tendencia(serie2,n=27,detrend = T,tipo = "m")
plot(sdtm)
Serie sin tendencia, siendo esta del tipo multiplicativo

Serie sin tendencia, siendo esta del tipo multiplicativo

Ir al inicio

AirPassengers

El tercer ejemplo es una serie de tiempo precargada en la base de R.

x<-AirPassengers
tendencia(x,g=T)

Ir al inicio

plot(x)

Ir al inicio

xdt<-tendencia(x,detrend = T,tipo = "m")
plot(xdt)#Serie sin tendencia siendo el tipo multiplicativo

Ir al inicio

Estacionalidad

Descripción

Esta función sirve para obtener el vector de estacionalidad, para obtener la serie de tiempo sin la misma ó para graficar la estacionalidad de datos del tipo ts(time series).

Modo de uso

estacion(s,n="unidad",detrend=T, g=F,deseas=F,tipo="a")

Argumentos

Argumentos Descripcion
s Objeto del tipo ts (time series)
n Número de periodos que conformarán la estacionaliad
detrend Si a la serie ya se le quitó el componente tendencial (T o F) en caso de seleccionar falso se calculará con la frecuencia de la serie de tiempo original
g Si se quiere la gráfica o solo el vector (T y F respectivamente)
deseas Si se quiere la serie sin la estacionalidad (T) o no (F)
tipo En caso de que se quiera la serie sin estacionalidad o se le tenga que quitar la tendencia se indica si la serie es aditiva (‘a’) o multiplicativa (‘m’)

Ir al inicio

Librerías requeridas

library(ggplot2)

Función

estacion <- function(s,n="unidad",detrend=T, g=F,deseas=F,tipo="a"){
  if(is.ts(s)==F)stop('Serie no es un objeto del tipo ts')
  if(n=="unidad"){n<-frequency(s)}
  if(detrend==F|deseas){if(tipo!="a"&tipo!="m")stop('Indique si es del tipo aditivo ("a") o multiplicativo ("m")')}
  if(detrend==F){
    s <- tendencia(s,g=F,detrend = T,tipo = tipo)
  }
  seas <- matrix(data = s,nrow = n)
  seas[-(1:length(s))]<-NA
  seas <- rowMeans(seas,na.rm = T)
  seas <- rep_len(seas,length.out = length(s))
  if(g){
    df<- data.frame(tiempo=fecha_ts(s),observacion=seas)
    graf<- ggplot(df,aes(tiempo,observacion))+geom_line(color="blue")+
      labs(title = "Estacionalidad de la serie", x= "Tiempo", y="Observaciones")
    return(graf)
  }else if(deseas==F){return(seas)}else if(tipo=="a"){
    return(s-seas)}else{return(s/seas)}
}

Ir al inicio

Detalles

Primero el número n dice de cuantos periodos se quiere la estacionalidad, en la forma default la estacionalidad es la frecuencia de los datos. La máxima n debe ser la longitud de la serie de tiempo. Si g es T o TRUE solamente se graficará la estacionalidad, de lo contrario se regresará la misma como un vector numérico, o la serie sin estacionalidad.
En caso de querer regresar la serie sin la estación se tiene que escoger primero deseas = T y luego qué tipo de modelo o separación se quiere la serie de tiempo, si es aditiva tipo="a" y si es multiplicativa tipo="m", la función no aceptará otros valores. Nótese que si se escoge tener gráfica el valor de deseas ya no importa.
En caso de que no se haya destendarizado la serie se escoge detrend=F y en automático se destendarizará con una n para medias móviles igual a la frecuencia de la serie original.

Ir al inicio

Ejemplos

Serie 1

En este ejemplo la tendencia tenía unos saltos cada 5 años, como los periodos son mensuales se usará una n de 60 para la estacionalidad y un modelo aditivo.

estacion(serie1-t1,60,g=T)

e1<-estacion(serie1-t1) #se guarda el vector para su uso posterior

Ir al inicio
Aquí vamos a usar el tipo multiplicativo y se selecciona el valor detrend=F que significa que no se le ha quitado la tendencia a la serie.

estacion(serie1,60,g=T,detrend = F,tipo = "m")

Ir al inicio

Serie 2

En este hacemos el tipo multiplicativo así que vamos a dividir la serie entre su tendencia obtenida en la función.

estacion(serie2/t2,g=T,tipo="m")

e2<-estacion(serie2/t2,tipo="m") #se guarda el vector para su uso posterior

Ir al inicio
En este vamos a ver que sale cuando se le quita la estacionalidad (deseas=T)

plot(estacion(serie2/t2,detrend = F,deseas = T,tipo="m"))

Ir al inicio

AirPassengers

Aquí se vuelve a usar la función tendencia para quitarsela a AirPassengers. De ahí se usan los valores por default.

xdt<-tendencia(x,detrend = T)#se le quita la tendencia con la función anterior
estacion(xdt,g=T)

Ir al inicio
Si se quiere la componente aleatoria solo se selecciona deseas=T.

plot(estacion(xdt,deseas = T))

Así se verá con la próxima función. Ir al inicio

Aleatorio

Descripción

Esta función saca la componente aleatoria de un objeto del tipo ts, es decir una serie de tiempo. Puede graficar esta componente aleatoria y se puede calcular desde una serie de tiempo sin tratamiento previo o dando las componentes tendencial y estacionaria de la serie original.

Modo de uso

aleatorio(s,vtendencial,vestacional,tipo="a",decero= F,g=F)

Argumentos

Argumentos Descripcion
s Objeto del tipo ts (time series)
vtendencial Vector de tendencia
vestacional Vector de estacionaliad
tipo Indicador de si la serie es aditiva (‘a’) o multiplicativa (‘m’)
decero Indicador si se tiene que hacer el cálculo ‘desde cero’ con solo la serie de tiempo original
g Si se quiere la gráfica o solo el vector (T y F respectivamente)

Ir al inicio

Librerías requeridas

library(ggplot2)

Función

aleatorio<- function(s,vtendencial,vestacional,tipo="a",decero= F,g=F){
  if(is.ts(s)==F)stop('Serie no es un objeto del tipo ts')
  if(tipo!="a"&tipo!="m")stop('Indique si s es del tipo aditivo "s" o multiplicativo "m"')
  if(decero){
    a <- estacion(s,detrend = F,deseas = T,tipo = tipo)
  }else if(length(s)!=length(vtendencial)||length(s)!=length(vestacional))stop('Inserte vectores válidos para la estacionalidad y tendencia')else if(tipo=="a"){a <- s-vtendencial-vestacional}else{
    if(sum(vtendencial==0,na.rm = T)>0|sum(vestacional==0,na.rm = T)>0){warning('Algun(os) valores del vector aleatorio tendieron a infinito')}
    a<-s/(vtendencial*vestacional)}
  if(g){
    df <- data.frame(tiempo=fecha_ts(s),observacion=a)
    graf<- ggplot(df,aes(tiempo,observacion))+geom_line(color="blue")+
      labs(title = "Componente aleatorio de la serie", x= "Tiempo", y="Observaciones")
    return(graf)
  }else(return(a))
}

Ir al inicio

Detalles

Para usar esta función se necesitan tener la tendencia y la estacionalidad de la serie para después retirarlas de acuerdo al modelo que se esté usando, ya sea el aditivo ("a") o el multiplicativo ("m"). Cuando se dan estos vectores tienen que no ser vacíos y tener la misma longitud de la serie de tiempo s.
En caso de que no se hayan obtenido estos elementos de la serie se escoge decero=T y en automático se destendarizará y se le quitará la estacionalida con los valores que por default vienen en la función estacion.
Si g es T o TRUE solamente se graficará el componente aleatorio, de lo contrario se regresará la misma como un vector numérico.
Ir al inicio

Ejemplos

Serie 1

En esta serie se guardaron la tendencia y estacionalidad obtenidos por el método aditivo así que el tipo toma el valor de "a".

t1<-tendencia(serie1)
e1<-estacion(serie1-t1,60)
aleatorio(serie1,t1,e1,tipo="a",g=T)

Ir al inicio

Serie 2

En esta serie se guardaron la tendencia y estacionalidad obtenidos por el método aditivo así que el tipo toma el valor de "m".

t2<-tendencia(serie2,n = 27)
e2<-estacion(serie2/t2,tipo="m")
aleatorio(serie2,t2,e2,tipo="m",g=T)

Ir al inicio

AirPassengers

Para esta vamos a usar la opción de sacar el aleatorio desde unicamente el vector original. Se puede ver que es el mismo que salió en el mismo ejemplo de la función anterior.

aleatorio(x,tipo="a",decero = T,g=T)

Ir al inicio

Descomponer

Descripción

Esta función saca la componente tendencial, estacionaria y aleatoria de un objeto del tipo ts, es decir una serie de tiempo y las devuelve dentro de un objeto tipo lista. Cabe mencionar que las devuelve como objeto serie de tiempo. Además devuelve el valor del tipo de descomposición que se usó y puede agregar la grafica de s con sus componentes. Ir al inicio

Modo de uso

descomponer(s,tipo="a",nt="unidad",ne="unidad",g=F)

Argumentos

Argumentos Descripcion
s Objeto del tipo ts (time series)
tipo Indicador de si la serie es aditiva (‘a’) o multiplicativa (‘m’)
nt El valor de cantidad de periodos para utilizar el método de medias móviles en la función de tendencia
ne Cantidad de periodos para sacar la estacionalidad
g Si se quiere agregar la gráfica que contiene la serie original y sus tres componentes o no (TRUE y FALSE respectivamente) a la lista

Ir al inicio

Librerías requeridas

library(ggplot2)
library(gridExtra)
library(grid)
library(dplyr)

Función

descomponer<- function(s,tipo="a",nt=frequency(s),ne="unidad",g=F){
  if(is.ts(s)==F)stop('Serie no es un objeto del tipo ts')
  if(tipo!="a"&tipo!="m")stop('Indique si s es del tipo aditivo "a" o multiplicativo "m"')
  fechas<-fecha_ts(s)
  t<- tendencia(s,n=nt)
  sdt<-tendencia(s,n=nt,detrend = T,tipo=tipo)
  e<- estacion(sdt,n=ne,tipo = tipo)
  a<- aleatorio(s,vtendencial=t,vestacional=e,tipo=tipo)
  inicio<-start(s)
  frecuencia<-frequency(s)
  Original<-s
  Tendencial<-ts(t,start = inicio,frequency = frecuencia)
  Estacional<-ts(e,start = inicio,frequency = frecuencia)
  Aleatorio<-ts(a,start = inicio,frequency = frecuencia)
  if(g){
    tg <- ggplot(data.frame(tiempo=fechas,observacion=t),
                 aes(tiempo,observacion))+geom_line(color="blue")+
      labs(y= "Tendencial",x=element_blank())+theme(axis.line = element_line())
    eg <- ggplot(data.frame(tiempo=fechas,observacion=e),
                 aes(tiempo,observacion))+geom_line(color="blue")+
      labs(y = "Estacional",x=element_blank())+theme(axis.line = element_line())
    ag <- ggplot(data.frame(tiempo=fechas,observacion=a),
                 aes(tiempo,observacion))+geom_line(color="blue")+
      labs(y = "Aleatorio")+ theme(axis.line = element_line())
    sg <- ggplot(data.frame(tiempo=fechas,observacion=as.vector(s)),
           aes(tiempo,observacion))+geom_line(color="blue")+
      labs(y = "Original",x=element_blank())+theme(axis.line = element_line())
    lista<- list(ggplotGrob(sg),ggplotGrob(tg),ggplotGrob(eg),ggplotGrob(ag))
    graf<-grid.arrange(grobs=lista,nrow=4,heights = unit(c(1,1,1,1.1),"null"),top="Descomposicion de la serie de tiempo")
    return(list(Original=Original,Tendencial=Tendencial,Estacional=Estacional,Aleatorio=Aleatorio,Tipo=tipo,Grafica=graf))
  }
  return(list(Original=Original,Tendencial=Tendencial,Estacional=Estacional,Aleatorio=Aleatorio,Tipo=tipo))
}

Ir al inicio

Detalles

Esta función pone por default la nt de medias moviles para sacar la tendencia como la frecuencia de la serie de tiempo, y la ne que es la cantidad de periodos para la que se requiere la estacionalidad está por default, que es igual la frecuencia. Estas se pueden cambiar para cuando se requiera algún resultado más exacto.
Para usar esta función se necesita saber el modelo que se esté usando, ya sea el aditivo ("a") o el multiplicativo ("m"), por default viene el modelo aditivo. Si g es T o TRUE se agregará a la lista una gráfica donde está la serie de tiempo original y sus tres componentes en una sola columna. Debido a que esto se construyó con una grid de ggplots se tiene que volver a dibujar la gráfica con grid.draw(lista resultado$Grafica) para que se aprecie tal cual se hizo la gráfica, en caso de llamarse con plot se verá una cuadrícula en la parte del título, esto se mostrará en los ejemplos.
Ir al inicio

Ejemplos

Serie 1

Para comparar esta serie con los resultados obtenidos en las secciones anteriores se seguirá utilizando el método aditivo y se escogerá ne=60 que son la cantidad de periodos que hay en 5 años, recordando que lo que da este espaciado es la gráfica de la tendencia.

descomponer(serie1,tipo="a",ne=60,g=T)

## $Original
##        Jan   Feb   Mar   Apr   May   Jun   Jul   Aug   Sep   Oct   Nov
## 1975                          5237  3612  4385  6479 13286  9928  6755
## 1976  5824  5433  6868  7853  5112  4082  5483  8502 11436 10313  6437
## 1977  6976  5592  6975  6659  4688  4929  6019  7140 11166  9140  7288
## 1978  5962  5861  7378  8632  6212  5906  5290  8238 12111  7127  6643
## 1979  5214  5698  6675  4775  4721  4404  5635  9111  6150  4930  4994
## 1980  4421  6296  7215  5844  8021  4090  3253  5431  4905  4671  4843
## 1981  5201  6826  8696  5730  4949  5109  5386  9204  7656  5906  5851
## 1982  5230  7409  7869  4989  6708  4389  4926  7518  7549  4405  5923
## 1983  5435  6821  8376  6154  5412  4984  5999  8686  6184  4753  5038
## 1984  4265  6484  6316  4344  5302  3566  4549  7848  4346  4553  4610
## 1985  4675  5655  6484  4405  4022  4719  5203  8333  5740  5877  4762
## 1986  4794  4473  5212  3518  2863  3955  4638  8562  5507  4898  4419
## 1987  4270  4512  5861  4255  3299  4070  5329  8180  7789  5709      
##        Dec
## 1975  5943
## 1976  6751
## 1977  7373
## 1978  5998
## 1979  3727
## 1980  4980
## 1981  5469
## 1982  5593
## 1983  4258
## 1984  3890
## 1985  4964
## 1986  4386
## 1987      
## 
## $Tendencial
##           Jan      Feb      Mar      Apr      May      Jun      Jul
## 1975                                           NA       NA       NA
## 1976 6837.958 6856.812 6875.667 6894.521 6913.375 6932.229 6951.083
## 1977 7043.972 7052.708 7061.444 7070.181 7078.917 7087.653 7096.389
## 1978 7052.319 7012.812 6973.306 6933.799 6894.292 6854.785 6815.278
## 1979 6484.486 6398.104 6311.722 6225.340 6138.958 6052.576 5966.194
## 1980 5609.542 5603.979 5598.417 5592.854 5587.292 5581.729 5576.167
## 1981 5670.306 5728.500 5786.694 5844.889 5903.083 5961.278 6019.472
## 1982 6235.167 6226.625 6218.083 6209.542 6201.000 6192.458 6183.917
## 1983 6051.500 6002.375 5953.250 5904.125 5855.000 5805.875 5756.750
## 1984 5465.250 5417.750 5370.250 5322.750 5275.250 5227.750 5180.250
## 1985 5014.333 5026.375 5038.417 5050.458 5062.500 5074.542 5086.583
## 1986 5086.264 5062.021 5037.778 5013.535 4989.292 4965.049 4940.806
## 1987       NA       NA       NA       NA       NA       NA       NA
##           Aug      Sep      Oct      Nov      Dec
## 1975       NA       NA       NA 6800.250 6819.104
## 1976 6969.938 6988.792 7007.646 7026.500 7035.236
## 1977 7105.125 7113.861 7122.597 7131.333 7091.826
## 1978 6775.771 6736.264 6696.757 6657.250 6570.868
## 1979 5879.812 5793.431 5707.049 5620.667 5615.104
## 1980 5570.604 5565.042 5559.479 5553.917 5612.111
## 1981 6077.667 6135.861 6194.056 6252.250 6243.708
## 1982 6175.375 6166.833 6158.292 6149.750 6100.625
## 1983 5707.625 5658.500 5609.375 5560.250 5512.750
## 1984 5132.750 5085.250 5037.750 4990.250 5002.292
## 1985 5098.625 5110.667 5122.708 5134.750 5110.507
## 1986 4916.562 4892.319 4868.076 4843.833       NA
## 1987       NA       NA       NA                  
## 
## $Estacional
##              Jan         Feb         Mar         Apr         May
## 1975                                                   696.60417
## 1976  -591.84259  -305.11111  1025.28704  -217.31481 -1627.25000
## 1977  -536.56944  -139.16667   782.23611  -815.86111  -941.95833
## 1978  -853.40972  -166.59375  1413.72222   974.03819  -562.64583
## 1979 -1235.36806   183.07292   654.51389 -1214.54514  -695.60417
## 1980  -763.93750   660.32292  1531.08333  -197.15625   696.60417
## 1981  -591.84259  -305.11111  1025.28704  -217.31481 -1627.25000
## 1982  -536.56944  -139.16667   782.23611  -815.86111  -941.95833
## 1983  -853.40972  -166.59375  1413.72222   974.03819  -562.64583
## 1984 -1235.36806   183.07292   654.51389 -1214.54514  -695.60417
## 1985  -763.93750   660.32292  1531.08333  -197.15625   696.60417
## 1986  -591.84259  -305.11111  1025.28704  -217.31481 -1627.25000
## 1987  -536.56944  -139.16667   782.23611  -815.86111  -941.95833
##              Jun         Jul         Aug         Sep         Oct
## 1975  -923.63542 -1103.37500  1547.38542   -15.35417   -67.09375
## 1976 -1570.85185  -801.45370  2767.94444  2194.00926  1015.74074
## 1977 -1981.05556 -1167.65278   688.75000  2717.15278   132.05556
## 1978  -885.32986  -641.51389  2220.30208  2950.11806  -213.06597
## 1979 -1655.16319  -481.22222  2973.21875  -191.34028  -630.89931
## 1980  -923.63542 -1103.37500  1547.38542   -15.35417   -67.09375
## 1981 -1570.85185  -801.45370  2767.94444  2194.00926  1015.74074
## 1982 -1981.05556 -1167.65278   688.75000  2717.15278   132.05556
## 1983  -885.32986  -641.51389  2220.30208  2950.11806  -213.06597
## 1984 -1655.16319  -481.22222  2973.21875  -191.34028  -630.89931
## 1985  -923.63542 -1103.37500  1547.38542   -15.35417   -67.09375
## 1986 -1570.85185  -801.45370  2767.94444  2194.00926  1015.74074
## 1987 -1981.05556 -1167.65278   688.75000  2717.15278   132.05556
##              Nov         Dec
## 1975  -376.30556  -551.57407
## 1976  -471.86111  -529.47222
## 1977   -35.04167  -113.22569
## 1978  -268.25000  -913.80903
## 1979  -503.45833 -1500.19792
## 1980  -376.30556  -551.57407
## 1981  -471.86111  -529.47222
## 1982   -35.04167  -113.22569
## 1983  -268.25000  -913.80903
## 1984  -503.45833 -1500.19792
## 1985  -376.30556  -551.57407
## 1986  -471.86111  -529.47222
## 1987                        
## 
## $Aleatorio
##               Jan          Feb          Mar          Apr          May
## 1975                                                               NA
## 1976  -422.115741 -1118.701389 -1032.953704  1175.793981  -174.125000
## 1977   468.597222 -1321.541667  -868.680556   404.680556 -1448.958333
## 1978  -236.909722  -985.218750 -1009.027778   724.163194  -119.645833
## 1979   -35.118056  -883.177083  -291.236111  -235.795139  -722.354167
## 1980  -424.604167    31.697917    85.500000   448.302083  1737.104167
## 1981   122.537037  1402.611111  1884.018519   102.425926   673.166667
## 1982  -468.597222  1321.541667   868.680556  -404.680556  1448.958333
## 1983   236.909722   985.218750  1009.027778  -724.163194   119.645833
## 1984    35.118056   883.177083   291.236111   235.795139   722.354167
## 1985   424.604167   -31.697917   -85.500000  -448.302083 -1737.104167
## 1986   299.578704  -283.909722  -851.064815 -1278.219907  -499.041667
## 1987           NA           NA           NA           NA           NA
##               Jun          Jul          Aug          Sep          Oct
## 1975           NA           NA           NA           NA           NA
## 1976 -1279.377315  -666.629630 -1235.881944  2253.199074  2289.613426
## 1977  -177.597222    90.263889  -653.875000  1334.986111  1885.347222
## 1978   -63.454861  -883.763889  -758.072917  2424.618056   643.309028
## 1979     6.586806   150.027778   257.968750   547.909722  -146.149306
## 1980  -568.093750 -1219.791667 -1686.989583  -644.687500  -821.385417
## 1981   718.574074   167.981481   358.388889  -673.870370 -1303.796296
## 1982   177.597222   -90.263889   653.875000 -1334.986111 -1885.347222
## 1983    63.454861   883.763889   758.072917 -2424.618056  -643.309028
## 1984    -6.586806  -150.027778  -257.968750  -547.909722   146.149306
## 1985   568.093750  1219.791667  1686.989583   644.687500   821.385417
## 1986   560.803241   498.648148   877.493056 -1579.328704  -985.817130
## 1987           NA           NA           NA           NA           NA
##               Nov          Dec
## 1975   331.055556  -324.530093
## 1976  -117.638889   245.236111
## 1977   191.708333   394.399306
## 1978   254.000000   340.940972
## 1979  -123.208333  -387.906250
## 1980  -334.611111   -80.537037
## 1981    70.611111  -245.236111
## 1982  -191.708333  -394.399306
## 1983  -254.000000  -340.940972
## 1984   123.208333   387.906250
## 1985     3.555556   405.067130
## 1986    47.027778           NA
## 1987                          
## 
## $Tipo
## [1] "a"
## 
## $Grafica
## TableGrob (5 x 1) "arrange": 5 grobs
##   z     cells    name                grob
## 1 1 (2-2,1-1) arrange      gtable[layout]
## 2 2 (3-3,1-1) arrange      gtable[layout]
## 3 3 (4-4,1-1) arrange      gtable[layout]
## 4 4 (5-5,1-1) arrange      gtable[layout]
## 5 5 (1-1,1-1) arrange text[GRID.text.672]

Ir al inicio

Serie 2

Para esta la serie se comparará con el modelo multiplicativo de los ejemplos anteriores y con una nt=27 para la tendencia.

d<-descomponer(serie2,tipo="m",nt=27,g=T)

d #la lista obtenida con la función
## $Original
##       Jan  Feb  Mar  Apr  May  Jun  Jul  Aug  Sep  Oct  Nov  Dec
## 1978                     42.1 45.1 44.1 43.2 45.7 36.2 32.2 38.6
## 1979 42.0 38.9 47.5 46.3 42.7 54.1 44.3 44.6 47.3 32.4 29.3 34.6
## 1980 36.8 39.6 48.6 39.7 48.1 47.4 34.2 40.1 36.3 32.0 24.8 31.7
## 1981 37.9 34.9 21.0 40.9 43.2 44.7 39.4 46.6 43.6 36.1 31.3 41.0
## 1982 43.0 39.5 41.2 41.5 44.8 43.3 41.8 41.9 43.7 35.9 24.9 36.2
## 1983 38.6 34.9 37.1 44.7 41.4 43.0 43.6 39.9 44.8 31.0 25.2 39.3
## 1984 46.6 35.4 41.5 43.0 44.5 51.2 44.2 41.8 46.6 30.1 24.1 42.3
## 1985 38.0 32.5 39.2                                             
## 
## $Tendencial
##           Jan      Feb      Mar      Apr      May      Jun      Jul
## 1978                                           NA       NA       NA
## 1979       NA       NA       NA       NA       NA 41.68889 41.57435
## 1980 40.88711 40.77257 40.65802 40.54348 40.42894 40.31440 40.19986
## 1981 39.51262 39.39808 39.28354 39.16900 39.05446 38.93992 38.82538
## 1982 38.66104 38.67723 38.69342 38.70960 38.72579 38.74198 38.75816
## 1983 38.85528 38.87147 38.88765 38.90384 38.92003 38.93621 38.95240
## 1984       NA       NA       NA       NA       NA       NA       NA
## 1985       NA       NA       NA                                    
##           Aug      Sep      Oct      Nov      Dec
## 1978       NA       NA       NA       NA       NA
## 1979 41.45981 41.34527 41.23073 41.11619 41.00165
## 1980 40.08532 39.97078 39.85624 39.74170 39.62716
## 1981 38.71084 38.59630 38.61248 38.62867 38.64486
## 1982 38.77435 38.79053 38.80672 38.82291 38.83909
## 1983 38.96859 38.98477 39.00096 39.01715 39.03333
## 1984       NA       NA       NA       NA       NA
## 1985                                             
## 
## $Estacional
##            Jan       Feb       Mar       Apr       May       Jun       Jul
## 1978                                         1.1291152 1.1686820 1.0257815
## 1979 0.9912218 0.9440437 0.9371805 1.0611152 1.1291152 1.1686820 1.0257815
## 1980 0.9912218 0.9440437 0.9371805 1.0611152 1.1291152 1.1686820 1.0257815
## 1981 0.9912218 0.9440437 0.9371805 1.0611152 1.1291152 1.1686820 1.0257815
## 1982 0.9912218 0.9440437 0.9371805 1.0611152 1.1291152 1.1686820 1.0257815
## 1983 0.9912218 0.9440437 0.9371805 1.0611152 1.1291152 1.1686820 1.0257815
## 1984 0.9912218 0.9440437 0.9371805 1.0611152 1.1291152 1.1686820 1.0257815
## 1985 0.9912218 0.9440437 0.9371805                                        
##            Aug       Sep       Oct       Nov       Dec
## 1978 1.0768834 1.0915120 0.8487176 0.6868334 0.9287301
## 1979 1.0768834 1.0915120 0.8487176 0.6868334 0.9287301
## 1980 1.0768834 1.0915120 0.8487176 0.6868334 0.9287301
## 1981 1.0768834 1.0915120 0.8487176 0.6868334 0.9287301
## 1982 1.0768834 1.0915120 0.8487176 0.6868334 0.9287301
## 1983 1.0768834 1.0915120 0.8487176 0.6868334 0.9287301
## 1984 1.0768834 1.0915120 0.8487176 0.6868334 0.9287301
## 1985                                                  
## 
## $Aleatorio
##            Jan       Feb       Mar       Apr       May       Jun       Jul
## 1978                                                NA        NA        NA
## 1979        NA        NA        NA        NA        NA 1.1104029 1.0387796
## 1980 0.9080100 1.0288097 1.2754597 0.9227985 1.0536938 1.0060551 0.8293668
## 1981 0.9676817 0.9383358 0.5704078 0.9840525 0.9796588 0.9822367 0.9892947
## 1982 1.1220806 1.0818066 1.1361532 1.0103384 1.0245649 0.9563344 1.0513764
## 1983 1.0022277 0.9510479 1.0179792 1.0828106 0.9420825 0.9449708 1.0911825
## 1984        NA        NA        NA        NA        NA        NA        NA
## 1985        NA        NA        NA                                        
##            Aug       Sep       Oct       Nov       Dec
## 1978        NA        NA        NA        NA        NA
## 1979 0.9989388 1.0481099 0.9258931 1.0375365 0.9086263
## 1980 0.9289457 0.8320233 0.9459985 0.9085604 0.8613443
## 1981 1.1178529 1.0349332 1.1015806 1.1797315 1.1423591
## 1982 1.0034618 1.0321128 1.0899945 0.9338129 1.0035753
## 1983 0.9508008 1.0528209 0.9365333 0.9403588 1.0840951
## 1984        NA        NA        NA        NA        NA
## 1985                                                  
## 
## $Tipo
## [1] "m"
## 
## $Grafica
## TableGrob (5 x 1) "arrange": 5 grobs
##   z     cells    name                grob
## 1 1 (2-2,1-1) arrange      gtable[layout]
## 2 2 (3-3,1-1) arrange      gtable[layout]
## 3 3 (4-4,1-1) arrange      gtable[layout]
## 4 4 (5-5,1-1) arrange      gtable[layout]
## 5 5 (1-1,1-1) arrange text[GRID.text.849]

Ir al inicio
En la grafica siguiente se observa que el título se ve mal si se llama con plot.

plot(d$Grafica)

Ir al inicio

AirPassengers

En este usamos el modelo aditivo y se comparará con el sacado por la función decompose de R usando nt y ne por default.
Esta es la forma correcta de llamar la gráfica de la lista.

grid.draw(descomponer(AirPassengers,g=T)$Grafica)

Esta gráfica es la obtenida por el metodo decompose de R. Por el parecido entre ellas se nota que las funciones aquí presentadas trabajan apropiadamente.

plot(decompose(AirPassengers))

Ir al inicio