Regresión Lineal Simple

Datos cuantitativos

En la regresión simple (mod1), me dice que el precio de la vivienda se incrementa casi $1.600.000 por cada mts2 adicional de área construida.

library(readxl)
Datos_Vivienda <- read_excel("C:/Users/garci/Desktop/Universidad/R/Datos_Vivienda.xlsx")


#Estimamos modelo de regresión simple
mod1=lm(precio_millon~Area_contruida, data=Datos_Vivienda)
summary (mod1)
## 
## Call:
## lm(formula = precio_millon ~ Area_contruida, data = Datos_Vivienda)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2659.88  -120.78   -47.55    67.27  1330.10 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    157.47636    4.13640   38.07   <2e-16 ***
## Area_contruida   1.58018    0.01831   86.30   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 238.7 on 8317 degrees of freedom
## Multiple R-squared:  0.4725, Adjusted R-squared:  0.4724 
## F-statistic:  7448 on 1 and 8317 DF,  p-value: < 2.2e-16

Variable Dummy o cualitativa

Pero si cambiamos la regresión con una variable cualitativa, como por ejemplo zona. Aparecen todas las zonas? Si hacemos un tabla cuantas zonas deberian aparecer?

table(Datos_Vivienda$Zona)
## 
##  Zona Centro   Zona Norte   Zona Oeste Zona Oriente     Zona Sur 
##          124         1920         1198          351         4726

Se estima un modelo 2 con variable dummy

El modelo 2 estima el precio promedio de la vivienda en función de la zona geográfica, comparando cada zona con una zona de referencia (categoría base:la que no se muestra en la salida de R).

mod2=lm(precio_millon~Zona, data = Datos_Vivienda)
summary (mod2)
## 
## Call:
## lm(formula = precio_millon ~ Zona, data = Datos_Vivienda)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -592.58 -200.61  -85.61   93.48 1594.39 
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)        309.69      27.78  11.149  < 2e-16 ***
## ZonaZona Norte      35.91      28.66   1.253    0.210    
## ZonaZona Oeste     367.89      29.18  12.608  < 2e-16 ***
## ZonaZona Oriente   -81.16      32.31  -2.512    0.012 *  
## ZonaZona Sur       116.82      28.14   4.152 3.33e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 309.3 on 8314 degrees of freedom
## Multiple R-squared:  0.1147, Adjusted R-squared:  0.1143 
## F-statistic: 269.3 on 4 and 8314 DF,  p-value: < 2.2e-16

Interpretación

Los coeficientes que aparecen son diferencias respecto a esa zona base (centro).

Intercepto (309.69): Es el precio promedio de las viviendas ofertadas en la zona centro de Cali.

Zona Norte: En promedio, las viviendas cuestan 35.91 millones más que en la zona centro, pero no es estadísticamente significativo.

Zona Oeste: En promedio, cuestan 367.89 millones más que en la zona base, y es altamente significativo.

Zona Oriente: Cuestan 81.16 millones menos que en la zona base, y esta diferencia es significativa (p = 0.012).

Zona Sur: Cuestan 116.82 millones más que la zona base, también muy significativo.

R² = 0.1147, R² ajustado = 0.1143: El modelo explica alrededor del 11.5% de la variación del precio. Es un nivel bajo, lo que sugiere que la variable Zona por sí sola no es suficiente para explicar el precio.

Cambio de base o referencia

Si yo quiero cambiar de base, por ejemplo no zona centro si no zona sur.Habria que hacer adaptación a la categoria base:

#Aquí se debe colocar en primer lugar la zona que quiero sea mi base o referencia, en este caso zona sur
Datos_Vivienda$Zona2=factor(Datos_Vivienda$Zona,levels = c("Zona Oeste","Zona Norte","Zona Centro","Zona Sur","Zona Oriente"))

