1. Introducción

Actualmente las ventas de bienes raíces en Cali se han visto disminuidas de manera significativa en lo corrido del año. Durante este periodo muchas instituciones bancarias de ahorro y vivienda están prestando grandes sumas de dinero para la industria y la construcción comercial y residencial. Cuando el efecto producto de las tensiones políticas y sociales disminuya, se espera que la actividad económica de este sector se reactive.

En el mercado inmobiliario, la predicción del precio de las viviendas es un tema de gran interés para inversores, desarrolladores y compradores. En la ciudad de Cali, Colombia, la demanda de viviendas ha aumentado en los últimos años, lo que ha generado un aumento en los precios de las propiedades. Sin embargo, la falta de herramientas efectivas para predecir el precio de las viviendas hace que sea difícil para los actores del mercado tomar decisiones informadas.

En este contexto, el presente informe tiene como objetivo presentar un modelo de regresión lineal múltiple para predecir el precio de viviendas en la ciudad de Cali, Colombia, usando variables predictoras relevantes, como la superficie de la vivienda, el número de habitaciones, el número de baños, el número de parqueaderos y el estrato.

2. Resultados

2.1 Viviendas en la Zona Norte.

En este caso de acuerdo con la solicitud, el interés se centra en aquellas viviendas del tipo casa de la zona norte de Cali. Que cumplan con las siguientes características: tamaño 200 metros cuadrados, un parqueadero, dos baños, cuatro habitaciones, estrato 4 o 5, con precio inferior a los 300 millones de pesos.

2.1.1. Ofertas potenciales.

Para responder a la solicitud del cliente se realizón un filtro en la base de datos, con el cual se evidenció que no existen viviendas con cumplan con todas las características buscadas.

##  [1] id           zona         estrato      preciom      areaconst   
##  [6] parqueaderos banios       habitaciones tipo         barrio      
## [11] longitud     latitud     
## <0 rows> (or 0-length row.names)

Por esta razón se realizó un filtro un poco más flexible que muestre ofertas de vivienda con características similares:

##     id       zona estrato preciom areaconst parqueaderos banios habitaciones
## 1 1270 Zona Norte       5     350       203            2      2            5
## 2 1163 Zona Norte       5     350       216            2      2            4
## 3 1822 Zona Norte       4     340       295            2      2            4
## 4 1943 Zona Norte       5     350       346            1      2            4
##   tipo    barrio  longitud latitud
## 1 Casa el bosque -76.51448 3.48531
## 2 Casa la merced -76.51218 3.48181
## 3 Casa    vipasa -76.51777 3.48060
## 4 Casa    vipasa -76.51847 3.47503

Los resultados de la búsqueda realizada indican que existen múltiples opciones de vivienda que satisfacen parcialmente las necesidades expresadas por el cliente.

  • Casa 1270: Esta es una vivienda con un tamaño de 203 metros cuadrados, con 2 parqueaderos, 2 baños, 5 habitaciones, de estrato 5, y con un precio de 350 millones de pesos.

  • Casa 1163: Esta es una vivienda tiene tamaño de 216 metros cuadrados, con 2 parqueaderos, 2 baños, 4 habitaciones, de estrato 5, y con un precio de 350 millones de pesos.

  • Casa 1822: Esta casa tiene un tamaño de 295 metros cuadrados, con 2 parqueaderos, 2 baños, 4 habitaciones, de estrato 4, y con un precio de 340 millones de pesos.

  • Casa 1943: Esta epropiedad tiene un tamaño de 346 metros cuadrados, con un parqueadero, 2 baños, 4 habitaciones, de estrato 5, y con un precio de 350 millones de pesos.

2.1.2. Visualización de las posibles ofertas.

2.2 Viviendas en la Zona Sur.

En este caso de acuerdo con la solicitud, el interés se centra en aquellas viviendas del tipo apartamento de la zona sur de Cali. Que cumplan con las siguientes características: tamaño 300 metros cuadrados, tres parqueaderos, tres baños, cinco habitaciones, estrato 5 o 6, con precio inferior a los 850 millones de pesos.

2.1.1. Ofertas potenciales.

Para responder a la solicitud del cliente se realizón un filtro en la base de datos, con el cual se evidenció que en el conjunto de datos no hay viviendas que cumplan con todas las características que buscaa el cliente.

##  [1] id           zona         estrato      preciom      areaconst   
##  [6] parqueaderos banios       habitaciones tipo         barrio      
## [11] longitud     latitud     
## <0 rows> (or 0-length row.names)

Por este motivo, se realizón un nuevo filtro dando flexibilidad a algunas características y garantizando que no se exceda el valor del crédito.

##     id     zona estrato preciom areaconst parqueaderos banios habitaciones
## 1 7182 Zona Sur       5     730       573            3      8            5
## 2 7512 Zona Sur       5     670       300            3      5            6
##          tipo    barrio longitud latitud
## 1 Apartamento guadalupe  -76.548   3.408
## 2 Apartamento seminario  -76.550   3.409

En este caso se encontraron dos viviendas que guardan características muy similares a las solicitadas, las cuales se mantienen dentro del margen del crédito.

  • Apartamento 7182: Esta propiedad de estrato 5 dispone de 3 parqueaderos, 8 baños, 5 habitaciones, con un tamaño de 573 metros cuadrados, y un precio de venta de 730 millones de pesos.

  • Apartamento 7512: Esta propiedad de estrato 5 dispone de 3 parqueaderos, 5 baños, 6 habitaciones, un tamaño de 573 metros cuadrados, y tiene un precio de venta de 670 millones de pesos.

3. Conclusiones y sugerencias

  • Si bien el análisis descriptivo no arrojó propiedades que cumplieran al 100% con todos los requisitos de los clientes, se identificaron viviendas que satisfacen sus necesidades principales. Sin embargo, los resultados evidencian una brecha en la oferta inmobiliaria existente, caracterizada por una limitada variedad de opciones. Para atender de manera más efectiva la demanda del mercado, se recomienda ampliar el portafolio de propiedades, incorporando opciones que cubran un espectro más amplio de características y precios.

  • El mapeo de las ofertas inmobiliarias ha evidenciado un desfase entre los datos geográficos almacenados en la base y la distribución real de las propiedades, en las zonas norte y sur de la ciudad. Se sospecha que este desfase se debe a errores en la codificación geoespacial de los registros. Para subsanar esta situación, se sugiere ejecutar una depuración de la base de datos y validar la consistencia de los códigos postales y coordenadas geográficas.

  • La falta de variedad en las características de las viviendas limita la posibilidad de atender a un segmento más amplio del mercado. Se sugiere realizar un análisis más profundo de la demanda potencial para identificar las características más valoradas por los clientes y ajustar la oferta en consecuencia.

