Autor : Gianfranco David Chamorro Rodriguez
correo : gianfranco.chamorror@gmail.com
Canal : Video explicación
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')
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\)
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
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.
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)