I. Intoducción

El analisis de series temporales, es una forma de analizar datos recolectados en un intervalo de tiempo determinado, lo que muestra cómo cambian las variables a lo largo del tiempo.

II. Background

Según explica un artículo de Forbes (2023), se prevé que en el 2024 haya alrededor de 9,050 millones de dólares de inversión extranjera en la industria manufacturera, gracias al nearshoring. Se espera que lleguen nuevos participantes que no habían estado previamente en México, lo cual conlleva a un buen desarrollo de la industria, la educación y la productividad en el país.

Asimismo, Deloitte (2023), explica que una de las razones por las que se está presentando la oportunidad del nearshoring en México es debido al aumento de los aranceles de Estados Unidos hacia China, el T-MEC que ha impulsado a productores a relocalizar su cadena de suministro en otros lugares, el cierre de fronteras por el COVID-19, así como la falta de logística debido a la guerra de Ucrania. Esto representa un pronóstico de un aumento del 3% al PIB de México. De igual forma se recalca que esta tendencia de nearshoring se inclina más a la industria manufacturera.

III. Datos y Metodología

Nombre | Descripción Variable |
IED_Flujos | Flujos de Inversión | Extranjera Directa.
Exportaciones | Exportaciones No | Petróleras.
Empleo | Porcentaje de la | Población | Económicamente Activa | Ocupada.
Educación Promedio de Años de. Educación.
Saldo_Diario | Salario mínimo en pesos | diarios.
Innovación | Número de patentes | solicitadas en México.
Inseguridad_ | Robos con violencia en Robo | casa habitación, | maquinaria, autopartes | principalmente.
Inseguridad_ | Número de homicidios. Homicidio |
Tipo_de_ Cambio Tipo de cambio FIX.
Densidad_ Carretera Longitud de kilómetros de carretera pavimentada por cada km2 de superficie territorial.
Densidad_ Población El número de población se divide entre la extensión territorial de México en km2.
CO2_ Emisiones Emisiones de Dióxido de Carbono.
PIB_Per_ Cápita Producto Interno Bruto dividido por la población
INPC Índice Nacional de Precios al Consumidor
library(readxl)
nsh_st_d <- read_excel("C:/Users/HP/OneDrive - FEMSA Comercio/Escritorio/nearshoring_bdd.xlsx",  sheet = "Datos Series de Tiempo")
data <- read_excel("C:/Users/HP/OneDrive - FEMSA Comercio/Escritorio/nearshoring_bdd.xlsx", sheet = "Datos")
## New names:
## • `` -> `...16`
## • `` -> `...17`

Esta base de datos es una base imbalanceada, ya que cuenta con datos nulos.

# Manipulación de datos
str(data)
## tibble [26 × 17] (S3: tbl_df/tbl/data.frame)
##  $ Año                  : num [1:26] 1997 1998 1999 2000 2001 ...
##  $ IED_Flujos           : num [1:26] 12146 8374 13960 18249 30057 ...
##  $ Exportaciones        : num [1:26] 9088 9875 10990 12483 11300 ...
##  $ Empleo               : num [1:26] NA NA NA 97.8 97.4 ...
##  $ Educación            : num [1:26] 7.2 7.31 7.43 7.56 7.68 ...
##  $ Salario_Diario       : num [1:26] 24.3 31.9 31.9 35.1 37.6 ...
##  $ Innovación           : num [1:26] 11.3 11.4 12.5 13.1 13.5 ...
##  $ Inseguridad_Robo     : num [1:26] 267 315 273 217 215 ...
##  $ Inseguridad_Homicidio: num [1:26] 14.6 14.3 12.6 10.9 10.2 ...
##  $ Tipo_de_Cambio       : num [1:26] 8.06 9.94 9.52 9.6 9.17 ...
##  $ Densidad_Carretera   : num [1:26] 0.0521 0.053 0.055 0.0552 0.0565 ...
##  $ Densidad_Población   : num [1:26] 47.4 48.8 49.5 50.6 51.3 ...
##  $ CO2_Emisiones        : num [1:26] 3.68 3.85 3.69 3.87 3.81 ...
##  $ PIB_Per_Cápita       : num [1:26] 127570 126739 129165 130875 128083 ...
##  $ INPC                 : num [1:26] 33.3 39.5 44.3 48.3 50.4 ...
##  $ ...16                : num [1:26] 2943 NA NA NA NA ...
##  $ ...17                : num [1:26] 0.73 NA NA NA NA ...
colSums(is.na(data)) 
##                   Año            IED_Flujos         Exportaciones 
##                     0                     0                     0 
##                Empleo             Educación        Salario_Diario 
##                     3                     3                     0 
##            Innovación      Inseguridad_Robo Inseguridad_Homicidio 
##                     2                     0                     1 
##        Tipo_de_Cambio    Densidad_Carretera    Densidad_Población 
##                     0                     0                     0 
##         CO2_Emisiones        PIB_Per_Cápita                  INPC 
##                     3                     0                     0 
##                 ...16                 ...17 
##                    25                    25

Hay 3 missing values en Empleo, Educación, y C02_Emisiones, 2 missing values en Tipo_de_Cambio, y 1 missing value en Inseguridad_Homicidio. Los valores nulos se reemplazan con la mediana.

filled_df <- data %>%
  mutate_all(function(x) ifelse(is.na(x), median(x, na.rm = TRUE), x))

