Aplicación de Modelos mixtos para estudiar el comportamiento de la temperatura en Colombia

Cambio Climático

El cambio climático se refiere a los cambios a largo plazo de las temperaturas y los patrones climáticos. Estos cambios pueden ser naturales, por ejemplo, a través de las variaciones del ciclo solar. Pero desde el siglo XIX, las actividades humanas han sido el principal motor del cambio climático, debido principalmente a la quema de combustibles fósiles como el carbón, el petróleo y el gas. La quema de combustibles fósiles genera emisiones de gases de efecto invernadero que actúan como una manta que envuelve a la Tierra, atrapando el calor del sol y elevando las temperaturas.

Base de datos

A continuación se presenta una base de datos con la temperatura promedio por departamento en Colombia entre los años 2000 a 2020, de la cual puede obtener un contexto climático del país en la actualidad. Los datos fueron obtenidos de Climate Knowledge Portal, el cual proporciona una variedad de datos globales sobre “el clima, las vulnerabilidades y los impactos históricos y futuros”. Los datos históricos observados fueron producidos por la Unidad de Investigación Climática (CRU) de la Universidad de East Anglia.

#librerias
library(readxl)
library(tidyverse)
library(kableExtra)
library(nlme)
Anio Dpto Temp
2000 Amazonas 26.19
2001 Amazonas 26.22
2002 Amazonas 26.47
2003 Amazonas 26.56
2004 Amazonas 26.49
2005 Amazonas 26.48
2006 Amazonas 26.35
2007 Amazonas 26.26
2008 Amazonas 26.13
2009 Amazonas 26.48
2010 Amazonas 26.70
2011 Amazonas 26.36
2012 Amazonas 26.30
2013 Amazonas 26.49
2014 Amazonas 26.50
2015 Amazonas 26.87
2016 Amazonas 26.91
2017 Amazonas 26.51
2018 Amazonas 26.41
2019 Amazonas 26.79
2020 Amazonas 26.61
2000 Antioquia 22.34
2001 Antioquia 22.87
2002 Antioquia 23.02
2003 Antioquia 23.07
2004 Antioquia 22.84
2005 Antioquia 23.00
2006 Antioquia 22.84
2007 Antioquia 22.73
2008 Antioquia 22.46
2009 Antioquia 23.00
2010 Antioquia 23.19
2011 Antioquia 22.80
2012 Antioquia 23.14
2013 Antioquia 23.34
2014 Antioquia 23.51
2015 Antioquia 23.75
2016 Antioquia 23.77
2017 Antioquia 23.16
2018 Antioquia 23.08
2019 Antioquia 23.50
2020 Antioquia 23.43
2000 Arauca 25.54
2001 Arauca 26.07
2002 Arauca 26.15
2003 Arauca 26.32
2004 Arauca 25.97
2005 Arauca 26.12
2006 Arauca 25.92
2007 Arauca 25.97
2008 Arauca 25.66
2009 Arauca 26.12
2010 Arauca 26.40
2011 Arauca 26.01
2012 Arauca 26.13
2013 Arauca 26.31
2014 Arauca 26.38
2015 Arauca 26.79
2016 Arauca 26.92
2017 Arauca 26.18
2018 Arauca 25.96
2019 Arauca 26.34
2020 Arauca 26.33
2000 Atlantico 27.41
2001 Atlantico 27.91
2002 Atlantico 27.99
2003 Atlantico 28.09
2004 Atlantico 27.76
2005 Atlantico 28.01
2006 Atlantico 27.89
2007 Atlantico 27.81
2008 Atlantico 27.52
2009 Atlantico 27.96
2010 Atlantico 28.24
2011 Atlantico 27.75
2012 Atlantico 28.14
2013 Atlantico 28.35
2014 Atlantico 28.45
2015 Atlantico 28.66
2016 Atlantico 28.73
2017 Atlantico 28.14
2018 Atlantico 27.99
2019 Atlantico 28.31
2020 Atlantico 28.34
2000 Bolivar 26.56
2001 Bolivar 27.10
2002 Bolivar 27.24
2003 Bolivar 27.31
2004 Bolivar 27.04
2005 Bolivar 27.25
2006 Bolivar 27.09
2007 Bolivar 26.99
2008 Bolivar 26.70
2009 Bolivar 27.22
2010 Bolivar 27.45
2011 Bolivar 27.01
2012 Bolivar 27.41
2013 Bolivar 27.59
2014 Bolivar 27.73
2015 Bolivar 27.94

