-
Notifications
You must be signed in to change notification settings - Fork 1
/
code.R
112 lines (85 loc) · 3.34 KB
/
code.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
library(forecast)
library(tseries)
#Lectura de datos
datos <- read.csv("./data/raw/DATOS_XNT_PROD_TRAD_1.csv", header = TRUE, sep = ";" ,dec = ".") |> as.data.frame()
dplyr::glimpse(datos) # Ver la estructura de la data
#Seleccionamos variables monetarias de la serie
XNT_Cereales <- dplyr::select(datos,XNT05)
#Indicamos que sea una serie de tiempo
Serie_XNT_Cereales <- ts(XNT_Cereales, start = c(1999,1), end = c(2021,8), frequency = 12)
print(Serie_XNT_Cereales)
####################################################################
########################## ESPECIFICACI?N ##########################
####################################################################
#Explorando datos
par(mfrow = c(2,1))
plot(Serie_XNT_Cereales)
boxplot(Serie_XNT_Cereales ~ cycle(Serie_XNT_Cereales))
par(mfrow = c(1,1))
####################################################################
########################## IDENTIFICACI?N ##########################
####################################################################
#test de raices unitaria
#Prueba de Dicker - Fuller Aumentado (ADF)
adf.test(Serie_XNT_Cereales,
alternative="stationary",
k=0
)
# Funciones de autocorrelación
par(mfrow = c(2,1))
acf(Serie_XNT_Cereales, lag.max=34)
pacf(Serie_XNT_Cereales, lag.max=34)
par(mfrow = c(1,1))
#Transfromaci?n de Box Cox
lamb.x <- BoxCox.lambda(Serie_XNT_Cereales)
lamb.x
##realiza la transformacion
tran_box <- function(xt,lambda){
if (lamb.x == 0) {
xt_box <- log(xt)
} else {
xt_box <- (xt^lamb.x - 1)/lamb.x
}
}
Serie_XNT_Cereales_boxCox <- tran_box(Serie_XNT_Cereales, lamb.x)
#Explorando datos
par(mfrow = c(2,1))
plot(Serie_XNT_Cereales)
plot(Serie_XNT_Cereales_boxCox)
par(mfrow = c(1,1))
#Funciones de autocorrelacion
par(mfrow = c(2,1))
acf(Serie_XNT_Cereales, lag.max=34, main = "Funci?n de autocorrelaci?n")
pacf(Serie_XNT_Cereales, lag.max=34, main = "Funci?n de autocorrelaci?n parcial")
par(mfrow = c(1,1))
par(mfrow = c(2,1))
acf(Serie_XNT_Cereales_boxCox, lag.max=34, main = "Funci?n de autocorrelaci?n")
pacf(Serie_XNT_Cereales_boxCox, lag.max=34, main = "Funci?n de autocorrelaci?n parcial")
par(mfrow = c(1,1))
####################################################################
############################ ESTIMACI?N ############################
####################################################################
#Serie_XNT_Cereales_boxCox = ts(Serie_XNT_Cereales_boxCox, start = c(1994,1), end = c(2021,8), frequency = 12)
#especificaci?n del modelo
modelo_1 = arma(diff(Serie_XNT_Cereales_boxCox), order = c(1,1))
summary(modelo_1)
modelo_1 = arma(diff(Serie_XNT_Cereales_boxCox), order = c(4,0))
summary(modelo_1)
####################################################################
############################ VALIDACI?N ############################
####################################################################
#Analisis de residuales
#Normalidad
residuos_modelo1 = modelo_1$residuals
par(mfrow = c(3,1))
hist(residuos_modelo1)
boxplot(residuos_modelo1)
plot(residuos_modelo1)
par(mfrow = c(1,1))
residuos_modelo1 = residuos_modelo1[!is.na(residuos_modelo1)]
jarque.bera.test(residuos_modelo1)
#Funciones de autocorrelacion
par(mfrow = c(2,1))
acf(residuos_modelo1, lag.max=34, main = "Funci?n de autocorrelaci?n")
pacf(residuos_modelo1, lag.max=34, main = "Funci?n de autocorrelaci?n parcial")
par(mfrow = c(1,1))