#Convertir de vuelta a data frame
data <- as.data.frame(filled_df)

Se cambian las variables con valores nominales a valores reales (2018=100) al dividirlos entre el INPC. Las variables que están en dolares se multiplican por el tipo de cambio de ese año para convertirlos a pesos.

data$IED_Flujos <- ((data$IED_Flujos * data$Tipo_de_Cambio) / data$INPC) * 100
data$Exportaciones <- ((data$Exportaciones * data$Tipo_de_Cambio) / data$INPC) * 100
data$Salario_Diario <- (data$Salario_Diario / data$INPC) * 100

i)

Se visualiza el comportamiento de los flujos de inversión extranjera directa a través de los años.

nsh_st <-ts(nsh_st_d$IED_Flujos, nsh_st_d$Año,start=1999,end=2023,frequency=4)

dygraph(nsh_st, main="Mexico's Cumulative CO2", ylab="Precipitation") %>% 
  dyOptions(colors = RColorBrewer::brewer.pal(4, "Dark2")) %>%
  dyShading(from = "1997-1-1",to = "2019-12-31", color = "#FFE6E6") %>%
  dyShading(from="2020-1-1", to="2023-12-31", color="#CCEBD6") %>%
  dyEvent("1999-1-1","Since 1999,se observa un incremento de IED",labelLoc="bottom")
# Se visualiza el comportamiento de los flujos de inversión extranjera directa a través de los años. 

ts_data <- ts(nsh_st_d$IED_Flujos, start = c(1999), end = c(2023), frequency = 4) # annual time series data
plot(ts_data, type="l",col="blue", lwd=2, xlab ="Year",ylab ="IED Flujos", main = "IED Flujos") # grafica 1 - time series 

ts_plot(ts_data, title = "Flujos de Inversión Extranjera Directa. ",  Xtitle = "Years", Ytitle = "Flujos de Inversión Extranjera Directa. ") # grafica 2 -time series
#Verifciar formato de series de tiemmpo
is.ts(ts_data)
## [1] TRUE
frequency(ts_data)
## [1] 4
ts.plot(ts_data, xlab = "Year", ylab = "new_fdi", main = "Flujos de Inversión Extranjera Directa. ") # grafica 3 - time series
abline(reg=lm(ts_data~time(ts_data)))

#ver donde inicia la serie y su tendencia
  • Podemos observar como el comportamiento de Flujos de Inversión Extranjera directa se comporta en un aumento general, sin embargo si tiende a tener leves disminuciones de forma constante.

Procedemos a descomponer la serie de tiempo