#Se estimad un modelo 3 con ese cambio de base
mod3=lm(precio_millon~Zona2,data=Datos_Vivienda)
summary (mod3)
## 
## Call:
## lm(formula = precio_millon ~ Zona2, data = Datos_Vivienda)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -592.58 -200.61  -85.61   93.48 1594.39 
## 
## Coefficients:
##                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)        677.580      8.937   75.82   <2e-16 ***
## Zona2Zona Norte   -331.972     11.388  -29.15   <2e-16 ***
## Zona2Zona Centro  -367.887     29.179  -12.61   <2e-16 ***
## Zona2Zona Sur     -251.062     10.005  -25.09   <2e-16 ***
## Zona2Zona Oriente -449.050     18.773  -23.92   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 309.3 on 8314 degrees of freedom
## Multiple R-squared:  0.1147, Adjusted R-squared:  0.1143 
## F-statistic: 269.3 on 4 and 8314 DF,  p-value: < 2.2e-16

Cómo se interpretaría el modelo 3?

Se ajustó un modelo de regresión lineal simple para explicar el precio promedio de la vivienda (en millones) a partir de la zona en la que se ubica. Se estableció como categoría de referencia la Zona Oeste, por lo que los coeficientes estimados reflejan la diferencia promedio de precio entre cada zona y esta referencia. El intercepto indica que el precio promedio en la Zona Oeste es de 677.58 millones. En comparación con esta zona, las viviendas en la Zona Norte, Centro, Sur y Oriente tienen precios promedio significativamente más bajos, con diferencias de -331.97, -367.89, -251.06 y -449.05 millones, respectivamente (todas con p-valores < 0.001). Aunque las zonas muestran efectos estadísticamente significativos sobre el precio, el modelo presenta un R² ajustado de apenas 11.4%, lo cual indica que gran parte de la variabilidad en los precios no es explicada únicamente por la zona, sugiriendo la necesidad de incorporar otras variables relevantes.

Modelo de Regresión Lineal Múltiple

Efecto interacción: cuantitativas y cualitativas

Este modelo no tiene efectos principales por separado, solo interacciones. Eso significa que:

*El efecto del área construida sobre el precio depende completamente de la zona.

*Cada zona tiene su propia pendiente (su propio efecto del área construida sobre el precio).

*El intercepto (153.06) no tiene una interpretación directa porque no hay efecto principal de zona ni de área construida.

mod4=lm(precio_millon~Zona:Area_contruida,data = Datos_Vivienda)
summary (mod4)
## 
## Call:
## lm(formula = precio_millon ~ Zona:Area_contruida, data = Datos_Vivienda)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1975.44  -100.02   -36.59    59.20  1231.75 
## 
## Coefficients:
##                                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                     153.06019    3.66977  41.708  < 2e-16 ***
## ZonaZona Centro:Area_contruida    0.82955    0.08644   9.597  < 2e-16 ***
## ZonaZona Norte:Area_contruida     1.22910    0.02630  46.736  < 2e-16 ***
## ZonaZona Oeste:Area_contruida     2.51865    0.02963  85.009  < 2e-16 ***
## ZonaZona Oriente:Area_contruida   0.36841    0.04686   7.862 4.26e-15 ***
## ZonaZona Sur:Area_contruida       1.60997    0.01817  88.597  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 211.4 on 8313 degrees of freedom
## Multiple R-squared:  0.5865, Adjusted R-squared:  0.5862 
## F-statistic:  2358 on 5 and 8313 DF,  p-value: < 2.2e-16

NOTACada coeficiente representa cuánto aumenta el precio (en millones) por cada m² adicional, dependiendo de la zona:

Ejemplo: En la Zona Oeste, cada metro cuadrado adicional aumenta el precio en 2.52 millones de pesos. En cambio, en la Zona Oriente, el mismo aumento solo incrementa el precio en 0.37 millones.

Evaluación del modelo

R² = 0.5865: El modelo explica aproximadamente el 58.6% de la variabilidad en el precio, lo cual es muy aceptable.

p-value < 2.2e-16: El modelo es estadísticamente significativo

Conclusión:Este modelo muestra que el impacto del área construida en el precio varía mucho según la zona. Por ejemplo, ampliar un apartamento en la Zona Oeste genera mucho más valor que hacerlo en la Zona Oriente.

Validación de supuestos

par(mfrow=c(2,2))
plot(mod4)

1. Residuos vs Ajustados (arriba izquierda) ¿Qué busca?: Ver si los errores (residuos) están distribuidos aleatoriamente.