Anexo A

1. Entendimiento de los datos

1.1 Análisis exploratorio de datos.

Antes de iniciar con el análisis multivariado, es conveniente realizar el análisis exploratorio y la limpieza de los datos. Para cumplir con este objetivo es conveniente realizar las siguientes tareas:
1. Identificar el tipo de datos presentes en las variables.
2. Determinar el tamaño del dataset.
3. Determinar si hay presencia de datos faltantes.
4. Indicar el total de datos faltantes en cada variable.

1.1.1 Tipo de datos

Para realizar el modelado de datos, es importante conocer el tipo de datos que contiene cada una de las variables, en este caso, el conjunto de datos contiene cuatro variables del tipo categórico y nueva del tipo cuantitativo.

str(datos, vec.len=2, digits.d=2, give.attr=FALSE)
## 'data.frame':    8322 obs. of  13 variables:
##  $ id          : num  1147 1169 ...
##  $ zona        : chr  "Zona Oriente" "Zona Oriente" ...
##  $ piso        : chr  NA NA ...
##  $ estrato     : num  3 3 3 4 5 ...
##  $ preciom     : num  250 320 350 400 260 ...
##  $ areaconst   : num  70 120 220 280 90 ...
##  $ parqueaderos: num  1 1 2 3 1 ...
##  $ banios      : num  3 2 2 5 2 ...
##  $ habitaciones: num  6 3 4 3 3 ...
##  $ tipo        : chr  "Casa" "Casa" ...
##  $ barrio      : chr  "20 de julio" "20 de julio" ...
##  $ longitud    : num  -77 -77 ...
##  $ latitud     : num  3.4 3.4 ...

1.1.2. Tamaño del conjunto de datos

En este caso, el dataset con el cual se trabajará cuenta con un total de 13 variables (columnas) y 8322 observaciones (filas).

dim(datos)
## [1] 8322   13

1.1.3. Datos faltantes.

El siguiente grafico permite observar que hay presencia de observaciones faltantes. Siendo las variables “Parqueaderos” y “Piso” las que mayor porcentaje de observaciones faltantes tienen, con un 19.19% y un 31.7% respectivamente. Siguiendo con el análisis exploratorio, el sieguiente paso será determinar el número exacto de observaciones faltantes en cada variable.

El análisis muestra que la variable “piso” es la que contiene el mayor número de registros faltantes con un total de 2638 observaciones, seguida de la variable “parqueaderos” que contiene 1605 observaciones faltantes. En cuanto a las demás variables, cada una de ella contiene 3 registros faltantes.

##                 .
## id              3
## zona            3
## piso         2638
## estrato         3
## preciom         2
## areaconst       3
## parqueaderos 1605
## banios          3
## habitaciones    3
## tipo            3
## barrio          3
## longitud        3
## latitud         3

2. Limpieza y Preparación de los datos

2.1 Limpieza de los datos

La construcción de un modelo de calidad, dependerá en gran parte de la limpieza y preparación de los datos, es por eso que se realizan las siguientes etapas.

2.1.1 Selección de las variables de interés.

El Id y el barrio no son variables que se puedan usar como variables respuesta en la construcción del modelo por lo cual se procede a eliminarlas.

df <- subset(datos1, select = -piso)
head(df)
##           zona estrato preciom areaconst parqueaderos banios habitaciones
## 1 Zona Oriente       3     250        70            1      3            6
## 2 Zona Oriente       3     320       120            1      2            3
## 3 Zona Oriente       3     350       220            2      2            4
## 4     Zona Sur       4     400       280            3      5            3
## 5   Zona Norte       5     260        90            1      2            3
## 6   Zona Norte       5     240        87            1      3            3
##          tipo      barrio  longitud latitud
## 1        Casa 20 de julio -76.51168 3.43382
## 2        Casa 20 de julio -76.51237 3.43369
## 3        Casa 20 de julio -76.51537 3.43566
## 4        Casa  3 de julio -76.54000 3.43500
## 5 Apartamento       acopi -76.51350 3.45891
## 6 Apartamento       acopi -76.51700 3.36971

2.2 Preparación de los datos.

2.2.1 Imputación de los datos.

Como se mencionó anteriormente, el conjunto de datos contiene observaciones faltantes, por lo cual se procede a realizar imputación con la moda. Esto, debido a que estos registros no se pueden eliminar ya que se pierde información valiosa.

mode_impute <- function(x) {
  ux <- unique(x[!is.na(x)])
  ux[which.max(tabulate(match(x[!is.na(x)], ux)))]
}

df[is.na(df)] <- mode_impute(df)

df$preciom <- as.double(df$preciom)
df$areaconst <- as.double(df$areaconst)
df$parqueaderos <- as.double(df$parqueaderos)
df$banios <- as.double(df$banios)
df$habitaciones <- as.double(df$habitaciones)
df$estrato <- as.double(df$estrato)
df$longitud <- as.double(df$longitud)
df$latitud <- as.double(df$latitud)

2.2.2. Viviendas de base 1.

De acuerdo con la solicitud del cliente, se requieren viviendas del tipo Casa ubicadas en la Zona Norte, por lo tanto realizamos el siguiente filtro a la base de datos para crear el modelo.

df1<-df %>% 
  filter(zona == "Zona Norte", tipo == "Casa")
head(df1)
##         zona estrato preciom areaconst parqueaderos banios habitaciones tipo
## 1 Zona Norte       5     320       150            2      4            6 Casa
## 2 Zona Norte       5     780       380            2      3            3 Casa
## 3 Zona Norte       6     750       445            3      7            6 Casa
## 4 Zona Norte       4     625       355            3      5            5 Casa
## 5 Zona Norte       5     750       237            2      6            6 Casa
## 6 Zona Norte       4     600       160            1      4            5 Casa
##   barrio  longitud latitud
## 1  acopi -76.51341 3.47968
## 2  acopi -76.51674 3.48721
## 3  acopi -76.52950 3.38527
## 4  acopi -76.53179 3.40590
## 5  acopi -76.54044 3.36862
## 6  acopi -76.55210 3.42125

2.2.3. Viviendas de base 2.