decompose_ts <- decompose(nsh_st, type = "multiplicative")
decompose_ts
## $x
##           Qtr1      Qtr2      Qtr3      Qtr4
## 1999  34242.55  32336.35  28837.48  37516.56
## 2000  44164.72  46629.81  29345.77  55041.63
## 2001  32996.99  47852.50 149586.77  45164.05
## 2002  52510.91  64846.40  63352.48  68989.32
## 2003  44392.48  62129.06  28242.27  69632.19
## 2004 105042.08  48816.39  36851.14  89922.56
## 2005  72423.05  72551.52  58684.22  72637.72
## 2006  80879.00  72151.45  25520.15  52363.88
## 2007 117938.53  66926.65  83182.85  85178.59
## 2008 117716.93 115371.27  77734.95  95537.77
## 2009  79635.64  79490.68  31272.56  42430.46
## 2010 107996.43 115169.89  48695.90  64787.30
## 2011 117857.42  93621.10  60805.82  86024.97
## 2012 102510.21  73020.19  74502.96  32706.55
## 2013 138119.80 274619.29  54596.94 164424.11
## 2014 203752.76  80728.08  47476.76 115262.00
## 2015 210441.55 115428.36 167078.72 130308.86
## 2016 264609.91 128336.27  89211.98 162330.84
## 2017 271935.32 134480.15 125541.25 139383.42
## 2018 276519.55 188265.98  81240.21 124272.76
## 2019 286398.39 122759.66 155084.54  88321.75
## 2020 335062.86 145406.51  26724.77  55095.93
## 2021 332478.45 120708.77 131699.07  62456.21
## 2022 442532.68 158503.64  67555.59  34504.20
## 2023  34242.55                              
## 
## $seasonal
##           Qtr1      Qtr2      Qtr3      Qtr4
## 1999 1.4132459 1.0054375 0.7252979 0.8560186
## 2000 1.4132459 1.0054375 0.7252979 0.8560186
## 2001 1.4132459 1.0054375 0.7252979 0.8560186
## 2002 1.4132459 1.0054375 0.7252979 0.8560186
## 2003 1.4132459 1.0054375 0.7252979 0.8560186
## 2004 1.4132459 1.0054375 0.7252979 0.8560186
## 2005 1.4132459 1.0054375 0.7252979 0.8560186
## 2006 1.4132459 1.0054375 0.7252979 0.8560186
## 2007 1.4132459 1.0054375 0.7252979 0.8560186
## 2008 1.4132459 1.0054375 0.7252979 0.8560186
## 2009 1.4132459 1.0054375 0.7252979 0.8560186
## 2010 1.4132459 1.0054375 0.7252979 0.8560186
## 2011 1.4132459 1.0054375 0.7252979 0.8560186
## 2012 1.4132459 1.0054375 0.7252979 0.8560186
## 2013 1.4132459 1.0054375 0.7252979 0.8560186
## 2014 1.4132459 1.0054375 0.7252979 0.8560186
## 2015 1.4132459 1.0054375 0.7252979 0.8560186
## 2016 1.4132459 1.0054375 0.7252979 0.8560186
## 2017 1.4132459 1.0054375 0.7252979 0.8560186
## 2018 1.4132459 1.0054375 0.7252979 0.8560186
## 2019 1.4132459 1.0054375 0.7252979 0.8560186
## 2020 1.4132459 1.0054375 0.7252979 0.8560186
## 2021 1.4132459 1.0054375 0.7252979 0.8560186
## 2022 1.4132459 1.0054375 0.7252979 0.8560186
## 2023 1.4132459                              
## 
## $trend
##           Qtr1      Qtr2      Qtr3      Qtr4
## 1999        NA        NA  34473.51  37500.46
## 2000  39350.68  41604.85  42399.52  41156.39
## 2001  56339.35  70134.77  71339.32  75902.79
## 2002  67247.74  59446.62  61409.97  60055.50
## 2003  55327.06  51018.64  58680.20  64597.32
## 2004  64009.34  67621.75  66080.66  64970.17
## 2005  70666.20  71234.73  70131.12  71138.11
## 2006  66942.59  60262.85  62361.06  66340.40
## 2007  72895.14  84204.82  88278.96  94306.83
## 2008  99681.42 100295.33  96830.07  87584.83
## 2009  77291.96  64845.75  61752.44  69757.43
## 2010  76395.25  81367.77  85395.00  83934.03
## 2011  82754.17  86922.62  87658.93  83165.41
## 2012  82302.44  77349.78  75136.18 104787.26
## 2013 127498.90 141475.34 166144.16 150111.87
## 2014 124985.45 117950.16 112641.00 117814.63
## 2015 137102.41 153933.52 162585.42 170969.95
## 2016 162850.10 157119.50 162037.92 163721.59
## 2017 169030.73 170703.46 168408.06 175704.32
## 2018 176889.92 169463.46 168809.48 161856.04
## 2019 162898.29 167634.96 169224.14 178138.06
## 2020 164923.94 144725.74 140249.47 136839.20
## 2021 146873.77 160915.59 175592.40 194073.54
## 2022 190779.96 179268.03 124737.76        NA
## 2023        NA                              
## 
## $random
##           Qtr1      Qtr2      Qtr3      Qtr4
## 1999        NA        NA 1.1533350 1.1687004
## 2000 0.7941555 1.1147169 0.9542631 1.5623232
## 2001 0.4144239 0.6786035 2.8909980 0.6951073
## 2002 0.5525277 1.0849348 1.4223559 1.3419793
## 2003 0.5677461 1.2111858 0.6635775 1.2592511
## 2004 1.1611872 0.7179996 0.7688827 1.6168562
## 2005 0.7251825 1.0129771 1.1537032 1.1928249
## 2006 0.8549005 1.1908040 0.5642262 0.9220841
## 2007 1.1448257 0.7905094 1.2991526 1.0551254
## 2008 0.8356165 1.1440944 1.1068522 1.2742745
## 2009 0.7290468 1.2192131 0.6982210 0.7105654
## 2010 1.0002885 1.4077690 0.7862189 0.9017136
## 2011 1.0077419 1.0712377 0.9563846 1.2083663
## 2012 0.8813262 0.9389204 1.3671243 0.3646221
## 2013 0.7665346 1.9306129 0.4530716 1.2795794
## 2014 1.1535231 0.6807239 0.5811231 1.1428880
## 2015 1.0860971 0.7458032 1.4168475 0.8903709
## 2016 1.1497419 0.8123893 0.7590844 1.1582755
## 2017 1.1383668 0.7835393 1.0277964 0.9267135
## 2018 1.1061271 1.1049451 0.6635257 0.8969409
## 2019 1.2440456 0.7283430 1.2635421 0.5791989
## 2020 1.4375563 0.9992703 0.2627219 0.4703550
## 2021 1.6017751 0.7460804 1.0340952 0.3759465
## 2022 1.6413260 0.8793895 0.7467013        NA
## 2023        NA                              
## 
## $figure
## [1] 1.4132459 1.0054375 0.7252979 0.8560186
## 
## $type
## [1] "multiplicative"
## 
## attr(,"class")
## [1] "decomposed.ts"

Tests

ii) Stationary test

adf.test(nsh_st) # H0: Non-stationary and HA: Stationary. p-values < 0.05 reject the H0. 
## 
##  Augmented Dickey-Fuller Test
## 
## data:  nsh_st
## Dickey-Fuller = -2.7268, Lag order = 4, p-value = 0.276
## alternative hypothesis: stationary

Contamos con un p-value de 0.276, P-Value > 0.05, Se rechaza la hipotesis HO, es estacionaria.

iii) Graficas acf

acf(nsh_st,main= "Significant Autocorrelation")    

Contamos con una correlación significativa, como lo podemos ver desde el primer lag que se hace.

IV. Analisis de regresiones de series temporales

a. ARMA 1

ARMA: Autoregressive Moving Average (primarly used to forecasting time series data)

Vamos a hacerle un fit a nuestro modelo ARMA para hacer un modelo predictivo para predecir los Flujos de Inversión Extranjera (IED_Flujos)