La base de datos está compuesta por 3 variables y 672 observaciones descritas a continuación:

  • Temp: Temperatura promedio por año. Variable respuesta de tipo numérica.
  • Anio: Año de cuando se observó la temperatura. Variable explicativa de tipo entero.
  • Dpto: Departamento donde se obtuvo la temperatura, de tipo factor con 33 niveles

Objetivo

El objetivo de estudio es aplicar los conceptos vistos de modelos mixtos o modelos jerárquicos para estudiar cómo el cambio climático está afectando a Colombia en sus diferentes departamentos.

Análisis descriptivo

Se análiza un total de 32 departamentos, con una temperatura máxima de 28.74 °C y una temperatura miníma de 15.94°C. En el gráfico a continuación, se observa como los 32 departamentos tienden a tener una pendiente similar, con un comportamiento al parecer no completamente lineal, lo cual se debe verificar con una prueba formal. Por otro lado, se puede observar con claridad que el intercepto en el eje vertical es diferente para cada uno de ellos.

ggplot(df, aes(x=Anio, y=Temp, color=Dpto)) + geom_point()

El clima de Colombia está determinado por aspectos geográficos y atmosféricos tales como precipitaciones, latitud, altitud, humedad atmosférica, entre otras. Los mismos generan un amplio mosaico de climas y microclimas en Colombia, que van desde los más calurosos (30°C en las costas y llanuras) hasta los más fríos, con temperaturas bajo 0 °C en los picos de las montañas de la Cordillera de los Andes y la Sierra Nevada de Santa Marta.. En el siguiente gráfico se pretende ilustrar dicha situación con sólo algunos de los 32 departamentos, se observa cómo en general la temperatura entre ellos es muy distinta. Entre otras anotaciones, por ejemplo, el departamento de Amazonas tiene una temperatura más uniforme, a diferencia de Anquioquia y Nariño donde tiende a variar en mayor magnitud.

ggplot(df[df$Dpto %in% d,], aes(y=Temp, x= Dpto))+
  geom_boxplot(fill=rainbow(7),alpha=0.7)+
  labs(title = 'Gráfico de cajas para la temperatura por departamento', x = 'Departamentos', y='Temperatura')

En la siguiente figura se puede observar que la temperatura promedio, desde el año 2000 al 2020, varía según los departamentos. Por esta razón se desea probar la hipótesis de que la temperatura promedio es distinta en cada uno de los departamentos y ajustar diferentes modelos variando el intercepto y/o la pendiente como efectos aleatorios.

ggplot(df, aes(x=Anio, y=Temp, color=Dpto)) + geom_point(alpha=0.7) + facet_wrap(~ Dpto)

Modelos

Modelo 1

Se considera el siguiente donde se pretende modelar el valor esperado de la distribución de la temperatura como función de la variable regreso que el ano y ademas considerando el intercepto aleatorio debido a que en el análisis descriptivo pudimos notar que la dispersion de algunos puntos empiezas a niveles distintos del eje y

\[ \text {Temperatura}_{i j} \sim N\left(\mu_{i j}, \sigma^{2}\right) \\ \mu_{i j}=\beta_{0}+\beta_{1} \text {Año}_{i j}+b_{0 i} \\ b_{0} \sim N\left(0, \sigma_{b 0}^{2}\right) \\ i=1,2, \ldots, 20 . \quad j=1,2, \ldots, 32 \]

Modelo 2

Se considera el mismo modelo anterior pero ahora agregando una pendiente aleatoria en función del año.

\[ \text { Temperatura }_{i j} \sim N\left(\mu_{i j}, \sigma^{2}\right) \\ \mu_{i j}=\beta_{0}+\beta_{1} \text {Año}_{i j}+b_{0 i}+b_{1 i} \text {Año}_{i j} \\ \left(\begin{array}{l} b_{0} \\ b_{1} \end{array}\right) \sim N\left(\left(\begin{array}{l} 0 \\ 0 \end{array}\right),\left(\begin{array}{lr} \sigma_{b 0}^{2} & \sigma_{b 01}^{2} \\ \sigma_{b 01}^{2} & \sigma_{b 1}^{2} \end{array}\right)\right) \\ i=1,2, \ldots, 20 . \quad j=1,2, \ldots, 32 \]

Modelo 3

Ahora consideramos este modelo agregando una componente cuadratica al año debido que los puntos se nota cierta curvatura.

\[ \text { Temperatura }_{i j} \sim N\left(\mu_{i j}, \sigma^{2}\right) \\ \mu_{i j}=\beta_{0}+\beta_{1} \text {Año}_{i j}+ \beta_{2} \text {Año}_{i j}^{2}+b_{0 i} \\ b_{0} \sim N\left(0, \sigma_{b 0}^{2}\right)\\ i=1,2, \ldots, 20 . \quad j=1,2, \ldots, 32 \]

