1. Importación y Limpieza de Datos

# Cargar la base de datos
data <- read.csv("C:\\Users\\joseo\\Downloads\\HousePriceData.csv")

# 1. Eliminar columna de observación (no aporta al modelo)
data$Observation <- NULL

# 2. Limpieza, hay valores negativos en el summary original (-110)
# Los convertiremos al valor absoluto o a la media.
data$Rainfall <- abs(data$Rainfall)

# Vamos a omitirlas formalmente para que no causen errores.
data <- na.omit(data)

str(data)
## 'data.frame':    898 obs. of  9 variables:
##  $ Dist_Taxi    : int  9796 8294 11001 8301 10510 6665 13153 5882 7495 8233 ...
##  $ Dist_Market  : int  5250 8186 14399 11188 12629 5142 11869 9948 11589 7067 ...
##  $ Dist_Hospital: int  10703 12694 16991 12289 13921 9972 17811 13315 13370 11400 ...
##  $ Carpet       : int  1659 1461 1340 1451 1770 1442 1542 1261 1090 1030 ...
##  $ Builtup      : int  1961 1752 1609 1748 2111 1733 1858 1507 1321 1235 ...
##  $ Parking      : chr  "Open" "Not Provided" "Not Provided" "Covered" ...
##  $ City_Category: chr  "CAT B" "CAT B" "CAT A" "CAT B" ...
##  $ Rainfall     : int  530 210 720 620 450 760 1030 1020 680 1130 ...
##  $ House_Price  : int  6649000 3982000 5401000 5373000 4662000 4526000 7224000 3772000 4631000 4415000 ...
##  - attr(*, "na.action")= 'omit' Named int [1:7] 62 240 425 470 527 547 576
##   ..- attr(*, "names")= chr [1:7] "62" "240" "425" "470" ...

2. Exploración Estadística

summary(data$House_Price)
##      Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
##   1492000   4643000   5860500   6092597   7195750 150000000
# Visualización rápida de la variable objetivo
boxplot(data$House_Price, main="Distribución de Precios de Casas", col="lightblue", ylab="USD")

3. Construcción del Modelo de Regresión Lineal Múltiple

regresion <- lm(House_Price ~ 
                  factor(Parking) + 
                  factor(City_Category) + 
                  Dist_Taxi + 
                  Dist_Market + 
                  Dist_Hospital + 
                  Carpet + 
                  Builtup + 
                  Rainfall, 
                data = data)

summary(regresion)
## 
## Call:
## lm(formula = House_Price ~ factor(Parking) + factor(City_Category) + 
##     Dist_Taxi + Dist_Market + Dist_Hospital + Carpet + Builtup + 
##     Rainfall, data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -3587923  -837631   -63409   785633  4577929 
## 
## Coefficients:
##                               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                  5.571e+06  3.688e+05  15.105  < 2e-16 ***
## factor(Parking)No Parking   -6.170e+05  1.393e+05  -4.430 1.06e-05 ***
## factor(Parking)Not Provided -5.077e+05  1.239e+05  -4.097 4.57e-05 ***
## factor(Parking)Open         -2.597e+05  1.131e+05  -2.297   0.0219 *  
## factor(City_Category)CAT B  -1.883e+06  9.641e+04 -19.530  < 2e-16 ***
## factor(City_Category)CAT C  -2.902e+06  1.062e+05 -27.322  < 2e-16 ***
## Dist_Taxi                    2.832e+01  2.694e+01   1.051   0.2934    
## Dist_Market                  1.241e+01  2.089e+01   0.594   0.5526    
## Dist_Hospital                5.073e+01  3.021e+01   1.679   0.0935 .  
## Carpet                       9.907e+03  1.428e+02  69.402  < 2e-16 ***
## Builtup                     -7.575e+03  2.412e+02 -31.405  < 2e-16 ***
## Rainfall                    -1.037e+02  1.552e+02  -0.668   0.5043    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1228000 on 886 degrees of freedom
## Multiple R-squared:  0.9429, Adjusted R-squared:  0.9422 
## F-statistic:  1329 on 11 and 886 DF,  p-value: < 2.2e-16

4. Interpretación de Resultados

Basado en el resumen del modelo (\(R^2\) de 0.94): El modelo explica el 94.2% de la variación del precio, lo cual es excepcionalmente alto. Variables Críticas: Carpet (Área interna) y City_Category son los predictores más fuertes. El coeficiente de Builtup es negativo (\(-7,575\)). Esto ocurre por la multicolinealidad con Carpet. Cuando ambas crecen juntas, el modelo intenta compensar el peso de una con la otra.

5. Predicción con Datos Nuevos

# Definir los datos de la nueva casa
casa_nueva <- data.frame(
  Parking = "Covered",
  City_Category = "CAT A",
  Dist_Taxi = 5000,
  Dist_Market = 8000,
  Dist_Hospital = 10000,
  Carpet = 1600,
  Builtup = 1900,
  Rainfall = 600
)

# Realizar la predicción
prediccion_precio <- predict(regresion, casa_nueva)

cat("El valor estimado de la propiedad es de:", round(prediccion_precio, 2), "USD")
## El valor estimado de la propiedad es de: 7715207 USD

6. Conclusiones

Ubicación sobre todo: Estar en CAT B o CAT C reduce el precio en millones respecto a CAT A.

Cada unidad adicional de Carpet aumenta el precio en aproximadamente $9,907 USD.

Variables como Rainfall y Dist_Market tienen un p-value mayor a 0.05, lo que sugiere que no son significativas y podrían eliminarse para simplificar el modelo sin perder mucha precisión.

7. Evaluación Visual del Modelo

# 1. Generar las predicciones del modelo para los datos actuales
data$Predicciones <- predict(regresion, data)

# 2. Graficar Reales vs Predichos
plot(data$House_Price, data$Predicciones,
     main = "Valores Reales vs. Predicciones",
     xlab = "Precio Real (House_Price)",
     ylab = "Precio Predicho",
     pch = 19, 
     col = rgb(0.2, 0.4, 0.6, 0.5)) 

# 3. Añadir línea de referencia (donde Real = Predicho)
abline(a = 0, b = 1, col = "red", lwd = 2)

# 4. Añadir un texto informaivo
legend("topleft", legend = "Línea de Ajuste Perfecto", col = "red", lwd = 2)

Conclusión General

El modelo de regresión lineal múltiple desarrollado ha demostrado ser una herramienta fuerte para la estimación de precios inmobiliarios, alcanzando un coeficiente de determinación de \(R^2 = 0.94\). A través del análisis, se identificó que la ubicación (City_Category) y el espacio útil (Carpet) son los determinantes críticos del valor, mientras que factores externos como la distancia a servicios de transporte o el nivel de precipitación no presentan una influencia estadísticamente significativa en esta muestra. La estrecha alineación entre los valores reales y las predicciones en el gráfico final valida la capacidad del modelo para realizar pronósticos confiables, consolidándose como una base sólida para la toma de decisiones estratégicas en el sector bienes raíces.