ARMA1 <- arima(nsh_st, order = c(1,0,1)) 
print(ARMA1)
## 
## Call:
## arima(x = nsh_st, order = c(1, 0, 1))
## 
## Coefficients:
##          ar1      ma1  intercept
##       0.9820  -0.8835   98006.56
## s.e.  0.0216   0.0457   32311.79
## 
## sigma^2 estimated as 4.688e+09:  log likelihood = -1218.05,  aic = 2444.1
Box.test(ARMA1$residuals,lag=1,type="Ljung-Box")      # Box.test is to examine the hypothesis of independence of a regression residuals. 
## 
##  Box-Ljung test
## 
## data:  ARMA1$residuals
## X-squared = 0.31121, df = 1, p-value = 0.5769
# Ho: Regression Residuals are independently distributed. 
# Ha: Regression Residuals are not independently distributed, but exhibit serial correlation. 

Teniendo un p-value, en el box test, de 0.5769, no se rechaza la hipotesis nula, nuestros errores no estan correlacionados.

Pronostico - graficando las series con los fitted values.

ts.plot(nsh_st)
ARMA_fit <- nsh_st - residuals(ARMA1)
points(ARMA_fit, type = "l", col = 2, lty = 2)

b. ARMA 2

# Se realiza un segundo fit a nuestro modelo ARMA para hacer un modelo predictivo para predecir los Flujos de Inversión Extranjera, en este caso haciendo uso de una p = 1, y una q = 0

#Entr
ARMA2 <- arima(nsh_st, order = c(1,0,0)) 
print(ARMA2)
## 
## Call:
## arima(x = nsh_st, order = c(1, 0, 0))
## 
## Coefficients:
##          ar1   intercept
##       0.2454  103491.190
## s.e.  0.0987    9944.833
## 
## sigma^2 estimated as 5.496e+09:  log likelihood = -1225.39,  aic = 2456.79
Box.test(ARMA2$residuals,lag=1,type="Ljung-Box")      # Box.test is to examine the hypothesis of independence of a regression residuals. 
## 
##  Box-Ljung test
## 
## data:  ARMA2$residuals
## X-squared = 0.0028614, df = 1, p-value = 0.9573
# Ho: Regression Residuals are independently distributed. 
# Ha: Regression Residuals are not independently distributed, but exhibit serial correlation. 
# Teniendo un p-value de 0.99, no se rechaza la hipotesis nula, porque nuestros errores no estan correlacionados. 
# Cuenta con un aic de 1810.94 

Visualziando ambos modelos ARMA, podemos ver que el ARMA1 cuenta con un p-value de 0.5769 y un aic de 2444.1, mientras que ARMA2 cuenta con un p-value de 0.9573 y un aic de 2456.79.

Tomando en cuenta lo anterior, el mejor modelo es ARMA1, ya que cuenta con un aic menor que el de ARMA2, lo que quiere decir que tiene un mejor ajuste general al conjunto de datos.

PREDICCION

#Pronostico - graficando las series con los fitted values. 
ts.plot(nsh_st)
ARMA_fit <- nsh_st - residuals(ARMA1)
points(ARMA_fit, type = "l", col = 2, lty = 2)

#Usando predict() para ahcer un 1-step forecast
predict_ARMA <- predict(ARMA1)

#Obteniendo el 1-step forecast usando $pred[1]
predict_ARMA$pred[1]
## [1] 130179.7
#Alternativamente usando predict para hacer un 1-step por 10-step forecasts
predict(ARMA1, n.ahead = 5)
## $pred
##          Qtr1     Qtr2     Qtr3     Qtr4
## 2023          130179.7 129602.0 129034.6
## 2024 128477.5 127930.3                  
## 
## $se
##          Qtr1     Qtr2     Qtr3     Qtr4
## 2023          68466.45 68798.26 69116.75
## 2024 69422.52 69716.14
#Se estiman los proximos 5 periodos
#Graficando AirPassenger series, más el pronocstico y su intervalo de predicción de 95% 
ts.plot(nsh_st, xlim = c(1997, 2022))
ARMA_forecast <- predict(ARMA1, n.ahead = 5)$pred
ARMA_forecast_se <- predict(ARMA1, n.ahead = 5)$se
points(ARMA_forecast, type = "l", col = 2)
points(ARMA_forecast - 2*ARMA_forecast_se, type = "l", col = 2, lty = 2)
points(ARMA_forecast + 2*ARMA_forecast_se, type = "l", col = 2, lty = 2)

data_df <- as.data.frame(data)
data_df <- dplyr::select(data_df, Año, IED_Flujos)
data_df[nrow(data_df)+1,] <-c(23,108.9799)
data_df[nrow(data_df)+1,] <-c(24,108.6827)
data_df[nrow(data_df)+1,] <-c(25,108.4058)
data_df[nrow(data_df)+1,] <-c(26,108.1477)
data_df[nrow(data_df)+1,] <-c(27,107.9073)

nsh_st_forecast <- ts(data_df$IED_Flujos, start = c(1997), end = c(2027), frequency = 4) # Anual time series data
plot(nsh_st_forecast, type="l",col="blue", lwd=2, xlab ="Year",ylab ="Flujos de Inversión Extranjera", main = "Flujos de Inversión Extranjera en México") 

autoplot(forecast(ARMA1))

b. VAR

  1. Graficar las variables de interes
