Introducción

El análisis de las series temporales se considera como una herramienta vital a la hora de planificar o tomar decisiones estratégicas en cualquier ámbito, a su vez, su capacidad para identificar patrones y prever comportamientos a futuro ha sido esencial para anticiparse a cambios en sectores clave como la economía, el comercio y el mercado laboral. En este estudio, se hará uso de la serie temporal: Precio real de la vivienda en Colombia, (obtenida del OECD Data Explorer) usando como escala el índice porcentual (tanto de crecimiento como de decrecimiento) del precio real de la vivienda en Colombia en base al año 2015, es decir, el promedio de los indices del año 2015 es del 100%, este irá variando según nos ubiquemos en la temporalidad. Esta serie es importante estudiarla, puesto que la accesibilidad a una vivienda se ha ido dificultando cada vez más con el pasar de los años, y hacer pronósticos de posibles movimientos en cuanto al precio real, será un anticipo útil para las personas que estén planteándose adquirir una vivienda a futuro, también es un factor clave, que, combinado junto a otros índices de desarrollo económico de Colombia, se puede identificar el nivel de desarrollo del país. Como bien se ha dicho, se realizará este estudio utilizando el modelo ARIMA, el cual es fundamental para identificar tendencias, estacionalidades y fluctuaciones, mediante modelos predictivos que permiten anticipar escenarios futuros. El uso de estos resultados, en cuanto a cualquier estudio o serie, pueden ser fundamentales como para instituciones gubernamentales como para el sector privado, puesto que proporciona información clave para la planificación económica y la gestión de recursos.

Metodología

A continuación, se analizará una serie de tiempo, la cual se caracteriza principalmente por ser una colección de datos ordenados cronológicamente que, a partir de ello, reflejan el comportamiento de una variable a lo largo del tiempo. En nuestro caso, esta variable será el "índice de los precios reales de la vivienda en Colombia", y esto da como resultado un gráfico en el cual se presencia una curva que va evolucionando con el tiempo. Estas series tienen como función, principalmente, detectar patrones como tendencias y estacionalidades, y realizar pronósticos para períodos futuros. En este análisis, la metodología empleada corresponde a la utilización del Modelo ARIMA en las series de tiempo, y su función principal es pronosticar datos de series temporales. ARIMA se usa para hablar de “AutoRegressive Integrated Moving Average” que, en español, sería “Modelo autorregresivo integrado de media móvil”. Este se define como un tipo de modelo estadístico que es utilizado para analizar y predecir series temporales. Este modelo combina componentes autorregresivos (AR), de integración (I) y de media móvil (MA), y de ahí su nombre.

-Autorregresión (AR): Describe la relación lineal entre una observación y sus valores previos.

-Integración (I): Se utiliza para hacer estacionaria la serie mediante diferenciación, eliminando patrones de tendencia.

-Media Móvil (MA): Modela la dependencia entre una observación y los errores de predicción de observaciones anteriores.

El modelo ARIMA es valioso porque permite capturar la estructura subyacente de una serie temporal, incluso en presencia de componentes complejos como tendencia y estacionalidad. Esto lo hace una herramienta versátil para realizar predicciones confiables, lo que resulta crucial en áreas como la economía, donde entender y anticipar fluctuaciones es esencial. En este análisis, se empleará el modelo ARIMA para examinar la serie temporal seleccionada, identificando características clave como tendencia y estacionalidad, también determinar los parámetros óptimos mediante herramientas gráficas y estadísticas y realizar predicciones para períodos futuros, proporcionando información clave para la toma estratégica de decisiones.

Descripción de la Serie Temporal

La serie temporal analizada corresponde al índice de los precios reales de la vivienda en Colombia, teniendo como base el año 2015 (100%), tomando periodos trimestrales desde el 01 de Enero del año 2002, hasta el 31 de Diciembre del año 2018, dándonos un total de 68 periodos, los cuales se dividirán en 2 partes: Los primeros 60 corresponden a los periodos con los que se harán los modelos, llamado más bien como “Conjunto de entrenamiento”, el segundo conjunto (últimos 8 trimestres) será el de prueba, con los que se realizarán las evaluaciones o comparaciones fuera de muestra.

autoplot(serie_vivienda)

Es importante entender que durante este periodo Colombia pasó por diversos cambios debido a sucesos históricos de los que se hablará a continuación:

2002-2006: Recuperación Económica Post-Crisis y Mejora de la Seguridad: Colombia experimentó un crecimiento económico sostenido tras la crisis de finales de los años 90, impulsado por reformas económicas y a su vez un aumento en la inversión extranjera. El gobierno implementó políticas de seguridad bajo el Plan Colombia y la estrategia de Seguridad Democrática, lo que mejoró significativamente la percepción internacional del país. Gracias a este entorno más estable, empezó a desarrollarse el sector inmobiliario, especialmente en ciudades como Medellín, Barranquilla y Bogotá.

2007-2008: Auge Global de Materias Primas y Expansión Crediticia: Gracias al auge de las materias primas se beneficiaron economías emergentes como Colombia, con aumentos en los precios del petróleo y el carbón. A su vez, la accesibilidad crediticia mejoró gracias a tasas de interés internacionales bajas y una creciente confianza en la economía. Sin embargo, en el ámbito internacional, se gestaba la crisis financiera global debido a la burbuja inmobiliaria en Estados Unidos, que comenzaría a tener efectos hacia finales de 2008.

2008-2009: Crisis Financiera Global: Esta fue desencadenada por la burbuja inmobiliaria en Estados Unidos, la cual colapsó grandes instituciones financieras, como Lehman Brothers, y generó una recesión global debido a la contracción del crédito; a pesar de eso, Colombia no sufrió muchos daños, gracias a que el gobierno presentó estímulos fiscales y que el banco de la república tomó las medidas necesarias.

2010-2014: Bonanza Minera y Crecimiento Económico: Debido a la alta demanda de países en crecimiento como China e India, los precios de las materias primas, como el petróleo y el carbón, alcanzaron máximos históricos, como consecuencia, el PIB creció de forma constante, y sectores como la construcción y el inmobiliario prosperaron gracias a la confianza de los inversionistas.

2015-2016: Caída de los Precios del Petróleo y Acuerdo de Paz: Debido a un exceso de oferta global los precios del petróleo cayeron drásticamente, causado principalmente por el auge del fracking en Estados Unidos. Paralelamente, Colombia firmó un histórico acuerdo de paz con las FARC tras más de 50 años de conflicto. En consecuencia, el gobierno implementó reformas tributarias y redujo el gasto público, además se crearon nuevas expectativas de desarrollo gracias a los acuerdos de paz.

2016-2018: Diversificación Económica y Presión en el Mercado Inmobiliario: Gracias a la caída de los precios del petróleo, Colombia diversificó su economía, enfocándose en turismo, infraestructura y construcción. Simultáneamente, el acuerdo de paz impulsó el desarrollo en regiones del país que fueron anteriormente afectadas por el conflicto, mientras programas de vivienda y proyectos de infraestructura fortalecieron el sector inmobiliario. Sin embargo, la recuperación económica fue moderada debido a incertidumbres políticas y reformas tributarias.

Descriptivas

Tendencia

Los datos gráficos revelan un patrón consistente de incremento en los valores de las propiedades residenciales desde el año 2000 hasta 2018. Esta trayectoria ascendente, sostenida durante casi dos décadas, puede explicarse por un conjunto de factores interrelacionados. Entre ellos destacan la expansión económica generalizada, la migración hacia las ciudades y las políticas públicas que estimularon la inversión en el sector inmobiliario.

Estacionalidad

Al analizar la gráfica, no encontramos un patrón claro de subidas y bajadas en los precios de las viviendas que se repita cada año. Esto sugiere que los precios de las casas en este período no estaban influenciados significativamente por las estaciones. En cambio, factores económicos más amplios y duraderos, como el crecimiento económico general, parecen haber tenido un mayor impacto en los precios.

En cuanto a los outliers, se evidencian caídas abruptas en medio del constante crecimiento del índice porcentual del precio de vivienda en Colombia, entre ellas se destacan:

Outlier alrededor del 2005: Esta caída puede verse relacionada con la crisis económica que Colombia enfrentó entre los años 90 y los 2000, que resultó en un aumento en la desconfianza de los consumidores y en la disminución de la inversión. Outlier alrededor del 2015: Hacia finales de 2015, se inició una caída en los precios del petróleo, lo que generó incertidumbre económica y afectó las expectativas de crecimiento. Outlier alrededor del 2016: Este descenso podría vincularse al contexto político y económico posterior a la firma del acuerdo de paz con las FARC. Pese a que el acuerdo generó expectativas de desarrollo, también creó duda en otras áreas, lo cual afectó las decisiones de inversión.

