Medidas de dependencia

\[ F(c_1,c_2,\ldots,c_n)=\mathcal{P}(x_{t_1}{\leq}c_1,x_{t_2}{\leq}c_2,\ldots,x_{t_n}{\leq}c_n) \]

Bajo normalidad

\[ \begin{align} F(c_1,c_2,\ldots,c_n)&=\prod_{t=1}^n\Phi(c_t)\\ &=\prod_{t=1}^n\frac{1}{\sqrt{2\pi}}\int_{-\infty}^x\exp{\left\{-\frac{z^2}{2}\right\}}dz \end{align} \]

\[ F_t(x)=\mathcal{P}\left\{x_t{\leq}x\right\} \]

\[ F_t(x)=\mathcal{P}\left\{x_t{\leq}x\right\} \]

\[ f_t(x)=\frac{F_t(x)}{{\partial}x} \]

Valor esperado

\[ \begin{align} \mu_{x_t}&=E(x_t)\\ &=\int_{-\infty}^{\infty}xf_t(x)dx \end{align} \]

Función de autocovarianza

\[ \gamma_x(s,t)=E[(x_s-\mu_s)(x_t-\mu_t)] \]

\[ \gamma_x(t,t)=E[(x_t-\mu_t)^2] \]

Función de autocorrelación

\[ \begin{align} \rho_x(s,t)&=\frac{E[(x_s-\mu_s)(x_t-\mu_t)]}{\sqrt{E[(x_s-\mu_s)^2]}\sqrt{E[(x_t-\mu_t)^2]}}\\ &=\frac{\gamma_x(s,t)}{\sqrt{\gamma_x(s,s)}\sqrt{\gamma_x(t,t)}} \end{align} \]

Función de covarianza cruzada

\[ \gamma_{xy}(s,t)=E[(x_s-\mu_{xs})(y_t-\mu_{yt})] \]

Función de correlación cruzada

\[ \begin{align} \rho_{xy}(s,t)&=\frac{E[(x_s-\mu_{xs})(y_t-\mu_{yt})]}{\sqrt{E[(x_s-\mu_{xs})^2]}\sqrt{E[(x_t-\mu_{yt})^2]}}\\ &=\frac{\gamma_{xy}(s,t)}{\sqrt{\gamma_x(s,s)}\sqrt{\gamma_y(t,t)}} \end{align} \]

Series de tiempo estacionarias

  • Estacionariedad estricta

\[\mathcal{P}(x_{t_1}{\leq}c_1,x_{t_2}{\leq}c_2,\ldots,x_{t_k}{\leq}c_k)=\mathcal{P}(x_{t_1+h}{\leq}c_1,x_{t_2+h}{\leq}c_2,\ldots,x_{t_k+h}{\leq}c_k)\]

  • Estacionariedad débil

\[ \begin{align} \mu_t&=E(x_t)\\ &=\mu \end{align} \]

\[ \begin{align} \gamma_x(s,t)&=\gamma_x(s+h,t+h)\\ &=E[(x_{s+h}-\mu)(x_{t+h}-\mu)]\\ &=E[(x_{t}-\mu)(x_{t+h}-\mu)]\\ \end{align} \]

Cargar la libreria

library(astsa)

Generar un ruido blanco

\[ y_t=\omega_t{\sim}wn(0,\sigma_\omega^2) \]

WN <- arima.sim(model = list(order=c(0,0,0)), 200)

Gráfico de la serie

plot(WN)

Funciones de autocorrelación simple y parcial

\[Corr(\varepsilon_t,\varepsilon_{t-h})\]

acf2(WN)

##         ACF  PACF
##  [1,] -0.09 -0.09
##  [2,] -0.02 -0.03
##  [3,]  0.21  0.21
##  [4,] -0.13 -0.10
##  [5,]  0.04  0.03
##  [6,]  0.09  0.05
##  [7,]  0.00  0.06
##  [8,] -0.01 -0.04
##  [9,]  0.13  0.11
## [10,] -0.06 -0.05
## [11,]  0.01  0.02
## [12,]  0.15  0.10
## [13,] -0.12 -0.06
## [14,]  0.08  0.05
## [15,] -0.05 -0.12
## [16,] -0.12 -0.07
## [17,]  0.01 -0.05
## [18,] -0.06 -0.05
## [19,] -0.08 -0.08
## [20,]  0.05  0.04
## [21,]  0.03  0.03
## [22,] -0.07  0.00
## [23,]  0.04  0.00
## [24,] -0.04 -0.03
## [25,] -0.01  0.06