# plotting time series data
nsh_IED_var <- ts(data$IED_Flujos, start = c(1997), end = c(2022), frequency = 1)
nsh_Innovación_var <- ts(data$Innovación, start = c(1997), end = c(2022), frequency = 1)
nsh_Salario_Diario_var   <- ts(data$Salario_Diario, start = c(1997), end = c(2022), frequency = 1)
nsh_Tipo_de_Cambio_var <- ts(data$Tipo_de_Cambio, start = c(1997), end = c(2022), frequency = 1)
nsh_Empleo_var <- ts(data$Empleo, start = c(1997), end = c(2022), frequency = 1)
par(mfrow=c(2,3))
plot(nsh_IED_var,type="l",col="blue",lwd=2,xlab="Year",ylab="IED",main="Inversión Extranjera directa")
plot(nsh_Innovación_var,type="l",col="blue",lwd=2,xlab="Year",ylab="Innovación",main="Innovación")
plot(nsh_Salario_Diario_var,type="l",col="blue",lwd=2,xlab="Year",ylab="Salario Diario",main="Salario Diario")
plot(nsh_Tipo_de_Cambio_var,type="l",col="blue",lwd=2,xlab="Year",ylab="Tipo de cambio",main="Tipo de cambio")
plot(nsh_Empleo_var,type="l",col="blue",lwd=2,xlab="Year",ylab="Empleo",main="Nivel de empleo")

  1. Verificar si las variables son estacionarias o no
# it is important to assess whether the variables under study are stationary or not
adf.test(data$IED_Flujos)                # valor de 0.15 estacionaria
## 
##  Augmented Dickey-Fuller Test
## 
## data:  data$IED_Flujos
## Dickey-Fuller = -2.0122, Lag order = 2, p-value = 0.5677
## alternative hypothesis: stationary
adf.test(data$Innovación)                # non-stationary valor de 0.02
## 
##  Augmented Dickey-Fuller Test
## 
## data:  data$Innovación
## Dickey-Fuller = -3.8938, Lag order = 2, p-value = 0.02901
## alternative hypothesis: stationary
adf.test(data$Salario_Diario)                # estacionaria pvalue de .99
## Warning in adf.test(data$Salario_Diario): p-value greater than printed p-value
## 
##  Augmented Dickey-Fuller Test
## 
## data:  data$Salario_Diario
## Dickey-Fuller = 4.8185, Lag order = 2, p-value = 0.99
## alternative hypothesis: stationary
adf.test(data$Tipo_de_Cambio)                  # estacionaria  p value de 0.4244
## 
##  Augmented Dickey-Fuller Test
## 
## data:  data$Tipo_de_Cambio
## Dickey-Fuller = -2.3883, Lag order = 2, p-value = 0.4244
## alternative hypothesis: stationary
adf.test(data$Empleo)                       # no estacionaria 0.8077
## 
##  Augmented Dickey-Fuller Test
## 
## data:  data$Empleo
## Dickey-Fuller = -1.3823, Lag order = 2, p-value = 0.8077
## alternative hypothesis: stationary
  1. Estimar el modelo VAR