De acuerdo con la solicitud de uno de los clientes, se requieren viviendas del tipo Apartamento ubicadas en la Zona Sur. Por lo cual, para la posterior creación del modelo de regresión realizamos el siguiente filtro.

df2<-df %>% 
  filter(zona == "Zona Sur", tipo == "Apartamento")
head(df2)
##       zona estrato preciom areaconst parqueaderos banios habitaciones
## 1 Zona Sur       4     290        96            1      2            3
## 2 Zona Sur       3      78        40            1      1            2
## 3 Zona Sur       6     875       194            2      5            3
## 4 Zona Sur       3     135       117            3      2            3
## 5 Zona Sur       3     135        78            3      1            3
## 6 Zona Sur       4     220        75            1      2            3
##          tipo        barrio  longitud latitud
## 1 Apartamento         acopi -76.53464 3.44987
## 2 Apartamento    aguablanca -76.50100 3.40000
## 3 Apartamento     aguacatal -76.55700 3.45900
## 4 Apartamento       alameda -76.51400 3.44100
## 5 Apartamento       alameda -76.53600 3.43600
## 6 Apartamento alférez real -76.54627 3.39109

3. Análisis exploratorio de los datos.

Antes de iniciar con la etapa de modelado, se va a revisar la distribución de los datos y la identificación de posibles datos atíícos.

3.1 Análisis univariado viviendas base 1.

3.1.1. Medidas de centralidad y dispersión.

El análisis de las viviendas tipo casa en la Zona Norte revela una amplia variabilidad en cuanto a tamaño y precio. Los metros cuadrados construidos oscilan entre \(30m^2\) y \(1440m^2\), con una concentración significativa en propiedades de \(300m^2\). En cuanto al valor comercial, se observa un rango entre 289 y 1940 millones de pesos, presentando un promedio de 445 millones de pesos.

Respecto a las características internas, se identificó un máximo de 10 habitaciones, baños y parqueaderos por vivienda. Sin embargo, la presencia de propiedades con cero habitaciones o baños sugiere posibles inconsistencias en la base de datos. Los datos muestran una tendencia hacia viviendas con 4 habitaciones, 3 baños y 3 parqueaderos como configuración más común.

Descriptive Statistics

datos_num1

N: 722

  Min Q1 Median Mean Std.Dev Q3 Max IQR
areaconst 30.00 140.00 240.00 264.85 167.17 337.00 1440.00 196.75
banios 0.00 2.00 3.00 3.56 1.52 4.00 10.00 2.00
habitac 0.00 3.00 4.00 4.51 1.83 5.00 10.00 2.00
parquea 1.00 2.00 3.00 2.51 1.16 3.00 10.00 1.00
preciom 89.00 260.00 390.00 445.91 268.36 550.00 1940.00 288.75

3.1.2. Distribución de los datos.

En este caso para la variable precio se observa una asimetría positiva, mostrando una posible presencia de datos atípicos. Además se observa que la distribucón es apuntada lo cual se comprueba con con el coeficiente de Kurtosis que es de 7.67.

## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

La distribucón del precio de las viviendas del tipo casa en la zona norte muestra asimetría positiva es decir que aquellas casas de gran tamaño pueden ser datos atípicos. Por otra parte el coeficiente de Kurtosis del 9.26 indica que los datos están apuntados.

## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

En las variables número de baños, número de parqueaderos y número de habitaciones se observa que las distribuciones son leptocúrticas es decir que la mayoría de los datos se concentran en torno a la media, en cuanto a la asimétria se observa que las distribuciones son asimétricas positivas a excepción de la variable número de habitaciones la cual tiene una distribución que se asemeja más a la normal.

3.1.3. Datos atipicos

En este caso se identifican valores extremos en la variable “precio en millones”, específicamente para viviendas con un valor superior a los 990 millones de pesos, lo que podría indicar la presencia de outliers.

Para la variable área construida se observan valores extremos que corresponden a viviendas que superan los \(640m^2\) lo cual puede sugerir posible presencia de outliers.

En este caso se observan valores extremos para aquellas viviendas que cuentan con más de 5 parqueaderos, también propiedades que disponen de más de 8 baños y 9 habitaciones, lo cual puede dar indicios de posibles datos atípicos.

## No id variables; using all as measure variables

3.2. Análisis bivariado viviendas de base 1.

3.2.1. Matriz de correlación.

El coeficiente de correlación de Pearson muestra los siguientes resultados:

El análisis de correlación mostró que el precio de las propiedades presenta una correlación positiva moderada con el área construida (r = 0.73) y el número de baños (r = 0.52), indicando que a mayor área, y mayor número de baños disponibles en las viviendas mayor tiende a ser el precio. Asimismo, se observaron correlaciones positivas débiles con el número de parqueaderos y habitaciones. Entre las variables predictoras, se identificaron correlaciones positivas moderadas entre el área construida y el número de baños (r = 0.46), lo cual muestra que el número de baños aumenta a medida que aumenta el tamaño de la propiedad. Tambien se encontro una relación lineal positiva moderada entre el número de baños y el número de habitaciones (r = 0.57), lo cual sugiere posibles multicolinealidades que podrían afectar el modelo de regresión.

cor(df1[,3:7])
##                preciom areaconst parqueaderos    banios habitaciones
## preciom      1.0000000 0.7313480   0.22012644 0.5233357   0.32270961
## areaconst    0.7313480 1.0000000   0.15699706 0.4628152   0.37533231
## parqueaderos 0.2201264 0.1569971   1.00000000 0.1980583   0.09570347
## banios       0.5233357 0.4628152   0.19805834 1.0000000   0.57553136
## habitaciones 0.3227096 0.3753323   0.09570347 0.5755314   1.00000000
ggpairs(df1[,3:7], title="")

3.3 Ubicación de las viviendas de base 1.

3.3.1. Distribución de las viviendas de la zona norte.

El análisis geoespacial reveló una discrepancia significativa entre la ubicación geográfica real de un gran número de viviendas y las etiquetas de zona asignadas. Al representar las coordenadas de estas propiedades en un mapa, se observó que muchas de las viviendas etiquetadas como pertenecientes a la zona norte de la ciudad se encontraban ubicadas en zonas adyacentes o incluso en sectores completamente diferentes. A pesar de que las viviendas fueron etiquetadas como pertenecientes a la zona norte, el análisis geoespacial demostró que existe una inconsistencia considerable entre esta información y su ubicación real en el mapa. Esta inconsistencia podría deberse a errores en la geocodificación de los datos o incluso a un mal etiquetado de las propiedades.