Hay una ligera curvatura, especialmente con valores altos ajustados, lo que sugiere cierta no linealidad o algún efecto no capturado por el modelo. También hay más dispersión de los residuos para valores ajustados altos → posible heterocedasticidad (varianza no constante).

2. Q-Q Plot (arriba derecha) ¿Qué busca?: Ver si los residuos siguen una distribución normal.

Hay desviaciones marcadas en las colas (residuos extremos), lo que indica que los residuos no son perfectamente normales. Sin embargo, para la mayoría de los datos, la normalidad es razonable.

3. Scale-Location (abajo izquierda) ¿Qué busca?: Comprobar si la varianza de los residuos es constante (homocedasticidad). La línea roja sube al final, lo cual sugiere que la varianza de los errores aumenta con el valor ajustado → otra señal de heterocedasticidad.

4. Residuos vs Leverage (abajo derecha) ¿Qué busca?: Detectar observaciones influyentes (outliers con alto impacto).

Hay pocos puntos con valores altos de leverage (como la observación 3324), pero ninguno parece estar más allá del umbral crítico (cooking distance > 1), por lo que no hay influencia extrema aparente, aunque vale la pena revisar esos puntos.

Conclusión general

*El modelo parece razonable en general, perO Podría beneficiarse de transformar alguna variable (como log del área). Tiene indicios de heterocedasticidad y no normalidad en los residuos extremos. Algunas observaciones tienen alta influencia y deben revisarse más a fondo.

Transformación de modelo

mod5=lm(precio_millon~log(Area_contruida),data = Datos_Vivienda)
summary (mod5)
## 
## Call:
## lm(formula = precio_millon ~ log(Area_contruida), data = Datos_Vivienda)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1094.39  -115.52    -1.52    64.52  1234.98 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         -1339.30      18.38  -72.87   <2e-16 ***
## log(Area_contruida)   360.20       3.70   97.35   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 224.7 on 8317 degrees of freedom
## Multiple R-squared:  0.5326, Adjusted R-squared:  0.5326 
## F-statistic:  9478 on 1 and 8317 DF,  p-value: < 2.2e-16

Interpretación log(Área_contruida) tiene un coeficiente de 360.20: Esto significa que por cada 1% de aumento en el área construida, el precio estimado aumenta en aproximadamente 3.6 millones de pesos.

¿Por qué? Un aumento del 1% en el área se aproxima a un cambio de log(1.01) ≈ 0.00995, y 360.2 × 0.00995 ≈ 3.58.

ANÁLISIS DE SECTOR - BARRIO EL PEÑÓN

require(RecordLinkage)
pos=which(jarowinkler("el penon", Datos_Vivienda$Barrio)>0.98)
datos_sub=Datos_Vivienda[pos,]
head(datos_sub)
Zona piso Estrato precio_millon Area_contruida parqueaderos Banos Habitaciones Tipo Barrio cordenada_longitud Cordenada_latitud Zona2
Zona Oeste NA 6 1400 345 2 4 3 Apartamento el penon -76.50700 3.40100 Zona Oeste
Zona Oeste NA 5 340 110 1 2 3 Apartamento el penon -76.52600 3.43400 Zona Oeste
Zona Oeste NA 5 340 110 1 2 3 Apartamento el penon -76.52600 3.43400 Zona Oeste
Zona Oeste 8 6 580 294 1 6 3 Apartamento el penon -76.52700 3.47600 Zona Oeste
Zona Oeste 2 6 900 310 3 3 4 Apartamento el penon -76.53179 3.45227 Zona Oeste
Zona Oeste NA 5 1100 350 NA 3 3 Casa el penon -76.53200 3.45200 Zona Oeste
require(leaflet)
#мара 1

#Etiqueta enriquecida (Tabel) muestra información detallada del punto, incluyendo:

#ID del inmueble.
#precio en millones.
#Área construida.
#Barrio.
#Latitud y longitud.
#Añade un fondo de mapa base → addtiles()

