Documentos de Académico
Documentos de Profesional
Documentos de Cultura
González Galo-Individual2.2
González Galo-Individual2.2
2
Galo González Guerra
28/12/2023
La tabla de modelos ARIMA y derivados consisten en una herramienta esencial en el análisis de series
temporales, permitiendo modelar y predecir patrones complejos en datos secuenciales, contribuyendo
así al entendimiento de la dinámica temporal y facilitando la planificación y toma de decisiones en
una amplia gama de campos.
Estos modelos proporcionan una estructura flexible para capturar la autocorrelación, la estacionalidad
y las tendencias presentes en series temporales, permitiendo así la generación de pronósticos y la
comprensión de la dinámica subyacente de los datos a lo largo del tiempo.
Esta herramienta resulta invaluable en la exploración y el análisis de series temporales, así como en
la generación de pronósticos precisos, lo que facilita la toma de decisiones informadas en áreas como
la economía, las finanzas, la meteorología, la planificación de inventarios y muchos otros campos
donde se requiere comprender y anticipar el comportamiento de datos secuenciales a lo largo del
tiempo.
1. En la tabla siguiente, se presenta el número de matrimonios en Estados
Unidos. Calcule las primeras diferencias para tales datos. Grafique los datos
originales y los datos de diferencia como una serie de tiempo. ¿Hay tendencia
en cualquiera de estas series? Explique su respuesta
library(datasets)
library(help=fpp)
library(ggplot2)
library(stats)
library(astsa)
library(forecast)
library(foreign)
library(tseries)
library(readxl)
library(zoo)
MATRIMON <- read_excel("MATRIMONIOS_USA 2.1.xlsx")
attach(MATRIMON)
matricidio=ts(MATRIMON,start=c(1995),frequency=1)
matricidio
1
Time
Series:
Start =
1995
End = 2014
Frequency = 1
Resultado
[1,] 2413
[2,] 2407
[3,] 2403
[4,] 2396
[5,] 2403
[6,] 2443
[7,] 2371
[8,] 2362
[9,] 2334
[10,] 2362
[11,] 2336
[12,] 2344
[13,] 2384
[14,] 2244
[15,] 2358
[16,] 2329
[17,] 2345
[18,] 2254
[19,] 2245
[20,] 2279
matricidiodf<-diff(matricidio)
matricidiodf
Time
Series:
Start =
1996
End = 2014
Frequency = 1
Resultado
2
[1,] -6
[2,] -4
[3,] -7
[4,] 7
[5,] 40
[6,] -72
[7,] -9
[8,] -28
[9,] 28
[10,] -26
[11,] 8
[12,] 40
[13,] -140
[14,] 114
[15,] -29
[16,] 16
[17,] -91
[18,] -9
[19,] 34
a<-ndiffs(matricidio)
a
[1] 1
par(mfrow=c(1,1))
ts.plot(matricidio,xlab = "Años",ylab ="Marriages",
main="Matrimonios en Estados Unidos 1995-2014",col=12,lwd=2)+
grid(col = "black")
3
Matrimonios en Estados Unidos 1995−2014
2450
2400
Marriages
2350
2300
2250
Años
acf(matricidio,col="red",lwd=3)
4
Resultado
0.8
0.4
ACF
0.0
−0.4
0 2 4 6 8 10 12
Lag
5
Matrimonios en Estados Unidos 1995−2014
100
50
Marriages
0
−50
−150
Años
acf(matricidiodf,col="green",lwd=3)
6
Resultado
1.0
0.5
ACF
0.0
−0.5
0 2 4 6 8 10 12
Lag
Los datos de la serie de tiempo no parecen ser aleatorios. La visualización de la serie temporal inicial y su autocorrelación
no muestra un patrón de comportamiento aleatorio. Se observa cierta tendencia y patrones a lo largo del tiempo, lo que
sugiere que los datos no son aleatorios.
Podemos notar en el primer gráfico una clara tendencia descendente, lo cual se confirma al observar la gráfica de
autocorrelación simple. Esta situación indica que la serie no es estacionaria. Por ende, se sugiere aplicar diferenciación
para lograr la estacionariedad. Después de realizar una diferencia, específicamente una diferencia de orden 1, notamos que
la nueva gráfica no muestra una tendencia. Este patrón también se confirma al observar la gráfica de autocorrelación
simple, indicando así la estacionariedad de la serie, ya que su media y variabilidad se mantienen constantes a lo largo del
tiempo.
Para evaluar la estacionariedad de la serie, se ha aplicado la función $diff()$ para obtener la diferencia de la serie tempor al
original. Luego, se grafica esta serie diferenciada y su función de autocorrelación. Si la serie diferenciada no muestra
tendencia y su función de autocorrelación se acerca a cero rápidamente, indica que los datos podrían ser estacionarios
después de aplicar una diferencia de orden 1.
La estacionalidad en los datos implica patrones recurrentes a intervalos regulares. La estacionalidad puede observarse en la
periodicidad de los datos, lo cual puede analizarse mediante la función de autocorrelación o visualmente en la serie
temporal. Si hubiera un patrón repetitivo en la función de autocorrelación a intervalos regulares, indicaría la presencia de
estacionalidad en los datos.
7
2. A Allie White, la jefa de la oficina de préstamos del Dominion Bank, le
gustaría analizar el portafolios de préstamos del banco para los años 2001 a
2006.Los datos se presentan en la tabla siguiente.
library(datasets)
Bank <- read.csv("PRESTAMOS_TRIMESTRALES_DOMINION_BANK.csv")
Bank
Prestamos
1 2313
2 2495
3 2609
4 2792
5 2860
6 3099
7 3202
8 3161
9 3399
10 3471
11 3545
12 3851
13 4458
14 4850
15 5093
16 5318
17 5756
18 6013
19 6158
20 6289
21 6369
22 6568
23 6646
24 6861
8
a) Calcule con el entorno computacional R las autocorrelaciones para los retrasos de tiempo.
autocor_1 <- acf(Prestamos,col="red",lag.max = 24,lwd=3)
Prestamos
0.8
0.4
ACF
0.0
−0.4
0 1 2 3 4 5
Lag
autocor_1$acf
[,1]
[1,] 1.00000000
[2,] 0.89526248
[3,] 0.78839748
[4,] 0.67331136
[5,] 0.55815739
[6,] 0.43308269
[7,] 0.30941932
[8,] 0.18456656
[9,] 0.05696942
[10,] -0.05335579
[11,] -0.16126358
[12,] -0.26563945
[13,] -0.35120910
[14,] -0.39359168
[15,] -0.41280330
[16,] -0.42330233
[17,] -0.42620441
[18,] -0.40454220
[19,] -0.37671426
[20,] -0.34114592
[21,] -0.29147808
9
[22,] -0.23732753
[23,] -0.16836787
[24,] -0.09222121
b) Use R para graficar los datos y calcule las autocorrelaciones para los primeros seis retrasos
de tiempo. ¿Esta serie de tiempo es estacionaria?
par(mfrow=c(1,1))
ts.plot(Prestamos,x = "Años",main="Prestamos trimestrales Dominion Bank",col = "green",lwd = 2)+
grid(col = "black")
Time
10
Prestamos
0.8
0.4
ACF
0.0
−0.4
Lag
sr <- autocor_2$acf
sr
[,1]
[1,] 1.0000000
[2,] 0.8952625
[3,] 0.7883975
[4,] 0.6733114
[5,] 0.5581574
[6,] 0.4330827
[7,] 0.3094193
¿Esta serie de tiempo es estacionaria?
Utilizamos la Prueba o contraste de Dickey-Fuller (Prueba de estacionariedad).El contraste de Dickey-Fuller
permite conocer si es o no estacionaria una ST.
Paso 1: Planteamiento de hipótesis
H0 = ST sr es no estacionaria
H1 = ST sr es estacionaria
Paso 2: Definición del nivel de significancia
α = 0.05
(1 − α = 0.95)
11
Paso 3: Tamaño de la muestra y cálculos estadísticos
adf.test(sr, alternative = "stationary")
data: sr
Dickey-Fuller = -0.37073, Lag order = 1, p-value = 0.9805
alternative hypothesis: stationary
p value = 0.9805
Paso 4: Especificación de las regiones de rechazo y no rechazo
0.9805 > 0.05
Paso 5: Decisión estadística
Puesto que p-value es: 0.9805 > 0.05 No rechazo H0 (Hipótesis nula) por lo tanto la serie de tiempo llamada
sr no es estacionaria.
c) Calcule las primeras diferencias de los datos de préstamos trimestrales del Dominion Bank.
Prestamosdf <- diff(Prestamos)
Prestamosdf
[,1]
[1,] 1.00000000
[2,] 0.37563019
[3,] 0.06989871
[4,] 0.11278444
[5,] 0.13196390
[6,] -0.11558431
[7,] -0.35089349
e) Use R para graficar los datos diferenciados y para calcular sus autocorrelaciones de los
primeros seis retrasos de tiempo. ¿Esta serie es estacionaria?
## Gráfica de los datos diferenciados
par(mfrow=c(1,1))
ts.plot(Prestamosdf,x = "Años",main="Gráfica de los datos diferenciados",col = "red",lwd = 2)+
grid(col = "black")
12
Gráfica de los datos diferenciados
500
300
100
0
Time
13
Prestamos
0.8
0.4
ACF
0.0
−0.4
Lag
sr1 <-autocor_3$acf
sr1
[,1]
[1,] 1.00000000
[2,] 0.37563019
[3,] 0.06989871
[4,] 0.11278444
[5,] 0.13196390
[6,] -0.11558431
[7,] -0.35089349
¿Esta serie de tiempo es estacionaria?
Utilizamos la Prueba o contraste de Dickey-Fuller (Prueba de estacionariedad).El contraste de Dickey-Fuller
permite conocer si es o no estacionaria una ST.
Paso 1: Planteamiento de hipótesis
H0 = ST sr1 es no estacionaria
H1 = ST sr1 es estacionaria
Paso 2: Definición del nivel de significancia
α = 0.05
(1 − α = 0.95)
14
Paso 3: Tamaño de la muestra y cálculos estadísticos
adf.test(sr1, alternative = "stationary")
data: sr1
Dickey-Fuller = -7.4467, Lag order = 1, p-value = 0.01
alternative hypothesis: stationary
p value = 0.01
Paso 4: Especificación de las regiones de rechazo y no rechazo
0.01 < 0.05
Paso 5: Decisión estadística
Puesto que p-value es: 0.01 < 0.05 No rechazo H1 (Hipótesis alternativa) por lo tanto la serie de tiempo
llamada sr1 es estacionaria.
15
3. La tabla siguiente contiene las ventas semanales de un artículo alimenticio
para 52 semanas consecutivas
library(readr)
venta_s <- read_csv("ventas semanales.csv")
View(venta_s)
semanas<-ts(venta_s,frequency = 1)
2000
1000
0 10 20 30 40 50
semanas
acf(semanas)
16
Sales
0.2 0.4 0.6 0.8 1.0
ACF
−0.2
0 5 10 15
Lag
data: semanas
Dickey-Fuller = -2.27, Lag order = 3, p-value = 0.4658
alternative hypothesis: stationary
p-value = 0.5275
Paso 4: Especificación de las regiones de rechazo y no rechazo
17
0.5275 > 0.05
Paso 5: Decisión estadística
Puesto que p-value es: 0.5275 > 0.05 Rechazo la (Hipótesis alternativa) y no rechazo H0 (Hipótesis nula)
por lo tanto la serie de tiempo llamada Semanas es no estacionaria.
c) Usando R, calcule las autocorrelaciones de la serie de ventas para los 10 primeros retrasos
de tiempo. ¿El comportamiento de las autocorrelaciones es consistente con su respuesta al
inciso b)? Explique por qué
semana_10<-acf(semanas,lag.max = 10,col="orange",lwd=4)
Sales
0.2 0.4 0.6 0.8 1.0
ACF
−0.2
0 2 4 6 8 10
Lag
sem_10<-semana_10$acf
Series: sem_10
ARIMA(0,2,0)
18
AIC=-3.27 AICc=-2.7 BIC=-3.07
mod1 <- arima(sem_10, order =c(0,1,0))
mod3 <- arima(sem_10, order =c(1,0,0))
#Akaike
AIC(mod1,mod3)
df AIC
mod1 1 -1.792243
mod3 3 2.933929
#BIC
BIC(mod1,mod3)
df BIC
mod1 1 -1.489658
mod3 3 4.127615
ajuste <- auto.arima(venta_s)
predicciones <- forecast(ajuste, h = 52)
p_predict <- autoplot(predicciones)
p_predict
4000
3000
venta_s
2000
1000
0 25 50 75 100
Time
Método analítico para comprobar el correcto ajuste y garantizar que existe ruido blanco.
Paso 1: Planteamiento de hipótesis
19
H0 = El modelo estimado tiene un buen ajuste
H1 = El modelo estimado no tiene un buen ajuste
Paso 2: Definición del nivel de significancia
α = 0.05
(1 − α = 0.95)
Paso 3: Tamaño de la muestra y cálculos estadísticos
Box.test(sem_10, type = "Ljung-Box")
Box-Ljung test
data: sem_10
X-squared = 2.6035, df = 1, p-value = 0.1066
p value = 0.3399
Paso 4: Especificación de las regiones de rechazo y no rechazo
0.3399 > 0.05
Paso 5: Decisión estadística
Puesto que p-value es: 0.3399 > 0.05 Rechazo la (Hipótesis alternativa) y no rechazo H0 (Hipótesis nula)
por lo tanto el modelo estimado tiene un buen ajuste
¿El modelo aleatorio es adecuado para los datos de ventas?
Según los modelos Akaike y Bayesiano el que nos da menos error va a ser el modelo ARIMA(0,1,0), lo que
quiere decir que si es adecuado y tiene un buen ajuste para los datos de venta.
20
4. La tabla siguiente presenta los ingresos trimestrales de Southwest Airlines,
antes de partidas extraordinarias (millones de $) para los años de 2008 a 2019.
Ingresos <- read_excel("Ingresos trimestrales de Southwest Airlines.xlsx")
View(Ingresos)
a) Grafique los datos de ingresos como una serie de tiempo y describa cualquier patrón
(característica o componente) existente.
ingresos_t <- ts(Ingresos, start = c(2008,1),frequency = 4);ingresos_t
autoplot(ingresos_t)+
ggtitle("Ingresos trimestrales de Southwest Airlines")+
ylab("Ingresos en $")+
xlab("Periodo Trimestral Ene2008-Dic2019")
150
100
Ingresos en $
50
data: ingresos_t
Dickey-Fuller = -1.155, Lag order = 3, p-value = 0.9045
alternative hypothesis: stationary
Paso 1: Establecimiento de hipótesis
H0 ≡ La serie de tiempo no es estacionaria
H1 ≡ La serie de tiempo es estacionaria
Paso 2: Definición del nivel de significancia
α = 0.05
Paso 3: Descripción del tamaño de la muestra y cálculos estadísticos
Prueba Dicker-Fuller
pvalor > 0.05
Paso 4: Especificación de las regiones de no rechazo y rechazo
0.9045 > 0.05
Paso 5: Decisión estadística
No se rechaza la Hipótesis Nula.
Por lo tanto, la serie de tiempo no es estacionaria
c) Usando R, calcule las autocorrelaciones de la serie de ingresos para los primeros 10 retrasos
de tiempo. ¿El comportamiento de las autocorrelaciones es congruente con su elección
realizada en el inciso b)? Explique su respuesta
acf(x = ingresos_t,lag.max = 10, main="Función de Autocorrelación Simple", col="Orange")
22
Función de Autocorrelación Simple
−0.2
Lag
23
Función de Autocorrelación Parcial
0.8
0.6
0.4
Partial ACF
0.2
0.0
−0.4
Lag
En efecto la serie de tiempo no es estacionaria debido a que se observa que en la gráfica de la Función de
Autocorrelación Simple los 10 primeros retardos no están de forma constante. Y de igual manera en la gráfica de
la Función de Autocorrelación Parcial los retarnos no son constantes.
d) Use R o Excel para calcular las diferencias cuartas de los datos de ingresos en la tabla
anterior. Las diferencias cuartas se calculan diferenciando las observaciones separadas por
cuatro periodos. Con datos trimestrales, este procedimiento algunas veces es útil en la creación
de una serie estacionaria, a partir de una serie no estacionaria. Por lo tanto, los datos
diferenciados cuartos serán Y5 – Y1 = 19.64 – 0.17 = 19.47, Y6 – Y2 = 19.24 – 15.13 =
4.11, . . ., y así sucesivamente.
dif_4 <- diff(x = ingresos_t,differences = 4)
dif_4
24
Differencias <- read_excel("Diferencias cuadradas ingresos trimestrales.xlsx")
Differencias$DIF_4
200
100
Ingresos en $
−100
−200
Se puede observar que la serie de tiempo de la cuarta diferencia sobre ingresos trimestrales en el periodo
2008-2019 si es una serie estacionaria, ya que no presenta tendencia.
Y se puede comprobar al realizar una prueba de hipótesis con Dicker-Fuller
adf.test(dif_4)
25
Augmented Dickey-Fuller Test
data: dif_4
Conclusión
• Flexibilidad en la modelización: La tabla de modelos ARIMA y derivados ofrece una gama
amplia y flexible de configuraciones para adaptarse a diferentes tipos de datos temporales,
permitiendo la captura de complejos patrones de tendencia, estacionalidad y comportamientos
irregulares presentes en las series temporales.
• Herramienta para la predicción: Estos modelos proporcionan una base sólida para la generación
de pronósticos precisos y confiables en el tiempo. Al entender y modelar la estructura inherente
de los datos, se pueden hacer proyecciones futuras más precisas, lo que resulta fundamental para
la planificación y toma de decisiones en diversas áreas.
• Selección del modelo óptimo: La tabla permite comparar diferentes especificaciones de modelos
ARIMA y sus derivados mediante métricas de desempeño como el error cuadrático medio (ECM)
o el coeficiente de determinación (R cuadrado), facilitando la identificación del modelo más
apropiado para una serie temporal específica.
• Aplicaciones en diversos campos: Estos modelos encuentran aplicaciones en numerosos campos
como la economía, las finanzas, la meteorología, la demanda de productos, entre otros, donde la
comprensión y predicción de tendencias temporales son fundamentales para la toma de decisiones
estratégicas.
• Mejora continua: La experimentación con diferentes configuraciones de modelos y la evaluación
constante de su rendimiento a lo largo del tiempo permite una mejora continua en la capacidad de
predicción y comprensión de las series temporales, lo que lleva a un refinamiento de los
pronósticos y una toma de decisiones más informada.
26