nsh_var_data <- cbind(nsh_IED_var,nsh_Innovación_var,nsh_Salario_Diario_var,nsh_Tipo_de_Cambio_var, nsh_Empleo_var)
colnames(nsh_var_data) <- cbind("nsh_IED_var","nsh_Innovación_var","nsh_Salario_Diario_var","nsh_Tipo_de_Cambio_var", "nsh_Empleo_var")
# this line will automatically generate the preferred lag order based on the multivariate iterations of the Akaike Information Criterion - AIC. 
# Selection of lag order might be related to the lowest AIC shown.    
lag_selection_var <- VARselect(nsh_var_data,lag.max=2,type="const")
lag_selection_var$selection
## AIC(n)  HQ(n)  SC(n) FPE(n) 
##      2      2      1      2
lag_selection_var$criteria
##                   1            2
## AIC(n) 2.538228e+01 2.504881e+01
## HQ(n)  2.577295e+01 2.576505e+01
## SC(n)  2.685485e+01 2.774852e+01
## FPE(n) 1.114017e+11 1.093122e+11
# We estimate the VAR model. The p option refers to the number of lags used.
var_model_1 <- VAR(nsh_var_data,p=2,type="const",season=NULL,exog=NULL) 
summary(var_model_1)
## 
## VAR Estimation Results:
## ========================= 
## Endogenous variables: nsh_IED_var, nsh_Innovación_var, nsh_Salario_Diario_var, nsh_Tipo_de_Cambio_var, nsh_Empleo_var 
## Deterministic variables: const 
## Sample size: 24 
## Log Likelihood: -415.858 
## Roots of the characteristic polynomial:
## 1.107 1.107 1.028 0.7261 0.7261 0.6642 0.6642 0.4579 0.4579 0.1067
## Call:
## VAR(y = nsh_var_data, p = 2, type = "const", exogen = NULL)
## 
## 
## Estimation results for equation nsh_IED_var: 
## ============================================ 
## nsh_IED_var = nsh_IED_var.l1 + nsh_Innovación_var.l1 + nsh_Salario_Diario_var.l1 + nsh_Tipo_de_Cambio_var.l1 + nsh_Empleo_var.l1 + nsh_IED_var.l2 + nsh_Innovación_var.l2 + nsh_Salario_Diario_var.l2 + nsh_Tipo_de_Cambio_var.l2 + nsh_Empleo_var.l2 + const 
## 
##                             Estimate Std. Error t value Pr(>|t|)  
## nsh_IED_var.l1            -1.920e-01  2.746e-01  -0.699   0.4966  
## nsh_Innovación_var.l1      8.109e+04  3.218e+04   2.520   0.0256 *
## nsh_Salario_Diario_var.l1 -5.841e+02  6.185e+03  -0.094   0.9262  
## nsh_Tipo_de_Cambio_var.l1  5.431e+03  2.358e+04   0.230   0.8214  
## nsh_Empleo_var.l1         -1.393e+03  4.777e+04  -0.029   0.9772  
## nsh_IED_var.l2             1.980e-01  3.106e-01   0.638   0.5348  
## nsh_Innovación_var.l2     -6.893e+04  3.952e+04  -1.744   0.1047  
## nsh_Salario_Diario_var.l2 -8.173e+03  7.293e+03  -1.121   0.2827  
## nsh_Tipo_de_Cambio_var.l2  3.155e+04  1.915e+04   1.648   0.1233  
## nsh_Empleo_var.l2          1.928e+04  5.102e+04   0.378   0.7117  
## const                     -1.185e+06  3.795e+06  -0.312   0.7598  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## 
## Residual standard error: 105900 on 13 degrees of freedom
## Multiple R-Squared: 0.6238,  Adjusted R-squared: 0.3344 
## F-statistic: 2.156 on 10 and 13 DF,  p-value: 0.09759 
## 
## 
## Estimation results for equation nsh_Innovación_var: 
## =================================================== 
## nsh_Innovación_var = nsh_IED_var.l1 + nsh_Innovación_var.l1 + nsh_Salario_Diario_var.l1 + nsh_Tipo_de_Cambio_var.l1 + nsh_Empleo_var.l1 + nsh_IED_var.l2 + nsh_Innovación_var.l2 + nsh_Salario_Diario_var.l2 + nsh_Tipo_de_Cambio_var.l2 + nsh_Empleo_var.l2 + const 
## 
##                             Estimate Std. Error t value Pr(>|t|)  
## nsh_IED_var.l1            -9.797e-07  2.466e-06  -0.397   0.6976  
## nsh_Innovación_var.l1      8.272e-01  2.890e-01   2.862   0.0133 *
## nsh_Salario_Diario_var.l1  1.165e-02  5.555e-02   0.210   0.8372  
## nsh_Tipo_de_Cambio_var.l1  4.988e-02  2.118e-01   0.236   0.8175  
## nsh_Empleo_var.l1         -1.107e-01  4.290e-01  -0.258   0.8005  
## nsh_IED_var.l2             2.348e-06  2.789e-06   0.842   0.4152  
## nsh_Innovación_var.l2     -4.926e-01  3.549e-01  -1.388   0.1885  
## nsh_Salario_Diario_var.l2 -2.511e-02  6.550e-02  -0.383   0.7077  
## nsh_Tipo_de_Cambio_var.l2 -8.886e-02  1.720e-01  -0.517   0.6140  
## nsh_Empleo_var.l2         -6.541e-02  4.583e-01  -0.143   0.8887  
## const                      2.666e+01  3.408e+01   0.782   0.4480  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## 
## Residual standard error: 0.9514 on 13 degrees of freedom
## Multiple R-Squared: 0.4649,  Adjusted R-squared: 0.05323 
## F-statistic: 1.129 on 10 and 13 DF,  p-value: 0.4104 
## 
## 
## Estimation results for equation nsh_Salario_Diario_var: 
## ======================================================= 
## nsh_Salario_Diario_var = nsh_IED_var.l1 + nsh_Innovación_var.l1 + nsh_Salario_Diario_var.l1 + nsh_Tipo_de_Cambio_var.l1 + nsh_Empleo_var.l1 + nsh_IED_var.l2 + nsh_Innovación_var.l2 + nsh_Salario_Diario_var.l2 + nsh_Tipo_de_Cambio_var.l2 + nsh_Empleo_var.l2 + const 
## 
##                             Estimate Std. Error t value Pr(>|t|)   
## nsh_IED_var.l1             4.150e-06  8.749e-06   0.474  0.64310   
## nsh_Innovación_var.l1     -6.316e-01  1.025e+00  -0.616  0.54854   
## nsh_Salario_Diario_var.l1  6.819e-01  1.971e-01   3.459  0.00423 **
## nsh_Tipo_de_Cambio_var.l1  1.377e-01  7.513e-01   0.183  0.85744   
## nsh_Empleo_var.l1          2.334e+00  1.522e+00   1.533  0.14919   
## nsh_IED_var.l2             6.604e-06  9.896e-06   0.667  0.51622   
## nsh_Innovación_var.l2      5.463e-01  1.259e+00   0.434  0.67152   
## nsh_Salario_Diario_var.l2  7.393e-01  2.324e-01   3.181  0.00723 **
## nsh_Tipo_de_Cambio_var.l2  1.307e-01  6.101e-01   0.214  0.83370   
## nsh_Empleo_var.l2         -1.657e+00  1.626e+00  -1.019  0.32674   
## const                     -1.033e+02  1.209e+02  -0.854  0.40840   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## 
## Residual standard error: 3.376 on 13 degrees of freedom
## Multiple R-Squared: 0.9779,  Adjusted R-squared: 0.9608 
## F-statistic: 57.43 on 10 and 13 DF,  p-value: 4.293e-09 
## 
## 
## Estimation results for equation nsh_Tipo_de_Cambio_var: 
## ======================================================= 
## nsh_Tipo_de_Cambio_var = nsh_IED_var.l1 + nsh_Innovación_var.l1 + nsh_Salario_Diario_var.l1 + nsh_Tipo_de_Cambio_var.l1 + nsh_Empleo_var.l1 + nsh_IED_var.l2 + nsh_Innovación_var.l2 + nsh_Salario_Diario_var.l2 + nsh_Tipo_de_Cambio_var.l2 + nsh_Empleo_var.l2 + const 
## 
##                             Estimate Std. Error t value Pr(>|t|)  
## nsh_IED_var.l1             5.963e-06  3.298e-06   1.808   0.0938 .
## nsh_Innovación_var.l1      4.861e-01  3.865e-01   1.258   0.2306  
## nsh_Salario_Diario_var.l1  1.041e-01  7.430e-02   1.402   0.1844  
## nsh_Tipo_de_Cambio_var.l1  6.620e-01  2.832e-01   2.338   0.0361 *
## nsh_Empleo_var.l1         -4.433e-01  5.738e-01  -0.773   0.4536  
## nsh_IED_var.l2             3.599e-06  3.730e-06   0.965   0.3522  
## nsh_Innovación_var.l2     -5.164e-01  4.747e-01  -1.088   0.2964  
## nsh_Salario_Diario_var.l2 -1.175e-01  8.760e-02  -1.341   0.2028  
## nsh_Tipo_de_Cambio_var.l2  2.812e-02  2.300e-01   0.122   0.9046  
## nsh_Empleo_var.l2         -4.261e-02  6.129e-01  -0.070   0.9456  
## const                      4.805e+01  4.558e+01   1.054   0.3109  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## 
## Residual standard error: 1.272 on 13 degrees of freedom
## Multiple R-Squared: 0.9441,  Adjusted R-squared: 0.9011 
## F-statistic: 21.96 on 10 and 13 DF,  p-value: 1.567e-06 
## 
## 
## Estimation results for equation nsh_Empleo_var: 
## =============================================== 
## nsh_Empleo_var = nsh_IED_var.l1 + nsh_Innovación_var.l1 + nsh_Salario_Diario_var.l1 + nsh_Tipo_de_Cambio_var.l1 + nsh_Empleo_var.l1 + nsh_IED_var.l2 + nsh_Innovación_var.l2 + nsh_Salario_Diario_var.l2 + nsh_Tipo_de_Cambio_var.l2 + nsh_Empleo_var.l2 + const 
## 
##                             Estimate Std. Error t value Pr(>|t|)   
## nsh_IED_var.l1             1.971e-07  1.049e-06   0.188  0.85385   
## nsh_Innovación_var.l1      1.847e-02  1.229e-01   0.150  0.88289   
## nsh_Salario_Diario_var.l1 -6.388e-02  2.363e-02  -2.703  0.01808 * 
## nsh_Tipo_de_Cambio_var.l1  1.596e-01  9.007e-02   1.772  0.09975 . 
## nsh_Empleo_var.l1          5.764e-01  1.825e-01   3.159  0.00755 **
## nsh_IED_var.l2            -1.967e-06  1.186e-06  -1.658  0.12129   
## nsh_Innovación_var.l2     -3.414e-01  1.510e-01  -2.262  0.04149 * 
## nsh_Salario_Diario_var.l2  4.681e-02  2.786e-02   1.680  0.11680   
## nsh_Tipo_de_Cambio_var.l2  1.424e-02  7.314e-02   0.195  0.84868   
## nsh_Empleo_var.l2          4.130e-01  1.949e-01   2.119  0.05395 . 
## const                      5.209e+00  1.450e+01   0.359  0.72509   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## 
## Residual standard error: 0.4047 on 13 degrees of freedom
## Multiple R-Squared: 0.836,   Adjusted R-squared: 0.7099 
## F-statistic: 6.628 on 10 and 13 DF,  p-value: 0.001134 
## 
## 
## 
## Covariance matrix of residuals:
##                        nsh_IED_var nsh_Innovación_var nsh_Salario_Diario_var
## nsh_IED_var              1.122e+10         44394.4905             29708.8305
## nsh_Innovación_var       4.439e+04             0.9052                -0.6127
## nsh_Salario_Diario_var   2.971e+04            -0.6127                11.3941
## nsh_Tipo_de_Cambio_var   5.704e+04             0.1505                 0.4087
## nsh_Empleo_var           7.360e+03             0.1065                -0.2585
##                        nsh_Tipo_de_Cambio_var nsh_Empleo_var
## nsh_IED_var                         5.704e+04     7360.25898
## nsh_Innovación_var                  1.505e-01        0.10652
## nsh_Salario_Diario_var              4.087e-01       -0.25851
## nsh_Tipo_de_Cambio_var              1.619e+00       -0.02304
## nsh_Empleo_var                     -2.304e-02        0.16375
## 
## Correlation matrix of residuals:
##                        nsh_IED_var nsh_Innovación_var nsh_Salario_Diario_var
## nsh_IED_var                1.00000             0.4405                0.08309
## nsh_Innovación_var         0.44049             1.0000               -0.19077
## nsh_Salario_Diario_var     0.08309            -0.1908                1.00000
## nsh_Tipo_de_Cambio_var     0.42317             0.1243                0.09516
## nsh_Empleo_var             0.17170             0.2767               -0.18925
##                        nsh_Tipo_de_Cambio_var nsh_Empleo_var
## nsh_IED_var                           0.42317        0.17170
## nsh_Innovación_var                    0.12433        0.27667
## nsh_Salario_Diario_var                0.09516       -0.18925
## nsh_Tipo_de_Cambio_var                1.00000       -0.04474
## nsh_Empleo_var                       -0.04474        1.00000
forecast_1<-predict(var_model_1,n.ahead=2,ci=0.95) ### forecast for the next year
fanchart(forecast_1,names="Sales in Packs Per Capita",main="VAR Forecast U.S. nshette Sales in Packs per Capita",xlab="Year",ylab="Sales")
## Warning in fanchart(forecast_1, names = "Sales in Packs Per Capita", main = "VAR Forecast U.S. nshette Sales in Packs per Capita", : 
## Invalid variable name(s) supplied, using first variable.