Sobrediferenciar

D.WN <- diff(WN,2)

\[ \begin{align} {\nabla}y_t&=y_t-y_{t-1}\\ &=\omega_t-\omega_{t-1}\text{; }\omega_t{\sim}wn(0,\sigma_\omega^2) \end{align} \]

\[ \begin{align} {\nabla}^2y_t&=(y_t-y_{t-1})-(y_{t-1}-y_{t-2})\\ &=(\omega_t-\omega_{t-1})-(\omega_{t-1}-\omega_{t-2})\\ &=\omega_t-2\omega_{t-1}+\omega_{t-2}\text{; }\omega_t{\sim}wn(0,\sigma_\omega^2) \end{align} \] ## Gráfico de la serie

plot(D.WN)

Funciones de autocorrelación simple y parcial

acf2(D.WN)

##         ACF  PACF
##  [1,] -0.14 -0.14
##  [2,] -0.45 -0.48
##  [3,]  0.23  0.09
##  [4,] -0.16 -0.41
##  [5,] -0.07  0.02
##  [6,]  0.16 -0.23
##  [7,] -0.09 -0.03
##  [8,] -0.03 -0.19
##  [9,]  0.12  0.07
## [10,] -0.13 -0.28
## [11,]  0.00  0.11
## [12,]  0.15 -0.18
## [13,] -0.10  0.13
## [14,]  0.06 -0.05
## [15,]  0.00  0.04
## [16,] -0.12 -0.08
## [17,]  0.08  0.05
## [18,] -0.02 -0.15
## [19,] -0.10 -0.05
## [20,]  0.11 -0.09
## [21,]  0.05  0.00
## [22,] -0.07 -0.06
## [23,]  0.03 -0.05
## [24,]  0.02  0.00
## [25,] -0.04 -0.05

Generar un MA(1)

MA <- arima.sim(model=list(order=c(0,0,1), ma=-0.9),n=200)

Funciones de autocorrelación simple y parcial

acf2(MA)

##         ACF  PACF
##  [1,] -0.44 -0.44
##  [2,]  0.01 -0.23
##  [3,] -0.10 -0.26
##  [4,]  0.02 -0.22
##  [5,]  0.05 -0.11
##  [6,] -0.04 -0.13
##  [7,]  0.03 -0.08
##  [8,] -0.10 -0.19
##  [9,]  0.14 -0.03
## [10,] -0.11 -0.12
## [11,] -0.06 -0.26
## [12,]  0.22  0.06
## [13,] -0.10  0.03
## [14,]  0.03  0.04
## [15,] -0.11 -0.03
## [16,]  0.07  0.01
## [17,] -0.06 -0.07
## [18,]  0.02 -0.11
## [19,]  0.05  0.00
## [20,] -0.13 -0.12
## [21,]  0.20  0.06
## [22,] -0.17 -0.04
## [23,]  0.08  0.00
## [24,] -0.03 -0.04
## [25,]  0.04 -0.03

Estimar un modelo

sarima(MA, p=0, d=0, q=1)
## initial  value 0.224881 
## iter   2 value 0.073941
## iter   3 value 0.042530
## iter   4 value 0.001856
## iter   5 value -0.007310
## iter   6 value -0.014471
## iter   7 value -0.015342
## iter   8 value -0.018594
## iter   9 value -0.018707
## iter  10 value -0.018753
## iter  11 value -0.018754
## iter  12 value -0.018754
## iter  13 value -0.018754
## iter  14 value -0.018754
## iter  14 value -0.018754
## iter  14 value -0.018754
## final  value -0.018754 
## converged
## initial  value -0.020329 
## iter   2 value -0.020520
## iter   3 value -0.021192
## iter   4 value -0.021203
## iter   5 value -0.021205
## iter   6 value -0.021205
## iter   6 value -0.021205
## final  value -0.021205 
## converged

