Caso C&A

Maria comenzó como agente de bienes raíces en Cali hace 10 años. Después de laborar dos años para una empresa nacional, se traslado a Bogotá y trabajó para otra agencia de bienes raíces. Sus amigos y familiares la convencieron de que con su experiencia y conocimientos del negocio debía abrir su propia agencia. Terminó por adquirir la licencia de intermediario y al poco tiempo fundó su propia compañía, C&A (Casas y Apartamentos) en Cali. Santiago y Lina, dos vendedores de la empresa anterior aceptaron trabajar en la nueva compaña. En la actualidad ocho agentes de bienes raíces colaboran con ella en C&A.

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.

Hace dos días, María recibió una carta solicitando asesoría para la compra de dos viviendas por parte de una compañía internacional que desea ubicar a dos de sus empleados con sus familias en la ciudad. Las solicitudes incluyen las siguientes condiciones:

CARACTERÍSTICAS VIVIENDA 1 VIVIENDA 2
Tipo Casa Apartamento
Área construida 200 300
Parqueaderos 1 3
Baños 2 3
Habitaciones 4 5
Estrato 4 o 5 5 o 6
Zona Norte Sur
Crédito aprobado 350 millones 850 millones

Ayude a María a responder la solicitud, mediante técnicas modelación que usted conoce. Ella requiere le envíe un informe ejecutivo donde analice los dos casos y sus recomendaciones (Informe). Como soporte del informe debe anexar las estimaciones, validaciones y comparación de modelos requeridos (Anexos) .

Pasos requeridos

1. Limpieza de los datos

Realizar un filtro a la base de datos que incluya sólo las ofertas de apartamentos. Presente los primeros 3 registros de las bases y algunas tablas que comprueben la consulta.

head(vivienda)
vivienda$tipo = tolower(vivienda$tipo)

vivienda = vivienda%>% mutate(tipo = ifelse(tipo == "apto","apartamento", tipo))

aptos= subset(vivienda, vivienda$tipo=="apartamento")
head(aptos, 3)
str(aptos)
## tibble [5,100 × 13] (S3: tbl_df/tbl/data.frame)
##  $ id          : num [1:5100] 1212 1724 2326 4386 7497 ...
##  $ zona        : chr [1:5100] "Zona Norte" "Zona Norte" "Zona Norte" "Zona Norte" ...
##  $ piso        : chr [1:5100] "01" "01" "01" "01" ...
##  $ estrato     : num [1:5100] 5 5 4 5 6 4 5 3 3 6 ...
##  $ preciom     : num [1:5100] 260 240 220 310 520 320 385 100 175 820 ...
##  $ areaconst   : num [1:5100] 90 87 52 137 98 108 103 49 80 377 ...
##  $ parqueaderos: num [1:5100] 1 1 2 2 2 2 2 NA 1 1 ...
##  $ banios      : num [1:5100] 2 3 2 3 2 3 2 1 2 4 ...
##  $ habitaciones: num [1:5100] 3 3 3 4 2 3 3 2 3 4 ...
##  $ tipo        : chr [1:5100] "apartamento" "apartamento" "apartamento" "apartamento" ...
##  $ barrio      : chr [1:5100] "acopi" "acopi" "acopi" "acopi" ...
##  $ longitud    : num [1:5100] -76.5 -76.5 -76.5 -76.5 -76.5 ...
##  $ latitud     : num [1:5100] 3.46 3.37 3.43 3.38 3.44 ...
summary(aptos)
##        id           zona               piso              estrato     
##  Min.   :   3   Length:5100        Length:5100        Min.   :3.000  
##  1st Qu.:2180   Class :character   Class :character   1st Qu.:4.000  
##  Median :4158   Mode  :character   Mode  :character   Median :5.000  
##  Mean   :4284                                         Mean   :4.727  
##  3rd Qu.:6556                                         3rd Qu.:6.000  
##  Max.   :8317                                         Max.   :6.000  
##                                                                      
##     preciom         areaconst      parqueaderos        banios     
##  Min.   :  58.0   Min.   : 35.0   Min.   : 1.000   Min.   :0.000  
##  1st Qu.: 175.0   1st Qu.: 68.0   1st Qu.: 1.000   1st Qu.:2.000  
##  Median : 279.0   Median : 90.0   Median : 1.000   Median :2.000  
##  Mean   : 366.9   Mean   :112.8   Mean   : 1.568   Mean   :2.617  
##  3rd Qu.: 430.0   3rd Qu.:130.0   3rd Qu.: 2.000   3rd Qu.:3.000  
##  Max.   :1950.0   Max.   :932.0   Max.   :10.000   Max.   :8.000  
##                                   NA's   :869                     
##   habitaciones       tipo              barrio             longitud     
##  Min.   :0.000   Length:5100        Length:5100        Min.   :-76.59  
##  1st Qu.:3.000   Class :character   Class :character   1st Qu.:-76.54  
##  Median :3.000   Mode  :character   Mode  :character   Median :-76.53  
##  Mean   :2.971                                         Mean   :-76.53  
##  3rd Qu.:3.000                                         3rd Qu.:-76.52  
##  Max.   :9.000                                         Max.   :-76.46  
##                                                                        
##     latitud     
##  Min.   :3.334  
##  1st Qu.:3.380  
##  Median :3.419  
##  Mean   :3.419  
##  3rd Qu.:3.453  
##  Max.   :3.498  
## 
cant_reg <- nrow(aptos)
cant_atr <- ncol(aptos)
dimVivienda = dim(aptos)
cat("La dimensión de la base de datos es ", dimVivienda, "Con un número total de ",cant_reg, "registros ","y de",cant_atr ," atributos  " )
## La dimensión de la base de datos es  5100 13 Con un número total de  5100 registros  y de 13  atributos
tabla_frecuencias <- table(aptos$tipo)
print(tabla_frecuencias)
## 
## apartamento 
##        5100