3.4 Análisis univariado viviendas base 2.

3.4.1. Medidas de centralidad y dispersión.

El análisis descriptivo de los datos reveló que el precio de las propiedades presenta una amplia variabilidad, oscilando entre 75 y 1,750 millones de pesos, con un valor promedio de 297.29 millones de pesos. El área construida de las propiedades varía entre 40 y 932 metros cuadrados, con un promedio de 97 metros cuadrados. En cuanto a las características internas, se observó que el número de baños oscila entre 1 y 8, siendo 2 el valor más común. De manera similar, el número de habitaciones varía entre 1 y 6, con 3 habitaciones como el valor más frecuente. Por último, el número de parqueaderos se encuentra entre 1 y 10, siendo 1 parqueadero lo más usual.

Descriptive Statistics

datos_num2

N: 2787

  Min Q1 Median Mean Std.Dev Q3 Max IQR
areaconst 40.00 65.00 85.00 97.47 52.57 110.00 932.00 45.00
banios 0.00 2.00 2.00 2.49 0.93 3.00 8.00 1.00
habitac 0.00 3.00 3.00 2.97 0.63 3.00 6.00 0.00
parquea 1.00 1.00 1.00 1.65 0.83 2.00 10.00 1.00
preciom 75.00 175.00 245.00 297.29 191.55 335.00 1750.00 160.00

3.4.2. Distribución de los datos.

En este caso la distribucón del precio de las viviendas del tipo apartamento en la zona sur de Cali muestra asimetría positiva es decir que aquellos aparatamentos con valores elevados pueden ser datos atípicos.

## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

En este caso la distribucón del área de las viviendas del tipo apartamento en la zona sur de Cali muestra asimetría positiva, lo cual puede indicar que aquellos aparatamentos de gran tamaño pueden ser datos atípicos.

## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Las variables número de parqueaderos y número de baños muestran asimetría positiva lo cual puede ser un indicio de la presencia de datos atípicos en propiedades que disponen de un gran número de los mismos, por su parte las variable número de habitaciones sigue un comportamiento más parecido al de una distribución normal.

3.4.3. Datos atipicos viviendas de base 2.

El boxplot muestra valores extremos para aquellas viviendas con precios de venta superiores a los 580 millones de pesos, estos valores extremos pueden indicar la presencia de datos outliers que pueden afectar la precisión del modelo.

Para la variable área construida en metros cuadrados se observan valores extremos para viviendas con un tamaño superior a los 180 metros cuadrados, estos valores pueden indicar presencia de outliers en la variable, los cuales pueden ser apartamentos de un tamaño extremadamente grande.

estadisticos <- boxplot.stats(df2$areaconst)

# Mostrar los valores atípicos
sort(estadisticos$out)
##   [1] 180.00 180.00 180.00 180.00 180.00 180.00 180.00 180.00 181.00 181.00
##  [11] 182.00 183.00 183.00 183.00 184.00 184.00 184.26 185.00 185.00 185.00
##  [21] 185.00 185.00 185.00 185.00 185.00 185.00 185.00 185.00 185.00 186.00
##  [31] 187.00 187.00 187.00 187.00 187.00 187.00 187.00 187.00 187.00 187.00
##  [41] 187.00 187.00 187.00 187.00 187.24 188.00 188.00 189.00 191.00 191.00
##  [51] 191.00 191.80 192.00 192.00 192.00 192.00 193.00 194.00 195.00 195.00
##  [61] 197.00 197.00 197.00 198.00 198.00 198.00 198.00 198.00 200.00 200.00
##  [71] 200.00 200.00 200.00 200.00 200.00 200.00 200.00 200.00 200.00 200.00
##  [81] 200.00 200.00 202.00 204.00 206.00 209.00 210.00 210.00 211.00 212.00
##  [91] 213.00 213.00 213.00 213.00 213.00 213.00 216.00 217.00 217.04 220.00
## [101] 220.00 220.00 220.00 221.00 222.00 222.00 222.00 223.00 224.41 226.00
## [111] 227.00 229.00 230.00 230.00 236.00 237.00 237.00 240.00 241.00 244.00
## [121] 245.00 249.00 249.00 250.00 250.00 250.00 251.00 256.00 257.00 258.00
## [131] 259.00 260.00 260.00 267.00 270.00 274.00 275.00 280.00 287.00 288.00
## [141] 290.00 290.00 290.00 295.55 296.00 300.00 300.00 300.00 300.00 306.00
## [151] 306.00 306.00 310.00 320.00 329.00 329.00 330.00 330.00 342.00 344.00
## [161] 344.00 344.00 345.00 346.00 346.00 348.00 352.00 399.00 410.00 439.00
## [171] 464.00 486.00 520.00 573.00 600.00 605.00 932.00

Para la variable parqueaderos se observan valores extremos para apartamentos que cuentan con más de 4 parqueaderos, o que tienen más de cinco baños. En el caso del número de habitaciones los valores extremos representan propiedades con menos de dos o menos habitaciones y propiedades con cuatro o más habitaciones.

## No id variables; using all as measure variables

3.5. Análisis bivariado viviendas de base 2.

3.5.1. Matriz de correlación.

cor(df2[,3:7])
##                preciom areaconst parqueaderos    banios habitaciones
## preciom      1.0000000 0.7579955   0.30687955 0.7196705   0.33175381
## areaconst    0.7579955 1.0000000   0.25834808 0.6618179   0.43396077
## parqueaderos 0.3068796 0.2583481   1.00000000 0.2107206   0.02991625
## banios       0.7196705 0.6618179   0.21072057 1.0000000   0.51492273
## habitaciones 0.3317538 0.4339608   0.02991625 0.5149227   1.00000000

El análisis de correlación reveló una relación lineal positiva moderada entre el precio de venta y tanto el área construida (r = 0.758) como el número de baños (r = 0.72). Esto indica que, en general, a mayor tamaño del apartamento y mayor cantidad de baños, mayor tiende a ser el precio. Asimismo, se observó una correlación positiva leve entre el precio y el número de parqueaderos (r = 0.307) y el número de habitaciones (r = 0.332).

ggpairs(df2[,3:7], title=" ")

3.6. Ubicación de las viviendas de base 2.

3.6.1 Distribución de las viviendas de la zona Sur.