## $fit
## 
## Call:
## stats::arima(x = xdata, order = c(p, d, q), seasonal = list(order = c(P, D, 
##     Q), period = S), xreg = xmean, include.mean = FALSE, transform.pars = trans, 
##     fixed = fixed, optim.control = list(trace = trc, REPORT = 1, reltol = tol))
## 
## Coefficients:
##           ma1   xmean
##       -0.9264  0.0052
## s.e.   0.0283  0.0054
## 
## sigma^2 estimated as 0.9492:  log likelihood = -279.55,  aic = 565.09
## 
## $degrees_of_freedom
## [1] 198
## 
## $ttable
##       Estimate     SE  t.value p.value
## ma1    -0.9264 0.0283 -32.7503    0.00
## xmean   0.0052 0.0054   0.9565    0.34
## 
## $AIC
## [1] 2.825467
## 
## $AICc
## [1] 2.825772
## 
## $BIC
## [1] 2.874942

Generar un MA(1)

AR <- arima.sim(model=list(order=c(1,0,0), ar=0.8),n=200)

Funciones de autocorrelación simple y parcial

acf2(AR)

##         ACF  PACF
##  [1,]  0.74  0.74
##  [2,]  0.59  0.08
##  [3,]  0.50  0.09
##  [4,]  0.43  0.04
##  [5,]  0.32 -0.11
##  [6,]  0.26  0.04
##  [7,]  0.20 -0.05
##  [8,]  0.18  0.07
##  [9,]  0.19  0.10
## [10,]  0.16 -0.06
## [11,]  0.13 -0.01
## [12,]  0.13  0.02
## [13,]  0.11 -0.03
## [14,]  0.06 -0.05
## [15,]  0.04  0.01
## [16,]  0.03  0.02
## [17,] -0.01 -0.08
## [18,] -0.05 -0.04
## [19,] -0.05  0.02
## [20,] -0.06 -0.01
## [21,] -0.05  0.03
## [22,] -0.08 -0.08
## [23,] -0.08  0.02
## [24,] -0.09 -0.04
## [25,] -0.10 -0.05

Estimar un modelo

sarima(AR, p=1, d=0, q=0)
## initial  value 0.307987 
## iter   2 value -0.100182
## iter   3 value -0.100241
## iter   4 value -0.100272
## iter   5 value -0.100275
## iter   6 value -0.100293
## iter   7 value -0.100294
## iter   8 value -0.100294
## iter   9 value -0.100295
## iter  10 value -0.100295
## iter  11 value -0.100295
## iter  12 value -0.100295
## iter  13 value -0.100295
## iter  13 value -0.100295
## iter  13 value -0.100295
## final  value -0.100295 
## converged
## initial  value -0.094177 
## iter   2 value -0.094237
## iter   3 value -0.094330
## iter   4 value -0.094361
## iter   5 value -0.094415
## iter   6 value -0.094428
## iter   7 value -0.094430
## iter   8 value -0.094430
## iter   9 value -0.094430
## iter  10 value -0.094430
## iter  10 value -0.094430
## iter  10 value -0.094430
## final  value -0.094430 
## converged

## $fit
## 
## Call:
## stats::arima(x = xdata, order = c(p, d, q), seasonal = list(order = c(P, D, 
##     Q), period = S), xreg = xmean, include.mean = FALSE, transform.pars = trans, 
##     fixed = fixed, optim.control = list(trace = trc, REPORT = 1, reltol = tol))
## 
## Coefficients:
##          ar1   xmean
##       0.7485  0.2100
## s.e.  0.0469  0.2518
## 
## sigma^2 estimated as 0.8245:  log likelihood = -264.9,  aic = 535.8
## 
## $degrees_of_freedom
## [1] 198
## 
## $ttable
##       Estimate     SE t.value p.value
## ar1     0.7485 0.0469 15.9659  0.0000
## xmean   0.2100 0.2518  0.8343  0.4051
## 
## $AIC
## [1] 2.679016
## 
## $AICc
## [1] 2.679321
## 
## $BIC
## [1] 2.728491

Generar un AR(2)

AR.2 <- arima.sim(model=list(order=c(2,0,0),ar=c(1.5,-0.75)),200)

Funciones de autocorrelación simple y parcial

acf2(AR.2)