Al analizar la tabla de frecuencias, se observa que todos los valores de la columna “tipo” corresponden a “apartamentos”.

Datos faltantes

Se realiza la verificación de los datos faltantes

faltantes <- colSums(is.na(aptos)) %>%
                 as.data.frame() 

faltantes

Tratamiento de datos faltantes

me_parqueaderos <- median(aptos$parqueaderos, na.rm = TRUE)

aptos$parqueaderos <- ifelse(
  is.na(aptos$parqueaderos), 
  me_parqueaderos, aptos$parqueaderos
)
aptos$piso <- as.numeric(aptos$piso)

me_pisos <- median(aptos$piso, na.rm = TRUE)

aptos$piso <- ifelse(
  is.na(aptos$piso), 
  me_pisos, aptos$piso
)
md.pattern(aptos)
##  /\     /\
## {  `---'  }
## {  O   O  }
## ==>  V <==  No need for mice. This data set is completely observed.
##  \  \|/  /
##   `-----'

##      id zona piso estrato preciom areaconst parqueaderos banios habitaciones
## 5100  1    1    1       1       1         1            1      1            1
##       0    0    0       0       0         0            0      0            0
##      tipo barrio longitud latitud  
## 5100    1      1        1       1 0
##         0      0        0       0 0

Ajuste del dataset

aptos = aptos[,c(-1, -10, -11, -12, -13)] 
aptos1= aptos[,c(-1)]
sapply(aptos, class)
##         zona         piso      estrato      preciom    areaconst parqueaderos 
##  "character"    "numeric"    "numeric"    "numeric"    "numeric"    "numeric" 
##       banios habitaciones 
##    "numeric"    "numeric"
sapply(aptos1, class)
##         piso      estrato      preciom    areaconst parqueaderos       banios 
##    "numeric"    "numeric"    "numeric"    "numeric"    "numeric"    "numeric" 
## habitaciones 
##    "numeric"

2. Análisis exploratorio de los datos

datos1 = vivienda[,c(2, 4, 5, 6, 7, 8)]
resumen <- aptos %>%
  summarise(mean_piso = mean(piso),
            mean_preciom = mean(preciom),
            mean_areaconst = mean(areaconst),
            mean_parqueaderos = mean(parqueaderos),
            mean_baños = mean(banios),
            mean_habitaciones = mean(habitaciones))

