Modelación Lineal de Series de Tiempo: Factores Determinantes de la Esperanza de Vida Un Caso de Estudio para Argentina (1990-2021)
La metodología de este estudio se estructura en varias fases, abordando desde la recopilación y preparación de datos, el análisis exploratorio de series de tiempo, hasta la aplicación de técnicas de modelado lineal para series temporales (TSLM) y la evaluación de pronósticos. El objetivo es analizar los factores que influyen en la esperanza de vida en Argentina y proyectar su comportamiento futuro, utilizando un enfoque que considera la dependencia temporal de los datos.
Los datos utilizados para este análisis provienen de diversas fuentes abiertas y confiables, principalmente de la plataforma Our World in Data y el Banco Mundial. Se recolectaron variables clave para los años 1990 hasta 2021 para Argentina, con el objetivo de obtener una instantánea coherente de la situación del país en ese período. Las bases de datos específicas consultadas incluyen información sobre: Expectativa de Vida, PIB per Cápita, Población, Tasa de Mortalidad, Uso de Internet, Tasa de Fertilidad, Índice de Desarrollo Humano (HDI), Emisiones de CO2 per cápita, Población Urbana vs. Rural y Acceso a Electricidad.
El conjunto de datos integrado utilizado para el modelado comprende las siguientes variables:
Expect
): Variable
cuantitativa que representa la expectativa de vida al nacer (en años).
Originalmente continua, será utilizada para generar una variable binaria
y posteriormente para el análisis de clusterización.GDP
): Variable
cuantitativa que mide el Producto Interno Bruto por habitante, ajustado
por paridad de poder adquisitivo. Refleja el nivel de desarrollo
económico.Population
): Variable
cuantitativa que representa el total de habitantes del país.Death_rate
):
Variable cuantitativa que indica el número de muertes por cada 1000
habitantes.Urban
): Variable
cuantitativa que indica el porcentaje de población que reside en áreas
urbanas.Rural
): Variable
cuantitativa que indica el porcentaje de población que reside en áreas
rurales.Fertility
):
Variable cuantitativa que indica el número promedio de hijos por
mujer.HDI
):
Variable cuantitativa que mide el nivel de desarrollo humano (largo y
saludable de vida, acceso a conocimientos y un nivel de vida
decente).CO2
): Variable
cuantitativa que representa las emisiones de dióxido de carbono per
cápita.Electricity
):
Variable cuantitativa que mide el porcentaje de la población con acceso
a electricidad.Internet
): Variable
cuantitativa que mide el porcentaje de individuos que utilizan internet
en la población.La etapa de procesamiento de datos fue crucial para consolidar la información y adecuarla a los requisitos del modelado lineal de series de tiempo.
Primero, se cargaron las múltiples bases de datos descargadas, las
cuales contenían información de diversos países y años. Posteriormente,
se unieron en un único dataframe (bd_panel_1
) utilizando
operaciones de left_join
basadas en las columnas
Country y Year. Este proceso permitió
integrar toda la información relevante en una sola estructura.
Tras la unión, se procedió a filtrar el dataset para concentrarse específicamente en el país Argentina y en el rango de años 1990 a 2021. Adicionalmente, se realizó una limpieza de datos, eliminando las filas que presentaban valores faltantes (NA) en cualquiera de las variables clave seleccionadas para el análisis. Esto aseguró que el modelo se entrenara con un conjunto de datos completo y consistente para la serie de tiempo. Finalmente, los datos se dividieron en conjuntos de entrenamiento (1990-2016) y prueba (2017-2021) para la validación del modelo.
# Carga de las bases de datos
bd_expec <- read.csv("life-expectancy.csv")
bd_gdp <- read.csv("gdp-per-capita-worldbank.csv")
bd_pop <- read.csv("population.csv")
bd_death <- read.csv("death-rate.csv")
bd_int <- read.csv("share-of-individuals-using-the-internet.csv")
bd_fert <- read.csv("Fertility-rate.csv")
bd_hdi <- read.csv("human-development-index.csv")
bd_co2 <- read.csv("co-emissions-per-capita.csv")
bd_uvr <- read.csv("urban-vs-rural-majority.csv")
bd_elec <- read.csv("share-of-the-population-with-access-to-electricity.csv")
# Renombramos columnas
bd_expec_1 <- bd_expec %>%
select(Entity, Year, Period.life.expectancy.at.birth...Sex..total...Age..0) %>%
rename(Country = Entity, Expect = Period.life.expectancy.at.birth...Sex..total...Age..0)
bd_gdp_1 <- bd_gdp %>%
select(Entity, Year, GDP.per.capita..PPP..constant.2021.international...) %>%
rename(Country = Entity, GDP = GDP.per.capita..PPP..constant.2021.international...)
bd_pop_1 <- bd_pop %>%
select(Entity, Year, Population..historical.) %>%
rename(Country = Entity, Population = Population..historical.)
bd_death_1 <- bd_death %>%
select(Entity, Year, Death.rate...Sex..all...Age..all...Variant..estimates) %>%
rename(Country = Entity, Death_rate = Death.rate...Sex..all...Age..all...Variant..estimates)
bd_int_1 <- bd_int %>%
select(Entity, Year, Individuals.using.the.Internet....of.population.) %>%
rename(Country = Entity, Internet = Individuals.using.the.Internet....of.population.)
bd_fert_1 <- bd_fert %>%
select(Entity, Year, Fertility.rate...Sex..all...Age..all...Variant..estimates) %>%
rename(Country = Entity, Fertility = Fertility.rate...Sex..all...Age..all...Variant..estimates)
bd_hdi_1 <- bd_hdi %>%
select(Entity, Year, Human.Development.Index) %>%
rename(Country = Entity, HDI = Human.Development.Index)
bd_co2_1 <- bd_co2 %>%
select(Entity, Year, Annual.CO..emissions..per.capita.) %>%
rename(Country = Entity, CO2 = Annual.CO..emissions..per.capita.)
bd_uvr_1 <- bd_uvr %>%
select(Entity, Year, Share.of.population.residing.in.rural.areas..HYDE.estimates.and.UN.projections., Share.of.population.residing.in.urban.areas..HYDE.estimates.and.UN.projections.) %>%
rename(Country = Entity, Rural = Share.of.population.residing.in.rural.areas..HYDE.estimates.and.UN.projections.,
Urban = Share.of.population.residing.in.urban.areas..HYDE.estimates.and.UN.projections.)
bd_elec_1 <- bd_elec %>%
select(Entity, Year, Access.to.electricity....of.population.) %>%
rename(Country = Entity, Electricity = Access.to.electricity....of.population.)
# Unimos las bases de datos para las 10 variables seleccionadas
bd_panel_1 <- bd_gdp_1 %>%
left_join(bd_expec_1, by = c("Country", "Year")) %>%
left_join(bd_pop_1, by = c("Country", "Year")) %>%
left_join(bd_death_1, by = c("Country", "Year")) %>%
left_join(bd_int_1, by = c("Country", "Year")) %>%
left_join(bd_fert_1, by = c("Country", "Year")) %>%
left_join(bd_hdi_1, by = c("Country", "Year")) %>%
left_join(bd_co2_1, by = c("Country", "Year")) %>%
left_join(bd_uvr_1, by = c("Country", "Year")) %>%
left_join(bd_elec_1, by = c("Country", "Year")) %>%
filter(Year >= 1990 & Year <= 2021) %>% # Filtramos por el rango de años
# Filtramos NAs en las variables seleccionadas para asegurar datos completos
filter(!is.na(Expect) & !is.na(GDP) & !is.na(Population) & !is.na(Death_rate) & !is.na(Internet) &
!is.na(Fertility) & !is.na(HDI) & !is.na(CO2) &
!is.na(Urban) & !is.na(Rural) & !is.na(Electricity)) %>%
distinct(Country, Year, .keep_all = TRUE) # Asegura unicidad por País-Año
# 2. Filtrar para el país seleccionado: Argentina
selected_country_name <- "Argentina"
bd_panel_final <- bd_panel_1 %>%
filter(Country == selected_country_name)
View(bd_panel_final)
summary(bd_panel_final)
## Country Year GDP Expect
## Length:32 Min. :1990 Min. :17007 Min. :71.61
## Class :character 1st Qu.:1998 1st Qu.:21460 1st Qu.:73.41
## Mode :character Median :2006 Median :23830 Median :74.83
## Mean :2006 Mean :24191 Mean :74.61
## 3rd Qu.:2013 3rd Qu.:27694 3rd Qu.:75.84
## Max. :2021 Max. :29426 Max. :76.85
## Population Death_rate Internet Fertility
## Min. :32755907 Min. :7.386 Min. : 0.0000 Min. :1.585
## 1st Qu.:36266595 1st Qu.:7.512 1st Qu.: 0.6932 1st Qu.:2.346
## Median :39419450 Median :7.580 Median :19.3239 Median :2.428
## Mean :39405453 Mean :7.691 Mean :31.4712 Mean :2.464
## 3rd Qu.:42692858 3rd Qu.:7.700 3rd Qu.:61.1000 3rd Qu.:2.673
## Max. :45312283 Max. :9.725 Max. :87.1507 Max. :3.034
## HDI CO2 Rural Urban
## Min. :0.7240 Min. :3.285 Min. : 5.783 Min. :86.60
## 1st Qu.:0.7625 1st Qu.:3.603 1st Qu.: 7.057 1st Qu.:89.50
## Median :0.8080 Median :4.037 Median : 8.619 Median :91.38
## Mean :0.8016 Mean :3.993 Mean : 8.930 Mean :91.07
## 3rd Qu.:0.8440 3rd Qu.:4.366 3rd Qu.:10.505 3rd Qu.:92.94
## Max. :0.8530 Max. :4.634 Max. :13.402 Max. :94.22
## Electricity
## Min. : 92.15
## 1st Qu.: 94.73
## Median : 96.85
## Mean : 96.83
## 3rd Qu.: 99.40
## Max. :100.00
# 2.1 Dividir los datos en TRAIN y TEST
train_data <- bd_panel_final[1:27, ] # Datos de 1990 a 2016 (27 observaciones)
test_data <- bd_panel_final[28:32, ] # Datos de 2017 a 2021 (5 observaciones)
Para la construcción del Modelo Lineal de Series de Tiempo
(tslm), se seleccionaron las variables cuantitativas de interés
que se utilizarían como predictores de la Esperanza de
Vida. Se prepararon los datos del conjunto de entrenamiento
(train_data
) transformándolos en objetos de serie de tiempo
(ts
), lo cual es un paso fundamental para el análisis y
modelado temporal en R con funciones como tslm. Esto
asegura que el modelo reconozca la estructura secuencial y temporal de
los datos.
Las variables seleccionadas para conformar el objeto de serie de
tiempo de entrenamiento, train_ts_data_model
, incluyen la
Esperanza de Vida (Expect
) como variable
dependiente, así como el PIB (GDP
), el
uso de Internet (Internet
), el
Índice de Desarrollo Humano (HDI
),
las emisiones de CO2 (CO2
), el
acceso a Electricidad (Electricity
), la
Población (Population
), la Tasa de
Mortalidad (Death_rate
), la Tasa de
Fertilidad (Fertility
), la población
Rural (Rural
), la Población
Urbana (Urban
).
El código para la creación de esta variable y la posterior definición de los objetos de serie de tiempo es el siguiente:
# 3. Crear objetos de serie de tiempo (ts) para cada variable del conjunto de entrenamiento
# Se utiliza el conjunto 'train_data' para entrenar el modelo
start_year_train <- min(train_data$Year)
end_year_train <- max(train_data$Year)
frequency_val <- 1 # Anual
train_ts_data_model <- ts(train_data %>%
select(Expect, GDP, Internet, HDI, CO2, Electricity,
Population, Death_rate, Fertility, Urban, Rural),
start = min(train_data$Year),
frequency = frequency_val)
Series de Tiempo
Una serie de tiempo es una secuencia de observaciones tomadas a intervalos de tiempo sucesivos y específicos. A diferencia de los datos de corte transversal, las observaciones en una serie de tiempo no son independientes entre sí, ya que el valor actual está influenciado por valores pasados. Este aspecto temporal es crucial para su análisis y modelado.
El objetivo principal del análisis de series de tiempo es comprender la estructura de los datos para realizar pronósticos o identificar patrones subyacentes.
La ecuación del modelo es la siguiente:
knitr::include_graphics("ST.png")
Supuestos en la Modelación Lineal en Datos Temporales
Para que un modelo de regresión lineal sea válido y sus estimaciones sean eficientes y consistentes, es necesario que se cumplan ciertos supuestos sobre los errores o residuales del modelo. En el contexto de las series de tiempo, el supuesto más relevante y frecuentemente violado es el de la no autocorrelación de los errores.
Linealidad: La relación entre la variable dependiente y las variables independientes es lineal.
Homocedasticidad: La varianza de los errores es constante para todas las observaciones.
Normalidad de los Errores: Los errores se distribuyen normalmente.
No Autocorrelación (Independencia de los Errores): Este es el supuesto más crítico en el análisis de series de tiempo. Implica que los errores en un período de tiempo no están correlacionados con los errores en períodos anteriores o posteriores. Si existe autocorrelación, las estimaciones de los coeficientes del modelo pueden ser sesgadas e ineficientes, y los errores estándar subestimados, lo que lleva a inferencias estadísticas incorrectas. La presencia de autocorrelación sugiere que el modelo no ha capturado completamente la dinámica temporal presente en los datos. Se utilizan funciones de autocorrelación (ACF) y de autocorrelación parcial (PACF) de los residuales, así como pruebas estadísticas como la de Durbin-Watson o Ljung-Box, para diagnosticar este problema.
La violación del supuesto de no autocorrelación puede requerir la incorporación de términos de retardo de la variable dependiente o de las variables explicativas en el modelo, o el uso de modelos más complejos de series de tiempo.
Análisis Exploratorio de Datos (EDA)
El análisis exploratorio de datos es un paso crucial para comprender las características y patrones de las variables. A continuación, se presentan visualizaciones de las series de tiempo, funciones de autocorrelación, diagramas de dispersión, matrices de correlación y diagramas de dispersión.
En esta sección, se presentan los resultados del análisis descriptivo de las variables y los hallazgos iniciales del comportamiento de las series de tiempo. Estos análisis son fundamentales para comprender las características individuales de cada variable y sus patrones a lo largo del tiempo, sentando las bases para la modelación posterior.
Primero, se examinan las estadísticas descriptivas de las variables
clave en el conjunto de datos final bd_panel_final
. Este
dataframe ya contiene todos los datos unificados, filtrados por años y
por el país de interés (Argentina), y sin valores
faltantes. Esto nos permite entender la distribución, rangos, medias,
medianas y la dispersión de cada variable a lo largo de todo el período
de estudio antes de proceder con la división en conjuntos de
entrenamiento, prueba y la modelación. Este análisis proporciona una
visión inicial sobre el comportamiento de cada serie de tiempo.
DT::datatable(bd_panel_final)
summary(bd_panel_final)
## Country Year GDP Expect
## Length:32 Min. :1990 Min. :17007 Min. :71.61
## Class :character 1st Qu.:1998 1st Qu.:21460 1st Qu.:73.41
## Mode :character Median :2006 Median :23830 Median :74.83
## Mean :2006 Mean :24191 Mean :74.61
## 3rd Qu.:2013 3rd Qu.:27694 3rd Qu.:75.84
## Max. :2021 Max. :29426 Max. :76.85
## Population Death_rate Internet Fertility
## Min. :32755907 Min. :7.386 Min. : 0.0000 Min. :1.585
## 1st Qu.:36266595 1st Qu.:7.512 1st Qu.: 0.6932 1st Qu.:2.346
## Median :39419450 Median :7.580 Median :19.3239 Median :2.428
## Mean :39405453 Mean :7.691 Mean :31.4712 Mean :2.464
## 3rd Qu.:42692858 3rd Qu.:7.700 3rd Qu.:61.1000 3rd Qu.:2.673
## Max. :45312283 Max. :9.725 Max. :87.1507 Max. :3.034
## HDI CO2 Rural Urban
## Min. :0.7240 Min. :3.285 Min. : 5.783 Min. :86.60
## 1st Qu.:0.7625 1st Qu.:3.603 1st Qu.: 7.057 1st Qu.:89.50
## Median :0.8080 Median :4.037 Median : 8.619 Median :91.38
## Mean :0.8016 Mean :3.993 Mean : 8.930 Mean :91.07
## 3rd Qu.:0.8440 3rd Qu.:4.366 3rd Qu.:10.505 3rd Qu.:92.94
## Max. :0.8530 Max. :4.634 Max. :13.402 Max. :94.22
## Electricity
## Min. : 92.15
## 1st Qu.: 94.73
## Median : 96.85
## Mean : 96.83
## 3rd Qu.: 99.40
## Max. :100.00
El summary(bd_panel_final)
proporciona una visión
detallada de las 11 variables cuantitativas utilizadas
en el análisis de series de tiempo para Argentina
durante el período 1990-2021.
La Esperanza de Vida (Expect
), nuestra
variable de interés, muestra una media de aproximadamente 74.61
años y una mediana de 74.83 años, con un rango
que va desde 71.61 hasta 76.85 años. Estos valores
indican una tendencia general de aumento y estabilidad en la esperanza
de vida en Argentina a lo largo de las décadas analizadas.
Variables como GDP
(PIB per cápita),
Population
(Población), e Internet
muestran
una variabilidad considerable a lo largo del tiempo en Argentina,
reflejando el crecimiento económico, demográfico y la adopción
tecnológica del país. Por ejemplo, el GDP
tiene una
media de 24,191 USD y una mediana de 23,830
USD, lo que subraya la dinámica económica y las fluctuaciones
experimentadas en el país durante el período estudiado.
Por otro lado, variables como Death_rate
(tasa de
mortalidad) y Fertility
(tasa de fertilidad) exhiben rangos
que reflejan cambios significativos en las condiciones de salud pública
y la dinámica demográfica a lo largo de las décadas. El HDI
(Índice de Desarrollo Humano) presenta un rango de 0.7240 a
0.8530, lo que indica un progreso constante en el desarrollo
humano en Argentina. Finalmente, CO2
(emisiones de CO2 per
cápita) y Electricity
(acceso a electricidad) también
revelan sus propias tendencias y rangos temporales, ofreciendo insights
sobre el desarrollo ambiental y de infraestructura.
Estas estadísticas descriptivas iniciales son cruciales para entender la naturaleza de cada serie de tiempo y sus características individuales (tendencia central, dispersión, asimetría) antes de aplicar técnicas de modelación de series temporales y pronóstico.
Estos gráficos muestran cómo cada variable ha cambiado a lo largo del tiempo, desde 1990 hasta 2016.
plot.ts(bd_panel_final$Expect[1:27], main = "Esperanza de Vida en Argentina (Datos de Entrenamiento 1990-2016)",
xlab = "Año", ylab = "Esperanza de Vida",
xaxt = "n")
axis(1, at = seq_along(bd_panel_final$Year[1:27]), labels = bd_panel_final$Year[1:27])
La esperanza de vida en Argentina muestra una clara tendencia ascendente y casi lineal desde 1990 hasta 2016. Se observa un aumento constante, pasando de aproximadamente 71.5 años a principios de los 90 a más de 76 años hacia 2014-2015, con una ligera caída hacia 2016. Esto indica una mejora sostenida en las condiciones de salud y calidad de vida en el país durante este período, probablemente influenciada por avances médicos, mejoras en saneamiento y nutrición, y un mayor acceso a servicios de salud. Esta fuerte tendencia lineal sugiere que la serie no es estacionaria y refuerza la necesidad de incluir términos autorregresivos o variables con tendencia en nuestro modelo para capturar adecuadamente su dinámica.
# Gráficos autoplot (series de tiempo) de las variables del TRAIN
p_gdp <- autoplot(argentina_gdp_ts_train) +
ggtitle("Evolución del PIB Per Cápita en Argentina (Entrenamiento)") +
xlab("Año") + ylab("PIB Per Cápita")
ggplotly(p_gdp)
El PIB per cápita en Argentina presenta un comportamiento más volátil, pero con una tendencia general creciente. Inicia alrededor de 17,000-18,000 y asciende hasta casi 24,000 a finales de los 90. Luego, experimenta una caída significativa a principios de los 2000, esto debido a la crisis de 2001.
La crisis de 2001, también llamada “El corralito”, fue la culminación de una serie de factores económicos y políticos que se venían gestando desde la década de 1990.
Iniciando con el régimen de convertibilidad (1991-2001), que fijaba la paridad del peso argentino con el dólar estadounidense en 1 a 1 (un peso = un dólar). El objetivo principal era frenar la hiperinflación crónica que había afectado al país durante años. Aunque a corto plazo funcionó creó una burbuja o ilusión de estabilidad que era insostenible.
Luego Argentina pasó a la etapa de la recesión (1998) y la agonía de la convertibilidad que generó desempleo e inestabilidad, además los mercados financieros comenzaron a dudar de su capacidad para mantener la convertibilidad y pagar su deuda. Las tasas de interés para el país se dispararon, dificultando aún más el refinanciamiento de la deuda. El FMI otorgó sucesivos rescates financieros, pero las condiciones impuestas, como ajuste fiscal y recortes de gasto, agudizaron la recesión y el malestar social.
Para Diciembre de 2001, fue la época del Colapso y el “Corralito”. En esta etapa la fuga de capitales se aceleró a medida que la confianza en el sistema bancario y la convertibilidad se desmoronaba. Entonces, para frenar la salida de depósitos y evitar el colapso bancario, el 1 de diciembre de 2001, el gobierno del presidente Fernando de la Rúa (Centroizquierda) implementó el “Corralito”, una medida que restringía la libre disposición de dinero en efectivo de los depósitos bancarios. Esto significaba que los ciudadanos no podían retirar grandes sumas de sus propias cuentas. Esto desató una ola de indignación popular, protestas masivas y disturbios en todo el país. El caos llegó a tal punto que, el 20 de diciembre de 2001, Fernando de la Rúa renunció a la presidencia, marcando el inicio de un período de extrema inestabilidad política con varios presidentes en un corto lapso.
A principios de enero de 2002, el gobierno de Eduardo Duhalde (Peronismo), que asumió la presidencia, declaró el fin de la convertibilidad y devaluó el peso. La paridad fija de 1 a 1 fue abandonada, y el peso se devaluó rápidamente. Después se implementó la “pesificación asimétrica” las deudas en dólares se convirtieron a pesos a una tasa de 1 a 1 (beneficiando a los deudores), mientras que los depósitos en dólares se convirtieron a pesos a una tasa de 1.4 a 1 (perjudicando a los ahorristas). Esto generó una enorme pérdida de confianza.
Argentina se recuperó fuertemente a partir de 2003-2004 gracias a un tipo de cambio competitivo y el aumento de los precios de las materias primas (soja). Alcanzó un pico cercano a 27,000 en 2008. Esta pequeña caída en el PIB de Argentina en 2008 fue principalmente un reflejo del impacto de la Crisis Financiera Global de 2008, que se manifestó a través de una menor demanda externa, una reducción en los precios de los commodities y una contracción del crédito global. Esta situación se vio agravada por tensiones internas como el conflicto con el sector agropecuario por las retenciones a las exportaciones, lo que afectó la producción y la recaudación fiscal en un momento de vulnerabilidad externa.
A pesar de esta contracción, el impacto en Argentina fue en cierta medida mitigado en comparación con otros países, debido a que el país ya tenía menos integración con el sistema financiero global tras su crisis de 2001, y había acumulado reservas internacionales y mantenía una balanza comercial superavitaria (aunque reducida por la caída de exportaciones). La rápida recuperación posterior se debió en parte al repunte de los precios de los commodities y a políticas anticíclicas del gobierno.
p_population <- autoplot(argentina_population_ts_train) +
ggtitle("Evolución de la Población en Argentina (Entrenamiento)") +
xlab("Año") + ylab("Población")
ggplotly(p_population)
La población de Argentina muestra un crecimiento muy estable y casi perfectamente lineal a lo largo de todo el período de entrenamiento. Pasó de aproximadamente 32.5 millones en 1990 a más de 42.5 millones en 2016. Esta tendencia constante es típica de la dinámica poblacional natural de un país, lo que la convierte en una variable potencialmente robusta para capturar efectos de escala o demográficos en el modelo de esperanza de vida.
p_death_rate <- autoplot(argentina_death_rate_ts_train) +
ggtitle("Evolución de la Tasa de Mortalidad en Argentina (Entrenamiento)") +
xlab("Año") + ylab("Tasa de Mortalidad")
ggplotly(p_death_rate)
La tasa de mortalidad (Death_rate
) en
Argentina exhibe un comportamiento bastante fluctuante y
errático a lo largo del período, sin una tendencia clara y sostenida.
Sus valores oscilan predominantemente entre aproximadamente 7.4 y 7.9
defunciones por cada 1,000 habitantes. La ausencia de una tendencia
definida sugiere que sus variaciones anuales están influenciadas por
factores distintos al paso lineal del tiempo.
Particularmente interesante resulta el gran pico observado alrededor de 2007. Aunque este período coincide con un fuerte crecimiento económico en el país, lo que a primera vista podría parecer contradictorio con un aumento de la mortalidad, se hipotetiza que este incremento puntual podría estar relacionado con la dinámica demográfica. A medida que la población envejece, las enfermedades crónicas tienden a convertirse en las principales causas de muerte. Por lo tanto, un aumento en la tasa de mortalidad en un año específico podría deberse a una cohorte más grande de adultos mayores alcanzando edades con mayor riesgo de desarrollar y fallecer por estas enfermedades
p_internet <- autoplot(argentina_internet_ts_train) +
ggtitle("Evolución del Uso de Internet en Argentina (Entrenamiento)") +
xlab("Año") + ylab("Uso de Internet (% población)")
ggplotly(p_internet)
El uso de internet muestra un crecimiento exponencial. Partiendo de niveles casi nulos en 1990, comienza un ascenso gradual a finales de los 90 y principios de los 2000, para luego acelerarse drásticamente a partir de 2005. Hacia 2016, casi el 70% de la población tiene acceso a internet. Esto refleja la rápida adopción de la tecnología y la digitalización del país.
p_fertility <- autoplot(argentina_fertility_ts_train) +
ggtitle("Evolución de la Tasa de Fertilidad en Argentina (Entrenamiento)") +
xlab("Año") + ylab("Tasa de Fertilidad")
ggplotly(p_fertility)
La tasa de fertilidad en Argentina muestra una clara y sostenida tendencia decreciente a lo largo del período. Desde más de 3.0 nacimientos por mujer en 1990, disminuye progresivamente hasta acercarse a 2.2-2.3 en 2016. Esto es consistente con tendencias demográficas globales de países en desarrollo y desarrollados, atribuidas a factores como educación, urbanización y acceso a planificación familiar.
p_hdi <- autoplot(argentina_hdi_ts_train) +
ggtitle("Evolución del Índice de Desarrollo Humano (HDI) en Argentina (Entrenamiento)") +
xlab("Año") + ylab("HDI")
ggplotly(p_hdi)
El Índice de Desarrollo Humano (HDI) presenta una fuerte y consistente tendencia ascendente. Desde aproximadamente 0.72 en 1990, sube de manera casi lineal hasta alcanzar cerca de 0.85 en 2016. Esto indica una mejora generalizada en los componentes del HDI: esperanza de vida, educación e ingresos per cápita.
p_co2 <- autoplot(argentina_co2_ts_train) +
ggtitle("Evolución de las Emisiones de CO2 Per Cápita en Argentina (Entrenamiento)") +
xlab("Año") + ylab("Emisiones de CO2 Per Cápita")
ggplotly(p_co2)
Las emisiones de CO2 per cápita muestran una tendencia general creciente, pero con fluctuaciones notables. Aumentan desde 1990 hasta un pico alrededor de 2000, experimentan una caída pronunciada durante la crisis de 2001-2002, este fue un efecto directo y casi mecánico de la severa recesión económica. Cuando la economía se contrae drásticamente, la producción industrial y el consumo de energía disminuyen, lo que a su vez reduce las emisiones de gases de efecto invernadero asociados a la quema de combustibles fósiles. No fue resultado de políticas ambientales deliberadas o mejoras en la eficiencia, sino una consecuencia dolorosa de la crisis económica.
La posterior recuperación de las emisiones corresponde con la reactivación económica del país, el aumento de la producción y el consumo de energía. Después de un pico en 2008, se estabilizan y muestran una ligera tendencia a la baja o a la meseta hacia el final del período. Esto refleja la relación entre la actividad económica y las emisiones.
p_urban <- autoplot(argentina_urban_ts_train) +
ggtitle("Evolución de la Población Urbana en Argentina (Entrenamiento)") +
xlab("Año") + ylab("Población Urbana (% total)")
ggplotly(p_urban)
la población urbana como porcentaje del total muestra una tendencia ascendente muy marcada y casi perfectamente lineal. Aumentó de menos del 87% en 1990 a casi el 93% en 2016. Esto confirma la fuerte urbanización de Argentina durante este período.
p_rural <- autoplot(argentina_rural_ts_train) +
ggtitle("Evolución de la Población Rural en Argentina (Entrenamiento)") +
xlab("Año") + ylab("Población Rural (% total)")
ggplotly(p_rural)
La población rural como porcentaje del total muestra una tendencia decreciente muy marcada y casi perfectamente lineal. Disminuye de más del 12.5% en 1990 a menos del 7% en 2016. Esta es una clara señal de urbanización y migración del campo a la ciudad
p_electricity <- autoplot(argentina_electricity_ts_train) +
ggtitle("Evolución del Acceso a Electricidad en Argentina (Entrenamiento)") +
xlab("Año") + ylab("Acceso a Electricidad (% población)")
ggplotly(p_electricity)
El acceso a electricidad en Argentina muestra un crecimiento constante y muy alto, acercándose a la cobertura total. Inicia en aproximadamente 92% en 1990 y asciende progresivamente hasta casi el 100% en 2014, con leves fluctuaciones hacia el final del período. Esto indica un éxito significativo en la expansión de infraestructura básica.
Los gráficos ACF (Función de Autocorrelación) nos ayudan a entender la dependencia de cada observación con respecto a las observaciones pasadas (rezagos). Las barras que superan las líneas azules punteadas indican una autocorrelación estadísticamente significativa. Un análisis de estos gráficos es crucial para identificar patrones como tendencias o estacionalidad en la serie, así como para determinar si una serie es estacionaria. La forma en que las autocorrelaciones decaen (rápidamente o lentamente) proporciona información valiosa para la selección de la estructura adecuada en modelos de series de tiempo.
ggAcf(argentina_expect_ts_train, lag.max = 26) +
ggtitle("ACF para Esperanza de Vida en Argentina (Entrenamiento)")
Este gráfico presenta una autocorrelación positiva y decreciente que se mantiene significativa hasta al menos el rezago 5. Esto es característico de una serie con una fuerte tendencia. La alta autocorrelación en los primeros rezagos sugiere que el valor de la esperanza de vida en un año está fuertemente relacionado con el valor del año anterior, lo que es coherente con la tendencia ascendente observada anteriormente. La serie no es estacionaria.
ggAcf(argentina_gdp_ts_train, lag.max = 26) +
ggtitle("ACF para PIB Per Cápita en Argentina (Entrenamiento)")
Este muestra una autocorrelación positiva y decreciente que se mantiene significativa hasta al menos el rezago 4. Aunque el PIB per cápita tiene más fluctuaciones, la tendencia subyacente de crecimiento hace que las observaciones pasadas influyan en las futuras, lo que se refleja en esta ACF. Esto indica no estacionariedad.
ggAcf(argentina_population_ts_train, lag.max = 26) +
ggtitle("ACF para Población en Argentina (Entrenamiento)")
Presenta una autocorrelación muy alta y persistente, que se mantiene significativa en casi todos los rezagos mostrados. Esto es el patrón típico de una serie con una tendencia muy fuerte y lineal, lo que indica una clara no estacionariedad.
ggAcf(argentina_death_rate_ts_train, lag.max = 26) +
ggtitle("ACF para Tasa de Mortalidad en Argentina (Entrenamiento)")
A diferencia de las anteriores, esta ACF muestra pocas autocorrelaciones significativas. Los rezagos 1 y 2 son ligeramente negativos,El rezago 9 muestra una autocorrelación positiva. La mayoría de los rezagos caen dentro de las bandas de confianza. Esto sugiere que la tasa de mortalidad es una serie más cercana a la estacionariedad o con una tendencia muy débil y más ruido. Sus valores pasados no predicen fuertemente los futuros.
ggAcf(argentina_internet_ts_train, lag.max = 26) +
ggtitle("ACF para Uso de Internet en Argentina (Entrenamiento)")
Aquí se muestra una autocorrelación muy fuerte y positiva que decae lentamente, permaneciendo significativa en casi todos los rezagos. Esto es un indicativo de una serie no estacionaria con una fuerte tendencia ascendente, como se observó en su gráfico evolución, especialmente con su crecimiento exponencial.
ggAcf(argentina_fertility_ts_train, lag.max = 26) +
ggtitle("ACF para Tasa de Fertilidad en Argentina (Entrenamiento)")
Presenta una autocorrelación positiva y decreciente que se mantiene significativa en la mayoría de los rezagos. Esto es indicativo de una serie no estacionaria con una tendencia clara (en este caso, decreciente), lo que es coherente con lo observado en su gráfico de evolución.
ggAcf(argentina_hdi_ts_train, lag.max = 26) +
ggtitle("ACF para HDI en Argentina (Entrenamiento)")
Muestra una autocorrelación muy fuerte y positiva que decae lentamente y se mantiene significativa en todos los rezagos. Este es el patrón clásico de una serie no estacionaria con una fuerte tendencia ascendente.
ggAcf(argentina_co2_ts_train, lag.max = 26) +
ggtitle("ACF para Emisiones de CO2 Per Cápita en Argentina (Entrenamiento)")
Exhibe una autocorrelación positiva que decae, siendo significativa en varios rezagos, especialmente los primeros. Esto sugiere la presencia de una tendencia, a pesar de las fluctuaciones, indicando no estacionariedad. Coincide con la tendencia general ascendente, aunque con periodos de caída.
ggAcf(argentina_urban_ts_train, lag.max = 26) +
ggtitle("ACF para Población Urbana en Argentina (Entrenamiento)")
Presenta una autocorrelación muy alta y persistente en todos los rezagos significativos. Este es el patrón clásico de una serie no estacionaria con una tendencia fuerte y lineal.
ggAcf(argentina_rural_ts_train, lag.max = 26) +
ggtitle("ACF para Población Rural en Argentina (Entrenamiento)")
Muestra una autocorrelación muy alta y persistente en todos los rezagos significativos. Esto es característico de una serie no estacionaria con una tendencia fuerte y lineal.
ggAcf(argentina_electricity_ts_train, lag.max = 26) +
ggtitle("ACF para Acceso a Electricidad en Argentina (Entrenamiento)")
Muestra una autocorrelación muy fuerte y positiva que se mantiene significativa en la mayoría de los rezagos. Esto indica una serie no estacionaria con una fuerte tendencia ascendente, en línea con el gráfico de evolución que muestra una expansión casi total.
Estos gráficos muestran la relación entre la variable dependiente
(Esperanza de Vida, Expect
) y cada una de las variables
independientes (X) a lo largo del tiempo. La línea azul representa una
regresión lineal simple, ayudando a visualizar la tendencia de esta
relación. A través de estos gráficos, podemos obtener una primera
impresión sobre la dirección (positiva o negativa) y la aparente fuerza
de la relación lineal entre las variables, lo cual es fundamental para
identificar posibles predictores clave en nuestro modelo de series de
tiempo.
p_gdp_expect <- ggplot(train_data, aes(x = GDP, y = Expect)) +
geom_point() +
geom_smooth(method = "lm", se = FALSE, color = "blue") +
ggtitle("Esperanza de Vida vs. PIB Per Cápita (Entrenamiento)") +
xlab("PIB Per Cápita") + ylab("Esperanza de Vida")
ggplotly(p_gdp_expect)
## `geom_smooth()` using formula = 'y ~ x'
Se observa una relación positiva clara entre la esperanza de vida y el PIB per cápita. A medida que el PIB per cápita aumenta, la esperanza de vida tiende a aumentar. La línea de regresión azul muestra esta correlación positiva. Sin embargo, los puntos no están perfectamente alineados, lo que sugiere que aunque hay una relación fuerte, también hay otros factores que influyen en la esperanza de vida, o que la relación no es perfectamente lineal a lo largo de todo el rango. La dispersión es notable, especialmente en el rango medio del PIB per cápita.
p_pop_expect <- ggplot(train_data, aes(x = Population, y = Expect)) +
geom_point() +
geom_smooth(method = "lm", se = FALSE, color = "blue") +
ggtitle("Esperanza de Vida vs. Población (Entrenamiento)") +
xlab("Población") + ylab("Esperanza de Vida")
ggplotly(p_pop_expect)
## `geom_smooth()` using formula = 'y ~ x'
Existe una relación positiva muy fuerte y casi lineal entre la esperanza de vida y la población total. A medida que la población aumenta (con el tiempo), la esperanza de vida también aumenta. Los puntos están muy agrupados alrededor de la línea de regresión, lo que indica una correlación positiva muy alta. Esto puede deberse a que ambas variables tienen una fuerte tendencia temporal ascendente.
p_death_expect <- ggplot(train_data, aes(x = Death_rate, y = Expect)) +
geom_point() +
geom_smooth(method = "lm", se = FALSE, color = "blue") +
ggtitle("Esperanza de Vida vs. Tasa de Mortalidad (Entrenamiento)") +
xlab("Tasa de Mortalidad") + ylab("Esperanza de Vida")
ggplotly(p_death_expect)
## `geom_smooth()` using formula = 'y ~ x'
Se observa una relación negativa, aunque con considerable dispersión. A medida que la tasa de mortalidad aumenta, la esperanza de vida tiende a disminuir, lo cual es lógicamente esperado. Sin embargo, la dispersión de los puntos alrededor de la línea de regresión es alta, y la pendiente de la línea es relativamente plana, lo que sugiere que, si bien hay una relación inversa, no es tan fuerte o lineal como con otras variables, o que la tasa de mortalidad por sí sola no explica gran parte de la varianza en la esperanza de vida.
p_internet_expect <- ggplot(train_data, aes(x = Internet, y = Expect)) +
geom_point() +
geom_smooth(method = "lm", se = FALSE, color = "blue") +
ggtitle("Esperanza de Vida vs. Uso de Internet (Entrenamiento)") +
xlab("Uso de Internet (% población)") + ylab("Esperanza de Vida")
ggplotly(p_internet_expect)
## `geom_smooth()` using formula = 'y ~ x'
Muestra una relación positiva muy fuerte y casi lineal. A medida que el uso de internet aumenta, la esperanza de vida también aumenta. Los puntos están muy cerca de la línea de regresión, especialmente en los rangos más altos de uso de internet. Esto sugiere que el acceso y uso de tecnologías de la información pueden estar correlacionados con la modernización y, por ende, con la esperanza de vida.
p_fert_expect <- ggplot(train_data, aes(x = Fertility, y = Expect)) +
geom_point() +
geom_smooth(method = "lm", se = FALSE, color = "blue") +
ggtitle("Esperanza de Vida vs. Tasa de Fertilidad (Entrenamiento)") +
xlab("Tasa de Fertilidad") + ylab("Esperanza de Vida")
ggplotly(p_fert_expect)
## `geom_smooth()` using formula = 'y ~ x'
Se observa una relación negativa muy fuerte y bastante lineal. A medida que la tasa de fertilidad disminuye, la esperanza de vida tiende a aumentar. Esto es una tendencia demográfica común donde países con mayor desarrollo y esperanza de vida suelen tener tasas de natalidad más bajas debido a factores socioeconómicos y culturales. Los puntos se agrupan bien alrededor de la línea de regresión.
p_hdi_expect <- ggplot(train_data, aes(x = HDI, y = Expect)) +
geom_point() +
geom_smooth(method = "lm", se = FALSE, color = "blue") +
ggtitle("Esperanza de Vida vs. HDI (Entrenamiento)") +
xlab("HDI") + ylab("Esperanza de Vida")
ggplotly(p_hdi_expect)
## `geom_smooth()` using formula = 'y ~ x'
Presenta una relación positiva extremadamente fuerte y lineal. A medida que el Índice de Desarrollo Humano (HDI) aumenta, la esperanza de vida también lo hace de manera muy predecible. Los puntos están muy pegados a la línea de regresión. Esto es esperado, ya que la esperanza de vida es uno de los componentes clave del HDI, por lo que una alta correlación es inherente a la definición del índice.
p_co2_expect <- ggplot(train_data, aes(x = CO2, y = Expect)) +
geom_point() +
geom_smooth(method = "lm", se = FALSE, color = "blue") +
ggtitle("Esperanza de Vida vs. Emisiones de CO2 Per Cápita (Entrenamiento)") +
xlab("Emisiones de CO2 Per Cápita") + ylab("Esperanza de Vida")
ggplotly(p_co2_expect)
## `geom_smooth()` using formula = 'y ~ x'
Se observa una relación positiva clara. A medida que las emisiones de CO2 per cápita aumentan, la esperanza de vida tiende a aumentar. Esta relación puede parecer contraintuitiva en términos de salud ambiental directa, pero probablemente refleja la correlación de ambos con el desarrollo económico e industrial. Los países con mayor desarrollo económico también tienden a tener mayores emisiones de CO2 per cápita debido a su actividad industrial y consumo energético.
p_urban_expect <- ggplot(train_data, aes(x = Urban, y = Expect)) +
geom_point() +
geom_smooth(method = "lm", se = FALSE, color = "blue") +
ggtitle("Esperanza de Vida vs. Población Urbana (Entrenamiento)") +
xlab("Población Urbana (% total)") + ylab("Esperanza de Vida")
ggplotly(p_urban_expect)
## `geom_smooth()` using formula = 'y ~ x'
Presenta una relación positiva muy fuerte y lineal. A medida que el porcentaje de población urbana aumenta, la esperanza de vida también aumenta. Esto es el complemento directo del gráfico anterior y refuerza la idea de que la urbanización está asociada con una mayor esperanza de vida en Argentina durante este período, debido a un mejor acceso a servicios. Los puntos están muy cerca de la línea de regresión.
p_rural_expect <- ggplot(train_data, aes(x = Rural, y = Expect)) +
geom_point() +
geom_smooth(method = "lm", se = FALSE, color = "blue") +
ggtitle("Esperanza de Vida vs. Población Rural (Entrenamiento)") +
xlab("Población Rural (% total)") + ylab("Esperanza de Vida")
ggplotly(p_rural_expect)
## `geom_smooth()` using formula = 'y ~ x'
Muestra una relación negativa muy fuerte y lineal. A medida que el porcentaje de población rural disminuye, la esperanza de vida tiende a aumentar. Esto es coherente con la urbanización y el acceso a mejores servicios de salud, saneamiento y oportunidades que suelen concentrarse en áreas urbanas, lo que contribuye a una mayor esperanza de vida. Los puntos están bastante cerca de la línea de regresión.
p_elec_expect <- ggplot(train_data, aes(x = Electricity, y = Expect)) +
geom_point() +
geom_smooth(method = "lm", se = FALSE, color = "blue") +
ggtitle("Esperanza de Vida vs. Acceso a Electricidad (Entrenamiento)") +
xlab("Acceso a Electricidad (% población)") + ylab("Esperanza de Vida")
ggplotly(p_elec_expect)
## `geom_smooth()` using formula = 'y ~ x'
Se observa una relación positiva extremadamente fuerte y lineal. A medida que el acceso a electricidad (% población) aumenta, la esperanza de vida también lo hace. Dado que el acceso a electricidad se acerca al 100%, esta variable actúa casi como un indicador de desarrollo básico consolidado. Los puntos están muy alineados con la línea de regresión, sugiriendo una correlación muy alta.
Estos gráficos proporcionan una visión holística de las relaciones
entre todas las variables en el conjunto de datos de entrenamiento. Más
allá de las relaciones bivariadas, la matriz ggpairs
combina en una sola visualización los diagramas de dispersión para cada
par de variables (revelando la dirección y fuerza de su relación), las
distribuciones univariadas de cada variable (en la diagonal) y los
coeficientes de correlación. Esto es fundamental para identificar
rápidamente patrones, detectar posibles relaciones no lineales, evaluar
la existencia de multicolinealidad entre las variables predictoras y, en
última instancia, comprender mejor la estructura general de los datos
antes de la construcción del modelo lineal de series de tiempo.
set.seed(201780)
argentina_vars_for_pairs_train <- train_data %>%
select(Expect, GDP, Population, Death_rate, Internet, Fertility, HDI, CO2, Urban, Rural, Electricity)
ggpairs(argentina_vars_for_pairs_train,
title = "Relaciones entre Variables Clave en Argentina (Entrenamiento)")
Este es un gráfico de pares que muestra la relación bivariada entre cada par de variables.
Expect con otras variables:
Correlaciones positivas muy fuertes (más de
0.9): HDI
(0.987),
Urban
(0.991), Electricity
(0.984), Population
(0.986). Esto es muy significativo y esperado dada la
naturaleza de estas variables como indicadores de desarrollo y servicios
básicos.
Correlaciones positivas fuertes (0.8-0.9):
GDP
(0.860), Internet
(0.885), CO2
(0.850).
Estas también son relaciones importantes, indicando que el crecimiento
económico, la conectividad y las emisiones están asociadas con mayor
calidad de vida.
Correlaciones negativas fuertes:
Fertility
(-0.956), Rural
(-0.991). Esto confirma lo visto en los gráficos de
dispersión: a menor fertilidad y menor población rural, mayor esperanza
de vida. Debido a esa falta de acceso a servicios en zonas rurales, y la
modernización o concientización sobre la responsabilidad de tener hijos
es que se ve aumentada la expectativa de vida si ambas variables
disminuyen.
Correlación negativa débil:
Death_rate
(-0.147). La correlación con la
tasa de mortalidad es inversa, pero muy débil.
Otras correlaciones notables:
GDP
muestra correlaciones muy fuertes con
Internet
, HDI
, CO2
,
Urban
, Electricity
(todas por encima de 0.8),
y negativas fuertes con Fertility
y Rural
.
Esto sugiere que el PIB per cápita es un buen indicador general de
desarrollo y modernización.
Population
tiene correlaciones muy altas con
Urban
y Electricity
, y negativa muy alta con
Rural
, lo que es natural ya que son porcentajes del total.
Sin embargo, su relación con otras variables es más variada.
Death_rate
muestra correlaciones generalmente bajas con
la mayoría de las variables, lo que corrobora que su comportamiento es
más errático y menos ligado a las tendencias generales de desarrollo.
Esto refleja la razón de que al momento de calcular o analizar la
expectativa de vida se use generalmente la tasa de muerte infantil, pues
la tasa de muerte general no tiene un buen poder de explicación y
conserva muy poca relación con otras variables.
Internet
, HDI
, CO2
,
Urban
, Electricity
muestran entre sí
correlaciones positivas muy fuertes, lo que indica que tienden a moverse
juntas como indicadores de desarrollo.
Fertility
y Rural
muestran correlaciones
negativas muy fuertes con la mayoría de las variables de “desarrollo”
(GDP
, Internet
, HDI
,
CO2
, Urban
, Electricity
) y
positivas fuertes entre sí, lo que es coherente con el proceso de
urbanización y cambio demográfico.
Expect
ya se analizaron individualmente. Aquí
podemos ver las relaciones entre todas las demás, por ejemplo, la curva
entre GDP
y CO2
, probablemente reflejando el
período de crecimiento, caída y recuperación, o la relación inversa
entre Rural
y Urban
, que son
complementarias.Esta matriz de calor visualiza los coeficientes de correlación de Pearson entre todas las variables, indicando su tendencia y fuerza. Esta representación gráfica permite identificar rápidamente las relaciones bivariadas, tanto directas como inversas, y su magnitud. Es una herramienta esencial para detectar posibles problemas de multicolinealidad entre las variables predictoras, lo cual es crucial para la estabilidad y la interpretabilidad de los coeficientes en un modelo lineal de series de tiempo.
set.seed(201780)
variables_numericas_modelo_train <- train_data %>%
select(Expect, GDP, Population, Death_rate, Internet, Fertility, HDI, CO2, Urban, Rural, Electricity)
correlation_matrix_train <- cor(variables_numericas_modelo_train)
print(correlation_matrix_train)
## Expect GDP Population Death_rate Internet
## Expect 1.0000000 0.86026753 0.985966929 -0.146893354 0.8847952
## GDP 0.8602675 1.00000000 0.880889197 -0.019657715 0.8633093
## Population 0.9859669 0.88088920 1.000000000 -0.003711985 0.9340445
## Death_rate -0.1468934 -0.01965772 -0.003711985 1.000000000 0.1316256
## Internet 0.8847952 0.86330932 0.934044537 0.131625616 1.0000000
## Fertility -0.9561977 -0.76601985 -0.945729106 0.039417233 -0.7816037
## HDI 0.9873718 0.89057902 0.993928671 -0.014696935 0.9220470
## CO2 0.8504849 0.92931508 0.845499591 -0.051913593 0.7973893
## Urban 0.9910185 0.86484386 0.991362640 -0.054882938 0.8812450
## Rural -0.9910185 -0.86484387 -0.991362592 0.054882576 -0.8812450
## Electricity 0.9840776 0.88418370 0.996734269 -0.011675567 0.9354398
## Fertility HDI CO2 Urban Rural
## Expect -0.95619774 0.98737182 0.85048488 0.99101850 -0.99101847
## GDP -0.76601985 0.89057902 0.92931508 0.86484386 -0.86484387
## Population -0.94572911 0.99392867 0.84549959 0.99136264 -0.99136259
## Death_rate 0.03941723 -0.01469693 -0.05191359 -0.05488294 0.05488258
## Internet -0.78160366 0.92204700 0.79738929 0.88124503 -0.88124497
## Fertility 1.00000000 -0.94580319 -0.77473499 -0.97388372 0.97388376
## HDI -0.94580319 1.00000000 0.87322263 0.98962553 -0.98962552
## CO2 -0.77473499 0.87322263 1.00000000 0.83933988 -0.83933986
## Urban -0.97388372 0.98962553 0.83933988 1.00000000 -1.00000000
## Rural 0.97388376 -0.98962552 -0.83933986 -1.00000000 1.00000000
## Electricity -0.93834512 0.99285757 0.84361075 0.98892342 -0.98892344
## Electricity
## Expect 0.98407763
## GDP 0.88418370
## Population 0.99673427
## Death_rate -0.01167557
## Internet 0.93543984
## Fertility -0.93834512
## HDI 0.99285757
## CO2 0.84361075
## Urban 0.98892342
## Rural -0.98892344
## Electricity 1.00000000
corrplot(correlation_matrix_train,
method = "color",
type = "upper",
tl.col = "black",
tl.srt = 45,
addCoef.col = "black",
col = colorRampPalette(c("#BB4444", "#EE9988", "#FFFFFF", "#77AADD", "#4477AA"))(200),
diag = FALSE,
title = "Matriz de Correlación de Variables para el Modelo en Argentina (Entrenamiento)",
mar=c(0,0,1,0))
Esta matriz de calor visualiza los coeficientes de correlación de Pearson entre todas las variables, indicando su tendencia y fuerza.
Analizaremos las filas y columnas con Expect
(Esperanza de Vida): Contamos correlación positiva muy fuerte
en Electricity
(0.98), Urban
(0.99),
HDI
(0.99), Internet
(0.88), CO2
(0.85), GDP
(0.86). Esto refuerza la idea de que la
Esperanza de Vida está muy fuertemente correlacionada con indicadores de
desarrollo y modernización.
Para la correlación negativa muy fuerte están Rural
(-0.99), Fertility
(-0.96). Confirmando que la disminución
de la población rural y de la tasa de fertilidad están fuertemente
asociadas con el aumento de la esperanza de vida.
Por otro lado, Death_rate
(-0.15) cuenta con una
correlación inversa muy débil, lo que indica que, a pesar de su lógica
aparente, la tasa de mortalidad tal como está medida no es un predictor
fuerte de la esperanza de vida por sí misma en este conjunto de
datos.
Ahora analizaremos las correlaciones entre las variables independientes.
Se reafirman las fuertes intercorrelaciones entre las variables de
desarrollo (GDP
, Internet
, HDI
,
CO2
, Urban
, Electricity
). Por
ejemplo, HDI
tiene correlaciones de 0.99 con
Urban
y Electricity
, y 0.92 con
Internet
. Internet
tiene 0.94 con
Electricity
y 0.88 con Urban
. Esto es
importante porque la alta multicolinealidad entre las variables
predictoras es un desafío en modelos de regresión lineal múltiple.
Rural
y Urban
son casi perfectamente
inversamente correlacionadas (-1), lo cual es esperable ya que son
porcentajes complementarios del total. Esto significa que no se pueden
usar ambas en el mismo modelo lineal sin causar problemas de
multicolinealidad perfecta.
Por lo tanto, al momento de modelar no usaremos
Rural
, pues este grave problema de multicolinealidad
debemos evitarlo. Usaremos Urban
en su defecto,
pues está más relacionado con el aumento de desarrollo.
Fertility
muestra fuertes correlaciones negativas con
todas las variables de desarrollo.
Death_rate
continúa mostrando correlaciones muy débiles
con casi todas las demás variables, lo que sugiere que se comporta de
manera más independiente o ruidosa en el contexto de estas tendencias de
desarrollo.
Los gráficos de CCF (Cross-Correlation Function) nos muestran la correlación entre dos series de tiempo en diferentes rezagos (lags). Un pico en el lag 0 indica una correlación contemporánea. Picos en rezagos positivos (ej. Lag 5) significan que los valores pasados de la variable X están correlacionados con los valores actuales de la Esperanza de Vida (Y). Picos en rezagos negativos (ej. Lag -5) significan que los valores futuros de la variable X están correlacionados con los valores actuales de la Esperanza de Vida, lo que puede indicar que Esperanza de Vida es una variable “líder” o que la causalidad va de Y a X en el tiempo. Sin embargo, en presencia de tendencias fuertes en ambas series (como es el caso de muchas de nuestras variables), la CCF puede mostrar correlaciones espurias en varios rezagos, y es importante interpretarlas con cautela.
ccf(as.numeric(expect_ts_for_ccf), as.numeric(gdp_ts_for_ccf),
main = "CCF: Esperanza de Vida vs. PIB (Argentina, Entrenamiento)", lag.max = 26)
Este gráfico muestra una fuerte correlación positiva en el lag 0, lo que indica que el PIB per cápita y la esperanza de vida se mueven en la misma dirección contemporáneamente. Además, hay correlaciones positivas significativas en rezagos tanto positivos como negativos, lo cual es muy común cuando ambas series tienen una fuerte tendencia ascendente (no estacionarias). La correlación es más alta alrededor del lag 0 y disminuye a medida que nos alejamos de él. Esto sugiere que el PIB contemporáneo o ligeramente rezagado (positivo o negativo) está fuertemente relacionado con la esperanza de vida.
ccf(as.numeric(expect_ts_for_ccf), as.numeric(population_ts_for_ccf),
main = "CCF: Esperanza de Vida vs. Población (Argentina, Entrenamiento)", lag.max = 26)
Al igual que con el PIB, se observa una correlación positiva muy fuerte en el lag 0, y esta correlación se mantiene alta y significativa en varios rezagos positivos y negativos. Esto se debe a la tendencia ascendente compartida entre la esperanza de vida y la población a lo largo del tiempo. Los picos más altos cerca de Lag 0 refuerzan la idea de una fuerte relación contemporánea, pero la persistencia en otros rezagos es un reflejo de la tendencia.
ccf(as.numeric(expect_ts_for_ccf), as.numeric(death_rate_ts_for_ccf),
main = "CCF: Esperanza de Vida vs. Tasa de Mortalidad (Argentina, Entrenamiento)", lag.max = 26)
Este gráfico es muy diferente. Las correlaciones son mayormente débiles y no significativas en la mayoría de los rezagos. El pico más significativo parece estar en un rezago negativo, alrededor de -7, y un par de rezagos positivos (5, 6) también muestran algo de significancia, pero de forma más errática. Esto sugiere que no hay una relación contemporánea fuerte o persistente entre la esperanza de vida y la tasa de mortalidad en este conjunto de datos, o que la relación es más compleja y no lineal, lo que es coherente con el comportamiento más ruidoso de la Tasa de Mortalidad.
ccf(as.numeric(expect_ts_for_ccf), as.numeric(internet_ts_for_ccf),
main = "CCF: Esperanza de Vida vs. Uso de internet (Argentina, Entrenamiento)", lag.max = 26)
Se observa una correlación positiva muy fuerte en el lag 0, con valores que se mantienen altos y significativos en varios rezagos positivos y negativos. La correlación es muy pronunciada alrededor del lag 0. Esto es consistente con las fuertes tendencias ascendentes de ambas variables. Indica que el crecimiento en el uso de internet está estrechamente ligado al aumento de la esperanza de vida.
ccf(as.numeric(expect_ts_for_ccf), as.numeric(fertility_ts_for_ccf),
main = "CCF: Esperanza de Vida vs. Tasa de Fertilidad (Argentina, Entrenamiento)", lag.max = 26)
Este gráfico muestra una correlación negativa muy fuerte en el lag 0, lo que significa que a medida que la tasa de fertilidad disminuye, la esperanza de vida tiende a aumentar contemporáneamente. Las correlaciones negativas también son significativas en varios rezagos positivos y negativos, lo que se atribuye a las tendencias opuestas de ambas series. El pico negativo más profundo en el lag 0 resalta la fuerte relación inversa simultánea.
ccf(as.numeric(expect_ts_for_ccf), as.numeric(hdi_ts_for_ccf),
main = "CCF: Esperanza de Vida vs. HDI (Argentina, Entrenamiento)", lag.max = 26)
Presenta una correlación positiva extremadamente fuerte en el lag 0, y esta fuerza se extiende a los rezagos cercanos. Dada la alta correlación contemporánea ya vista en la matriz de correlación y el hecho de que la esperanza de vida es un componente del HDI, esta fuerte correlación cruzada es esperada. Prácticamente todos los rezagos muestran correlaciones significativas debido a las fuertes tendencias compartidas.
ccf(as.numeric(expect_ts_for_ccf), as.numeric(co2_ts_for_ccf),
main = "CCF: Esperanza de Vida vs. Emisiones de CO2 Per Cápita (Argentina, Entrenamiento)", lag.max = 26)
Se observa una correlación positiva fuerte en el lag 0, con valores significativos en varios rezagos positivos y negativos. El patrón es similar al de otras variables con tendencia ascendente (como PIB o Internet). Esto sugiere que el aumento en las emisiones de CO2, como muestra del desarrollo económico/industrial, está asociado con el aumento de la esperanza de vida.
ccf(as.numeric(expect_ts_for_ccf), as.numeric(urban_ts_for_ccf),
main = "CCF: Esperanza de Vida vs. Población Urbana (Argentina, Entrenamiento)", lag.max = 26)
Presenta una correlación positiva muy fuerte en el lag 0, y las correlaciones se mantienen muy significativas en varios rezagos positivos y negativos. Es consistente con la urbanización y el acceso a servicios asociados con ella que contribuyen a una mayor esperanza de vida.
ccf(as.numeric(expect_ts_for_ccf), as.numeric(electricity_ts_for_ccf),
main = "CCF: Esperanza de Vida vs. Acceso a Electricidad (Argentina, Entrenamiento)", lag.max = 26)
Muestra una correlación positiva extremadamente fuerte en el lag 0, y esta fuerza se mantiene en los rezagos cercanos. Es esperable, dado que el acceso a electricidad es un indicador fundamental de desarrollo y ha mostrado un crecimiento casi hacia el 100%. La correlación es muy pronunciada y significativa en casi todos los rezagos.
En esta sección, se procederá con la construcción y evaluación de un modelo de series de tiempo para la Esperanza de Vida en Argentina, utilizando las variables identificadas en la fase de análisis exploratorio. El objetivo principal será capturar la dinámica temporal de la serie y generar predicciones futuras.
En esta subsección, se detallará el proceso de especificación y
estimación del Modelo Lineal de Series de Tiempo (tslm
). Se
definirá la variable dependiente (Expect
) y se
seleccionarán las variables predictoras (exógenas y autorregresivas) que
mejor expliquen su comportamiento a lo largo del tiempo, utilizando el
conjunto de datos de entrenamiento.
# 10. Construcción del Modelo Lineal de Series de Tiempo (tslm) con datos de TRAIN
modelo_expectancia <- tslm(Expect ~ GDP + Internet + HDI + CO2 + Electricity +
Population + Death_rate + Fertility + Urban,
data = train_ts_data_model)
# Ver el resumen del modelo
summary(modelo_expectancia)
##
## Call:
## tslm(formula = Expect ~ GDP + Internet + HDI + CO2 + Electricity +
## Population + Death_rate + Fertility + Urban, data = train_ts_data_model)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.05456 -0.04372 -0.01161 0.03424 0.11893
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 9.233e+01 1.700e+01 5.430 4.50e-05 ***
## GDP -2.034e-05 1.524e-05 -1.335 0.199601
## Internet -1.834e-02 8.667e-03 -2.117 0.049352 *
## HDI 1.619e+01 3.998e+00 4.049 0.000834 ***
## CO2 1.438e-01 1.046e-01 1.374 0.187337
## Electricity 2.181e-01 1.073e-01 2.032 0.058092 .
## Population 5.362e-07 1.651e-07 3.248 0.004730 **
## Death_rate -1.394e+00 1.153e-01 -12.090 8.97e-10 ***
## Fertility -9.730e-01 5.156e-01 -1.887 0.076374 .
## Urban -6.515e-01 3.277e-01 -1.988 0.063192 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.06184 on 17 degrees of freedom
## Multiple R-squared: 0.9989, Adjusted R-squared: 0.9983
## F-statistic: 1649 on 9 and 17 DF, p-value: < 2.2e-16
Análisis de
summary(modelo_expectancia)
El summary()
del modelo_expectancia
nos
proporciona una visión exhaustiva de la calidad del ajuste y la
significancia estadística de cada predictor en la explicación de la
Esperanza de Vida (Expect
) en Argentina a
lo largo del tiempo.
1. Llamada al Modelo (Call) La llamada muestra
que se ha ajustado un Modelo Lineal de Series de Tiempo (tslm)
utilizando la Esperanza de Vida como variable dependiente, explicada por
un conjunto de 10 variables predictoras:
GDP
, Internet
, HDI
,
CO2
, Electricity
, Population
,
Death_rate
, Fertility
, Urban
,
sobre el conjunto de datos de entrenamiento
(train_ts_data_model
).
2. Residuales
Distribución: Los residuales varían de -0.05456 a 0.11893. El primer cuartil (-0.04372) y el tercer cuartil (0.03424) son relativamente simétricos alrededor de la mediana (-0.01161), que está muy cerca de cero. Esto sugiere que el modelo no tiene un sesgo sistemático en sus predicciones y que los errores están distribuidos de manera razonablemente centrada en cero, lo cual es deseable.
Magnitud: La magnitud de los residuales es bastante pequeña, lo que indica que el modelo es capaz de predecir la esperanza de vida con una alta precisión, dado que la esperanza de vida en sí varía en un rango de aproximadamente 5 años (de 71.61 a 76.85 años en los datos).
3. Coeficientes (Coefficients)
Esta sección es crucial para entender la contribución individual y la significancia estadística de cada variable.
Variables Altamente Significativas ( p < 0.001, p < 0.01):
(Intercept) - 92.33: El intercepto es altamente significativo (p = 0.00045). Representa el valor base de la Esperanza de Vida cuando todas las demás variables predictoras son cero. Aunque su interpretación directa en valores cero puede no ser siempre práctica para todas las variables, su significancia global es importante.
HDI (Índice de Desarrollo Humano) - 16.19: Es altamente significativo (p = 0.000834). Por cada aumento de una unidad en el HDI, la Esperanza de Vida se incrementa en 16.19 años, manteniendo las otras variables constantes. Esto es muy consistente con la teoría, ya que el HDI es un indicador compuesto de salud, educación e ingreso.
Death_rate (Tasa de Mortalidad) - -1.394: Es la variable más significativa del modelo (p = 8.97e-10, es decir, un valor extremadamente bajo). Por cada aumento de una unidad en la tasa de mortalidad (por cada 1,000 habitantes), la Esperanza de Vida disminuye en 1.394 años, manteniendo las otras variables constantes. Esta relación inversa y muy fuerte es lógicamente esperada.
Variables Significativas ( p < 0.05):
Variables Marginalmente Significativas (. p < 0.1):
Internet - -0.1834: Es marginalmente significativo (p = 0.0493). Sorprendentemente, el coeficiente es negativo. Esto podría sugerir un efecto complejo o que su influencia positiva ya está capturada por otras variables correlacionadas positivamente (HDI, GDP). En presencia de multicolinealidad, los signos de los coeficientes pueden volverse contraintuitivos.
Electricity - 0.2181: Es marginalmente significativo (p = 0.0580). Por cada aumento de una unidad porcentual en el acceso a electricidad, la Esperanza de Vida aumenta en 0.2181 años. Esto es intuitivo, ya que el acceso a electricidad es un indicador de desarrollo e infraestructura.
Variables No Significativas ( p > 0.1):
GDP
(-2.034e-05, p = 0.199601),
CO2
(0.1438, p = 0.187337), además
Fertility
(-0.9730, p = 0.076374) y
Urban
(-0.6515, p = 0.063192)
(Marginalmente Significativos).
La no significancia de GDP
es interesante, especialmente
considerando sus fuertes correlaciones bivariadas con
Expect
. Esto sugiere que su poder explicativo individual
podría estar siendo absorbido por otras variables en el modelo que son
más significativas.
4. Error Estándar Residual (Residual standard error)
5. R-cuadrado y R-cuadrado Ajustado (R-squared and Adjusted R-squared)
Multiple R-squared: 0.9989: Este valor indica que aproximadamente el 99.89% de la varianza en la Esperanza de Vida puede ser explicada por las variables predictoras incluidas en el modelo. Esto es un nivel de ajuste excepcionalmente alto.
Adjusted R-squared: 0.9983: Este es un R-cuadrado ajustado por el número de predictores. Su valor también es extremadamente alto (0.9983), lo que confirma que el alto R-cuadrado no es solo producto de tener muchas variables, sino que el modelo tiene un poder explicativo genuino y robusto.
6. Estadística F (F-statistic)
El modelo_expectancia demuestra ser un modelo extremadamente robusto
y con un poder explicativo excepcional para la Esperanza de Vida en
Argentina. Muestra un ajuste casi perfecto a los datos de entrenamiento,
con un R-cuadrado ajustado superior al 99.8%. Variables
como Death_rate
, HDI
, y
Population
son predictores altamente significativos. El
bajo error estándar residual y el F-statistic altamente significativo
refuerzan la validez general del modelo. Sin embargo, es importante
recordar que un R-cuadrado tan alto en series de tiempo a menudo apunta
a series con tendencias muy fuertes.
Diagnóstico del Modelo (Análisis de Residuales)
En esta sección, se realizará un análisis exhaustivo de los
residuales del modelo (modelo_expectancia)
. La evaluación
de los residuales es fundamental para verificar si se cumplen los
supuestos clave de los modelos de regresión lineal (normalidad,
homocedasticidad, no autocorrelación y linealidad), lo que
asegura la validez y fiabilidad de las inferencias y predicciones del
modelo.
p_res_autoplot <- autoplot(residuals(modelo_expectancia)) +
ggtitle("Residuales del Modelo de Esperanza de Vida en Argentina (TRAIN)") +
xlab("Año") + ylab("Residuales")
ggplotly(p_res_autoplot)
Este gráfico muestra la evolución de los residuales del
modelo_expectancia
a lo largo del tiempo. El análisis de
esta gráfica es fundamental para evaluar si el modelo ha capturado
adecuadamente la estructura temporal de la serie y si se cumplen los
supuestos de un modelo de regresión lineal.
Análisis del Gráfico de Residuales:
Media Cero: Se observa que los residuales fluctúan alrededor de cero, lo que indica que el modelo no tiene un sesgo sistemático en sus predicciones. Esto es un buen indicio de que el modelo está bien centrado.
Homocedasticidad (Varianza Constante): La dispersión de los residuales (la “anchura” de la banda de puntos) parece ser relativamente constante a lo largo del tiempo. Lo que sugiere que la varianza de los errores es aproximadamente constante a lo largo del período.
Ausencia de Autocorrelación: Este es uno de los supuestos más críticos para los modelos de series de tiempo. Visualmente, los residuales parecen comportarse de manera aleatoria a lo largo del tiempo. No se observa una tendencia clara, patrones cíclicos, o agrupamientos que sugieran una correlación serial residual (es decir, que un error en un punto del tiempo esté correlacionado con un error en otro punto). La ausencia de patrones evidentes en este gráfico es un signo positivo de que el modelo ha capturado la mayor parte de la estructura de dependencia temporal de la esperanza de vida
ggAcf(residuals(modelo_expectancia), lag.max = 26) +
ggtitle("ACF de los Residuales del Modelo de Esperanza de Vida en Argentina (TRAIN)")
Este gráfico muestra la Función de Autocorrelación
(ACF) de los residuales del modelo_expectancia
. El
análisis de la ACF de los residuales es crucial para determinar si el
modelo ha capturado adecuadamente toda la estructura de dependencia
temporal de la serie original. Idealmente, los residuales de un buen
modelo de series de tiempo deben ser ruido blanco, es decir, no deben
presentar autocorrelación significativa en ningún rezago.
Análisis del Gráfico ACF de Residuales:
Ausencia General de Autocorrelación: La observación principal es que la gran mayoría de las barras (autocorrelaciones en diferentes rezagos) caen dentro de las bandas azules punteadas de confianza. Esto indica que las autocorrelaciones en la mayoría de los rezagos no son estadísticamente significativas. Este es un resultado altamente deseable, ya que sugiere que el modelo ha logrado eliminar la mayor parte de la estructura de dependencia lineal temporal que existía en la serie original de la Esperanza de Vida.
Buen Ajuste General: La ACF de los residuales valida en gran medida que el modelo_expectancia ha hecho un excelente trabajo al capturar las tendencias y relaciones temporales. La ausencia de patrones de autocorrelación significativos en la mayoría de los rezagos es un signo fuerte de un modelo bien especificado.
Análisis de los Residuales del Modelo de Esperanza de Vida
El resultado de la prueba de Breusch-Godfrey es el siguiente:
checkresiduals(modelo_expectancia, lag = 12)
##
## Breusch-Godfrey test for serial correlation of order up to 12
##
## data: Residuals from Linear regression model
## LM test = 20.795, df = 12, p-value = 0.05346
Interpretación del p-valor:* El p-valor obtenido es 0.05346. Si utilizamos un nivel de significancia común de alpha=0.05 (o 5%), observamos que 0.053460 > 0.5. Esto significa que no hay evidencia estadísticamente significativa para rechazar la hipótesis nula de que no existe autocorrelación en los residuales de tu modelo hasta el orden 12. En otras palabras, la prueba sugiere que los residuales del modelo se comportan como ruido blanco, que es una suposición deseable para los modelos de regresión.
Consideración importante: Es crucial notar que el p-valor (0.05346) está muy cerca del umbral de 0.05. Esto indica que la situación es limítrofe. Si hubiéramos elegido un nivel de significancia ligeramente superior (por ejemplo, alpha=0.06), la conclusión habría sido diferente.
Gráfico de la Función de Autocorrelación (ACF) de los Residuales:
El gráfico de la ACF de los residuales que muestra “Residuals from Linear regression model” complementa la prueba de Breusch-Godfrey:
*El gráfico de ACF muestra la correlación de los residuales consigo mismos en diferentes rezagos de tiempo.
*Las líneas discontinuas azules representan los límites de confianza. Si las barras de correlación cruzan estas líneas, se considera que la autocorrelación en ese rezago es estadísticamente significativa.
*En este gráfico, la mayoría de las barras de autocorrelación se encuentran dentro de los límites de confianza. Sin embargo, algunas barras se acercan bastante a los límites, lo que visualmente apoya la idea de un resultado limítrofe del p-valor. No se observa un patrón claro y persistente de autocorrelación significativa.
Este gráfico es una herramienta de diagnóstico fundamental en la regresión lineal para evaluar uno de los supuestos clave del Modelo Lineal Clásico: la homocedasticidad. La homocedasticidad implica que la varianza de los errores (o residuales) es constante para todos los niveles de las variables predictoras (o los valores ajustados de la variable dependiente).
p_res_vs_fitted <- ggplot(data.frame(Fitted = fitted(modelo_expectancia), Residuals = residuals(modelo_expectancia)),
aes(x = Fitted, y = Residuals)) +
geom_point() +
geom_hline(yintercept = 0, linetype = "dashed", color = "red") +
ggtitle("Residuales vs. Valores Ajustados del Modelo (TRAIN)") +
xlab("Valores Ajustados") + ylab("Residuales") +
theme_minimal()
ggplotly(p_res_vs_fitted)
## Don't know how to automatically pick scale for object of type <ts>. Defaulting
## to continuous.
## Don't know how to automatically pick scale for object of type <ts>. Defaulting
## to continuous.
El patrón de dispersión de los residuales en este gráfico sugiere que el supuesto de homocedasticidad se cumple razonablemente bien para el modelo. Esto es un buen indicador, ya que la varianza de los errores no parece depender de los valores predichos por el modelo. Esto contribuye a que las estimaciones de tus coeficientes sean eficientes y a que los errores estándar y p-valores sean confiables para la inferencia estadística.
pronostico_test <- forecast(modelo_expectancia, h = nrow(test_data), newdata = future_x_test_df)
# Mostrar resultados del pronóstico del test
print(pronostico_test)
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 2017 76.58486 76.45622 76.71350 76.38131 76.78841
## 2018 76.82303 76.64894 76.99712 76.54757 77.09850
## 2019 76.91321 76.66254 77.16388 76.51658 77.30985
## 2020 75.82875 75.47083 76.18668 75.26240 76.39511
## 2021 74.09460 73.71472 74.47448 73.49351 74.69569
Análisis de los Pronósticos del Modelo (2017-2021)
Los resultados del pronóstico (pronostico_test)
muestran
las predicciones puntuales para la Esperanza de Vida en Argentina, junto
con los intervalos de predicción del 80% y 95% de confianza:
Tendencia de los Pronósticos Puntuales:
Aumento Inicial (2017-2019): El modelo pronostica un ligero incremento en la Esperanza de Vida desde 76.58 años en 2017, pasando por 76.82 en 2018, hasta alcanzar un pico de 76.91 años en 2019. Esta tendencia inicial es consistente con el patrón de crecimiento que se suele observar en la esperanza de vida a lo largo del tiempo.
Caída Notoria (2020-2021): Sin embargo, el pronóstico muestra una disminución significativa de la Esperanza de Vida a partir de 2020, cayendo a 75.83 años y luego a 74.09 años en 2021. Esta fuerte caída es un punto crítico en el pronóstico y podría estar reflejando el impacto de alguna de las variables explicativas incluidas en el modelo que hayan tenido un comportamiento particular en esos años (por ejemplo, un aumento en la tasa de mortalidad o una disminución en el PIB/salud, etc.).
Intervalos de Predicción:
Nivel de Confianza:
Los intervalos “Lo 80” y “Hi 80” (Lower 80%, Higher 80%) indican que hay un 80% de probabilidad de que el valor real de la Esperanza de Vida caiga dentro de ese rango.
Los intervalos “Lo 95” y “Hi 95” (Lower 95%, Higher 95%) son más amplios, lo que significa que hay un 95% de probabilidad de que el valor real se encuentre dentro de ellos, reflejando una mayor confianza pero un rango de valores más grande.
#Gráfico de la predicción
autoplot(full_expect_ts, series = "Datos Observados") +
autolayer(pronostico_test, series = "Pronóstico (con IC)", PI = TRUE, fences = FALSE) +
autolayer(pronostico_test$mean, series = "Pronóstico (Media)", color = "darkgreen", size = 1) +
ggtitle("Pronóstico de la Esperanza de Vida en Argentina (1991–2021)") +
xlab("Año") + ylab("Esperanza de Vida") +
scale_color_manual(values = c("Datos Observados" = "blue",
"Valores Ajustados (Train)" = "red", # Color para los valores ajustados
"Pronóstico (con IC)" = "purple",
"Pronóstico (Media)" = "darkgreen")) +
guides(color = guide_legend(title = "Serie")) +
theme_minimal()
El gráfico ofrece una visión integral del desempeño histórico de esta variable y su proyección futura estimada por el modelo. En primer lugar, la línea azul ilustra el comportamiento observado de la Esperanza de Vida en Argentina desde 1991 hasta aproximadamente 2016-2017, abarcando el período de entrenamiento del modelo. A lo largo de estas décadas, se puede apreciar una clara y constante tendencia al alza en la Esperanza de Vida, un patrón común que refleja las mejoras en las condiciones de salud, saneamiento y desarrollo social del país.
En contraste con esta tendencia histórica de crecimiento, la línea verde oscuro, que representa el pronóstico puntual del modelo para los años 2017 a 2021, presenta un comportamiento particularmente llamativo. Aunque inicialmente parece continuar la trayectoria ascendente por uno o dos años, se observa una caída drástica y pronunciada en la Esperanza de Vida pronosticada para los años 2020 y 2021. Esta inversión abrupta de la tendencia es el aspecto más destacado de la predicción y sugiere que el modelo ha capturado o atribuido factores en sus variables explicativas que implicarían un retroceso significativo en este indicador vital.
Acompañando la línea del pronóstico puntual, el área sombreada en púrpura ilustra los intervalos de confianza de la predicción. Estos intervalos son fundamentales para comprender el grado de incertidumbre asociado a las estimaciones del modelo. Es un fenómeno inherente a la predicción de series de tiempo que, a medida que el horizonte de pronóstico se extiende más allá de los datos observados, los intervalos de confianza se amplían progresivamente. Esta expansión indica que la fiabilidad de la predicción puntual disminuye cuanto más se adentra en el futuro, reflejando una mayor variabilidad y menos certeza sobre el valor real que tomará la Esperanza de Vida. La considerable amplitud de este intervalo para el año 2021 resalta la magnitud de la incertidumbre en torno a la fuerte disminución pronosticada.
El modelo no solo proyecta la continuación de la tendencia histórica, sino que anticipa un cambio significativo y negativo en la Esperanza de Vida para el futuro cercano, rompiendo con el patrón ascendente previo. Este pronóstico de un descenso, combinado con una creciente incertidumbre a medida que se avanza en el tiempo, subraya la importancia de un análisis cuidadoso de los factores subyacentes que el modelo está capturando y una eventual comparación con los datos reales una vez que estén disponibles, para validar la capacidad del modelo de prever tales desviaciones de la tendencia histórica.
A continuación, se realizará una evaluación exhaustiva de la exactitud de los pronósticos generados por el modelo. Para ello, se procederá a comparar directamente los valores pronosticados con los datos reales observados correspondientes al período de prueba. Este paso es crucial para determinar la capacidad predictiva del modelo en un horizonte temporal no utilizado durante su entrenamiento y para validar su fiabilidad en escenarios futuros. Posteriormente, se analizarán en detalle diversas métricas de precisión (como el Error Absoluto Medio - MAE, el Error Cuadrático Medio - RMSE o el Error Porcentual Absoluto Medio - MAPE), las cuales cuantificarán la magnitud de los errores de pronóstico y ofrecerán una medida robusta del rendimiento predictivo general del modelo.
# Mostrar resultados del pronóstico del test
print(pronostico_test)
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 2017 76.58486 76.45622 76.71350 76.38131 76.78841
## 2018 76.82303 76.64894 76.99712 76.54757 77.09850
## 2019 76.91321 76.66254 77.16388 76.51658 77.30985
## 2020 75.82875 75.47083 76.18668 75.26240 76.39511
## 2021 74.09460 73.71472 74.47448 73.49351 74.69569
# Mostrar los datos reales del periodo de test (2017-2021) para comparar
print("Datos Reales del período de prueba (2017-2021):")
## [1] "Datos Reales del período de prueba (2017-2021):"
print(expect_ts_test)
## Time Series:
## Start = 2017
## End = 2021
## Frequency = 1
## [1] 76.5434 76.7698 76.8475 75.8781 73.9485
En un análisis más exhaustivo de la capacidad predictiva del modelo, se llevó a cabo una comparación directa entre los valores de Esperanza de Vida pronosticados y los datos reales observados para el período de prueba comprendido entre 2017 y 2021. Los resultados de esta confrontación revelan una notable aproximación de las predicciones puntuales del modelo a los valores reales en cada uno de los años evaluados. Las diferencias entre lo pronosticado y lo efectivamente observado resultaron ser mínimas, situándose generalmente en el rango de centésimas, lo que subraya una elevada exactitud en las estimaciones del modelo para este horizonte temporal específico.
Un aspecto particularmente sobresaliente de este análisis es la capacidad del modelo para anticipar con gran precisión la marcada disminución en la Esperanza de Vida que se manifestó en los años 2020 y 2021. Mientras que las predicciones para 2017 a 2019 continuaron una ligera tendencia al alza, el modelo logró capturar la inversión de esta trayectoria, con pronósticos para 2020 (75.83) y 2021 (74.09) que se alinearon muy estrechamente con los datos reales (75.88 y 73.95, respectivamente). Esta habilidad para prever un cambio significativo y atípico en una serie que históricamente mostraba un crecimiento constante es un fuerte indicativo de la robustez del modelo y su sensibilidad a las dinámicas subyacentes que influyen en la Esperanza de Vida.
Adicionalmente, la validación de la fiabilidad del modelo se refuerza al observar que la totalidad de los datos reales para cada año del período de prueba se ubicaron consistentemente dentro de los intervalos de predicción establecidos, tanto para el nivel de confianza del 80% como para el del 95%. Esta consistencia no solo valida la precisión de las predicciones puntuales, sino que también confirma que las estimaciones de incertidumbre del modelo son apropiadas y que los intervalos de predicción son bien calibrados, encapsulando adecuadamente la variabilidad esperada en los valores futuros. En conclusión, el desempeño predictivo del modelo es altamente satisfactorio, demostrando una capacidad considerable para generar pronósticos precisos y fiables para la Esperanza de Vida en Argentina, incluso frente a cambios de tendencia importantes.
Tras la comparación visual y directa de los pronósticos con los valores reales, el siguiente paso crucial para una evaluación robusta del modelo es el análisis de las métricas de precisión. Estas métricas ofrecen una cuantificación objetiva del desempeño predictivo del modelo, permitiendo medir la magnitud y la naturaleza de los errores de pronóstico. A diferencia de la observación directa, que puede ser subjetiva, las métricas de precisión proporcionan un valor numérico que facilita la comparación entre diferentes modelos o la evaluación del rendimiento de un mismo modelo en distintos períodos. Se examinarán métricas clave que revelan la desviación promedio entre los valores pronosticados y los reales, la severidad de los errores y, en algunos casos, el error en términos porcentuales, lo que ofrecerá una comprensión más profunda de la exactitud y fiabilidad de las predicciones del modelo. Un valor menor en estas métricas generalmente indica un mejor ajuste y una mayor capacidad predictiva.
# Imprimir las métricas
print(accuracy_results)
## ME RMSE MAE MPE MAPE
## Training set 5.263278e-16 0.04907263 0.04280206 -0.0000417954 0.05748256
## Test set -5.143270e-02 0.08081054 0.07117094 -0.0683117317 0.09432483
## MASE ACF1 Theil's U
## Training set 0.1572516 -0.1244738 NA
## Test set 0.2614767 -0.5648371 0.08088642
Error Medio (ME):
Conjunto de Entrenamiento: 5.263278e−16 (Esencialmente cero).
Conjunto de Prueba: −5.143270e−02.
Interpretación: El ME cercano a cero en el conjunto de entrenamiento indica que el modelo no presenta un sesgo sistemático significativo en este conjunto. En el conjunto de prueba, el valor ligeramente negativo sugiere un pequeño sesgo a sobreestimar los valores reales, aunque la magnitud es relativamente pequeña.
Raíz del Error Cuadrático Medio (RMSE):
Conjunto de Entrenamiento: 0.04907263.
Conjunto de Prueba: 0.08081054.
Interpretación: El RMSE es una medida de la magnitud promedio de los errores. El valor es mayor en el conjunto de prueba, lo cual es esperado, ya que el modelo no ha visto estos datos antes. Indica que los errores son, en promedio, de aproximadamente 0.08 unidades en el conjunto de prueba.
Error Absoluto Medio (MAE):
Conjunto de Entrenamiento: 0.04280206.
Conjunto de Prueba: 0.07117094.
Interpretación: El MAE representa la magnitud promedio de los errores en valores absolutos. Es similar al RMSE, pero no penaliza los errores grandes tan severamente. Confirma que la precisión es buena en el entrenamiento y disminuye, pero sigue siendo aceptable, en el conjunto de prueba.
Error Porcentual Medio (MPE):
Conjunto de Entrenamiento: −0.0000417954.
Conjunto de Prueba: −0.0683117317.
Interpretación: El MPE indica el sesgo porcentual del pronóstico. Un valor negativo en el conjunto de prueba sugiere que, en promedio, el modelo tendió a sobreestimar los valores reales en un pequeño porcentaje.
Error Porcentual Absoluto Medio (MAPE):
Conjunto de Entrenamiento: 0.05748256.
Conjunto de Prueba: 0.09432483.
Interpretación: El MAPE expresa el error absoluto promedio en términos porcentuales. Un MAPE de aproximadamente 0.094 (o 9.4%) en el conjunto de prueba indica que el pronóstico se desvía, en promedio, alrededor de un 9.4% de los valores reales. Dado que la esperanza de vida es un valor relativamente alto (en los 70s), este porcentaje es bastante bajo, lo que sugiere una alta precisión.
Error Absoluto Escaldado Medio (MASE):
Conjunto de Entrenamiento: 0.1572516.
Conjunto de Prueba: 0.2614767.
Interpretación: El MASE es una métrica escalada que compara el error del modelo con el error de un pronóstico ingenuo (generalmente el de la caminata aleatoria o el de la última observación). Un MASE menor a 1 generalmente indica que el modelo es mejor que un pronóstico ingenuo. En ambos conjuntos (entrenamiento y prueba), el MASE es significativamente menor a 1, lo que confirma que el modelo propuesto tiene un rendimiento superior al de una predicción simple.
Autocorrelación de los Errores de Pronóstico de Primer Orden (ACF1):
Conjunto de Entrenamiento: −0.1244738.
Conjunto de Prueba: −0.5648371.
Interpretación: La ACF1 mide la correlación de los errores del pronóstico con sus valores inmediatamente anteriores. Un valor cercano a cero es deseable. El valor en el conjunto de entrenamiento es bajo. Sin embargo, en el conjunto de prueba, un ACF1 de -0.564 sugiere que hay una autocorrelación negativa significativa en los errores del pronóstico. Esto implica que si el pronóstico de un año fue una sobreestimación, es probable que el siguiente sea una subestimación, y viceversa. Este es un punto a considerar, ya que indica que aún podría haber información no capturada por el modelo en la dinámica temporal de los errores.
Coeficiente U de Theil (Theil’s U):
Conjunto de Prueba: 0.08088642.
Interpretación: El coeficiente U de Theil compara la precisión del pronóstico del modelo con la de un pronóstico ingenuo. Un valor menor a 1 indica que el modelo tiene un mejor rendimiento que un pronóstico ingenuo. Un valor cercano a cero indica un pronóstico muy preciso. El valor de 0.08088642 es muy bajo y significativamente menor a 1, lo que confirma la excelente capacidad predictiva del modelo en comparación con una referencia simple.
Barandica, J. (2022, 17 de Julio). Aprendizaje No Supervisado: Reducción de Dimensionalidad (PCA) y Clustering (K-Means). Joaquín Barandica. https://www.joaquibarandica.com/post/ansupervised/
Our World in Data. (s.f.). Our World in Data. https://ourworldindata.org/
World Bank. (s.f.). World Development Indicators. World Bank DataBank. https://databank.worldbank.org/source/world-development-indicators