##         ACF  PACF
##  [1,]  0.84  0.84
##  [2,]  0.48 -0.77
##  [3,]  0.06  0.02
##  [4,] -0.26  0.05
##  [5,] -0.43  0.00
##  [6,] -0.42  0.01
##  [7,] -0.27  0.11
##  [8,] -0.06 -0.04
##  [9,]  0.14  0.06
## [10,]  0.27 -0.03
## [11,]  0.29 -0.01
## [12,]  0.20 -0.07
## [13,]  0.05 -0.08
## [14,] -0.13 -0.06
## [15,] -0.28 -0.07
## [16,] -0.36 -0.05
## [17,] -0.36 -0.08
## [18,] -0.27  0.01
## [19,] -0.14 -0.03
## [20,]  0.00 -0.08
## [21,]  0.09 -0.05
## [22,]  0.12  0.02
## [23,]  0.11  0.04
## [24,]  0.06  0.01
## [25,]  0.01  0.03

Estimar un modelo

sarima(AR.2,p=2,d=0,q=0)
## initial  value 1.058747 
## iter   2 value 0.909986
## iter   3 value 0.516369
## iter   4 value 0.317631
## iter   5 value 0.144396
## iter   6 value -0.006896
## iter   7 value -0.030047
## iter   8 value -0.041753
## iter   9 value -0.043194
## iter  10 value -0.044464
## iter  11 value -0.044970
## iter  12 value -0.044970
## iter  13 value -0.044970
## iter  14 value -0.044970
## iter  14 value -0.044970
## iter  14 value -0.044970
## final  value -0.044970 
## converged
## initial  value -0.038940 
## iter   2 value -0.038953
## iter   3 value -0.038962
## iter   4 value -0.038964
## iter   5 value -0.038964
## iter   6 value -0.038964
## iter   6 value -0.038964
## iter   6 value -0.038964
## final  value -0.038964 
## converged

## $fit
## 
## Call:
## stats::arima(x = xdata, order = c(p, d, q), seasonal = list(order = c(P, D, 
##     Q), period = S), xreg = xmean, include.mean = FALSE, transform.pars = trans, 
##     fixed = fixed, optim.control = list(trace = trc, REPORT = 1, reltol = tol))
## 
## Coefficients:
##          ar1      ar2   xmean
##       1.5033  -0.7853  0.0937
## s.e.  0.0430   0.0429  0.2396
## 
## sigma^2 estimated as 0.9106:  log likelihood = -276,  aic = 559.99
## 
## $degrees_of_freedom
## [1] 197
## 
## $ttable
##       Estimate     SE  t.value p.value
## ar1     1.5033 0.0430  34.9546  0.0000
## ar2    -0.7853 0.0429 -18.3128  0.0000
## xmean   0.0937 0.2396   0.3910  0.6962
## 
## $AIC
## [1] 2.79995
## 
## $AICc
## [1] 2.800562
## 
## $BIC
## [1] 2.865916

Generar un ARIMA(2,0,1)

ARIMA <- arima.sim(model=list(order=c(2,0,1),ar=c(1,-0.9),ma=0.8),n=400)

Funciones de autocorrelación simple y parcial

acf2(ARIMA)

##         ACF  PACF
##  [1,]  0.55  0.55
##  [2,] -0.35 -0.93
##  [3,] -0.85  0.34
##  [4,] -0.54 -0.27
##  [5,]  0.20  0.02
##  [6,]  0.66 -0.04
##  [7,]  0.50  0.05
##  [8,] -0.08 -0.08
##  [9,] -0.52 -0.02
## [10,] -0.46 -0.07
## [11,] -0.03 -0.05
## [12,]  0.37  0.03
## [13,]  0.41 -0.02
## [14,]  0.11 -0.07
## [15,] -0.26  0.00
## [16,] -0.37 -0.02
## [17,] -0.16 -0.02
## [18,]  0.17  0.08
## [19,]  0.34  0.05
## [20,]  0.22  0.02
## [21,] -0.07 -0.02
## [22,] -0.30 -0.02
## [23,] -0.27  0.02
## [24,] -0.02 -0.07
## [25,]  0.23  0.07
## [26,]  0.29  0.03
## [27,]  0.10 -0.02
## [28,] -0.16  0.02
## [29,] -0.28  0.00
## [30,] -0.16  0.01

Estimar un modelo