# Embellecer la tabla
resumen %>%
  kbl(col.names = c( "Piso Medio", "Precio Medio (M)", "Área Const. Media", 
                    "Parqueaderos Medios", "Baños Medios", "Habitaciones Medias"),
      align = "c",  # Centrar el texto
      caption = "Resumen estadístico ") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
                full_width = F,
                position = "center",
                font_size = 14) %>%
  row_spec(0, bold = TRUE, color = "white", background = "#4CAF50") %>%
  column_spec(1, bold = TRUE, color = "#1A7332") %>%
  column_spec(2:ncol(datos1), background = "#F2F2F2")
Resumen estadístico
Piso Medio Precio Medio (M) Área Const. Media Parqueaderos Medios Baños Medios Habitaciones Medias
4.462157 366.9435 112.7819 1.47098 2.617059 2.971373

La tabla muestra las características promedio de los apartamentos en términos de su piso, precio, área construida, parqueaderos, baños y habitaciones:

Piso Medio: El promedio del piso en el que se encuentran estas propiedades es aproximadamente el cuarto (4.46), lo que indica que la mayoría de las propiedades están situadas en niveles intermedios de los edificios.

Precio Medio: El precio promedio de estas propiedades es de 366.94 millones de unidades monetarias. Este valor puede variar en función de otros factores como ubicación, tamaño, y características adicionales.

Área Construida Media: Las propiedades tienen un área construida media de 112.78 m², lo cual sugiere que se trata de propiedades de tamaño mediano, adecuadas tanto para familias pequeñas como para individuos que buscan un espacio cómodo.

Parqueaderos Medios: En promedio, las propiedades cuentan con 1.47 parqueaderos, lo que indica que la mayoría de las viviendas tienen al menos un espacio de estacionamiento disponible, con algunas propiedades ofreciendo dos espacios.

Baños Medios: Hay aproximadamente 2.62 baños por propiedad, lo que es típico de viviendas que buscan ofrecer comodidad, posiblemente con un baño principal y adicionales para uso común o visitas.

Habitaciones Medias: El número promedio de habitaciones es de 2.97, lo cual sugiere que estas propiedades están diseñadas principalmente para familias pequeñas o personas que necesitan espacio adicional para uso como oficina o cuarto de invitados.

Gráfico de dispersión

resumen1 = aggregate(preciom~zona, data = aptos, FUN = mean)
print(resumen1)
##           zona  preciom
## 1  Zona Centro 186.5833
## 2   Zona Norte 285.1619
## 3   Zona Oeste 667.9271
## 4 Zona Oriente 152.5968
## 5     Zona Sur 297.2917

Se puede concluir: Zona Oeste: Es la zona con el precio medio más alto, 667.93 millones de unidades monetarias. Esto podría indicar que esta zona es una de las más exclusivas o deseadas, posiblemente debido a factores como su ubicación, servicios, calidad de vida, o desarrollos inmobiliarios de alto valor.

Zona Sur: Tiene un precio medio de 297.29 millones, que es considerablemente más bajo que la Zona Oeste pero aún más alto que la mayoría de las otras zonas. Esta zona puede ofrecer una combinación de buena ubicación, acceso a servicios, y una oferta inmobiliaria atractiva.

Zona Norte: Presenta un precio medio de 285.16 millones, lo que sugiere que esta área podría estar orientada a la clase media-alta, con propiedades que balancean costo y accesibilidad a servicios urbanos.

Zona Centro: Tiene un precio medio de 186.58 millones, lo que podría reflejar una mayor accesibilidad de precio en comparación con las zonas Norte y Oeste. Esto podría deberse a una oferta más amplia de propiedades o características diferentes en términos de tamaño, antigüedad o ubicación más céntrica pero menos exclusiva.

resumen2 = aggregate(preciom~estrato, data = aptos, FUN = mean)
print(resumen2)
##   estrato  preciom
## 1       3 128.9765
## 2       4 206.9444
## 3       5 335.0108
## 4       6 702.4144

Correlaciones