forecast_1
## $nsh_IED_var
##          fcst    lower    upper       CI
## [1,] 386862.0 179241.6 594482.4 207620.4
## [2,] 205154.9 -45168.7 455478.6 250323.6
## 
## $nsh_Innovación_var
##          fcst     lower    upper       CI
## [1,] 12.42406 10.559316 14.28880 1.864744
## [2,] 12.03545  9.676252 14.39466 2.359202
## 
## $nsh_Salario_Diario_var
##          fcst    lower    upper       CI
## [1,] 156.4503 149.8344 163.0662 6.615898
## [2,] 177.6101 169.3553 185.8648 8.254780
## 
## $nsh_Tipo_de_Cambio_var
##          fcst    lower    upper       CI
## [1,] 19.21587 16.72207 21.70967 2.493799
## [2,] 18.35320 14.48980 22.21660 3.863401
## 
## $nsh_Empleo_var
##          fcst    lower    upper        CI
## [1,] 96.21139 95.41826 97.00452 0.7931279
## [2,] 95.31051 94.19739 96.42363 1.1131242
  1. Realizar a Granger-Causality Test
# Ho: Time series x does not Granger-cause time series y
# Ha: Time series x Granger-causes time series y

# Granger causality testing each variable against all the others.
# There could be a unidirectional, bidirectional, or no causality relationships between variables.
granger_1<-causality(var_model_1,cause="nsh_IED_var")
granger_1
## $Granger
## 
##  Granger causality H0: nsh_IED_var do not Granger-cause
##  nsh_Innovación_var nsh_Salario_Diario_var nsh_Tipo_de_Cambio_var
##  nsh_Empleo_var
## 
## data:  VAR object var_model_1
## F-Test = 1.2192, df1 = 8, df2 = 65, p-value = 0.3021
## 
## 
## $Instant
## 
##  H0: No instantaneous causality between: nsh_IED_var and
##  nsh_Innovación_var nsh_Salario_Diario_var nsh_Tipo_de_Cambio_var
##  nsh_Empleo_var
## 
## data:  VAR object var_model_1
## Chi-squared = 6.326, df = 4, p-value = 0.1761

