Autor : Gianfranco David Chamorro Rodriguez

correo :

Canal : Video explicación

Proceso Estocástico

Un proceso estocástico es un conjunto de variables aleatorias que depende de un parámetro, dentro del análisis de series temporales, ese parámetro es el tiempo. Formalmente, se define como una familia de variables aleatorias Y indiciadas por el tiempo, t.
Existen dos tipos de procesos estocásticos. La diferencia entre los mismos, tiene que ver con predictibilidad y comportamiento de una serie temporal, Procesos estocásticos estacionarios y no estacionarios, el primero muestra cierto nivel de predictibilidad a diferencia del segundo. En este taller nos enfocaremos en un breve análisis de los procesos estocásticos estacionarios.

library(TSA)
## 
## Attaching package: 'TSA'
## The following objects are masked from 'package:stats':
## 
##     acf, arima
## The following object is masked from 'package:utils':
## 
##     tar
data(rwalk) 
wn=rnorm(700,0,3)
par(mfrow = c(1, 2))
plot.ts(wn, main="Ruido Blanco", xlab="Tiempo", col="blue")
plot.ts(rwalk,main='Caminata Aleatoria', col= "red",type='l')

Proceso Estocástico Estacionario

Un proceso estocástico es estacionario, en sentido estricto, si para cualquier periodo de tiempo, el vector \(Y_{t1},Y_{t2},...,Y{tn}\) , tiene la misma distribución que el vector \(Y_{t1+h},Y_{t2+h},...,Y{tn+h}\) para cualquier valor de h \(>\) 0. Se dice que un proceso Yt, es estacionario en sentido débil si los primeros momentos centrales son independientes del tiempo.

Media constante: E(Y\(_t\)) = \(\mu\) ; \(\forall t\)

Varianza constante: Var(Y\(_t\)) = \(\sigma^{2}\) ; \(\forall t\)

Covarianza depende de la distancia del tiempo s: Cov(Y\(_t\),Y\(_t-s\)) = \(\rho(s)\) ; \(\forall t\)

Proceso AR(1)

El proceso Autorregresivo de primer orden : \[\begin{equation*} Y_t = a_o + a_1 Y_{t-1} + e_t \end{equation*}\] donde:
\[\begin{equation*} e_t \sim iidN(0,\sigma^2) \end{equation*}\]

Si \(|a_1|\) \(<\) 1

  • E(Y_t)= \(\dfrac{a_0}{1-a_1}\)

  • Var(Y_t)=\(\sigma_e \dfrac{a_0}{1-a_1}\)

  • Cov(Y_t, \(Y_{t-k}\) )= \(a_1^k \dfrac{\sigma_e}{1-a_1^2}\)

  • Función de Autocorrelación Simple (FAS) = \(a_1^k\)

  • Función Impulso Respuesta (FIR) = = \(a_1^h\)

  • Error Predictivo = \(\sigma^2 (1+a_1^2+a_1^4+...+a_1^{2(h-1)})\)

  • Bandas de Confianza = \(Y_{t+h} \pm Z_{\alpha} \sqrt{\sigma^2 (1+a_1^2+a_1^4+...+a_1^{2(h-1)} }\)

data(ar1.s)
diferencia <- diff(ar1.s) # Una forma de trabajar un proceso AR 1 es eliminando este efecto con las diferencias de series


par(mfrow = c(1, 2))

plot(ar1.s,ylab=expression(Y[t]), col="red",type="l", main="Proceso AR(1)")
plot(diferencia,ylab=expression(Y[t]), col="green",type="l", main="Diferencias") #observamos la diferencia de la serie entre el proceso AR 1 original y la serie diferenciada

plot(y=ar1.s,x=zlag(ar1.s,1), col="red",ylab=expression(Y[t]),
xlab=expression(Y[t-1]),type="p", main="Proceso AR(1)")
plot(y=diferencia,x=zlag(diferencia,1), col="green",ylab=expression(Y[t]),
     xlab=expression(Y[t-1]),type="p", main="Diferencias") # Vemos que la relación entre una observación y su rezago disminuye considerablemente

acf(ar1.s, col="red", main="Proceso AR(1)")
acf(diferencia, col="green", main="Diferencias") # Incluso en el correlograma vemos que las serie diferenciada se encuentra en los límites permitidos

modelar1=arima(ar1.s,order=c(1,0,0))
modelar1
## 
## Call:
## arima(x = ar1.s, order = c(1, 0, 0))
## 
## Coefficients:
##          ar1  intercept
##       0.8924     1.2630
## s.e.  0.0598     1.1399
## 
## sigma^2 estimated as 1.041:  log likelihood = -87.13,  aic = 178.26
summary(modelar1)
##           Length Class  Mode     
## coef       2     -none- numeric  
## sigma2     1     -none- numeric  
## var.coef   4     -none- numeric  
## mask       2     -none- logical  
## loglik     1     -none- numeric  
## aic        1     -none- numeric  
## arma       7     -none- numeric  
## residuals 60     ts     numeric  
## call       3     -none- call     
## series     1     -none- character
## code       1     -none- numeric  
## n.cond     1     -none- numeric  
## nobs       1     -none- numeric  
## model     10     -none- list
par(mfrow = c(1, 1))
plot(modelar1, n.ahead=25,type='l', col="red",
     xlab='Year',ylab='a') 
abline (h=coef(modelar1)[names(coef(modelar1))=='intercept'], col="green")

library(forecast)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
## Registered S3 methods overwritten by 'forecast':
##   method       from
##   fitted.Arima TSA 
##   plot.Arima   TSA
library(ggplot2)
proy <-forecast(ar1.s,15,model= modelar1)
ggplot2::autoplot(proy) #Utilizando ggplot2 y forecast

autoplot(proy) + autolayer(fitted(proy)) # Comparando con nuestras proyecciones

Proceso MA(1)

El proceso de media móvil de primer orden : \[\begin{equation*} Y_t = a_o + e_t + \theta e_{t-1} \end{equation*}\]

donde: \[\begin{equation*} e_t \sim iidN(0,\sigma^2) \end{equation*}\]

Todo proceso MA es estacionario pero no todo proceso es invertible.

Proceso ARMA(1,1)

Un proceso Autorregresivo y de Media Móvil de primer orden y tiene la siguiente representación \[\begin{equation*} Y_t = a_o + a_1 Y_{t-1} + e_t + \theta e_{t-1} \end{equation*}\] donde:
\[\begin{equation*} e_t \sim iidN(0,\sigma^2 \end{equation*}\]

# Se puede trabajar buscando el nivel del AR y MA de forma automática
set.seed(4)
b <- c(0.8,0.6,0.4)
x <- w <- rnorm(180)
for (t in 2:180) {
  for (j in 1:1) x[t] <- x[t] + b[j] * w[t-j]
}
plot(x, type = "l")

modeloauto <- auto.arima(x, stepwise = TRUE, approximation = TRUE)
proy <-forecast(x,20,model= modeloauto)
ggplot2::autoplot(proy)