round(cor(x = aptos1, method = "pearson"), 3)
##               piso estrato preciom areaconst parqueaderos banios habitaciones
## piso         1.000   0.119   0.152     0.114        0.120  0.140        0.035
## estrato      0.119   1.000   0.667     0.549        0.554  0.616        0.178
## preciom      0.152   0.667   1.000     0.829        0.737  0.740        0.297
## areaconst    0.114   0.549   0.829     1.000        0.664  0.727        0.409
## parqueaderos 0.120   0.554   0.737     0.664        1.000  0.624        0.276
## banios       0.140   0.616   0.740     0.727        0.624  1.000        0.501
## habitaciones 0.035   0.178   0.297     0.409        0.276  0.501        1.000

Correlación del Precio de la Propiedad (preciom):

Área Construida (areaconst): Existe una fuerte correlación positiva (0.829) entre el precio de la propiedad y el área construida. Esto indica que, en general, a mayor área construida, mayor es el precio de la propiedad. Parqueaderos (parqueaderos) y Baños (banios): Ambas variables también muestran una correlación positiva significativa con el precio (0.737 y 0.740, respectivamente). Esto sugiere que propiedades con más parqueaderos y baños tienden a tener un precio más alto. Estrato (estrato): Hay una correlación positiva moderada con el precio (0.667), lo que sugiere que el precio de la propiedad tiende a aumentar en los estratos más altos, posiblemente debido a factores de ubicación, servicios, o exclusividad. Habitaciones (habitaciones): La correlación entre el número de habitaciones y el precio (0.297) es positiva, aunque más débil en comparación con otras variables. Esto podría indicar que, aunque el número de habitaciones afecta el precio, su impacto es menor que otras características como el área construida, baños o parqueaderos. Piso (piso): La correlación del piso con el precio es la más baja (0.152), sugiriendo que el nivel en el que se encuentra la propiedad tiene poca influencia sobre su precio, comparado con otras características. Correlaciones entre Variables de las Propiedades:

Área Construida y Baños (areaconst y banios): Existe una correlación positiva fuerte (0.727), indicando que propiedades con mayor área construida tienden a tener más baños. Baños y Parqueaderos (banios y parqueaderos): También hay una correlación positiva considerable (0.624), sugiriendo que las propiedades con más baños suelen tener más espacio para parqueaderos. Estrato y Características de la Propiedad: El estrato muestra correlaciones positivas moderadas con el área construida (0.549), parqueaderos (0.554), y baños (0.616), lo que indica que las propiedades en estratos más altos suelen tener más área, parqueaderos y baños. Habitaciones y Otras Variables: La correlación de las habitaciones con el área construida (0.409) y con los baños (0.501) es positiva pero más moderada, lo que refleja que aunque más habitaciones pueden estar asociadas con propiedades más grandes, no es la característica dominante en la determinación del precio o el tamaño general.

library(GGally)
ggpairs(aptos1, lower = list(continuous = "smooth"),
        diag = list(continuous = "barDiag"), axisLabels = "none")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Box plot

# Configurar espacio gráfico para 1 fila y 2 columnas
par(mfrow = c(2, 2))

# Gráfico 1: Precio por Zona
boxplot(preciom ~ zona, data = aptos, 
        main = "Precio por Zona", 
        xlab = "Zona", 
        ylab = "Precio")

# Gráfico 2: Precio por Estrato
boxplot(preciom ~ estrato, data = aptos, 
        main = "Precio por Estrato", 
        xlab = "Estrato", 
        ylab = "Precio")

# Gráfico 3: Precio por Baños
boxplot(preciom ~ banios, data = aptos, 
        main = "Precio por Baños", 
        xlab = "Baños", 
        ylab = "Precio")

# Gráfico 4: Precio por Habitaciones
boxplot(preciom ~ habitaciones, data = aptos, 
        main = "Precio por habitaciones", 
        xlab = "Habitaciones", 
        ylab = "Precio")

# Restablecer el parámetro de gráfico
par(mfrow = c(1, 1))

3. Modelo de regresión lineal múltiple

modelo = lm(preciom ~ areaconst + parqueaderos + habitaciones + banios, data = aptos)
summary(modelo)
## 
## Call:
## lm(formula = preciom ~ areaconst + parqueaderos + habitaciones + 
##     banios, data = aptos)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1774.64   -55.07    -2.08    46.83  1038.95 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -71.59565    8.97841  -7.974 1.88e-15 ***
## areaconst      2.11468    0.04384  48.231  < 2e-16 ***
## parqueaderos 109.30359    3.76316  29.046  < 2e-16 ***
## habitaciones -49.35100    3.28742 -15.012  < 2e-16 ***
## banios        71.03324    2.87243  24.729  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 136.4 on 5095 degrees of freedom
## Multiple R-squared:  0.7778, Adjusted R-squared:  0.7777 
## F-statistic:  4459 on 4 and 5095 DF,  p-value: < 2.2e-16