sarima(ARIMA,p=2,d=0,q=1)
## initial  value 1.423228 
## iter   2 value 0.615753
## iter   3 value 0.374992
## iter   4 value 0.030388
## iter   5 value 0.011572
## iter   6 value -0.008167
## iter   7 value -0.020900
## iter   8 value -0.022022
## iter   9 value -0.022222
## iter  10 value -0.022369
## iter  11 value -0.022371
## iter  12 value -0.022371
## iter  13 value -0.022371
## iter  14 value -0.022371
## iter  15 value -0.022371
## iter  16 value -0.022371
## iter  16 value -0.022371
## iter  16 value -0.022371
## final  value -0.022371 
## converged
## initial  value -0.017507 
## iter   2 value -0.017538
## iter   3 value -0.017578
## iter   4 value -0.017589
## iter   5 value -0.017590
## iter   6 value -0.017592
## iter   7 value -0.017592
## iter   8 value -0.017592
## iter   8 value -0.017592
## iter   8 value -0.017592
## final  value -0.017592 
## converged

## $fit
## 
## Call:
## stats::arima(x = xdata, order = c(p, d, q), seasonal = list(order = c(P, D, 
##     Q), period = S), xreg = xmean, include.mean = FALSE, transform.pars = trans, 
##     fixed = fixed, optim.control = list(trace = trc, REPORT = 1, reltol = tol))
## 
## Coefficients:
##          ar1      ar2     ma1    xmean
##       0.9969  -0.9003  0.8085  -0.0281
## s.e.  0.0220   0.0217  0.0317   0.0977
## 
## sigma^2 estimated as 0.95:  log likelihood = -560.54,  aic = 1131.08
## 
## $degrees_of_freedom
## [1] 396
## 
## $ttable
##       Estimate     SE  t.value p.value
## ar1     0.9969 0.0220  45.2431   0.000
## ar2    -0.9003 0.0217 -41.5406   0.000
## ma1     0.8085 0.0317  25.4767   0.000
## xmean  -0.0281 0.0977  -0.2874   0.774
## 
## $AIC
## [1] 2.827692
## 
## $AICc
## [1] 2.827945
## 
## $BIC
## [1] 2.877585

Generar un proceso no estacionario

ARIMA.110 <- arima.sim(model=list(order=c(1,1,0),ar=0.9),n=500)

Funciones de autocorrelación simple y parcial

acf2(ARIMA.110)

##        ACF  PACF
##  [1,] 1.00  1.00
##  [2,] 0.99 -0.09
##  [3,] 0.99 -0.06
##  [4,] 0.99 -0.05
##  [5,] 0.98 -0.05
##  [6,] 0.98 -0.05
##  [7,] 0.97 -0.04
##  [8,] 0.97 -0.03
##  [9,] 0.96 -0.03
## [10,] 0.96 -0.03
## [11,] 0.95 -0.02
## [12,] 0.94 -0.01
## [13,] 0.94 -0.02
## [14,] 0.93 -0.02
## [15,] 0.92 -0.02
## [16,] 0.92 -0.02
## [17,] 0.91 -0.01
## [18,] 0.90  0.00
## [19,] 0.90  0.00
## [20,] 0.89  0.01
## [21,] 0.88  0.01
## [22,] 0.88  0.01
## [23,] 0.87  0.01
## [24,] 0.86  0.01
## [25,] 0.86  0.01
## [26,] 0.85  0.00
## [27,] 0.84  0.00
## [28,] 0.83  0.01
## [29,] 0.83  0.01
## [30,] 0.82 -0.01
## [31,] 0.81  0.00
## [32,] 0.81 -0.01
## [33,] 0.80 -0.01

Diferenciación no estacional

sarima(ARIMA.110,p=0,d=1,q=0)
## initial  value 0.893576 
## iter   1 value 0.893576
## final  value 0.893576 
## converged
## initial  value 0.893576 
## iter   1 value 0.893576
## final  value 0.893576 
## converged