El análisis geoestadístico reveló una inconsistencia entre las etiquetas de zona y la ubicación geográfica real de las propiedades. Al superponer los datos geoespaciales en un mapa, se identificó que algunas viviendas se encontraban ubicadas en zonas distintas a la ‘zona sur de Cali’ a la que habían sido asignadas, según las coordenadas proporcionadas. Esta discrepancia resalta la importancia de validar la precisión de los datos geoespaciales en los análisis inmobiliarios.

4. Modelos de regresión lineal múltiple

4.1 Estimación del modelo viviendas de base 1.

Para el modelo de viviendas de base 1, se trabajará con los datos filtrados anteriormenete.

4.1.1 Creación de variables dummy.

La variable estrato cuenta con 4 categorías, por lo cual es necesaria la creación de tres variables binarias justo como se muestra acontinuación.

df1$estrato <- factor(df1$estrato)
df_dummy <- model.matrix(~ estrato - 1, data = df1)
dataset <- cbind(df1, df_dummy)
head(dataset)
##         zona estrato preciom areaconst parqueaderos banios habitaciones tipo
## 1 Zona Norte       5     320       150            2      4            6 Casa
## 2 Zona Norte       5     780       380            2      3            3 Casa
## 3 Zona Norte       6     750       445            3      7            6 Casa
## 4 Zona Norte       4     625       355            3      5            5 Casa
## 5 Zona Norte       5     750       237            2      6            6 Casa
## 6 Zona Norte       4     600       160            1      4            5 Casa
##   barrio  longitud latitud estrato3 estrato4 estrato5 estrato6
## 1  acopi -76.51341 3.47968        0        0        1        0
## 2  acopi -76.51674 3.48721        0        0        1        0
## 3  acopi -76.52950 3.38527        0        0        0        1
## 4  acopi -76.53179 3.40590        0        1        0        0
## 5  acopi -76.54044 3.36862        0        0        1        0
## 6  acopi -76.55210 3.42125        0        1        0        0

4.1.2. Desarrollo del modelo.

Para este conjunto de datos se implementa un modelo de regresión lineal múltiple por mínimos cuadrados ordinaros a partir de la siguiente función.

modelo1 <- lm(preciom ~ estrato4 + estrato5+ estrato6 + areaconst + parqueaderos + banios + habitaciones, data = dataset)
summary(modelo1)
## 
## Call:
## lm(formula = preciom ~ estrato4 + estrato5 + estrato6 + areaconst + 
##     parqueaderos + banios + habitaciones, data = dataset)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -921.04  -72.05  -16.54   48.65 1056.79 
## 
## Coefficients:
##               Estimate Std. Error t value             Pr(>|t|)    
## (Intercept)  -11.80842   20.38410  -0.579                0.563    
## estrato4      91.17194   17.15418   5.315          0.000000143 ***
## estrato5     145.69182   16.04608   9.080 < 0.0000000000000002 ***
## estrato6     331.83418   26.19572  12.667 < 0.0000000000000002 ***
## areaconst      0.80967    0.04266  18.980 < 0.0000000000000002 ***
## parqueaderos  20.40581    5.12807   3.979          0.000076198 ***
## banios        22.42994    5.35524   4.188          0.000031607 ***
## habitaciones   2.67926    4.06510   0.659                0.510    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 155.3 on 714 degrees of freedom
## Multiple R-squared:  0.6685, Adjusted R-squared:  0.6652 
## F-statistic: 205.7 on 7 and 714 DF,  p-value: < 0.00000000000000022

El modelo resultante tiene la forma:

\[ \begin{aligned} Precio = &-11.80842 + 0.80967(Área)+ 20.40581(Parqueaderos)+22.42994(Baños)+2.67926(Habitaciones)\\ &+ 91.17194 (Estrato_4) + 145.69182(Estrato_5) + 331.83418 (Estrato_6)+ \varepsilon_0 \end{aligned} \]

Los resultados del modelo de regresión indican que el coeficiente asociado al número de habitaciones (p-valor = 0.510) y el intercepto (p-valor = 0.563) no son estadísticamente significativos. Esto sugiere que estas variables no aportan una contribución significativa a la explicación de la variabilidad en la variable dependiente. Esta falta de significancia podría deberse a varias razones, como la presencia de multicolinealidad con otras variables. Este resultado subraya la importancia de una cuidadosa selección de variables en la construcción de modelos de regresión, ya que la inclusión de variables no significativas puede disminuir la precisión del modelo y dificultar su interpretación.

 -11.80842 + (0.80967*200)+ (20.40581*1)+(22.42994*2)+(2.67926*4)+ (91.17194*1)
## [1] 317.2803

4.1.3. Coeficiente de determinación \(R^2\)

En este caso, el modelo muestra un coeficiente de determinación \(R^2\) ajustado del 0.6652, es decir que el 66.52% de los datos de los precios de las casas de la zona norte de Cali se ajustan al modelo de regresión. De manera general, este coeficiente indica que hay una diferencia significativa entre las predicciones realizadas por el modelo de regresión y los valores reales.

4.1.4. Predicción del precio de una vivienda de tipo 1

De acuerdo con el cliente se requiere una vivienda del tipo casa, con un tamaño de 200 metros cuadrados, de estrato 4 0 5, con dos baños, un parqueadero y cuatro habitaciones.

pred1 <- data.frame(
  areaconst = 200,      
  parqueaderos = 1,  
  banios = 2    ,
  habitaciones = 4,
  estrato3 = 0,
  estrato4 = 1,
  estrato5 = 0,
  estrato6 = 0
)

pred1 <- predict(modelo1, newdata = pred1)
cat("La predicción del precio de una casa de estrato 4 es de", pred1 , "millones de pesos","\n")
## La predicción del precio de una casa de estrato 4 es de 317.2807 millones de pesos
pred4 <- data.frame(
  areaconst = 200,      
  parqueaderos = 1,  
  banios = 2    ,
  habitaciones = 4,
  estrato3 = 0,
  estrato4 = 0,
  estrato5 = 1,
  estrato6 = 0
)
pred4 <- predict(modelo1, newdata = pred4)
cat("La predicción del precio de una casa de estrato 5 es de", pred4 , "millones de pesos","\n")
## La predicción del precio de una casa de estrato 5 es de 371.8006 millones de pesos

Para una vivienda de estrato 4 con las características antes mencionadas, se observa que el valor comercial que predice el modelo es de 317.2801 millones y de 371.8006 millones de pesos para una de estrato 5, en el caso de la casa de estarto 4 el valor se ajusta al crédito del cliente, mientras que en el segundo caso el valor excede el crédito. Sin emnargo, cabe resaltar que estas estimaciones puden variar teniendo en cuenta la precisíon que muestra el modelo.