Intercepto:

El intercepto es -71.60, lo que representa el valor estimado del precio cuando todas las variables explicativas (área construida, parqueaderos, habitaciones, y baños) son iguales a cero. Aunque este valor no tiene una interpretación práctica directa (ya que no es posible tener una propiedad con cero área, parqueaderos, habitaciones o baños), su signo negativo indica que las variables explicativas tienen un impacto positivo significativo en el precio cuando tienen valores mayores a cero. Coeficientes de las Variables:

Área Construida (areaconst): El coeficiente es 2.11, lo que sugiere que por cada metro cuadrado adicional de área construida, el precio de la propiedad aumenta en promedio en 2.11 millones de unidades monetarias, manteniendo constantes las demás variables. Este coeficiente es altamente significativo (p < 2e-16), indicando una fuerte relación positiva entre el área construida y el precio. Parqueaderos (parqueaderos): El coeficiente es 109.30, lo que significa que por cada parqueadero adicional, el precio de la propiedad aumenta en promedio en 109.30 millones de unidades monetarias, manteniendo constantes las demás variables. Este coeficiente es también altamente significativo (p < 2e-16), sugiriendo que el número de parqueaderos es una variable importante en la determinación del precio. Habitaciones (habitaciones): El coeficiente es -49.35, lo que indica que, sorprendentemente, cada habitación adicional se asocia con una disminución promedio del precio de 49.35 millones de unidades monetarias, manteniendo constantes las demás variables. Aunque este resultado puede parecer contraintuitivo, puede reflejar una relación compleja donde propiedades con muchas habitaciones no necesariamente son más caras (por ejemplo, propiedades más viejas o menos deseables). Baños (banios): El coeficiente es 71.03, indicando que por cada baño adicional, el precio de la propiedad aumenta en promedio en 71.03 millones de unidades monetarias, manteniendo constantes las demás variables. Este coeficiente es también altamente significativo (p < 2e-16), lo que sugiere que el número de baños es un factor relevante en la determinación del precio. Significancia Estadística:

Todos los coeficientes son altamente significativos (p < 2e-16), lo que indica que las variables seleccionadas tienen una influencia significativa sobre el precio de las propiedades. Bondad de Ajuste:

El R-cuadrado múltiple es 0.7778 y el R-cuadrado ajustado es 0.7777. Esto sugiere que aproximadamente el 77.78% de la variabilidad en el precio de las propiedades puede explicarse por las variables incluidas en el modelo (área construida, parqueaderos, habitaciones, y baños). Esto indica un buen ajuste del modelo, lo que significa que estas variables son bastante útiles para predecir el precio de las propiedades. Errores de los Residuales:

El error estándar residual es 136.4, lo cual proporciona una medida del tamaño promedio de los errores de predicción del modelo. Aunque existen residuales negativos y positivos con amplitudes relativamente grandes, el ajuste general del modelo sigue siendo bueno.

Por lo tanto, se puede afirmar que el modelo de regresión lineal proporciona una comprensión significativa de cómo el precio de las propiedades es influenciado por diferentes factores. El área construida, el número de parqueaderos, y el número de baños tienen efectos positivos sobre el precio, mientras que un mayor número de habitaciones muestra una relación negativa inesperada. El modelo explica bien la variabilidad del precio (R² = 77.78%), lo que sugiere que las variables incluidas son relevantes para predecir los precios de las propiedades. Sin embargo, el signo negativo del coeficiente para el número de habitaciones podría requerir un análisis adicional para entender mejor la dinámica del mercado inmobiliario en este contexto específico. ## 4. Validación de los supuestos

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