# Dividir la serie en entrenamiento y prueba
serie_entrenamiento <- window(serie_vivienda, end = c(2016, 4))  # Hasta el periodo 60
serie_prueba <- window(serie_vivienda, start = c(2017, 1), end = c(2018, 4))       # Desde el periodo 61
print(stats)
##      media desviacion   minimo   maximo mediana
## 1 75.22499   17.93052 50.91575 104.4837 76.2022

-Media (75.22499):El valor de 75.22 aproximadamente, nos indica que, en promedio, los precios se situaron en este rango durante el periodo analizado.

-Desviación estándar (17.93052):Con un valor de 17.93, sugiere que los precios de vivienda fluctúan significativamente en torno al promedio, lo que indica una variabilidad notable en los precios a lo largo del tiempo.

Mínimo (50.91775):Un mínimo de aproximadamente 50.92 indica que, a pesar de la tendencia general al alza en los precios, hubo períodos donde los precios de vivienda fueron considerablemente bajos.

Máximo (104.4837):Con un valor de 104.48, señala el pico más alto en los precios de vivienda durante el período analizado.

Mediana (76.2022):La mediana, que se sitúa en aproximadamente 76.20, indica el punto medio de los precios, donde el 50% de los precios son inferiores y el 50% son superiores.

Resultados del modelo ARIMA

Estacionariedad de la serie

Antes de empezar a generar los modelos se debe verificar la estacionalidad de la serie, primero generando la gráfica de ACF, después haciendo la preuba de dickey-fuller.

ggAcf(serie_entrenamiento,lag=40)

Esta gráfica contiene en el eje x la cantidad de lag o retrasos de la misma serie, con los cuales calcula la autocorrelación, en el eje y se puede observar una línea azul, la cual representa los limites de significancia, si las líneas negras superan la anteriormente nombrada se termina denominando en picos, los cuales son significativos y habría que analizarlos. Se puede observar una clara tendencia, con una disminución gradual de las autocorrelaciones, decayendo a valores cercanos a 0 en el lag 21.

Prueba de Dickey-Fuller

adf.test(serie_entrenamiento)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  serie_entrenamiento
## Dickey-Fuller = -3.1797, Lag order = 3, p-value = 0.0992
## alternative hypothesis: stationary

Se puede evidenciar que la serie no es completamente estacionaria (90%) debido a que el p valor es de 0.0992, tiene que ser menor a 0.05 para que no rechace la hipotesis alternativa, dado este resultado se procede a hacer una diferenciación de la serie con el fin de volverla estacionaria.

Diferenciación de la serie temporal

# Diferenciación de la serie para hacerla estacionaria
serie_diferenciada<-diff(serie_entrenamiento) %>% na.omit()
autoplot(serie_diferenciada)

En el gráfico se puede ver que la serie redujo mucho la tendencia, sin embargo parece tener una leve tendencia, tiene unas subidas y bajadas pronunciadas, además se puede notar una media y una varianza más constante en el tiempo, indicandonos que posiblemente esta serie tenga más estacionariedad que la serie original, sin embargo esto se corroborará con la prueba de dickey-fuller.

adf.test(serie_diferenciada)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  serie_diferenciada
## Dickey-Fuller = -3.0368, Lag order = 3, p-value = 0.1559
## alternative hypothesis: stationary

Como se puede observar el p valor aumentó, algo que es insusual, sin embargo puede pasar debido a que la serie se está reestructurandose, probablemente con la siguiente diferenciación la serie sea estacionaria con un nivel aceptable de significancia.

Segunda diferenciación de la serie

serie_diferenciada2<-diff(serie_diferenciada) %>% na.omit()
autoplot(serie_diferenciada2)

Se puede ver que la media ahora es mucho más constante, las oscilaciones son más regulares y la varianza es mucho menor, aunque tiene unas bajadas y subidas grandes no es por nada más que en casos aislados de los que ya se han hablado anteriormente, sigue todos los patrones de seriesestacionarias, sin embargo es necesario corroborarlo con la gráfica del ACF y posteriormente con la prueba de dickey-fuller.

