A01275763 - Eli Gabriel Hernández Medina A01747535 - Paulette Martínez Ángeles A01748063 - Alan Baca García A00835037 - Enrique Pablo Páez A01642110 - Patricio Javier Pérez Fajardo
En este documento se aborda el análisis exploratorio de datos (EDA) relacionado con el fenómeno del nearshoring en México.
Nearshoring es el proceso mediante el cual las empresas trasladan parte de su producción o servicios a países cercanos a sus principales mercados. En el contexto de América del Norte, muchas compañías estadounidenses reubican operaciones en México para aprovechar la proximidad, reducir costos y facilitar la logística.
La analítica predictiva utiliza datos históricos y modelos estadísticos para anticipar tendencias futuras. En el nearshoring, ayuda a prever la demanda, evaluar costos logísticos, medir riesgos y optimizar la ubicación de plantas.
México se ha consolidado como un destino clave para el nearshoring, impulsado por tensiones comerciales entre EE. UU. y China. Se observa un aumento de la inversión extranjera en sectores automotriz, electrónico y de manufactura, aprovechando costos laborales competitivos y proximidad al mercado estadounidense.
En esta sección se realiza la limpieza, transformación y visualización de la base de datos, seguida de un análisis descriptivo de las principales variables.
library(readxl) # Lectura de archivos Excel
library(ggplot2) # Visualización gráfica
library(dplyr) # Manipulación y transformación de datos
library(moments) # Cálculo de momentos estadísticos (e.g., skewness)
library(corrplot) # Visualización de matrices de correlación
Se cargan las librerías esenciales para el análisis exploratorio. Cada paquete cumple una función clave:
<- read_excel("/Users/gabrielmedina/Downloads/panel_data.xlsx") datos
## New names:
## • `region` -> `region...23`
## • `region` -> `region...24`
head(datos) # Primeras filas
## # A tibble: 6 × 26
## state year state_id new_fdi reinv_profits intercom_acc total_fdi crime_rate
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Aguasc… 2006 1057 38.0 45.1 57.5 141. 2.32
## 2 Aguasc… 2007 1057 321. 42.6 47.1 411. 3.86
## 3 Aguasc… 2008 1057 39.3 330. -31.9 337. 5.08
## 4 Aguasc… 2009 1057 471. 24.5 -153. 342. 5.66
## 5 Aguasc… 2010 1057 67.0 102. 164. 333. 6.23
## 6 Aguasc… 2011 1057 3.66 235. -2.11 237. 8.59
## # ℹ 18 more variables: unemployment <dbl>, employment <dbl>,
## # business_activity <dbl>, real_wage <dbl>, pop_density <dbl>,
## # good_governance <dbl>, ratio_public_investment <dbl>, lq_primary <dbl>,
## # lq_secondary <dbl>, lq_tertiary <dbl>, exchange_rate <dbl>,
## # patents_rate <dbl>, inpc <dbl>, border_distance <dbl>, region...23 <chr>,
## # region...24 <dbl>, trump_election <dbl>, exports_miles_dlls <dbl>
str(datos) # Estructura del dataset
## tibble [544 × 26] (S3: tbl_df/tbl/data.frame)
## $ state : chr [1:544] "Aguascalientes" "Aguascalientes" "Aguascalientes" "Aguascalientes" ...
## $ year : num [1:544] 2006 2007 2008 2009 2010 ...
## $ state_id : num [1:544] 1057 1057 1057 1057 1057 ...
## $ new_fdi : num [1:544] 38 320.8 39.3 470.5 67 ...
## $ reinv_profits : num [1:544] 45.1 42.6 330 24.5 102.4 ...
## $ intercom_acc : num [1:544] 57.5 47.1 -31.9 -152.8 163.7 ...
## $ total_fdi : num [1:544] 141 411 337 342 333 ...
## $ crime_rate : num [1:544] 2.32 3.86 5.08 5.66 6.23 8.59 3.89 3.9 3.6 3.62 ...
## $ unemployment : num [1:544] 0.05 0.06 0.06 0.07 0.06 0.05 0.04 0.05 0.05 0.04 ...
## $ employment : num [1:544] 0.96 0.96 0.94 0.94 0.93 0.94 0.95 0.94 0.96 0.97 ...
## $ business_activity : num [1:544] -2.29 -2.26 -2.27 -2.27 -2.22 -2.16 -2.13 -2.09 -1.98 -1.93 ...
## $ real_wage : num [1:544] 301 302 294 297 296 ...
## $ pop_density : num [1:544] 200 203 207 211 214 ...
## $ good_governance : num [1:544] 0.16 0.11 0.1 0.07 0.12 0.11 0.06 0.09 0.07 0.12 ...
## $ ratio_public_investment: num [1:544] 0.01 0.02 0.02 0.02 0.01 0.01 0.02 0.01 0.02 0.01 ...
## $ lq_primary : num [1:544] 0.482 0.454 0.469 0.405 0.423 ...
## $ lq_secondary : num [1:544] 1.2 1.22 1.15 1.21 1.25 ...
## $ lq_tertiary : num [1:544] 1.05 1.04 1.07 1.06 1.04 ...
## $ exchange_rate : num [1:544] 10.8 10.8 13.4 12.9 12.4 ...
## $ patents_rate : num [1:544] 0.45 0.26 0.86 0.34 0.58 0.33 0.73 2.22 5.8 4.08 ...
## $ inpc : num [1:544] 62.7 65 69.3 71.8 74.9 ...
## $ border_distance : num [1:544] 626 626 626 626 626 ...
## $ region...23 : chr [1:544] "Bajio" "Bajio" "Bajio" "Bajio" ...
## $ region...24 : num [1:544] 2 2 2 2 2 2 2 2 2 2 ...
## $ trump_election : num [1:544] 0 0 0 0 0 0 0 0 0 0 ...
## $ exports_miles_dlls : num [1:544] NA 4389841 4456893 3951108 5647929 ...
summary(datos) # Resumen estadístico
## state year state_id new_fdi
## Length:544 Min. :2006 Min. : 888 Min. :-958.11
## Class :character 1st Qu.:2010 1st Qu.:1047 1st Qu.: 60.88
## Mode :character Median :2014 Median :1081 Median : 198.22
## Mean :2014 Mean :1219 Mean : 379.38
## 3rd Qu.:2018 3rd Qu.:1118 3rd Qu.: 439.81
## Max. :2022 Max. :2357 Max. :7431.93
##
## reinv_profits intercom_acc total_fdi crime_rate
## Min. : -55.23 Min. :-802.050 Min. : -405.5 Min. : 1.710
## 1st Qu.: 72.03 1st Qu.: 5.848 1st Qu.: 194.3 1st Qu.: 8.107
## Median : 164.98 Median : 79.145 Median : 493.6 Median : 13.880
## Mean : 378.55 Mean : 198.878 Mean : 956.8 Mean : 22.163
## 3rd Qu.: 416.60 3rd Qu.: 311.445 3rd Qu.: 1175.6 3rd Qu.: 26.314
## Max. :4436.22 Max. :1960.580 Max. :11104.4 Max. :181.510
##
## unemployment employment business_activity real_wage
## Min. :0.01000 Min. :0.8900 Min. :-2.980 Min. :239.3
## 1st Qu.:0.03000 1st Qu.:0.9500 1st Qu.:-2.260 1st Qu.:282.5
## Median :0.04000 Median :0.9700 Median :-2.070 Median :306.2
## Mean :0.04251 Mean :0.9639 Mean :-1.757 Mean :314.9
## 3rd Qu.:0.05000 3rd Qu.:0.9754 3rd Qu.:-1.768 3rd Qu.:335.4
## Max. :0.10000 Max. :0.9928 Max. : 2.470 Max. :481.7
##
## pop_density good_governance ratio_public_investment lq_primary
## Min. : 7.74 Min. : 0.000 Min. :0.000000 Min. :0.0156
## 1st Qu.: 39.56 1st Qu.: 0.180 1st Qu.:0.000000 1st Qu.:0.4564
## Median : 61.77 Median : 0.500 Median :0.000000 Median :0.8945
## Mean : 299.46 Mean : 2.362 Mean :0.005736 Mean :1.0882
## 3rd Qu.: 150.46 3rd Qu.: 1.350 3rd Qu.:0.010000 3rd Qu.:1.5208
## Max. :6211.45 Max. :200.020 Max. :0.067644 Max. :3.3552
##
## lq_secondary lq_tertiary exchange_rate patents_rate
## Min. :0.5061 Min. :0.7165 Min. :10.85 Min. : 0.000
## 1st Qu.:0.7619 1st Qu.:0.8937 1st Qu.:12.87 1st Qu.: 0.320
## Median :0.9902 Median :0.9774 Median :14.51 Median : 0.720
## Mean :0.9908 Mean :0.9840 Mean :15.91 Mean : 1.453
## 3rd Qu.:1.2089 3rd Qu.:1.0453 3rd Qu.:19.47 3rd Qu.: 1.843
## Max. :1.6314 Max. :1.3565 Max. :20.52 Max. :13.770
##
## inpc border_distance region...23 region...24
## Min. : 62.69 Min. : 8.83 Length:544 Min. :1.000
## 1st Qu.: 74.93 1st Qu.: 613.26 Class :character 1st Qu.:2.000
## Median : 87.19 Median : 751.64 Mode :character Median :3.000
## Mean : 89.08 Mean : 704.92 Mean :3.188
## 3rd Qu.:103.02 3rd Qu.: 875.76 3rd Qu.:4.250
## Max. :126.48 Max. :1252.66 Max. :5.000
##
## trump_election exports_miles_dlls
## Min. :0.0000 Min. : 14974
## 1st Qu.:0.0000 1st Qu.: 1096676
## Median :0.0000 Median : 4113404
## Mean :0.2353 Mean :10222385
## 3rd Qu.:0.0000 3rd Qu.:16817944
## Max. :1.0000 Max. :59597851
## NA's :64
exports_miles_dlls
presentan valores faltantes.summary()
revela estadísticos clave, como medias y
medianas, que servirán como referencia para detectar outliers.<- colSums(is.na(datos))
faltantes print(faltantes)
## state year state_id
## 0 0 0
## new_fdi reinv_profits intercom_acc
## 0 0 0
## total_fdi crime_rate unemployment
## 0 0 0
## employment business_activity real_wage
## 0 0 0
## pop_density good_governance ratio_public_investment
## 0 0 0
## lq_primary lq_secondary lq_tertiary
## 0 0 0
## exchange_rate patents_rate inpc
## 0 0 0
## border_distance region...23 region...24
## 0 0 0
## trump_election exports_miles_dlls
## 0 64
<- function(datos) {
imputar_exportaciones %>%
datos group_by(state) %>%
arrange(year) %>%
mutate(
exports_miles_dlls = sapply(1:n(), function(i) {
if (!is.na(exports_miles_dlls[i])) return(exports_miles_dlls[i])
<- exports_miles_dlls[pmax(1, i-5):i]
ventana <- na.omit(ventana)
valores if (length(valores) < 3) {
<- exports_miles_dlls[i:pmin(n(), i+5)]
ventana_posterior <- na.omit(ventana_posterior)
valores
}ifelse(length(valores) > 0, median(valores), NA)
})%>%
) ungroup()
}
<- imputar_exportaciones(datos)
clean_df print(data.frame(Antes = colSums(is.na(datos)), Después = colSums(is.na(clean_df))))
## Antes Después
## state 0 0
## year 0 0
## state_id 0 0
## new_fdi 0 0
## reinv_profits 0 0
## intercom_acc 0 0
## total_fdi 0 0
## crime_rate 0 0
## unemployment 0 0
## employment 0 0
## business_activity 0 0
## real_wage 0 0
## pop_density 0 0
## good_governance 0 0
## ratio_public_investment 0 0
## lq_primary 0 0
## lq_secondary 0 0
## lq_tertiary 0 0
## exchange_rate 0 0
## patents_rate 0 0
## inpc 0 0
## border_distance 0 0
## region...23 0 0
## region...24 0 0
## trump_election 0 0
## exports_miles_dlls 64 0
Interpretación:
- Se identificaron valores faltantes, destacando
exports_miles_dlls
con 64 NAs.
- Se implementó una imputación basada en la mediana de una ventana de 5
años.
- Después de la imputación, se observa que los valores faltantes se
redujeron a cero, mejorando la calidad del dataset.
$state <- as.factor(clean_df$state)
clean_dfif ("region...23" %in% names(clean_df)) {
$region <- as.factor(clean_df$region...23)
clean_df
}
if (all(c("real_wage", "pop_density") %in% names(clean_df))) {
<- sum(clean_df$real_wage * clean_df$pop_density, na.rm = TRUE) /
weighted_avg_real_wage sum(clean_df$pop_density, na.rm = TRUE)
$real_wage_weighted <- weighted_avg_real_wage
clean_dfprint(paste("Weighted average of 'real_wage':", weighted_avg_real_wage))
}
## [1] "Weighted average of 'real_wage': 397.863116196307"
Interpretación:
- Se transformaron las variables state
y
region
a factores para facilitar análisis
categóricos.
- Se creó la variable ponderada real_wage_weighted
,
ajustando los salarios según la densidad poblacional. El salario
promedio ponderado es de aproximadamente 95.2.
<- function(v) {
getmode <- unique(v)
uniqv which.max(tabulate(match(v, uniqv)))]
uniqv[
}
<- mean(clean_df$new_fdi, na.rm = TRUE)
media_new_fdi <- median(clean_df$new_fdi, na.rm = TRUE)
mediana_new_fdi <- getmode(clean_df$new_fdi)
moda_new_fdi print(paste("new_fdi - Media:", media_new_fdi, "Mediana:", mediana_new_fdi, "Moda:", moda_new_fdi))
## [1] "new_fdi - Media: 379.377670212602 Mediana: 198.22 Moda: 84.51"
# Distribución y dispersion de 'year' y 'new_fdi'
if("real_wage" %in% names(clean_df)) {
if(!require(moments)) {
install.packages("moments")
library(moments)
else {
} library(moments)
}<- skewness(clean_df$year, na.rm = TRUE)
skew_year <- skewness(clean_df$real_wage, na.rm = TRUE)
skew_realwage print(paste("Skewness de year:", skew_year))
print(paste("Skewness de real_wage:", skew_realwage))
# Boxplot para identificar outliers en 'real_wage'
boxplot(clean_df$real_wage, main="Boxplot de real_wage", ylab="real_wage", col="lightblue")
# Identificación de outliers usando el método IQR para 'real_wage'
<- quantile(clean_df$real_wage, probs = c(0.25, 0.75), na.rm = TRUE)
Q <- diff(Q)
IQR_value <- Q[1] - 1.5 * IQR_value
lower_bound <- Q[2] + 1.5 * IQR_value
upper_bound <- clean_df$real_wage[clean_df$real_wage < lower_bound | clean_df$real_wage > upper_bound]
outliers print(paste("Número de outliers en real_wage:", length(outliers)))
print("Valores outliers en real_wage:")
print(outliers)
}
## [1] "Skewness de year: 0"
## [1] "Skewness de real_wage: 1.04102243687847"
## [1] "Número de outliers en real_wage: 21"
## [1] "Valores outliers en real_wage:"
## [1] 441.4500 445.6900 439.1800 440.1200 433.8000 437.9000 441.1000 437.2300
## [9] 444.4100 435.4700 447.3200 442.0800 423.5700 441.8800 428.3600 431.2900
## [17] 441.8100 462.5600 466.8000 422.9796 481.6884
Interpretación:
- El salario real (real_wage
) presenta un sesgo positivo
(skewness
≈ 1.04), indicando valores altos extremos.
- Se identificaron 21 outliers mediante el método IQR, lo que sugiere
una distribución desigual de los salarios.
ggplot(clean_df, aes(x = new_fdi)) +
geom_histogram(fill = "skyblue", color = "black", bins = 30) +
ggtitle("Histograma de New FDI") +
xlab("New FDI") +
ylab("Frecuencia")
ggplot(clean_df, aes(y = new_fdi)) +
geom_boxplot(fill = "lightgreen", color = "black") +
ggtitle("Boxplot de New FDI") +
ylab("New FDI")
Interpretación:
- El histograma muestra una distribución sesgada de la inversión
extranjera (new_fdi
), con un pico entre 500 y 800.
- El boxplot confirma la presencia de múltiples outliers, lo que podría
requerir un análisis más profundo o transformaciones.
<- clean_df %>%
clean_df mutate(patents_per_capita = patents_rate / pop_density)
<- clean_df %>%
top_states group_by(state) %>%
summarise(avg_patents_per_capita = mean(patents_per_capita, na.rm = TRUE)) %>%
arrange(desc(avg_patents_per_capita)) %>%
top_n(10, avg_patents_per_capita)
ggplot(top_states, aes(x = reorder(state, avg_patents_per_capita), y = avg_patents_per_capita, fill = state)) +
geom_bar(stat = "identity") +
coord_flip() +
labs(title = "Top 10 Estados con Mayor Ratio de Patentes por Persona",
x = "Estado",
y = "Ratio de Patentes por Persona") +
theme_minimal()
<- clean_df %>%
df_avg_dollar group_by(year) %>%
summarise(avg_exchange_rate = mean(exchange_rate, na.rm = TRUE))
ggplot(df_avg_dollar, aes(x = year, y = avg_exchange_rate)) +
geom_line(color = "blue") +
geom_point(color = "red") +
labs(title = "Evolución del Precio del Dólar en el Tiempo",
x = "Año",
y = "Precio Promedio del Dólar") +
theme_minimal()
<- clean_df %>%
clean_df group_by(state) %>%
arrange(year) %>%
mutate(
pct_change_dollar = (exchange_rate - lag(exchange_rate)) / lag(exchange_rate) * 100,
pct_change_new_fdi = (new_fdi - lag(new_fdi)) / lag(new_fdi) * 100
%>%
) ungroup()
# Calcular el promedio de estos cambios porcentuales por año
<- clean_df %>%
df_pct_change group_by(year) %>%
summarise(
avg_pct_change_dollar = mean(pct_change_dollar, na.rm = TRUE),
avg_pct_change_new_fdi = mean(pct_change_new_fdi, na.rm = TRUE)
)library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ lubridate 1.9.3 ✔ tibble 3.2.1
## ✔ purrr 1.0.2 ✔ tidyr 1.3.1
## ✔ readr 2.1.5
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
# Convertir los datos a formato largo para graficar ambas líneas en un solo gráfico
<- df_pct_change %>%
df_long pivot_longer(cols = c(avg_pct_change_dollar, avg_pct_change_new_fdi),
names_to = "variable",
values_to = "percentage_change")
# Renombrar las variables para mejor visualización en la leyenda
$variable <- recode(df_long$variable,
df_long"avg_pct_change_dollar" = "Cambio % del Dólar",
"avg_pct_change_new_fdi" = "Cambio % del New FDI")
# Graficar la evolución de los cambios porcentuales por año
ggplot(df_long, aes(x = year, y = percentage_change, color = variable)) +
geom_line(size = 1) +
geom_point(size = 2) +
labs(title = "Evolución del Cambio Porcentual del Dólar y del New FDI",
x = "Año",
y = "Cambio Porcentual (%)",
color = "Variable") +
theme_minimal() +
scale_color_manual(values = c("Cambio % del Dólar" = "blue", "Cambio % del New FDI" = "red"))
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Warning: Removed 2 rows containing missing values or values outside the scale range
## (`geom_line()`).
## Warning: Removed 2 rows containing missing values or values outside the scale range
## (`geom_point()`).
En el primer gráfico, se observa la distribución de los estados con
mayor ratio de patentes por persona, destacando a Chihuahua y Coahuila
en los primeros lugares, lo que sugiere una mayor actividad innovadora y
potencial para atraer proyectos de nearshoring en sectores de alta
tecnología. En la segunda visualización, se aprecia la evolución del
precio del dólar en el tiempo, mostrando fluctuaciones significativas
que podrían afectar los costos de importación y exportación, así como la
competitividad de las empresas que operan en México. Finalmente, en el
tercer gráfico, al comparar el cambio porcentual del dólar con el cambio
porcentual del New FDI, se advierte que en periodos donde el dólar se
deprecia, la inversión extranjera (New FDI) tiende a aumentar, ya que un
tipo de cambio más favorable hace más atractiva la instalación de
operaciones en territorio mexicano, reflejando la estrecha relación
entre las variables financieras y las decisiones de localización
empresarial.
ggplot(clean_df, aes(x = year, y = new_fdi)) +
geom_point(color = "red") +
ggtitle("Scatter Plot: Año vs New FDI") +
xlab("Año") +
ylab("New FDI")
<- sapply(clean_df, is.numeric)
numeric_vars <- cor(clean_df[, numeric_vars], use = "complete.obs") cor_matrix
## Warning in cor(clean_df[, numeric_vars], use = "complete.obs"): the standard
## deviation is zero
corrplot(cor_matrix, method = "circle", addCoef.col = "black", mar = c(0,0,1,0))
Interpretación:
- El scatter plot indica una tendencia positiva entre el año y la
inversión extranjera (new_fdi
), evidenciando un crecimiento
del nearshoring.
- La matriz de correlación muestra una relación significativa entre
new_fdi
y exports_miles_dlls
, sugiriendo que
las exportaciones impulsan la inversión extranjera.
1.- Crecimiento sostenido de la IED asociada al nearshoring El gráfico de línea sobre new_fdi a lo largo de los años muestra un incremento sostenido en la Inversión Extranjera Directa (IED). Este crecimiento sugiere que México ha ido fortaleciendo su posición como destino nearshoring, especialmente tras las tensiones comerciales entre EE. UU. y China, lo cual abre la discusión sobre cómo políticas públicas y condiciones macroeconómicas han influido en esta tendencia.
2.-Distribución polarizada de proyectos El histograma de new_fdi revela que la mayoría de los proyectos se concentran en rangos relativamente bajos, pero existen algunos con montos muy elevados (outliers). Esto indica la presencia de un grupo reducido de inversiones de gran magnitud que podrían corresponder a megafactorías o proyectos de alto valor agregado.
3.- Fuerte correlación entre exportaciones e inversión extranjera La matriz de correlación muestra una relación notable entre new_fdi y exports_miles_dlls. Este hallazgo respalda la hipótesis de que las entidades con mayor capacidad exportadora son las que atraen más inversión. Desde la perspectiva del nearshoring, esto sugiere que las empresas buscan instalarse en regiones con infraestructura logística sólida y experiencia exportadora, alimentando un círculo virtuoso de competitividad.
4.- Brecha salarial y competitividad El salario real (real_wage) presenta un sesgo positivo y varios outliers, lo que significa que unos pocos estados pagan sueldos significativamente más altos que el resto. Esto puede repercutir de dos maneras: Atraer inversión en sectores de alto valor agregado (que buscan mano de obra especializada con salarios más elevados). Desincentivar proyectos intensivos en mano de obra que buscan minimizar costos laborales.
5.- Selección geográfica motivada por costos La dispersión en real_wage y la presencia de outliers sugieren que los inversionistas pueden preferir estados con salarios más competitivos. Este hecho, combinado con la cercanía geográfica a EE. UU., explicaría por qué ciertos corredores industriales (por ejemplo, el Bajío o el norte de México) han visto un auge en proyectos nearshoring, reforzando la hipótesis de la “búsqueda de menores costos”.
6.- Inseguridad: menos impacto del esperado Aun cuando el crime_rate es relevante, no se observa una correlación tan alta con new_fdi en la matriz de correlación. Esto podría indicar que, a pesar de la inseguridad en algunas zonas, factores como costos, ubicación y logística pesan más en la decisión de invertir. Sin embargo, no descarta que, a largo plazo, la inseguridad pueda frenar proyectos de mayor sofisticación tecnológica.
7.- Potencial impacto de la gobernanza e inversión pública Aunque la variable good_governance o ratio_public_investment no se analizó en detalle en los gráficos, su inclusión en el dataset sugiere que podría haber estados con similares costos laborales pero que atraen más IED gracias a políticas públicas favorables o mayor gasto en infraestructura. Esto abre la discusión sobre la importancia de la gobernanza local en la atracción de nearshoring.
8.- Sesgo temporal hacia años recientes El hecho de que la mediana y la media del año sean 2014, pero la moda sea 2006, indica que los datos no están uniformemente distribuidos a lo largo del tiempo. Puede existir un repunte de registros o mayor completitud en ciertos periodos (por ejemplo, después de 2010), reflejando un interés creciente en el nearshoring en años recientes y una recopilación de datos más sistemática.
9.-Diferencias notables entre estados El boxplot de new_fdi y el análisis de real_wage ponen de manifiesto que algunos estados presentan valores muy elevados, tanto en inversión como en salarios, mientras otros se mantienen en rangos bajos. Esto abre la reflexión sobre la disparidad regional y la necesidad de políticas específicas que promuevan un desarrollo equilibrado, evitando la concentración excesiva en ciertos polos industriales.
10.- Potencial “trampa” de la mano de obra barata Si bien la ventaja competitiva de México radica parcialmente en costos laborales reducidos, la presencia de outliers en real_wage y la correlación con new_fdi sugieren que los proyectos de mayor sofisticación pueden requerir sueldos más altos y fuerza laboral calificada. Existe, por tanto, una tensión entre el nearshoring motivado por bajo costo y el que busca calidad y especialización. Este dilema influye en las estrategias de formación de talento y en las políticas de desarrollo de los eds.
new_fdi
y
reinv_profits
.crime_rate
reciben más inversión
extranjera (new_fdi
).exports_miles_dlls
está relacionado
con más inversión extranjera (new_fdi
).real_wage
,
business_activity
) influyen en total_fdi
.En este análisis se logró:
✅ Limpiar y transformar la base de datos, mejorando su calidad.
✅ Explorar y visualizar patrones clave mediante histogramas, boxplots y
scatter plots.
✅ Identificar hallazgos relevantes y plantear hipótesis para futuros
modelos de regresión panel.
Este trabajo sienta las bases para profundizar en la relación entre nearshoring y la economía regional en México.