4.2 Validación de los supuestos.

4.2.1. Normalidad

A continuación, vamos a verificar si los errores siguen una ditribución normal. Para esto, se plantea el siguiente sistema de hipótesis:
\[ \begin{aligned} H_0 &: \varepsilon \sim Normal\\ &vs\\ H_1 &: \varepsilon \; NO \sim Normal \end{aligned} \]
Con respecto a la distribución de los errores, usando el test de Shapiro-Wilk se obtiene un p-valor menor que el nivel de significancia \(\alpha\). Por lo tanto, hay evidencia estadística para rechazar la hipótesis nula, lo cual indica que los errores no siguen una distribución normal \(\varepsilon \sim N(\mu, \sigma^2)\)
## 
##  Shapiro-Wilk normality test
## 
## data:  modelo1$residuals
## W = 0.83289, p-value < 0.00000000000000022
qqnorm(modelo1$residuals, main = "Grafico quantile-quantile")
# Plot the Q-Q line
qqline(modelo1$residuals, col= "red")

4.2.2. Homocedasticidad (Varianza constante)

Para comprobar si la varianza de los errores es constante se plantea el siguiente sistema de hipótesis:

\[ \begin{align*} H_0 &: V[\varepsilon_i] \, = \, \sigma \\ &vs\\ H_1 &: V[\varepsilon_i] \, \neq \, \sigma \end{align*} \]

## 
##  studentized Breusch-Pagan test
## 
## data:  modelo1
## BP = 132.6, df = 7, p-value < 0.00000000000000022
Aplicando el test de Breusch Pagan, se observa que el p-valor es menor que el nivel de significancia \(\alpha\). Con lo cual, hay evidencia estadística para rechazar la hipótesis nula, lo que significa que la varianza de los errores es diferente.

4.2.3. No autocorrelación de los errores

Para comprobar si los errores no están correlacionados, planteamos el siguiente sistema de hipótesis:

\[ \begin{aligned} H_0 &: E[\varepsilon_i, \varepsilon_j] \, = \, 0 \\ &vs\\ H_1 &: E[\varepsilon_i, \varepsilon_j] \, \neq \, 0 \end{aligned} \]

Usando el test de Durbin-Watson, como el p-valor es menor que el nivel de signifificancia \(\alpha\), hay evidencia estadística para rechazar la hipótesis nula. Es decir, los errores presentan correlación.
lmtest::dwtest(modelo1)
## 
##  Durbin-Watson test
## 
## data:  modelo1
## DW = 1.7148, p-value = 0.00004688
## alternative hypothesis: true autocorrelation is greater than 0
Con base en lo anterior, se observa que el modelo incumple todos los supuestos, por lo cual no será la mejor opción al momento de realizar predicciones. Una posible causa puede ser que la variable respuesta no sigue una distribución normal, por lo cual sería conveniente estandarizar los datos en proceso de limpieza y preparación. Otra posible causa puede ser la presencia de datos atípicos o multicolinealidades.

4.3. Estimación de un modelo para viviendas de Base 1.

4.3.1. Partición de la base de datos.

set.seed(123)

index <- sample(nrow(dataset), 0.7*nrow(dataset))

train <- dataset[index, ]

test <- dataset[-index, ]

4.3.2 Entrenamiento del modelo.

Para este modelo se usan como variables predictoras el estrato expresado de acuerdo a tres variables binarias, el área construida, el número de parqueaderos, el número de baños y el número de habitaciones. Usando como conjunto de entrenamiento una proporción del 70% de los datos.

modelo11 <- lm(preciom ~ estrato4 + estrato5+ estrato6 + areaconst + parqueaderos + banios + habitaciones, data = train)
summary(modelo11)
## 
## Call:
## lm(formula = preciom ~ estrato4 + estrato5 + estrato6 + areaconst + 
##     parqueaderos + banios + habitaciones, data = train)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -661.44  -71.32  -15.11   45.30  949.26 
## 
## Coefficients:
##               Estimate Std. Error t value             Pr(>|t|)    
## (Intercept)    0.90822   22.64664   0.040              0.96803    
## estrato4      88.70100   18.79156   4.720   0.0000030672799155 ***
## estrato5     137.09466   17.87435   7.670   0.0000000000000914 ***
## estrato6     347.10152   28.69028  12.098 < 0.0000000000000002 ***
## areaconst      0.79644    0.04971  16.021 < 0.0000000000000002 ***
## parqueaderos  15.81239    5.69130   2.778              0.00567 ** 
## banios        26.32923    5.79056   4.547   0.0000068460947243 ***
## habitaciones   1.00797    4.47831   0.225              0.82201    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 144.8 on 497 degrees of freedom
## Multiple R-squared:  0.6907, Adjusted R-squared:  0.6863 
## F-statistic: 158.5 on 7 and 497 DF,  p-value: < 0.00000000000000022

4.3.3 Estimaciónes usando los datos de prueba

Ahora, se realizarán algunas estimacones usando el conjunto de datos de prueba que corresponde al 30% de los datos del conjunto original.

predicciones <- predict(modelo11, newdata = test)

4.3.4. Métricas de desempeño del modelo

  • Error cuadrático medio (RMSE): El cálculo del Error Cuadrático Medio (RMSE) arrojó un valor de 31571.05, lo cual indica una discrepancia considerable entre las predicciones del modelo y los valores reales. Este elevado RMSE sugiere que el modelo no captura de manera adecuada las tendencias subyacentes en los datos, lo que podría deberse a la presencia de valores atípicos, a una especificación incorrecta del modelo o a la falta de variables relevantes. Esta magnitud de error podría tener consecuencias significativas en la toma de decisiones basadas en las predicciones del modelo, especialmente si se trata de un contexto económico donde la precisión es crítica.
#install.packages("Metrics")
library(Metrics)
## 
## Attaching package: 'Metrics'
## The following object is masked from 'package:rlang':
## 
##     ll
mse <- mse(test$preciom, predicciones)
mse
## [1] 31571.05
  • Error absoluto medio (MAE): El modelo de predicción de precios de viviendas arrojó un MAE de 105.9761, un valor considerablemente alto. Esto indica que, en promedio, nuestras predicciones se desvían en esa cantidad de millones de pesos del precio real de venta. Un error de esta magnitud sugiere que el modelo no es lo suficientemente confiable para tomar decisiones basadas en sus predicciones, ya que podría subestimar o sobreestimar significativamente los precios, generando potenciales pérdidas económicas.