leaflet() %>% addCircleMarkers(lng = datos_sub$cordenada_longitud, lat = datos_sub$Cordenada_latitud, radius = 1, color = "purple", label = paste0( 'ID',datos_sub$ID, 'Precio:', datos_sub$precio_millon,'Area:',
datos_sub$Area_contruida, 'Barrio:', datos_sub$Barrio,' Lat: ' ,datos_sub$Cordenada_latitud, 'Long:',datos_sub$cordenada_longitud)) %>%addTiles()
table(datos_sub$Tipo)
## 
## Apartamento        Casa 
##          56           4
mod2=lm(precio_millon~Tipo, data = datos_sub)
summary (mod2)
## 
## Call:
## lm(formula = precio_millon ~ Tipo, data = datos_sub)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -323.6 -158.6 -128.6  103.1  891.4 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   508.61      36.87  13.794   <2e-16 ***
## TipoCasa      175.39     142.80   1.228    0.224    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 275.9 on 58 degrees of freedom
## Multiple R-squared:  0.02535,    Adjusted R-squared:  0.008545 
## F-statistic: 1.508 on 1 and 58 DF,  p-value: 0.2243

El modelo de regresión evalúa si el tipo de propiedad (Apartamento o Casa) tiene un impacto significativo en el precio (en millones) de los inmuebles en el barrio El Peñón. En este modelo, se toma como categoría de referencia a los apartamentos, por lo que el coeficiente de la variable TipoCasa (175.39) representa la diferencia promedio en el precio entre las casas y los apartamentos.

Aunque el coeficiente es positivo lo que sugiere que, en promedio, las casas son 175.39 millones de pesos más costosas que los apartamentos, este resultado no es estadísticamente significativo (p = 0.224). Esto indica que no hay evidencia suficiente para afirmar que el tipo de propiedad influya en el precio con el nivel de confianza usual (95%).

El coeficiente de determinación R² es muy bajo (0.025), lo que significa que la variable Tipo explica solo el 2.5% de la variación en los precios, y el R² ajustado (0.0085) es aún menor, lo que sugiere que el modelo apenas mejora respecto a uno sin ninguna variable explicativa. El error estándar residual de 275.9 también es alto, lo que refleja una gran dispersión de los datos no explicada por el modelo.

En resumen, aunque las casas parecen tener precios promedio más altos que los apartamentos, esta diferencia no es significativa estadísticamente, y el tipo de propiedad no es un buen predictor del precio en este conjunto de datos. Esto puede deberse en parte a que hay solo 4 casas frente a 56 apartamentos, lo que limita el poder del análisis.

library(ggplot2)
library(plotly)

# Crear gráfico interactivo con correlación
ggplotly(
  ggplot(datos_sub, aes(x = Area_contruida, y = precio_millon)) +
    geom_point(color = "purple", alpha = 0.8, size = 2) +  # Puntos con color y transparencia
    geom_smooth(method = "loess", color = "grey", se = TRUE) +  # Línea de tendencia
    labs(
      title = paste("Figura 5. Relacion entre Area Construida y Precio\nCoef. de correlacion:",
                    round(cor(datos_sub$precio_millon, datos_sub$Area_contruida, use = "complete.obs"), 2)),
      x = "Área Construida (m²)",
      y = "Precio (Millones)",
      caption = "Fuente: Datos de Vivienda"
    ) +
    theme_minimal() +
    theme(
      plot.title = element_text(size = 14, face = "bold", hjust = 0.5),
      axis.title = element_text(size = 12),
      axis.text = element_text(size = 10)
    )
)

El gráfico muestra la relación entre el área construida (en metros cuadrados) y el precio del inmueble (en millones de pesos) en el barrio El Peñón de Cali. Cada punto representa una propiedad, y la línea gris con sombra indica la tendencia general basada en una curva de suavizamiento loess, que permite visualizar patrones no necesariamente lineales.

Se observa una fuerte correlación positiva (coeficiente de correlación = 0.9), lo que sugiere que a mayor área construida, mayor tiende a ser el precio del inmueble. Aunque hay algo de dispersión, especialmente en áreas mayores a 250 m², la mayoría de los puntos siguen una tendencia ascendente bastante clara. Esto indica que el tamaño construido es un factor importante en la determinación del precio. Además, undefined

ggplot(data = datos_sub, aes(x = Tipo, y = precio_millon)) +
  geom_jitter(width = 0.2, color = "blue", alpha = 0.6) +
  labs(title = "Dispersion de precios por tipo de propiedad",
       x = "Tipo de Propiedad",
       y = "Precio (millones)") +
  theme_minimal()