Construcción de los Modelos

En esta sección se muestra el código de R usado para ajustar cada modelo de la sección anterior, con su respectivo resumen.

Modelo 1

#intercepto aleatorio 
fit1 <- lme(Temp ~ 1 + Anio, random =~ 1 | Dpto, data = df)
summary(fit1)
## Linear mixed-effects model fit by REML
##   Data: df 
##        AIC      BIC    logLik
##   397.1751 415.2042 -194.5875
## 
## Random effects:
##  Formula: ~1 | Dpto
##         (Intercept)  Residual
## StdDev:    3.406551 0.2645875
## 
## Fixed effects:  Temp ~ 1 + Anio 
##                 Value Std.Error  DF   t-value p-value
## (Intercept) -52.68083  3.441130 639 -15.30917       0
## Anio          0.03815  0.001686 639  22.63328       0
##  Correlation: 
##      (Intr)
## Anio -0.985
## 
## Standardized Within-Group Residuals:
##         Min          Q1         Med          Q3         Max 
## -2.32442236 -0.69727294 -0.02500592  0.70225068  2.21211921 
## 
## Number of Observations: 672
## Number of Groups: 32

Modelo 2

#intercepto  y pendiente aleatoria
fit2 <- lme(Temp ~ 1 + Anio, random =~ 1 + Anio | Dpto, data = df)
summary(fit2)
## Linear mixed-effects model fit by REML
##   Data: df 
##        AIC      BIC    logLik
##   401.1751 428.2187 -194.5875
## 
## Random effects:
##  Formula: ~1 + Anio | Dpto
##  Structure: General positive-definite, Log-Cholesky parametrization
##             StdDev       Corr  
## (Intercept) 3.406552e+00 (Intr)
## Anio        7.161794e-08 0.001 
## Residual    2.645875e-01       
## 
## Fixed effects:  Temp ~ 1 + Anio 
##                 Value Std.Error  DF   t-value p-value
## (Intercept) -52.68083  3.441130 639 -15.30917       0
## Anio          0.03815  0.001686 639  22.63328       0
##  Correlation: 
##      (Intr)
## Anio -0.985
## 
## Standardized Within-Group Residuals:
##         Min          Q1         Med          Q3         Max 
## -2.32442239 -0.69727295 -0.02500593  0.70225069  2.21211924 
## 
## Number of Observations: 672
## Number of Groups: 32

Modelo 3

#intercepto y exploración curvatura
fit3 <- lme(Temp ~ 1 + Anio + I(Anio^2), random =~ 1 | Dpto, data = df)
summary(fit3)
## Linear mixed-effects model fit by REML
##   Data: df 
##        AIC      BIC  logLik
##   412.5599 435.0888 -201.28
## 
## Random effects:
##  Formula: ~1 | Dpto
##         (Intercept) Residual
## StdDev:    3.406551 0.264604
## 
## Fixed effects:  Temp ~ 1 + Anio + I(Anio^2) 
##                 Value Std.Error  DF    t-value p-value
## (Intercept) 1157.7608 1261.7425 638  0.9175888  0.3592
## Anio          -1.1663    1.2555 638 -0.9289569  0.3533
## I(Anio^2)      0.0003    0.0003 638  0.9593448  0.3377
##  Correlation: 
##           (Intr) Anio
## Anio      -1         
## I(Anio^2)  1     -1  
## 
## Standardized Within-Group Residuals:
##         Min          Q1         Med          Q3         Max 
## -2.28729004 -0.70256689 -0.02354677  0.69298025  2.22519113 
## 
## Number of Observations: 672
## Number of Groups: 32

Comparación de los modelos

Modelo 1

#intercepto aleatorio 
pred1 <- fitted(fit1)
ggplot(data = df, aes(x = Anio, y = Temp, colour = Dpto)) +
  geom_point() + labs(title ="Ajuste del modelo 1")+ theme_bw()+  
  facet_wrap(~ factor(Dpto)) + geom_line(aes(y =pred1), colour="black")

Modelo 2

#intercepto  y pendiente aleatoria
pred2 <- fitted(fit2)
ggplot(data = df, aes(x = Anio, y = Temp, colour = Dpto)) +
  geom_point() + labs(title ="Ajuste del modelo 2")+ theme_bw()+  
  facet_wrap(~ factor(Dpto)) + geom_line(aes(y =pred2), colour="black")

Modelo 3