mae <- mae(test$preciom, predicciones)
mae
## [1] 105.9761

5. Modelos de regresión lineal múltiple viviendas de base 2

5.1 Estimación del modelo para viviendas de base 2.

5.1.1 Creación de variables dummy.

Al igual que en el caso anterior, la variable estrato cuenta con 4 categorías, por lo cual es necesaria la creación de tres variables binarias.

df2$estrato <- factor(df2$estrato)
df_dummy2 <- model.matrix(~ estrato - 1, data = df2)
dataset2 <- cbind(df2, df_dummy2)
head(dataset2)
##       zona estrato preciom areaconst parqueaderos banios habitaciones
## 1 Zona Sur       4     290        96            1      2            3
## 2 Zona Sur       3      78        40            1      1            2
## 3 Zona Sur       6     875       194            2      5            3
## 4 Zona Sur       3     135       117            3      2            3
## 5 Zona Sur       3     135        78            3      1            3
## 6 Zona Sur       4     220        75            1      2            3
##          tipo        barrio  longitud latitud estrato3 estrato4 estrato5
## 1 Apartamento         acopi -76.53464 3.44987        0        1        0
## 2 Apartamento    aguablanca -76.50100 3.40000        1        0        0
## 3 Apartamento     aguacatal -76.55700 3.45900        0        0        0
## 4 Apartamento       alameda -76.51400 3.44100        1        0        0
## 5 Apartamento       alameda -76.53600 3.43600        1        0        0
## 6 Apartamento alférez real -76.54627 3.39109        0        1        0
##   estrato6
## 1        0
## 2        0
## 3        1
## 4        0
## 5        0
## 6        0

5.1.2. Desarrollo del modelo.

En este caso se crea un modelo de regresión lineal múltiple por mínimos cuadrados implementando la siguiente función:

modelo2 <- lm(preciom ~ estrato4 + estrato5 + estrato6 
              + areaconst + parqueaderos + banios +
                habitaciones, data = dataset2)

Con lo cual se obtiene un modelo de la forma:

\[ \begin{aligned} Precio = &-33.00812 + 1.51635(Área)+ 15.72082(Parqueaderos)+46.31967(Baños)+-12.64094(Habitaciones)\\ &+ 33.80210 (Estrato_4) + 69.39249(Estrato_5) + 240.74721(Estrato_6)+ \varepsilon_0 \end{aligned} \]

Los resultados del modelo de regresión lineal múltiple indican que todas las variables independientes incluidas en el modelo son estadísticamente significativas en la explicación del precio de venta de las viviendas. Sin embargo, es llamativo observar que el coeficiente asociado al número de habitaciones presenta un signo negativo (-12.64094). Esto sugiere que, contrariamente a lo esperado, un aumento en el número de habitaciones se asocia con una disminución en el precio de venta. Esta relación inversa podría deberse a factores no considerados en el modelo. Para explorar esta relación con mayor detalle, se recomienda realizar un análisis de segmentación de los datos y evaluar si esta relación se mantiene en diferentes subgrupos de viviendas.

## 
## Call:
## lm(formula = preciom ~ estrato4 + estrato5 + estrato6 + areaconst + 
##     parqueaderos + banios + habitaciones, data = dataset2)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1267.38   -41.53    -0.21    38.47   908.00 
## 
## Coefficients:
##               Estimate Std. Error t value             Pr(>|t|)    
## (Intercept)  -33.00812   11.24110  -2.936             0.003348 ** 
## estrato4      33.80210    7.25274   4.661     0.00000330153415 ***
## estrato5      69.39249    7.57670   9.159 < 0.0000000000000002 ***
## estrato6     240.74721    9.16578  26.266 < 0.0000000000000002 ***
## areaconst      1.51635    0.04635  32.718 < 0.0000000000000002 ***
## parqueaderos  15.72082    2.24959   6.988     0.00000000000347 ***
## banios        46.31967    2.93589  15.777 < 0.0000000000000002 ***
## habitaciones -12.64094    3.32117  -3.806             0.000144 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 91.53 on 2779 degrees of freedom
## Multiple R-squared:  0.7723, Adjusted R-squared:  0.7717 
## F-statistic:  1346 on 7 and 2779 DF,  p-value: < 0.00000000000000022

5.1.3. Coeficiente de determinación \(R^2\)

En este caso, el modelo muestra un coeficiente de determinación \(R^2\) ajustado del 0.7717, es decir que el 77.17% de los datos de los precios de las casas de la zona norte de Cali se ajustan al modelo de regresión. De manera general, este coeficiente indica que existe una diferencia entre las predicciones realizadas por el modelo de regresión y los valores reales. Sin embargo, en términos generales el desempeño del modelo es alto considerando la calidad de los datos.

5.1.4. Predicción del precio de una vivienda de tipo 1

De acuerdo con el cliente se requiere una vivienda del tipo apartamento, con un tamaño de 300 metros cuadrados, de estrato 5 0 6, con tres baños, tres parqueaderos y cinco habitaciones, que esté ubicado en la zona sur de la ciudad de Cali.

## La predicción del precio de un apartamento de estrato 5 es de 614.2047 millones de pesos
## La predicción del precio de un apartamento de estrato 6 es de 785.5594 millones de pesos

Para un apartamento con las características antes mencionadas, se observa que el valor comercial que predice el modelo es de 614.2047 millones para una vivienda de estrato 5 y de 785.5594 millones de pesos para una vivienda de estrato 6, el cual es un precio que está acorde con el crédito del cliente. Sin embargo, cabe resalar que estas estimaciónes pueden variar con relación al valor real de un apartamento con dichas características.

5.2. Validación de los supuestos.