n_residuals = length(modelo$residuals)
if (n_residuals < 3 || n_residuals > 5000) {
  cat("The sample size for the Shapiro-Wilk test should be between 3 and 5000. Current size:", n_residuals)
} else {
  shapiro_result <- shapiro.test(modelo$residuals)
  print(shapiro_result)
}
## The sample size for the Shapiro-Wilk test should be between 3 and 5000. Current size: 5100
# Set a seed for reproducibility
set.seed(123)


sampled_residuals <- sample(modelo$residuals, size = 5000)

# Perform the Shapiro-Wilk test on the sampled residuals
shapiro_result <- shapiro.test(sampled_residuals)

# Print the result
print(shapiro_result)
## 
##  Shapiro-Wilk normality test
## 
## data:  sampled_residuals
## W = 0.83475, p-value < 2.2e-16
lmtest::bptest(modelo)
## 
##  studentized Breusch-Pagan test
## 
## data:  modelo
## BP = 1398.4, df = 4, p-value < 2.2e-16
lmtest::dwtest(modelo)
## 
##  Durbin-Watson test
## 
## data:  modelo
## DW = 1.6175, p-value < 2.2e-16
## alternative hypothesis: true autocorrelation is greater than 0

Dado que los resultados de los tests estadísticos han mostrado violaciones significativas de los supuestos del modelo de regresión lineal múltiple, es necesario revisar y ajustar el modelo para mejorar su validez. Los resultados obtenidos son los siguientes:

Prueba de Normalidad (Shapiro-Wilk):

W = 0.83475, p-valor < 2.2e-16. El valor de W indica una desviación considerable de la normalidad en los residuos, y el p-valor muy bajo confirma que los residuos no siguen una distribución normal. Prueba de Homocedasticidad (Breusch-Pagan):

BP = 1398.4, df = 4, p-valor < 2.2e-16. La alta estadística del test y el p-valor muy bajo sugieren que hay heterocedasticidad en los residuos, es decir, la variabilidad de los residuos no es constante a lo largo de las observaciones. Prueba de Autocorrelación (Durbin-Watson):

DW = 1.6175, p-valor < 2.2e-16. El valor de DW indica una autocorrelación positiva en los residuos, con un p-valor que confirma que esta autocorrelación es significativa. Dado que los supuestos de normalidad, homocedasticidad y ausencia de autocorrelación en los residuos no se cumplen, se recomienda tomar las siguientes acciones:

5. Partición de los datos

indices = sample(1:nrow(aptos), size = 0.7*nrow(aptos))
entrene = aptos[indices, ]
prueba = aptos[indices, ]
modelo2 = lm(preciom ~ areaconst + parqueaderos + banios, data = entrene)
summary(modelo2)
## 
## Call:
## lm(formula = preciom ~ areaconst + parqueaderos + banios, data = entrene)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1701.78   -51.85    -3.85    45.31   997.14 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -190.51338    6.44889  -29.54   <2e-16 ***
## areaconst       2.03043    0.05096   39.85   <2e-16 ***
## parqueaderos  112.60599    4.36860   25.78   <2e-16 ***
## banios         62.11023    3.25797   19.06   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 138.6 on 3566 degrees of freedom
## Multiple R-squared:  0.7774, Adjusted R-squared:  0.7772 
## F-statistic:  4151 on 3 and 3566 DF,  p-value: < 2.2e-16

El modelo de regresión lineal ha sido ajustado utilizando un conjunto de entrenamiento y tiene como variables explicativas el área construida (areaconst), el número de parqueaderos (parqueaderos), y el número de baños (banios). A continuación se presenta el análisis detallado del modelo:

Resultados del Modelo Intercepto:

Estimation = -190.51, Std. Error = 6.45, t-value = -29.54, p-value < 2e-16 El intercepto negativo sugiere que, en teoría, el precio esperado sería negativo cuando todas las variables explicativas son cero. Sin embargo, en la práctica, este valor no tiene una interpretación directa. La alta significancia estadística (p < 2e-16) indica que el intercepto es relevante en el contexto del modelo. Área Construida (areaconst):

Estimate = 2.03, Std. Error = 0.05, t-value = 39.85, p-value < 2e-16 El coeficiente de área construida indica que, por cada metro cuadrado adicional, el precio de la propiedad aumenta en promedio en 2.03 millones de unidades monetarias. Este coeficiente es altamente significativo, lo que refuerza la importancia del área construida en la determinación del precio de la propiedad. Parqueaderos (parqueaderos):

