#Librerias 

library(tseries)
library(lubridate)
library(tidyverse)
library(car)
library(astsa)
library(foreign)
library(timsac)
library(vars)
library(lmtest)
library(mFilter)
library(dynlm)
library(nlme)
library(lmtest)
library(broom)
library(kableExtra)
library(knitr)
library(MASS)
library(parallel)
library(car)
library(mlogit)
library(dplyr)
library(tidyr)
library(forecast)
library(fpp2)
library(stats)
library(quantmod)
library(readxl)
#Dataset 

preciopm <- read_excel("preciopm (1).xls")
#Series de Tiempo Univariadas Versus Multivariadas 
#Paso 1. Convertir a objeto de Serie de Tiempo en R

preciopma.ts <- ts(preciopm$precio, start = c(1990,1), frequency = 12)

preciopma.ts
##             Jan        Feb        Mar        Apr        May        Jun
## 1990  14.897350  13.856284  12.298178  10.927095  10.452086   9.817348
## 1991  13.795437  10.845017  11.366329  12.068577  11.991099  11.930451
## 1992  10.079426  10.222971  10.928616  12.263161  13.882490  14.717433
## 1993  11.803837  12.505585  12.812625  12.873810  12.220930  11.106039
## 1994  10.227919   9.954569  10.307307  11.943946  12.818879  14.009499
## 1995  14.282580  14.800758  15.121214  16.031652  16.052267  14.611588
## 1996  14.640357  15.096147  16.682205  17.461726  16.069193  15.561163
## 1997  18.060119  15.709637  14.482912  14.259241  14.834376  13.795084
## 1998   9.713509   8.882054   7.631504   9.058311   9.082049   8.297230
## 1999   7.392438   7.126746   9.856138  12.350982  12.237096  13.074408
## 2000  21.348773  23.547154  22.935065  20.260149  23.193243  24.744170
## 2001  18.309991  18.799571  16.851520  16.360149  18.199624  18.789678
## 2002  14.032789  15.278664  19.405427  21.897267  21.987875  21.507413
## 2003  27.074817  27.012354  23.663690  20.458351  21.904876  23.570076
## 2004  25.316733  25.162286  26.962854  28.014928  30.823501  29.251947
## 2005  30.012074  32.092964  36.346343  38.118350  38.912862  43.204432
## 2006  47.779745  46.563260  49.381610  54.956204  55.260986  53.833091
## 2007  42.745920  47.033095  48.943810  52.898664  54.958534  58.682133
## 2008  78.879230  79.714309  87.177370  93.028973 102.884604 112.291047
## 2009  37.230832  37.848297  41.678599  47.490271  56.016166  63.641365
## 2010  70.866452  69.134714  70.093660  72.292077  66.101763  65.540751
## 2011  84.324640  89.161930  99.432700 106.104005 101.835090 100.828631
## 2012 107.455818 108.451418 109.604263 104.893764 100.233358  90.181843
## 2013  97.982782 103.352938 100.770902  97.755385  97.906861  96.993153
## 2014  88.310808  90.822240  91.395224  93.888630  95.086309  97.011046
## 2015  40.451272  45.986060  46.017331  49.325551  52.039105  52.825725
## 2016  23.102382  23.729330  28.326563  31.335818  36.726361  39.807146
## 2017  44.500081  44.174971  41.932428  43.221180  43.850742  41.151050
## 2018  57.453995  56.156762  57.224584  58.159732  62.899289  64.636865
## 2019  54.056660  57.379810  59.464492  62.077030                      
##             Jul        Aug        Sep        Oct        Nov        Dec
## 1990  13.188972  20.825314  26.238379  25.461774  23.590050  19.221472
## 1991  12.852894  12.724638  13.357160  14.094443  11.643019  10.081917
## 1992  14.694666  14.592165  15.002168  15.047736  13.499847  11.999895
## 1993  11.024373  11.150484  11.278000  11.218994   9.715306   9.101101
## 1994  14.525943  12.763118  12.527938  13.827166  14.100563  13.831668
## 1995  13.256370  13.449261  13.363175  12.991089  13.580205  15.116482
## 1996  15.978825  17.149939  19.308046  20.562573  18.913614  19.316873
## 1997  14.158890  14.821528  14.748565  15.700761  14.316305  11.438379
## 1998   8.804921   8.239905   9.465377   9.128815   7.865962   6.349166
## 1999  15.319650  17.430406  19.077463  18.434955  19.961135  20.140117
## 2000  22.778127  24.355191  25.822586  25.011949  24.065706  17.812948
## 2001  18.433045  19.274814  19.325549  15.571857  13.259511  13.662242
## 2002  22.389223  23.253909  24.514419  22.826465  20.001942  23.282675
## 2003  24.909283  25.174429  22.513946  24.135865  24.170211  24.437509
## 2004  30.770350  32.403355  33.356997  37.293723  30.656835  26.902246
## 2005  44.357927  47.831527  48.880013  45.437368  41.707053  42.989153
## 2006  56.818337  57.866679  49.690903  46.744199  45.794018  47.642082
## 2007  63.212159  62.190669  66.439359  71.018809  78.145548  77.690069
## 2008 118.026634 105.209472  83.841054  58.685407  40.592316  32.916936
## 2009  60.191980  66.404843  64.108802  67.933160  71.534239  68.493029
## 2010  66.923774  68.245485  68.332474  72.942531  75.758392  80.208666
## 2011 102.599593  96.988597  97.634395  99.366005 105.806100 105.126973
## 2012  94.012683  99.512167 100.076628  97.108629  93.682388  94.939944
## 2013  99.672555  99.244140  98.145716  93.873293  88.485898  89.409659
## 2014  93.320166  89.507449  84.128243  72.509358  63.479800  50.181375
## 2015  45.165949  38.419266  36.290362  34.860768  32.508829  26.196096
## 2016  37.971526  37.740903  36.826661  40.668356  38.361623  42.325962
## 2017  43.877714  45.554842  48.162370  48.891135  53.345048  54.055756
## 2018  66.421619  64.265666  68.363482  71.153304  59.825830  51.868669
## 2019
class(preciopma.ts)
## [1] "ts"
start(preciopma.ts); end(preciopma.ts)
## [1] 1990    1
## [1] 2019    4
#Paso 2. Explorar los datos mediante gráficas