ggAcf(serie_diferenciada2)

Aqui podemos evidenciar unas autocorrelaciones generales bastante bajas, el lag 12, 13 y 14, parecen indicador un patrón de estacionalidad, se puede deber por elecciones presidenciales, tratados de paz, cambios en las leyes,etc… La serie parece sigue los patrones de la estacionalidad, se procede a hacer la prueba de dickey-fuller para corroborarlo

adf.test(serie_diferenciada2)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  serie_diferenciada2
## Dickey-Fuller = -5.4287, Lag order = 3, p-value = 0.01
## alternative hypothesis: stationary

Se puede observar que la serie ya es estacionaria debido a un p valor de 0.01, dada esta información se hace uso del modelo auto.arima, el cual escogerá la mejor combinación posible para encontrar unos valores AIC, AICc y BIC lo más bajos posibles, aparte de un p valor mayor a 0.05 en los checkresiduals indicandonos que la serie es independiente y captura de forma óptima la serie en general.

Modelo ARIMA

auto.arima(serie_entrenamiento)
## Series: serie_entrenamiento 
## ARIMA(0,1,0) with drift 
## 
## Coefficients:
##        drift
##       0.8572
## s.e.  0.1494
## 
## sigma^2 = 1.34:  log likelihood = -91.84
## AIC=187.68   AICc=187.89   BIC=191.83

Se puede observar que el modelo auto.arima nos indica que la mejor combinación es (0,1,0), el modelo encontró un mejor rendimiento general con solo una diferenciación, dejando la serie no estacionaria y con el patrón de caminata aleatoria con constante(drift), con el fin de crear una pendiente en la serie y así predecir con mayor facilidad, sin embargo no se debe confiar completamente en este modelo, se deben proponer más, evaluando un d=1 y d=2, debido a que con la serie diferenciada una vez parece mostrar un buen rendimiento, aparte de esto nos apoyaremos en las gráficas ACF Y PACF para determinar los valores p y q posibles para usar en los modelos con una y dos diferenciaciones.

Selección del orden del modelo ARIMA (p, d, q)

grid.arrange(ggAcf(serie_diferenciada),
             ggPacf(serie_diferenciada),
             nrow=1
)

Según lo que se ve en la gráfica de ACF se puede usar un q=3 Y 0 y según la gráfica de PACF se puede usar un p=3 y 0, se añaden los valores p y q=0 debido a que el modelo auto.arima nos muestra que puede capturar información útil, estos valores se combinaran de todas las formas posibles con un valor d=1.

grid.arrange(ggAcf(serie_diferenciada2),
             ggPacf(serie_diferenciada2),
             nrow=1
)

El ACF sirve para determinar posibles valores q a usar en el modelo ARIMA, fijandonos en los rezagos, los cuales son valores signficativos y por tanto valen la pena analizarlos, por otra parte al PACF nos da posibles valores para p, los cuales vamos a verificar en distintos modelos, finalmente para la configuración se tiene que el valor de d va a ser igual a 2, este nos indica que en ese punto la serie se vuelve estacionaria. Los posibles valores para p serían 0,1,2,3 y los valores para q serían: 0,1. Se procede a hacer los modelos, pero primero se definen los parametros a observar para poder elegir el modelo óptimo.

Criterios para evaluar el modelo

Los criterios a evaluar en el modelo se dividirán en 3 partes, la primera sirve para compararlas con otros modelos y a partir de ahí determinar el que tenga mejores valores, los cuales deben ser más bajos para determinar la simplicidad del modelo, el segundo es para evaluar el modelo por su propia cuenta, este se verifica con las métricas de precisión que despliega la función accuracy, el tercero es a través del analisis del checkresiduals, donde se busca que la serie sea independiente.

Comparación de modelos

AIC: El criterio Akaike penaliza la cantidad de parmatros en el modelo y evalua el ajuste, es decir que premia la simplicidad del modelo.

BIC: Criterio bayesiano es similar al AIC, sin embargo este es más estricto en cuanto a la penalización.

AICc:Es parecido al AIC, pero este trabaja mejor con pruebas más pequeñas.

Métricas de precisión

MAE: Mean Absolut error, es el error promedio absoluto entre los pronósticos y los valores reales.

MAPE: Es el error porcentual promedio, tomando en cuenta los valores reales.