El gráfico refleja una mayor concentración de apartamentos con una dispersión amplia de precios. Aunque las casas parecen tener precios ligeramente más altos, la diferencia no es concluyente visualmente ni estadísticamente significativa (como se observó en el modelo de regresión). Además, el pequeño número de casas dificulta cualquier afirmación general sobre su comportamiento de precios.

mod4=lm(precio_millon~Tipo:Area_contruida,data = datos_sub)
summary (mod4)
## 
## Call:
## lm(formula = precio_millon ~ Tipo:Area_contruida, data = datos_sub)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -306.16  -50.08   -1.16   30.15  359.92 
## 
## Coefficients:
##                                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                     -1.1360    36.2167  -0.031    0.975    
## TipoApartamento:Area_contruida   3.0180     0.1933  15.611  < 2e-16 ***
## TipoCasa:Area_contruida          2.7271     0.2646  10.305 1.24e-14 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 120.2 on 57 degrees of freedom
## Multiple R-squared:  0.8182, Adjusted R-squared:  0.8118 
## F-statistic: 128.3 on 2 and 57 DF,  p-value: < 2.2e-16

El modelo analiza la relación entre el precio de las propiedades (en millones de pesos) y la interacción entre el tipo de propiedad (Apartamento o Casa) y el área construida, en el barrio El Peñón. Los resultados indican que tanto para apartamentos como para casas, el área construida tiene un efecto positivo y significativo sobre el precio. En el caso de los apartamentos, por cada metro cuadrado adicional construido, el precio aumenta en aproximadamente 3,02 millones de pesos; mientras que en las casas, el incremento es de alrededor de 2,73 millones por metro cuadrado. Aunque ambas pendientes son similares, se observa una ligera mayor sensibilidad del precio frente al área en los apartamentos. El modelo presenta un excelente ajuste, con un R² de 0,818, lo que implica que explica más del 81% de la variabilidad en los precios.

En conclusión, el área construida es un determinante clave del precio para ambos tipos de propiedad, con leves diferencias en su impacto según el tipo.

par(mfrow=c(2,2))
plot(mod4)

En primer lugar, el gráfico Residuals vs Fitted permite verificar los supuestos de linealidad y homocedasticidad. En este caso, los residuos están distribuidos alrededor de la línea cero sin un patrón claro, lo cual sugiere que el supuesto de linealidad se cumple razonablemente bien. No obstante, se observa cierta concentración de puntos en el centro, lo cual podría indicar una leve heterocedasticidad, aunque no parece ser preocupante.

El segundo gráfico, Normal Q-Q, evalúa el supuesto de normalidad de los residuos. Aquí, los puntos caen mayoritariamente sobre la línea diagonal, lo que indica que los residuos siguen una distribución aproximadamente normal. Aunque hay ligeras desviaciones en los extremos, la normalidad se considera aceptable. El tercer gráfico, Scale-Location, también relacionado con la homocedasticidad, muestra una línea roja bastante plana y una dispersión relativamente uniforme de los residuos estandarizados. Esto refuerza la idea de que la varianza de los residuos es bastante constante a lo largo del rango de valores ajustados.

Por último, el gráfico Residuals vs Leverage sirve para identificar observaciones influyentes. En este caso, no se observan puntos con una combinación preocupante de alto leverage y residuos extremos, lo cual sugiere que ninguna observación está afectando de manera desproporcionada el ajuste del modelo. En conjunto, estos gráficos indican que el modelo cumple adecuadamente con los supuestos de regresión, por lo que se considera estadísticamente válido para realizar inferencias y análisis posteriores.

mod5=lm(precio_millon~log(Area_contruida),data = datos_sub)
summary (mod5)
## 
## Call:
## lm(formula = precio_millon ~ log(Area_contruida), data = datos_sub)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -258.47  -86.04   -7.51   36.60  481.03 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         -2021.99     203.69  -9.927 4.07e-14 ***
## log(Area_contruida)   503.28      40.15  12.534  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 145.1 on 58 degrees of freedom
## Multiple R-squared:  0.7304, Adjusted R-squared:  0.7257 
## F-statistic: 157.1 on 1 and 58 DF,  p-value: < 2.2e-16