## $fit
## 
## Call:
## stats::arima(x = xdata, order = c(p, d, q), seasonal = list(order = c(P, D, 
##     Q), period = S), xreg = constant, transform.pars = trans, fixed = fixed, 
##     optim.control = list(trace = trc, REPORT = 1, reltol = tol))
## 
## Coefficients:
##       constant
##         0.4757
## s.e.    0.1093
## 
## sigma^2 estimated as 5.972:  log likelihood = -1156.26,  aic = 2316.51
## 
## $degrees_of_freedom
## [1] 499
## 
## $ttable
##          Estimate     SE t.value p.value
## constant   0.4757 0.1093  4.3524       0
## 
## $AIC
## [1] 4.633028
## 
## $AICc
## [1] 4.633044
## 
## $BIC
## [1] 4.649887

Nueva serie diferenciada buscando estacionariedad

D.ARIMA.110 <- diff(ARIMA.110,1)

Funciones de autocorrelación simple y parcial

acf2(D.ARIMA.110)

##         ACF  PACF
##  [1,]  0.90  0.90
##  [2,]  0.80 -0.03
##  [3,]  0.73  0.05
##  [4,]  0.65 -0.04
##  [5,]  0.60  0.08
##  [6,]  0.55  0.01
##  [7,]  0.50 -0.03
##  [8,]  0.45 -0.03
##  [9,]  0.38 -0.08
## [10,]  0.33  0.02
## [11,]  0.28 -0.02
## [12,]  0.26  0.08
## [13,]  0.23 -0.01
## [14,]  0.20 -0.04
## [15,]  0.18  0.03
## [16,]  0.16 -0.01
## [17,]  0.13 -0.02
## [18,]  0.11 -0.06
## [19,]  0.07 -0.03
## [20,]  0.04 -0.05
## [21,]  0.01 -0.03
## [22,] -0.01  0.05
## [23,] -0.02 -0.02
## [24,] -0.03  0.01
## [25,] -0.04  0.00
## [26,] -0.05  0.02
## [27,] -0.07 -0.08
## [28,] -0.09 -0.01
## [29,] -0.09  0.06
## [30,] -0.07  0.07
## [31,] -0.06 -0.01
## [32,] -0.05  0.01
## [33,] -0.04  0.03

Estimar un modelo

sarima(ARIMA.110,p=1,d=1,q=0)
## initial  value 0.893363 
## iter   2 value 0.061600
## iter   3 value 0.061594
## iter   4 value 0.061593
## iter   5 value 0.061578
## iter   6 value 0.061570
## iter   7 value 0.061568
## iter   8 value 0.061568
## iter   9 value 0.061567
## iter  10 value 0.061567
## iter  11 value 0.061567
## iter  12 value 0.061567
## iter  13 value 0.061567
## iter  14 value 0.061567
## iter  15 value 0.061567
## iter  16 value 0.061567
## iter  17 value 0.061566
## iter  17 value 0.061566
## iter  17 value 0.061566
## final  value 0.061566 
## converged
## initial  value 0.063515 
## iter   2 value 0.063514
## iter   3 value 0.063500
## iter   4 value 0.063497
## iter   5 value 0.063482
## iter   6 value 0.063473
## iter   7 value 0.063472
## iter   8 value 0.063469
## iter   9 value 0.063469
## iter  10 value 0.063469
## iter  11 value 0.063469
## iter  12 value 0.063469
## iter  13 value 0.063469
## iter  14 value 0.063469
## iter  15 value 0.063469
## iter  16 value 0.063469
## iter  17 value 0.063469
## iter  18 value 0.063469
## iter  18 value 0.063469
## iter  18 value 0.063469
## final  value 0.063469 
## converged

## $fit
## 
## Call:
## stats::arima(x = xdata, order = c(p, d, q), seasonal = list(order = c(P, D, 
##     Q), period = S), xreg = constant, transform.pars = trans, fixed = fixed, 
##     optim.control = list(trace = trc, REPORT = 1, reltol = tol))
## 
## Coefficients:
##          ar1  constant
##       0.8999    0.4545
## s.e.  0.0193    0.4670
## 
## sigma^2 estimated as 1.132:  log likelihood = -741.2,  aic = 1488.41
## 
## $degrees_of_freedom
## [1] 498
## 
## $ttable
##          Estimate     SE t.value p.value
## ar1        0.8999 0.0193 46.6350  0.0000
## constant   0.4545 0.4670  0.9733  0.3309
## 
## $AIC
## [1] 2.976816
## 
## $AICc
## [1] 2.976864
## 
## $BIC
## [1] 3.002104