plot(preciopma.ts, ylab="Precio", col="blue")

#Estacionariedad: Para conocer el número de diferencias que se requieren para lograr que la serie sea estacionaria. Esta serie no es etsacionaria ya que se requiere que la media y la varianza sean constantes a lo largo del tiempo. Y nuestra grafica tiene tendencia, por lo tanto no es estacionaria.  

seasonplot(preciopma.ts, col=rainbow(12), year.labels = TRUE)

#Paso 3. Función de Autocorrelación
#La autocorrelacion va disminuyendo en el tiempo, no es estacionaria. 

acf(preciopma.ts)  

Pacf(preciopma.ts)

# Vamos a convertirla en estacionaria, la media ahora es contante (la media es cero y no hay picos que demuestren que la varianza no es cero)

seriedif=diff(preciopma.ts)
plot(seriedif)

acf(seriedif)

ndiffs(seriedif) # Esta funcion permite saber cuantas diferencias son necesarias para convertir la serie en estacionaria. En mi caso da cero.  
## [1] 0
ndiffs(preciopma.ts) # Para la primera serie era necesaria una diferencia 
## [1] 1
#Paso4. Visualizacion

par(mfrow=c(2,2), mar=c(4,4,4,1)+.1)
plot(preciopma.ts, ylab="Precio")
acf(preciopma.ts, main="Serie No Estacionaria")
plot(seriedif)
acf(seriedif, main="Serie Estacionaria")

# La serie original no es estacionaria y la funcion de autocorrelacion disminuye 
# La serie estacionaria tiene media y varianza cero

# Fuente: Lic. Lourdes Cuellar