Log(Área_contruida) tiene un coeficiente de 503.28: Esto significa que por cada 1% de aumento en el área construida, el precio estimado aumenta en aproximadamente 5.03 millones de pesos.

mod6=lm(log(precio_millon)~(Area_contruida),data = datos_sub)
summary (mod6)
## 
## Call:
## lm(formula = log(precio_millon) ~ (Area_contruida), data = datos_sub)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.37777 -0.11348  0.00888  0.09264  0.42420 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    5.2696377  0.0521062  101.13   <2e-16 ***
## Area_contruida 0.0050039  0.0002691   18.59   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1751 on 58 degrees of freedom
## Multiple R-squared:  0.8563, Adjusted R-squared:  0.8539 
## F-statistic: 345.7 on 1 and 58 DF,  p-value: < 2.2e-16
pred_log <- predict(mod6)
pred_original <- exp(pred_log)
head(pred_original)
##         1         2         3         4         5         6 
## 1092.2490  336.9957  336.9957  846.2321  916.7699 1119.9214
comparacion <- data.frame(
  Area_contruida = datos_sub$Area_contruida,
  Precio_real = datos_sub$precio_millon,
  Precio_estimado = pred_original
)

View(comparacion)

# 1. Generar predicciones y convertirlas a escala original
pred_log <- predict(mod6)
pred_original <- exp(pred_log)

# 2. Crear el data frame comparativo
comparacion <- data.frame(
  Area_contruida = datos_sub$Area_contruida,
  Precio_real = datos_sub$precio_millon,
  Precio_estimado = pred_original
)

# 3. Calcular MAE y RMSE
library(Metrics)
library(caret)

mae_valor <- mae(comparacion$Precio_real, comparacion$Precio_estimado)
rmse_valor <- RMSE(comparacion$Precio_estimado, comparacion$Precio_real)

# 4. Agregar los valores de MAE y RMSE como fila adicional al final
# Crear una fila vacía con MAE y RMSE en las columnas correspondientes
resumen <- data.frame(
  Area_contruida = NA,
  Precio_real = mae_valor,
  Precio_estimado = rmse_valor
)

# Combinar la tabla completa
comparacion_final <- rbind(comparacion, resumen)

# Ver el resultado
head(comparacion_final)
Area_contruida Precio_real Precio_estimado
345 1400 1092.2490
110 340 336.9957
110 340 336.9957
294 580 846.2321
310 900 916.7699
350 1100 1119.9214
head(mae_valor)
## [1] 74.15631

El análisis comparativo entre los precios reales y estimados muestra que el modelo de regresión logarítmico predice con buena precisión en algunos casos, como para viviendas con 110 m² y 310 m², donde las diferencias entre el valor real y el estimado son mínimas. Sin embargo, también se observan desviaciones significativas: por ejemplo, para un área de 345 m², el modelo subestima el precio en más de 300 millones, mientras que para 294 m² lo sobreestima en más de 250 millones. Esto indica que, si bien el modelo capta la tendencia general del precio en función del área construida, no logra ajustarse adecuadamente en todos los casos, probablemente por la ausencia de otras variables relevantes como ubicación o características del inmueble. En resumen, el modelo es útil, pero tiene limitaciones en situaciones más específicas o fuera del promedio.

En promedio, el precio de las viviendas tienene un desvío de 74 millones.

La estimación del precio de viviendas a partir de variables como el tipo de inmueble (casa o apartamento), el área construida y el valor en millones permite desarrollar herramientas valiosas para el sector inmobiliario. Esta información puede monetizarse mediante modelos de valoración automática que ayuden a propietarios, compradores e inmobiliarias a establecer precios justos. También es útil para asesorías a inversionistas que buscan oportunidades en propiedades subvaloradas. Además, puede integrarse en plataformas digitales como comparadores de precios o marketplaces. Asimismo, sirve para optimizar precios de oferta y puede respaldar procesos de avalúo y crédito en entidades financieras. En resumen, el análisis realizado tiene aplicaciones prácticas que pueden traducirse en servicios rentables dentro del mercado inmobiliario.