`### 5.2.1. Normalidad

Con respecto a la distribución de los errores, usando el test de Shapiro-Wilk se obtiene un p-valor menor que el nivel de significancia \(\alpha\). Por lo tanto, hay evidencia estadística para rechazar la hipótesis nula, lo cual indica que los errores no siguen una distribución normal \(\varepsilon \sim N(\mu, \sigma^2)\)
## 
##  Shapiro-Wilk normality test
## 
## data:  modelo2$residuals
## W = 0.77665, p-value < 0.00000000000000022
qqnorm(modelo2$residuals, main = "Grafico quantile-quantile")
# Plot the Q-Q line
qqline(modelo2$residuals, col= "red")

5.2.2. Homocedasticidad (Varianza constante)

Aplicando el test de Breusch Pagan, se observa que el p-valor es menor que el nivel de significancia \(\alpha\). Con lo cual, hay evidencia estadística para rechazar la hipótesis nula, lo que significa que la varianza de los errores es diferente.
## 
##  studentized Breusch-Pagan test
## 
## data:  modelo1
## BP = 132.6, df = 7, p-value < 0.00000000000000022

5.2.3. No autocorrelación de los errores

Usando el test de Durbin-Watson, como el p-valor es menor que el nivel de signifificancia \(\alpha\), hay evidencia estadística para rechazar la hipótesis nula. Es decir, los errores presentan correlación.

lmtest::dwtest(modelo2)
## 
##  Durbin-Watson test
## 
## data:  modelo2
## DW = 1.7188, p-value = 0.00000000000004131
## alternative hypothesis: true autocorrelation is greater than 0

Los análisis de diagnóstico revelan que el modelo no cumple con los supuestos de normalidad de los residuos, homocedasticidad y posiblemente multicolinealidad. La no normalidad de los residuos y la heterocedasticidad pueden afectar la eficiencia de los estimadores y la validez de las pruebas de hipótesis. Por otro lado, la multicolinealidad dificulta la interpretación de los coeficientes y puede inflar los errores estándar. En consecuencia, los resultados obtenidos a partir de este modelo deben interpretarse con cautela y no pueden generalizarse a toda la población.

5.3. Estimación de un modelo para viviendas de Base 2.

5.3.1. Partición de la base de datos.

Para el entrenamiento y validación del modelo de regresión se realiza una partición aleatoria en el conjunto de datos del 70% y 30%.

set.seed(123)

# Crea un índice de muestreo aleatorio para la partición
index <- sample(nrow(dataset2), 0.7*nrow(dataset2))

# Crea la partición de entrenamiento (70%)
train2 <- dataset2[index, ]

# Crea la partición de prueba (30%)
test2 <- dataset2[-index, ]

5.3.2. Entrenamiento del modelo

En este caso se entrena un modelo de regresión que usa como variables predictoras el estrato, el área construida, el número de parqueaderos, el número de baños y el número de habitaciones.

modelo22 <- lm(preciom ~ estrato4 + estrato5+ estrato6 + areaconst + parqueaderos + banios + habitaciones, data = train2)

Con lo cual se obtiene un modelo de la siguiente forma:

\[ \begin{aligned} Precio = &31.09174 + 1.60187(Área)+ 15.79267(Parqueaderos)+43.55209(Baños)-12.69949(Habitaciones)\\ &+ 30.51103(Estrato_4) + 66.14917(Estrato_5) + 239.24523(Estrato_6)+ \varepsilon_0 \end{aligned} \]

El modelo de regresión lineal múltiple, con un nivel de significancia del 5%, indica que todas las variables incluidas son estadísticamente significativas en la explicación del precio de venta. Sin embargo, la relación negativa entre el precio y el número de habitaciones (-12.69949) requiere una interpretación más profunda. Esta relación contraria a la intuición podría estar relacionada con factores cualitativos no capturados por las variables cuantitativas del modelo, como la distribución de las habitaciones, la calidad de los acabados o la ubicación de la vivienda. Un análisis cualitativo, complementario al análisis cuantitativo, podría ayudar a comprender mejor esta relación.

summary(modelo22)
## 
## Call:
## lm(formula = preciom ~ estrato4 + estrato5 + estrato6 + areaconst + 
##     parqueaderos + banios + habitaciones, data = train2)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1337.35   -40.54    -0.33    38.73   893.82 
## 
## Coefficients:
##               Estimate Std. Error t value             Pr(>|t|)    
## (Intercept)  -31.09174   13.41433  -2.318             0.020564 *  
## estrato4      30.51103    8.66817   3.520             0.000442 ***
## estrato5      66.14917    9.07354   7.290    0.000000000000448 ***
## estrato6     239.24523   10.99287  21.764 < 0.0000000000000002 ***
## areaconst      1.60187    0.05778  27.722 < 0.0000000000000002 ***
## parqueaderos  15.79267    2.67756   5.898    0.000000004325507 ***
## banios        43.55209    3.52649  12.350 < 0.0000000000000002 ***
## habitaciones -12.69949    3.98689  -3.185             0.001469 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 92.75 on 1942 degrees of freedom
## Multiple R-squared:  0.7726, Adjusted R-squared:  0.7718 
## F-statistic: 942.8 on 7 and 1942 DF,  p-value: < 0.00000000000000022

5.3.3. Estimaciónes usando los datos de prueba.

A continación, se realizan algunas estimaciones a partir de los datos de prueba.

predicciones2 <- predict(modelo22, newdata = test2)

5.3.4. Métricas de desempeño del modelo.

  • Error cuadrático medio (RMSE): El valor obtenido para el Error Cuadrático Medio (RMSE) es de 7902.642, lo cual indica una discrepancia considerable entre los valores predichos por el modelo y los valores reales de venta de los inmuebles. Este elevado RMSE sugiere que el modelo no captura de manera adecuada las variaciones en los precios de las propiedades, lo que podría llevar a estimaciones poco precisas y, en consecuencia, a decisiones equivocadas en el ámbito inmobiliario, donde la precisión en la valoración de las propiedades es fundamental. Para mejorar el desempeño del modelo, se recomienda realizar un análisis exhaustivo de los residuos, identificar y tratar posibles valores atípicos, explorar diferentes transformaciones de las variables y evaluar la inclusión de variables adicionales que puedan explicar mejor la variabilidad en los precios.
#install.packages("Metrics")
library(Metrics)
mse2 <- mse(test2$preciom, predicciones2)
mse2
## [1] 7902.642
  • Error absoluto medio (MAE): El Error Absoluto Medio (MAE) obtenido es de 55.69571 millones de pesos, lo cual, aunque representa una mejora en comparación con el modelo anterior, sigue siendo un valor considerablemente alto. Este resultado indica que, en promedio, las predicciones del modelo se desvían en más de 55 millones de las observaciones reales. Dicha discrepancia sugiere que el modelo aún no captura de manera adecuada la variabilidad en los datos, lo cual podría llevar a decisiones poco óptimas basadas en sus predicciones.
mae2 <- mae(test2$preciom, predicciones2)
mae2
## [1] 55.69571