Estimate = 112.61, Std. Error = 4.37, t-value = 25.78, p-value < 2e-16 Cada parqueadero adicional se asocia con un aumento promedio de 112.61 millones en el precio. La significancia estadística (p < 2e-16) sugiere que el número de parqueaderos es un factor importante en la valoración de las propiedades. Baños (banios):

Estimate = 62.11, Std. Error = 3.26, t-value = 19.06, p-value < 2e-16 El número de baños tiene un coeficiente positivo, indicando que cada baño adicional aumenta el precio en promedio en 62.11 millones de unidades monetarias. Este coeficiente también es altamente significativo, subrayando la relevancia de los baños en el precio de las propiedades. Indicadores de Bondad de Ajuste Error Estándar Residual:

138.6 en 3566 grados de libertad. Este valor mide la desviación estándar de los residuos del modelo y es ligeramente mayor en comparación con el modelo anterior, lo que podría indicar una mayor variabilidad en los errores de predicción. R-cuadrado Múltiple:

0.7774, R-cuadrado Ajustado: 0.7772 Aproximadamente el 77.74% de la variabilidad en el precio de las propiedades es explicada por las variables incluidas en el modelo. El R-cuadrado ajustado, que toma en cuenta el número de variables en el modelo, es muy cercano al R-cuadrado múltiple, indicando que el modelo se ajusta bien a los datos del conjunto de entrenamiento. Estadístico F:

F-statistic = 4151 en 3 y 3566 grados de libertad, p-value < 2.2e-16 El alto valor del estadístico F y el p-valor muy bajo indican que el modelo es globalmente significativo y que al menos una de las variables explicativas tiene una relación significativa con el precio de la propiedad.

6. Predicciones usando los datos de prueba

predicciones = predict(modelo2, newdata = prueba)

resultados = data.frame(Real = prueba$preciom, Predicho = predicciones)
print(head(resultados))
##   Real  Predicho
## 1  230 440.31578
## 2 1220 795.74031
## 3  161 184.38234
## 4   92  91.81566
## 5  295 259.50827
## 6  145 157.98674

7. Cálculo del error cuadrático medio, del error absoluto medio y del R^2

Error Absoluto medio

eam = mean((abs(resultados$Real - resultados$Predicho)))
cat("el Error Absoluto Medio es :", eam, "\n")
## el Error Absoluto Medio es : 84.29956

Error Medio Cuadratico

emc = sqrt(mean((resultados$Real - resultados$Predicho)^2))
cat("el Error Cuadratico Medio es :", emc, "\n")
## el Error Cuadratico Medio es : 138.5042

R-squeared

r2 = 1 - (sum((resultados$Real - resultados$Predicho)^2)/ sum((resultados$Real - mean(resultados$Real))^2))
cat("R-Squared:", r2, "\n")
## R-Squared: 0.7773977

Interpretación de las Métricas de Evaluación del Modelo

Error Absoluto Medio (EAM):

EAM = 84.30 El Error Absoluto Medio es la media de las diferencias absolutas entre los valores reales y los valores predichos por el modelo. Un EAM de 84.30 significa que, en promedio, el modelo se desvía del valor real en 84.30 unidades monetarias. Este valor proporciona una idea general del tamaño promedio del error en las predicciones sin considerar la dirección del error.

Error Cuadrático Medio (ECM):

ECM = 138.50 El Error Cuadrático Medio es la raíz cuadrada de la media de los cuadrados de las diferencias entre los valores reales y los valores predichos. Un ECM de 138.50 unidades monetarias indica que el modelo tiene una desviación promedio de 138.50 unidades monetarias al elevar al cuadrado y promediar los errores de predicción. El ECM penaliza los errores más grandes más que el EAM debido al uso del cuadrado en su cálculo, proporcionando una medida que resalta errores más grandes en las predicciones. R-cuadrado (R²):

R² = 0.7774

El R-cuadrado es una medida que indica el porcentaje de variabilidad en la variable dependiente (precio) que es explicado por el modelo de regresión. Un valor de 0.7774 significa que aproximadamente el 77.74% de la variabilidad en los precios de las propiedades puede ser explicada por el modelo con las variables incluidas. Este es un buen ajuste, sugiriendo que el modelo captura una gran parte de la información relevante en los datos.

