Documentos de Académico
Documentos de Profesional
Documentos de Cultura
7/12/2021
Introducción
Procesos autorregresivos (AR)
ACF y PACF del proceso AR(1)
Ejemplos AR(1)
Operador de retardo
Características AR(1)
AR(p)
Ejemplo AR(p) en R
Ejemplo práctico
Ajustamos un AR(2)
Modelos de Media Móvil (MA)
MA(1)
Ejemplo MA(1)
Proceso MA(q)
Ejemplo MA(q) en R
Ajuste de un MA a la serie AirPassengers
¿Qué es mejor para modelizar la serie de AirPassengers un AR o un MA?
ARMA(p,q)
Ejemplo ARMA(p,q) en R
Procesos Integrados
Ejemplo demostrativo con R
Ejemplo con datos reales
Ljung Box test
Procesos estacionales: SARIMAs
Ejemplo ajuste de un SARIMA
Introducción
T6- Series Temporales
Ya hemos discutido cómoUNIVARIANTE
MODELIZACIÓN hacer el análisis descriptivo
DE SERIESdeTEMPORALES
una serie temporal
para establecer si tiene tendencia, si es homocedástica o detectar con los
20582 - Análisis de Datos 📊
gráficos de las funciones de autocorrelación (simple y parcial) si presenta
7/12/2021
estructura que depende del rezago de la serie.
y t = c + ϕy t−1 + a t ,
y 2 = c + ϕy 1 + a 2
2
= c(1 + ϕ) + ϕ h + ϕa 1 + a 2
y 3 = c + ϕy 2 + a 3
2
= c + ϕ[c(1 + ϕ) + ϕ h + ϕa 1 + a 2 ] + a 3
2 3 2
= c(1 + ϕ + ϕ ) + ϕ h + ϕ a 1 + ϕa 2 + a 2
t−1 t−1
i t i
yt = c ∑ ϕ + ϕ h + ∑ ϕ a t−i
i=0 i=0
cero.
Con esta condición, depués de un periodo transcurrido inicial, cuando
t → ∞ , todas las variables yt tendrán la misma esperanza,
independientemente de las condiciones iniciales.
c
E[y t ] =
k
ρk = ϕ ,
plot(AR,main=(expression(AR(1)~~~~phi==0.8)))
7/12/2021
pacf(AR,main="autocorrelacion parcial")
AR<-arima.sim(list(order=c(1,0,0),ar=-.8),n=100)
plot(AR,main=(expression(AR(1)~~~~phi==-0.8)))
7/12/2021
7/12/2021
pacf(AR,main="autocorrelacion parcial")
Operador de retardo
Definiendo ~
y t = yt − μ , como ~ ~
By t = y t−1 , tenemos que:
~
(1 − ϕB)y t = a t
Características AR(1)
~ ~
y t = ϕy t−1 + a t
k
ρk = ϕ
autoregresivo de orden20582
p si: - Análisis de Datos 📊
~ ~ 7/12/2021
~
y t = ϕ1 y t−1 + ⋯ + ϕp y t−p + a t ,
donde ~
y t = yt − μ , siendo μ la media del proceso yt y at un proceso de
ruido blanco.
ρ1 = ϕ1 + ϕ2 ρ1 + ⋯ + ϕp ρp−1
ρ2 = ϕ1 ρ1 + ϕ2 + ⋯ + ϕp ρp−2
ρp = ϕ1 ρp−1 + ϕ2 ρp−2 + ⋯ + ϕp
Definiendo:
′
ϕ = [ϕ1 , … , ϕp ],
′
ϱ = [ρ1 , … , ρp ],
1 ρ1 ⋯ ρp−1
⎡ ⎤
R = ⎢ ⎥
⎢ ⋮ ⋮ ⋮ ⎥
⎣ ⎦
ρp−1 ρp−2 ⋯ 1
ϱ = Rϕ
−1
ϕ = R ϱ
Ejemplo AR(p) en R
set.seed(7122021)
x<-rnorm(500) simulacion
con ruido = 500 x=a_t
autoregresivo de orden2
MODELIZACIÓN UNIVARIANTE DE SERIES
sim3<-arima.sim(list(ar=c(.2,-.4,.6)),n=500,innov=x) TEMPORALES
autoregresivo
de orden 3
sim4<-arima.sim(list(ar=c(.5,.4,-.6,.4)),n=500,innov=x)
autoregresivo de orden 4
20582 - Análisis de Datos 📊
7/12/2021
7/12/2021
7/12/2021
Ejemplo práctico
data("AirPassengers")
is.ts(AirPassengers)
## [1] TRUE
print(AirPassengers)
## Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 1949 112 118 132 129 121 135 148 148 136 119 104 118
## 1950 115 126 141 135 125 149 170 170 158 133 114 140
## 1951 145 150 178 163 172 178 199 199 184 162 146 166
## 1952 171 180 193 181 183 218 230 242 209 191 172 194
## 1953 196 196 236 235 229 243 264 272 237 211 180 201
## 1954 204 188 235 227 234 264 302 293 259 229 203 229
## 1955 242 233 267 269 270 315 364 347 312 274 237 278
## 1956 284 277 317 313 318 374 413 405 355 306 271 306
## 1957 315 301 356 348 355 422 465 467 404 347 305 336
## 1958 340 318 362 348 363 435 491 505 404 359 310 337
## 1959 360 342 406 396 420 472 548 559 463 407 362 405
## 1960 417 391 419 461 472 535 622 606 508 461 390 432
T6- Series Temporales
MODELIZACIÓN UNIVARIANTE
summary(AirPassengers) DE SERIES TEMPORALES
20582 - Análisis de Datos 📊
## Min. 1st Qu. Median Mean 3rd Qu.
7/12/2021 Max.
start(AirPassengers)
## [1] 1949 1
end(AirPassengers)
## [1] 1960 12
time(AirPassengers)
##MODELIZACIÓN UNIVARIANTE
1958 1958.667 1958.750 DE SERIES
1958.833 1958.917
TEMPORALES
## 1959 1959.667 1959.750 1959.833 1959.917
205821960.833
## 1960 1960.667 1960.750 - Análisis de Datos 📊
1960.917
7/12/2021
frequency(AirPassengers)
## [1] 12
abline(reg=lm(AirPassengers~time(AirPassengers)),col="red")
T6- Series Temporales
MODELIZACIÓN UNIVARIANTE DE SERIES TEMPORALES
20582 - Análisis de Datos 📊
7/12/2021
acf(AirPassengers)
pacf(AirPassengers)
7/12/2021
print(AR)
##
## Call:
##
## Coefficients:
##
ts.plot(AirPassengers)
7/12/2021
library(tidyverse)
library(forecast)
AR %>% checkresiduals(test = F)
los errores no son homosedasticos
van aumentado a medida que va aumentado el tiempo
para que un modelo este bien ajustado, los resiudos tienen que oscilar de manera constante, no aumentar
7/12/2021
Los residuos muestran que aún hay estructura por capturar, por tanto, si
hacemos predicciones con este modelo:
la idea es calibrar el modelo para saber cuantos pasos adelante podemos predecir mirando que el error cuadratico sea pequeño
## $pred
## $se
## errores
$se
20582 n.ahead
AR_forecast <- predict(AR, - Análisis
= de Datos 📊
10)$pred
7/12/2021
points(AR_forecast, type = "l", col = "red")
Ajustamos un AR(2)
AR2<-arima(x=AirPassengers,order=c(2,0,0))
print(AR2)
##
## Call:
##MODELIZACIÓN
UNIVARIANTE DE SERIES TEMPORALES
## Coefficients:
##
los residuos siguen sin ser homosedasticos, ya que la variabilidad aumenta, pero es mejor que el AR(1)
7/12/2021
Por ejemplo, diremos que una serie yt sigue un proceso de media móvil de
primer orden, o un MA(1) si ha sido generado por:
no se neceista el valor anterior sino el cambio del valor
~
y t = a t − θa t−1 ,
donde ~
y t = yt − μ , siendo μ la media del proceso y at es un proceso de
ruido blanco con varianza σ
2
.
Observa que: MA como parte de los modelos que estamos estudiando se
refiere a retardos de errores, mientras que en el análisis descriptivo, se
refiere a una técnica de suavizado de datos.
7/12/2021
Este proceso es la suma de dos procesos estacionarios, y por tanto, siempre
será estacionario. A pesar de lo anterior, en las aplicaciones de MA,
supondremos que |θ| < 1 , de manera que la innovación pasada tenga
menos peso que la presente.
E(y t ) = μ .
V ar(y t ) = σy (1 + θ )
2 2
.
θ
ρ1 = ,
2
1+θ
Ejemplo MA(1)
y=y_c+10
plot(y,type="l",main="")
T6- Series Temporales
MODELIZACIÓN UNIVARIANTE DE SERIES TEMPORALES
20582 - Análisis de Datos 📊
7/12/2021
par(mfrow=c(1,2))
p orden de AR
Proceso MA(q) q orden de MA
~
y t = a t − θ1 a t−1 − θ2 a t−2 − … − θq a t−q
En notación de retardos:
~ 2 q
y t = (1 − θ1 B − θ2 B − … θq B )a t
∑
q
θi θk+i 20582 - Análisis de Datos 📊
, para . Además, .
i=0
ρk = q
k = 1, … , q θ0 = −1
∑ θi
7/12/2021
i=0
Ejemplo MA(q) en R
x<-rnorm(500)
sim1<-arima.sim(list(ma=c(1)),n=500,innov=x)
sim2<-arima.sim(list(ma=c(1,-1)),n=500,innov=x)
sim3<-arima.sim(list(ma=c(1,1,1)),n=500,innov=x)
sim4<-arima.sim(list(ma=c(1/4,1/4,1/4,1/4)),n=500,innov=x)
MA(1) MA(2)
7/12/2021
7/12/2021
##
## Call:
##
## Coefficients:
## ma1 intercept
## 0.9642 280.6464
##
ts.plot(AirPassengers)
7/12/2021
predict_MA$pred[1]
## [1] 425.1049
predict(MA,n.ahead=10)
## $pred
##
## $se
MODELIZACIÓN
MA_forecast_se UNIVARIANTE
<- predict(MA, n.ahead = DE SERIES TEMPORALES
10)$se
2
BIC = −2 log(σ
^e ) + k log(n),
MODELIZACIÓN
La fórmula UNIVARIANTE
del primer término de BIC es DE SERIES
la misma queTEMPORALES
la de AIC , solo
difiere en el segundo término. En el segundo término, se puede ver que el
20582 - Análisis de Datos 📊
valor BIC está influenciado por el tamaño de muestra y parámetros en el
modelo. 7/12/2021
AIC(AR)
## [1] 1428.179
AIC(MA)
## [1] 1618.863
BIC(AR)
## [1] 1437.089
BIC(MA)
## [1] 1627.772
Dado el valor más bajo de AIC y BIC en el modelo AR, deberíamos
preferir a este que al MA para el análisis de series de tiempo de los datos de
AirPassenger.
p ~
7/12/2021 q
(1 − ϕ1 B − … − ϕp B )y t = (1 − θ1 B − … θq B )a t ,
o en notación compacta:
~
Φp (B)y t = Θq (B)a t
Ejemplo ARMA(p,q) en R
x<-rnorm(200)
sim1<-arima.sim(list(ar=c(.1,.5,.2),ma=c(0.6,.4)),n=200,innov=x)
sim2<-arima.sim(list(ar=c(-0.4),ma=c(0.6,.1)),n=200,innov=x)
T6- Series Temporales
MODELIZACIÓN UNIVARIANTE DE SERIES TEMPORALES
20582 - Análisis de Datos 📊
7/12/2021
MODELIZACIÓN
¿Cómo harías esto en el UNIVARIANTE
ejemplo anterior? DE SERIES TEMPORALES
20582 - Análisis de Datos 📊
7/12/2021
Procesos Integrados
Considera el proceso
w t = ∇y t = y t − y t−1
Los valores de esta nueva serie oscilan alrededor de una media constante y
parecen corresponder a una serie estacionaria. En este caso, diremos que la
serie es integrada de orden 1.
y t = w t + y t−1
Por ejemplo:
w t = ∇y t , no es estacionario. Entonces,
2
zt = ∇w t = w t − w t−1 = y t − ∇y t−1 + y t−2 = ∇ y t
set.seed(250)
ts=arima.sim(list(order = c(1,1,2),
ma=c(0.32,0.47),
ar=0.8), n = 50)+20
nf <- layout(m)
plot.ts(ts)
acf(ts)
pacf(ts)
T6- Series Temporales
MODELIZACIÓN UNIVARIANTE DE SERIES TEMPORALES
20582 - Análisis de Datos 📊
7/12/2021
par(mfrow=c(1,2))
y=diff(ts)
plot(y)
acf(y)
T6- Series Temporales
MODELIZACIÓN UNIVARIANTE DE SERIES TEMPORALES
20582 - Análisis de Datos 📊
7/12/2021
ARIMA(1,1,0)
ARIMA(0,1,2)
ARIMA(1,1,2)
train=ts[1:40]
test=ts[41:50]
print(arimaModel_1);print(arimaModel_2);print(arimaModel_3)
7/12/2021
##
## Call:
##
## Coefficients:
## ar1
## 0.8012
## s.e. 0.0892
##
##
## Call:
##
## Coefficients:
## ma1 ma2
## 0.7408 1.000
##
##
## Call:
##
## Coefficients:
##
7/12/2021
Veamos las predicciones sobre las observaciones que no hemos utilizado
para ajustar los parámetros
#Modelo 1
ts.plot(ts)
forecast1=predict(arimaModel_1, 10)$pred
forecast1_se=predict(arimaModel_1, 10)$se
7/12/2021
#Modelo 2
ts.plot(ts)
forecast2=predict(arimaModel_2, 10)$pred
forecast2_se=predict(arimaModel_2, 10)$se
7/12/2021
#Modelo 3
ts.plot(ts)
forecast3=predict(arimaModel_3, 10)$pred
forecast3_se=predict(arimaModel_3, 10)$se
7/12/2021
Vemos que el segundo modelo tiene una ejecución similar al tres, a pesar
de no tener el mejor valor de probabilidad de AIC. Por tanto, necesitamos
medidas de la precisión de las estimaciones:
accuracy(forecast2, test)
accuracy(forecast3, test)
ME error medio
RMSE error cuadrático medio
7/12/2021
Según otra fuente consultada, wikipedia, William fue el sexto rey y murió en
1837 a los 71 años, sin embargo, el fichero indica 60 años.
edad_muerte=ts(kings)
edad_muerte
## Time Series:
## Start = 1
## End = 42
## Frequency = 1
## [1] 60 43 67 50 56 42 50 65 68 43 65 34 47 34 49 41 13 35 53 56 16 4
## [26] 59 86 55 68 51 33 49 67 77 81 67 71 81 68 70 77 56
- Análisis de Datos 📊
ylab="Edad muerte del Rey",
7/12/2021
main="Longevidad de los Reyes Británicos
según la dinastía")
plot.ts(diff_o1)
T6- Series Temporales
MODELIZACIÓN UNIVARIANTE DE SERIES TEMPORALES
20582 - Análisis de Datos 📊
7/12/2021
par(mfrow=c(1,2))
7/12/2021
AIC(modelo1,modelo2,modelo3)
## df AIC
## modelo1 5 348.5243
## modelo2 3 345.8136
## modelo3 6 350.5172
## df 20582
BIC
- Análisis de Datos 📊
## modelo1 5 357.0922
7/12/2021
## modelo2 3 350.9543
## modelo3 6 360.7987
par(mfrow=c(1,2))
plot(modelo2$residuals)
qqnorm(modelo2$residuals)
qqline(modelo2$residuals,col="red")
T6- Series Temporales
MODELIZACIÓN UNIVARIANTE DE SERIES TEMPORALES
20582 - Análisis de Datos 📊
7/12/2021
modelo2$coef
## ma1 intercept
## -0.7462804 0.3881635
library(forecast)
auto.arima(edad_muerte)
## Series: edad_muerte
## ARIMA(0,1,1)
##
## Coefficients:
##
##
ma1
-0.7218
Por ejemplo, para pronosticar las edades al morir de los próximos cinco
reyes ingleses, escribimos:
pronostico
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
plot(pronostico)
T6- Series Temporales
MODELIZACIÓN UNIVARIANTE DE SERIES TEMPORALES
20582 - Análisis de Datos 📊
7/12/2021
m 2
r
j
Q(m) = n(n + 2) ∑ ,
n − j
j=1
donde:
rj son las autocorrelaciones muestrales
m es el tiempo de retardo.
Rechazamos H0 si Q > χ
2
1−α,ν
, donde:
T6- Series Temporales
χ
2
1−α,ν
es el cuantil de la distribución ji-cuadrado para el nivel de
MODELIZACIÓN UNIVARIANTE
significancia α y ν los DE SERIES TEMPORALES
grados de libertad.
20582 - Análisis de Datos 📊
Cuando se aplica el test Ljung Box a los residuos de un modelo ARIMA, los
grados de libertad ν son m − p − q7/12/2021
, donde p y q son los parámetros del
ARIMA(p,q) model. En R el test está implementaddo en la función Box.test.
Box.test(residuals(modelo2),lag=2)
##
## Box-Pierce test
##
## data: residuals(modelo2)
Por ejemplo, en una serie mensual con estacionalidad anual, cada mes tiene
una media distinta, con lo cual la media no es estable.
El proceso diferenciado wt = ∇
D d
∇ yt es un proceso estacionario que
sigue el modelo ARMA estacional.
ARIMA (p, d, q) × (P , D, Q, )
parte regular parte estacional
Consideremos los datos del fichero papel que corresponden a las ventas
mensuales de papel correspondiente a 10 años.
papel=scan("papel.txt")
plot(papel,ylab='Venta papel',xlab='Tiempo',type='o',pch=16)
T6- Series Temporales
MODELIZACIÓN UNIVARIANTE DE SERIES TEMPORALES
20582 - Análisis de Datos 📊
7/12/2021
dpapel = diff(papel,1)
par(mfrow=c(2,1))
plot(dpapel,ylab='Valores',xlab='Tiempo',type='l',pch=16,main="Serie
sin tendencia")
acf(dpapel,60,main="")
par(mfrow=c(2,1))
d12dpapel = diff(dpapel,12)
plot(d12dpapel,ylab='Serie',xlab='Tiempo',type='l',pch=16,
7/12/2021
pacf(d12dpapel,60,main="")
T6- Series Temporales
MODELIZACIÓN UNIVARIANTE DE SERIES TEMPORALES
20582 - Análisis de Datos 📊
7/12/2021
a=c(0,1,1)
(modelo=arima(papel,a,seasonal=list(order=a,period=12)))
##
## Call:
##
## Coefficients:
## ma1 sma1
## -0.8402 -0.6360
##
plot(pronostico)
7/12/2021
tsdiag(modelo)
T6- Series Temporales
MODELIZACIÓN UNIVARIANTE DE SERIES TEMPORALES
20582 - Análisis de Datos 📊
7/12/2021