ME: Es el error promedio de los residuos.

MPE: Mean Percentage Error, usa terminos porcentuales, es lo mismo que Me pero con porcentajes.

Analisis checkresiduals

Independencia:la función checkresiduals genera 3 gráficas, una de normalidad; la serie debe seguir una distribución normal, esto indica que capturo bien la estructura de la serie, dejando información que no aportaba por fuera del modelo. La segunda gráfica es una ACF y muestra la autocorrelación en los errores del modelo, estos se deben comportar como ruido blanco, esto se refleja viendo autocorrelaciones pequeñas y aleatorias a lo largo de los lags. La tercera gráfica muestra los residuos de la serie a lo largo del tiempo, se debe observar una osilación alrededor de cero a lo largo del tiempo y que no haya mucha variabilidad en los datos, toda esta información se corrobora mediante la prueba de Ljung-Box, donde nos da un p valor, este p valor buscamos que de mayor que 0.05 para que rechaze la hipotesis alternativa y sea una serie independiente, la cual tiene todas las características anteriormente nombradas.

Modelos

modeloauto <- Arima(serie_entrenamiento,order=c(0,1,0))
modelo1<- Arima(serie_entrenamiento,order=c(0,1,3))
modelo2<- Arima(serie_entrenamiento,order=c(3,1,0))
modelo3<- Arima(serie_entrenamiento,order=c(3,1,3))
modelo3<- Arima(serie_entrenamiento,order=c(0,2,0))
modelo4 <- Arima(serie_entrenamiento,order=c(0,2,1))
modelo5 <- Arima(serie_entrenamiento,order=c(1,2,0))
modelo6 <- Arima(serie_entrenamiento,order=c(1,2,1))
modelo7 <- Arima(serie_entrenamiento,order=c(1,2,1))
modelo8 <- Arima(serie_entrenamiento,order=c(2,2,0))
modelo9 <- Arima(serie_entrenamiento,order=c(2,2,1))
modelo10 <- Arima(serie_entrenamiento,order=c(3,2,0))
modelo11 <- Arima(serie_entrenamiento,order=c(3,2,1))

Hechos todos los modelos se usan herramientas de r para organizar la información de acuerdo a los criterios antes propuestos.

Resultados de Modelos ARIMA
Modelo AIC AICc BIC MAE
modelo10 182.4430 183.1703 190.6848 0.8093293
modelo9 182.6294 183.3567 190.8712 0.7886283
modelo6 183.8856 184.3142 190.0670 0.7966686
modelo7 183.8856 184.3142 190.0670 0.7966686
modelo11 184.4071 185.5182 194.7093 0.8014419
modelo8 185.5822 186.0108 191.7635 0.8334192
modelo4 186.8371 187.0477 190.9580 0.7981813
modelo2 187.5913 188.3186 195.9015 0.8155784
modelo1 199.6605 200.3877 207.9706 0.9460770
modelo5 202.2081 202.4186 206.3290 0.9715500
modeloauto 211.8370 211.9059 213.9145 1.1747997
modelo3 227.7447 227.8137 229.8052 1.1784536

Se puede ver que el modelo más preciso es el modelo10, el cual tiene una configuración de (3,2,0), comparando con los demás es el que mejor rendimiento tiene en todos los aspectos, sin embargo no fue por mucha diferencia, vamos a evaluar su precisión más a fondo con la función accuracy.

accuracy(modelo10)
##                      ME     RMSE       MAE       MPE     MAPE      MASE
## Training set 0.06702628 1.057276 0.8093293 0.1225818 1.138196 0.2104297
##                     ACF1
## Training set 0.001205176

Valores bajos, con unos errores muy bajos, lo cual indica que el modelo es muy preciso, se proceden a analizar los residuos.

Evaluación del modelo a través del análisis de residuos

checkresiduals(modelo10)

## 
##  Ljung-Box test
## 
## data:  Residuals from ARIMA(3,2,0)
## Q* = 3.9631, df = 5, p-value = 0.5547
## 
## Model df: 3.   Total lags used: 8

Se puede evidenciar una distribución normal, lo cual es lo que se busca, en la gráfica de ACF se ven unas autocorrelaciones bajas y aleatorias. En la gráfica de los residuos en el paso del tiempo se observa una media razonable, cercana a cero, una varianza no muy amplia, a pesar de unos picos, esto se debe a patrones de estacionalidad de los que ya se han hablado. Por último se corrobora la información de que los residuos del modelo son independientes, lo que significa que no hay patrones sistematicos que el modelo no haya capturado.