El modelo muestra un R-cuadrado sólido, indicando un buen ajuste en términos generales. Sin embargo, el Error Absoluto Medio y el Error Cuadrático Medio sugieren que, aunque el modelo es bastante preciso, hay una desviación promedio significativa en las predicciones. El EAM es más bajo y refleja el error promedio sin considerar la magnitud del mismo, mientras que el ECM indica que algunos errores pueden ser relativamente grandes. En conjunto, estas métricas sugieren que el modelo es bastante eficaz, pero siempre hay margen para mejorar la precisión de las predicciones.

Conclusiones

Análisis de Precios por Zona

Zona Oeste: Tiene el precio promedio más alto (667.93 millones), lo que indica que es una zona más exclusiva o deseable. Zona Sur: Con un precio promedio de 297.29 millones, esta zona ofrece un balance entre accesibilidad y calidad de vida. Zona Norte: Presenta un precio medio de 285.16 millones, sugiriendo que es una zona de clase media-alta. Zona Centro: El precio medio de 186.58 millones indica una mayor accesibilidad en comparación con las zonas Norte y Oeste, posiblemente debido a una oferta más amplia o características diferentes.

Correlaciones Clave Área Construida y Precio: Existe una fuerte correlación positiva (0.829), indicando que a mayor área construida, mayor es el precio. Parqueaderos y Baños: Ambas variables muestran una correlación significativa con el precio (0.737 y 0.740, respectivamente), sugiriendo que más parqueaderos y baños tienden a elevar el precio. Estrato y Precio: La correlación positiva moderada (0.667) sugiere que los estratos más altos están asociados con precios más altos. Habitaciones y Precio: La correlación positiva (0.297) es más débil, indicando que el número de habitaciones tiene un impacto menor en el precio comparado con otras características.

Modelo de Regresión Lineal Intercepto: -190.51 (p < 2e-16). Aunque no tiene una interpretación práctica directa, su alta significancia indica que las variables explicativas tienen un impacto positivo significativo en el precio. Área Construida: Cada metro cuadrado adicional aumenta el precio en promedio en 2.03 millones de unidades monetarias, siendo altamente significativo (p < 2e-16). Parqueaderos: Cada parqueadero adicional aumenta el precio en promedio en 112.61 millones, también altamente significativo (p < 2e-16). Baños: Cada baño adicional incrementa el precio en promedio en 62.11 millones, con alta significancia estadística (p < 2e-16). Habitaciones: Cada habitación adicional se asocia con una disminución del precio en 49.35 millones, lo cual es contraintuitivo y sugiere una relación compleja.

Bondad de Ajuste R-cuadrado: 0.7778. Aproximadamente el 77.78% de la variabilidad en el precio puede ser explicada por el modelo. Este valor indica un buen ajuste general. Error Estándar Residual: 136.4, lo que sugiere una desviación estándar de los errores de predicción, aunque sigue siendo aceptable en comparación con el ajuste general del modelo.

Evaluación de Supuestos del Modelo Normalidad: Los residuos no siguen una distribución normal (p-valor < 2.2e-16). Heterocedasticidad: Hay evidencia de heterocedasticidad (p-valor < 2.2e-16), indicando variabilidad no constante en los residuos. Autocorrelación: Hay autocorrelación positiva en los residuos (p-valor < 2.2e-16).

Recomendaciones Transformaciones de Variables: Aplicar transformaciones (potencias, raíces, logaritmos) para estabilizar la variabilidad de los residuos. Métodos Alternativos: Considerar métodos estadísticos robustos como los Mínimos Cuadrados Generalizados (GLS) o modelos no paramétricos como árboles de decisión para manejar heterocedasticidad y autocorrelación. En resumen, el modelo de regresión lineal muestra una buena capacidad para predecir el precio de las propiedades basándose en el área construida, número de parqueaderos y baños. Sin embargo, el modelo presenta problemas con algunos supuestos estadísticos, lo que sugiere la necesidad de ajustes adicionales para mejorar su validez y precisión.