En el test de Granger como el valor p (p-value) es mayor que el nivel de significancia, no hay suficiente evidencia para rechazar la hipótesis nula. Por lo tanto, no podemos concluir que nsh_IED_var causa nsh_Innovación_var. Y en la prueba de causalidad el valor p (p-value) es mayor que 0.05, no hay suficiente evidencia para rechazar la hipótesis nula. Por lo tanto, no podemos concluir que haya causalidad instantánea entre nsh_IED_var y nsh_Innovación_var.

  1. viaualizar el modelo
predicciones_VAR <- forecast(var_model_1, h = 3)  # Pronóstico para los próximos 10 periodos

# Graficar las series temporales observadas y pronosticadas
autoplot(predicciones_VAR)

V. Conclusiones

Parte importante que pudimos identificar en el análisis es el como la version extranjera representa un continuo aumento a través de los años, y como a través de este análisis y otras investigaciones referentes a la IED y nearshoring también nos confirman como México presentara un fuerte posicionamiento en los próximos años.

A través de este análisis de datos logramos identificar el comportamiento de las variables que forman parte de las características del desarrollo de inversion externa directa en México. Uno de los principales hallazgos es cómo se presenta el continuo aumento de dicha variable, lo cual por medio de noticias, investigaciones u otros análisis podría ser confirmado.

Referencias:

Zaga, D., & Ortiz, A. (2023, 13 julio). Nearshoring in Mexico. Deloitte Insights. https://www2.deloitte.com/us/en/insights/economy/issues-by-the-numbers/advantages-of-nearshoring-mexico.html

Hernández, E. (2024, 6 febrero). México recibirá más 9,000 mdd de inversión de la industria maquiladora por nearshoring en 2024. Forbes México. https://www.forbes.com.mx/mexico-recibira-mas-9-mil-mdd-de-inversion-de-la-industria-maquiladora-por-nearshoring-en-2024/

Time Series Analysis: Definition, Types, Techniques, and When It’s Used. (s. f.). Tableau. https://www.tableau.com/learn/articles/time-series-analysis#definition