Pronósticos

modelo10 %>% 
  forecast(h=8,level = 0.95)  # (Realizo 5 pronósticos)
##         Point Forecast    Lo 95    Hi 95
## 2017 Q1       105.5925 103.4282 107.7569
## 2017 Q2       106.4711 103.5640 109.3781
## 2017 Q3       107.7101 103.8165 111.6036
## 2017 Q4       108.8405 103.5528 114.1283
## 2018 Q1       109.8657 103.1190 116.6124
## 2018 Q2       110.9884 102.7761 119.2007
## 2018 Q3       112.1214 102.2307 122.0121
## 2018 Q4       113.1949 101.5330 124.8568

A continuación mostramos los datos reales de esos pronosticos, haciendo un llamado a serie_prueba

serie_prueba
##          Qtr1     Qtr2     Qtr3     Qtr4
## 2017 103.8331 105.3257 106.7076 107.9114
## 2018 106.9656 109.4028 107.9432 108.0462

Dados los datos reales y los pronosticos generados por el modelo escogido se puede ver que todos los valores dentro de los rangos del modelo, dandonos como resultado un modelo de predicciones exitoso, a continuación se hace un análisis detallado.

Analisis de pronosticos con respecto a los datos reales

Se presentan las diferencias entre los pronosticos y valores reales, posterior a eso se hace análisis desglosado.

2017 q1= 1.76

2017 q2= 1.15

2017 q3= 1

2017 q4= 0.89

2018 q1= 2.9

2018 q2= 1.58

2018 q3= 4.18

2018 q4= 5.15

Se puede observar que inicialmente tiene una diferencia con respecto al valor real, esta decae hasta su punto más bajo en el 2017 q4, pero empieza a incrementar a valor relativamente altos, lo que nos quiere decir que el modelo pierde precisión con el pasar del tiempo, entre más periodos es más propenso a equivocarse o a dar un valor más alejado de la realidad

modelo10 %>% 
  forecast(h=8) %>%  # (Realizo 5 pronósticos)
  autoplot(include=80)   # Gráfico los últimos 80 valores + pronóstico (se puede cambiar el 80)

Se puede ver mediante el autoplot que el precio de vivienda real subirá los siguientes 8 trimestres, las sombras azules indican el rango de los valores ligado a un intervalo de confianza, el primero es más oscuro, este indica una confianza de 95%, a partir de ahí se va desvaneciendo y va subiendo la confianza, debido a que abarca un rango de valores mayor.

Conclusiones

Se puede concluir que el modelo ARIMA funcionó satisfactoriamente, se observó que es necesario realizar pruebas de estacionariedad, gráficas y entender como funciona el modelo y sus componentes, debido a que no se debe confiar en el proceso automatizado de autoarima, se deben proponer los propios modelos

Se pudo observar que el modelo ARIMA no es capaz de capturar en su totalidad el comportamiento inusual del indice en periodos como 2005,2010 y 2015, esto se debe a que no está capacitado para predecir valores que son afectados por eventos de alto impacto como guerras, periodos de recesión económica, etc…

Las implicaciones de las predicciones nos indican que el acceso a la vivienda se puede volver más dificil para las personas, especialmente de escasos recursos, sin embargo en este estudio no se incluyen los factores externos tales como: las tasa de interés, creditos y facilidades para las personas que desean adquirir vivienda, estas cambian con el tiempo. A pesar de todo eso este estudio es útil para la población colombiana, debido a que les favorece bastante adquirir una vivienda en teimpos cercanos, puesto que se muestra una tendencia alcista para el futuro.

Bibliografía

IBM. (2023). ARIMA model. Ibm.com. https://www.ibm.com/mx-es/topics/arima-model

Banco de la República de Colombia. (2018). Contexto histórico y precios de vivienda en Colombia. https://www.banrep.gov.co

Departamento Administrativo Nacional de Estadística (DANE). (2018). Dinámica económica y análisis macroeconómico. https://www.dane.gov.co

Comisión Económica para América Latina y el Caribe (CEPAL). (2018). Índices de precios reales de vivienda en Colombia. https://www.cepal.org