#intercepto y exploración curvatura
pred3 <- fitted(fit3)
ggplot(data = df, aes(x = Anio, y = Temp, colour = Dpto)) +
  geom_point() + labs(title ="Ajuste del modelo 3")+ theme_bw()+  
  facet_wrap(~ factor(Dpto)) + geom_line(aes(y =pred3), colour="black")

Pruebas de hipótesis para componentes de varianza (Modelo 1 vs Modelo 2)

Prueba para la significancia de la componente la componente de varianza para el intercepto aleatorio.

\[ H_{0}: \sigma_{b 0}^{2}=0 \quad v s \quad H_{1}: \sigma_{b 0}^{2}>0 \]

Donde es el estadístico de prueba es: \[ \operatorname{lrt}=-2 \times(\log \operatorname{Lik}(\text { modelo } 1)-\log \operatorname{Lik}(\text { modelo } 2)) \]

anova1 <- anova(fit1, fit2)
anova1 %>% mutate(call = NULL) %>% kbl() %>%  kable_styling(font_size = 12)
Model df AIC BIC logLik Test L.Ratio p-value
fit1 1 4 397.1751 415.2042 -194.5875 NA NA
fit2 2 6 401.1751 428.2187 -194.5875 1 vs 2 2e-07 0.9999999

Así entonces, No se rechaza la hipótesis nula dado que el valor-p resulta ser mayor a un nivel de significancia \(0.01<\alpha<0.1\), es decir que, la componente de varianza para la pendiente aleatoria no es significativa ni contribuye a la explicación de la temperatura promedio en los departamentos de Colombia.

Prueba de hipótesis sobre el efecto fijo (modelo1 vs modelo3).

Prueba de hipótesis para la significancia de la componente asociada a \(Año^{2}\)

\[ H_{0}: \beta_{2}=0 \quad \text { vs } \quad H_{1}: \beta_{2} \neq 0 \]

Se evaluan las siguientes pruebas de hipótesis con el fin de comparar los modelos ajustados.

anova2 <- anova(fit1, fit3)
anova2 %>% mutate(call = NULL)%>% kbl() %>%  kable_styling(font_size = 12)
Model df AIC BIC logLik Test L.Ratio p-value
fit1 1 4 397.1751 415.2042 -194.5875 NA NA
fit3 2 5 412.5599 435.0888 -201.2800 1 vs 2 13.38484 0.0002537

Así entonces, No se rechaza la hipótesis nula dado que el valor-p = \(3e^{-4}\) resulta ser menor a un nivel de significancia \(0.01<\alpha<0.1\), es decir que, la componente de varianza para el componente cuadrático es significativa y contribuye a la explicación de la temperatura promedio en los departamentos de Colombia.

Por otro lado, se calcula la medida de error cuadrático medio (MSE) para cada modelo, siendo todos muy similares.

\[ \mathrm{MSE}=\frac{1}{n} \sum_{i=1}^{n}\left(Y_{i}-\hat{Y}_{i}\right)^{2} \]

Modelo1 Modelo2 Modelo3
MSE 0.0665696 0.0665696 0.0664738

Modelo final

Por lo tanto, a pesar de que el AIC y BIC no resultaron ser las de mejor resultado, se considera el Modelo 3, con el componente cuadrático, como el mejor modelo, dado que soporta lo observado gráficamente y resulta tener una leve disminución en el error cuadrático medio MSE.

\[ \text { Temperatura }_{i j} \sim N\left(\mu_{i j}, \sigma^{2}\right) \\ \mu_{i j}=1157.76-1.1663 \text {Año}_{i j}+ 0.0003 \text {Año}_{i j}^{2}+\tilde{b_{0 i}} \\ b_{0} \sim N\left(0, 0.2646^{2}\right)\\ i=1,2, \ldots, 20 . \quad j=1,2, \ldots, 32 \]

Análisis de residuales del Modelo Final

Observe que en el modelo3, los residuales cumple el supuesto de media en cero y homogeneidad en varianza y una correlación del 99.7% de los valores observados con los ajustados.

cor(fitted(fit3),df$Temp)
## [1] 0.9970713
par(mfrow=c(1,2))
plot(residuals(fit3)~fitted(fit3), xlab = "Valores Ajustados", ylab = "Residuales", main = "Residuales modelo3", col="skyblue")
qqnorm(residuals(fit3), main = "Normal Q-Q Plot modelo3", col="skyblue")

Conclusiones

Hay un certero aumento de la temperatura en Colombia, por lo cual no se puede ser ajeno a la búsqueda de soluciones para mitigar sus efectos, derretimiento de los nevados, incendios forestales, aumento en el nivel del mar y animales en peligro, entre muchos otros.

Referencias