Antes de proceder con el análisis, es fundamental contar con los
conjuntos de datos ya depurados. Para evitar repetir el proceso de
limpieza, hemos guardado las versiones finales de las bases de datos en
archivos .Rds.
Las bases limpias se guardaron utilizando los siguientes comandos:
saveRDS(Valencia_Sale, file = "base_2018_limpia.Rds")
saveRDS(Valencia_Sale_2025, file = "base_2025_limpia.Rds")
Una vez guardadas, podemos cargarlas fácilmente en el entorno mediante:
Valencia_2018 <- readRDS("base_2018_limpia.Rds")
Valencia_2025 <- readRDS("base_2025_limpia.Rds")
Así, podremos proceder con los datos previamente depurados, lo que garantiza mayor coherencia y eficiencia en el análisis.
Además, será necesario cargar ciertas librerías que nos permitirán realizar y visualizar los modelos de regresión lineal y los gráficos de correlaciones que vamos a utilizar. Estas son:
dplyr: proporciona funciones para trabajar mejor con dataframes (%>%).
car: te permite utilizar la función
VIF, que da una medida de multicolinealidad entre las
variables explicativas del modelo.
MASS: nos permitirá poder realizar selección de variables automática en modelos lineales (o generalizados), utilizando el criterio AIC (Akaike Information Criterion) para encontrar el modelo que mejor equilibra ajuste y complejidad.
corrplot: nos permitirá realizar los gráficos de correlaciones.
Ahora que ya contamos con las bases de datos limpias y las librerías necesarias, el siguiente paso consiste en seleccionar las variables comunes de ambas bases de datos para poder comparar su influencia en un año respecto a otro. Además, transformaremos la variable precio a su logaritmo para así reducir la variabilidad y permitir un análisis menos segado. También nos permitirá interpretar los coeficientes como cambios porcentuales en la regresión, y capturar relaciones no lineales:
modelo_vars <- c(
"PRICE","CONSTRUCTEDAREA","ROOMNUMBER","BATHNUMBER","HASLIFT", "BUILTTYPEID_1",
"BUILTTYPEID_2","BUILTTYPEID_3","DISTANCE_TO_CITY_CENTER","DISTANCE_TO_METRO",
"RHabitacion_Banyo"
)
Valencia_modelo_2018 <- Valencia_2018[,modelo_vars]
Valencia_modelo_2018$Precio_m2 <- Valencia_2018$Precio_m2
Valencia_modelo_2018$geometry <- NULL
Valencia_modelo_2018 <- Valencia_modelo_2018 %>%
mutate(
BUILTTYPEID = case_when(
BUILTTYPEID_1 == 1 ~ 1,
BUILTTYPEID_2 == 1 ~ 2,
BUILTTYPEID_3 == 1 ~ 3,
TRUE ~ NA_real_ # por si hubiera algún caso inesperado
),
BUILTTYPEID = factor(BUILTTYPEID)
)
Valencia_modelo_2018$BUILTTYPEID_1 <- NULL
Valencia_modelo_2018$BUILTTYPEID_2 <- NULL
Valencia_modelo_2018$BUILTTYPEID_3 <- NULL
Valencia_modelo_2018$LOGPRICE = log(Valencia_2018$PRICE)
Valencia_modelo_2018$PRICE <- NULL
Además, como en 2018 no hay distritos, será necesario crearlos nosotros:
# Diccionario de mapeo de barrios a distritos
barrio_distrito <- c(
# --- Ciutat Vella ---
"LA SEU" = "Ciutat Vella", "LA XEREA" = "Ciutat Vella", "EL CARME" = "Ciutat Vella",
"EL MERCAT" = "Ciutat Vella", "EL PILAR" = "Ciutat Vella", "SANT FRANCESC" = "Ciutat Vella",
# --- L'Eixample ---
"RUSSAFA" = "L'Eixample", "LA GRAN VIA" = "L'Eixample", "EL PLA DEL REMEI" = "L'Eixample",
# --- Extramurs ---
"EL BOTANIC" = "Extramurs", "LA ROQUETA" = "Extramurs", "LA PETXINA" = "Extramurs", "ARRANCAPINS" = "Extramurs",
# --- Campanar ---
"CAMPANAR" = "Campanar", "SANT PAU" = "Campanar", "LES TENDETES" = "Campanar",
# --- La Saïdia ---
"EL CALVARI" = "La Saïdia", "MARXALENES" = "La Saïdia", "MORVEDRE" = "La Saïdia",
"TRINITAT" = "La Saïdia", "ELS ORRIOLS" = "La Saïdia", "TORMOS" = "La Saïdia",
# --- El Pla del Real ---
"EXPOSICIO" = "El Pla del Real", "MESTALLA" = "El Pla del Real",
"JAUME ROIG" = "El Pla del Real", "CIUTAT UNIVERSITARIA" = "El Pla del Real",
# --- L'Olivereta ---
"NOU MOLES" = "L'Olivereta", "TRES FORQUES" = "L'Olivereta", "LA FONTSANTA" = "L'Olivereta",
"LA LLUM" = "L'Olivereta", "SOTERNES" = "L'Olivereta",
# --- Patraix ---
"PATRAIX" = "Patraix", "SAFRANAR" = "Patraix", "SANT ISIDRE" = "Patraix",
"LA RAIOSA" = "Patraix", "L'HORT DE SENABRE" = "Patraix", "FAVARA" = "Patraix",
"FAITANAR" = "Patraix", "VARA DE QUART" = "Patraix",
# --- Jesús ---
"LA CREU COBERTA" = "Jesús", "SANT MARCEL.LI" = "Jesús", "CAMI REAL" = "Jesús",
# --- Quatre Carreres ---
"MONTOLIVET" = "Quatre Carreres", "NA ROVELLA" = "Quatre Carreres", "EN CORTS" = "Quatre Carreres",
"MALILLA" = "Quatre Carreres", "LA PUNTA" = "Quatre Carreres",
"CIUTAT DE LES ARTS I DE LES CIENCIES" = "Quatre Carreres", "LA FONTETA S.LLUIS" = "Quatre Carreres",
# --- Poblats Marítims ---
"EL GRAU" = "Poblats Marítims", "AIORA" = "Poblats Marítims", "CABANYAL-CANYAMELAR" = "Poblats Marítims",
"LA MALVA-ROSA" = "Poblats Marítims", "BETERO" = "Poblats Marítims", "LA CREU DEL GRAU" = "Poblats Marítims",
"NATZARET" = "Poblats Marítims",
# --- Camins al Grau ---
"CAMI FONDO" = "Camins al Grau", "PENYA-ROJA" = "Camins al Grau", "LA VEGA BAIXA" = "Camins al Grau",
# --- Algirós ---
"L'AMISTAT" = "Algirós", "ALBORS" = "Algirós", "CIUTAT JARDI" = "Algirós",
"L'ILLA PERDUDA" = "Algirós", "LA CARRASCA" = "Algirós",
# --- Benimaclet ---
"BENIMACLET" = "Benimaclet", "CAMI DE VERA" = "Benimaclet",
# --- Rascanya ---
"SANT LLORENS" = "Rascanya", "TORREFIEL" = "Rascanya", "SANT ANTONI" = "Rascanya",
# --- Benicalap ---
"BENICALAP" = "Benicalap", "CIUTAT FALLERA" = "Benicalap", "BENIFERRI" = "Benicalap",
"POBLE NOU" = "Benicalap",
# --- Otros ---
"LA PATACONA" = "La Patacona",
"ALBORAIA CENTRO" = "Alboraya Centro"
)
# Convertimos el diccionario en data.frame
barrio_distrito_df <- tibble::tibble(
BARRIO = names(barrio_distrito),
DISTRITO = unname(barrio_distrito)
)
Valencia_modelo_2018$BARRIO <- Valencia_2018$BARRIO
# Join con la tabla principal
Valencia_modelo_2018 <- Valencia_modelo_2018 %>%
left_join(barrio_distrito_df, by = "BARRIO")
Valencia_modelo_2018$BARRIO <- NULL
modelo_vars <- c(
"size","rooms","bathrooms","hasLift",
"status","distance","distancia_min_estacion_m", "district"
)
Valencia_modelo_2025 = Valencia_2025[,modelo_vars]
Valencia_modelo_2025$logprice = log(Valencia_2025$price)
Valencia_modelo_2025 <- Valencia_modelo_2025[Valencia_modelo_2025$bathrooms != 0, ] # evitar división por 0
Valencia_modelo_2025$RHabitacion_Banyo = Valencia_modelo_2025$rooms / Valencia_modelo_2025$bathrooms
Valencia_modelo_2025 <- na.omit(Valencia_modelo_2025)
Ahora que ya tenemos las bases de datos correctas, podemos iniciar el análisis de la influencia de cada variable. Para ello, empezaremos realizando regresión lineal utilizando como variable a predecir la variable log(precio):
modelo_full_2018 <- lm(LOGPRICE ~ ., data = Valencia_modelo_2018)
vif(modelo_full_2018) # Verifica mejoras
## GVIF Df GVIF^(1/(2*Df))
## CONSTRUCTEDAREA 2.513250 1 1.585323
## ROOMNUMBER 3.731460 1 1.931699
## BATHNUMBER 4.910594 1 2.215986
## HASLIFT 1.186683 1 1.089350
## DISTANCE_TO_CITY_CENTER 5.467340 1 2.338234
## DISTANCE_TO_METRO 2.266758 1 1.505576
## RHabitacion_Banyo 3.733345 1 1.932186
## BUILTTYPEID 1.134693 2 1.032095
## DISTRITO 8.697489 15 1.074764
modelo_opt_2018 <- stepAIC(modelo_full_2018, direction = "both", trace = FALSE)
summary(modelo_opt_2018)
##
## Call:
## lm(formula = LOGPRICE ~ CONSTRUCTEDAREA + ROOMNUMBER + BATHNUMBER +
## HASLIFT + DISTANCE_TO_CITY_CENTER + DISTANCE_TO_METRO + RHabitacion_Banyo +
## BUILTTYPEID + DISTRITO, data = Valencia_modelo_2018)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.4686 -0.1872 -0.0083 0.1887 1.8188
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.125e+01 2.197e-02 512.264 < 2e-16 ***
## CONSTRUCTEDAREA 6.256e-03 6.466e-05 96.766 < 2e-16 ***
## ROOMNUMBER -3.458e-02 3.599e-03 -9.608 < 2e-16 ***
## BATHNUMBER 1.833e-01 6.463e-03 28.357 < 2e-16 ***
## HASLIFT 3.368e-01 4.936e-03 68.236 < 2e-16 ***
## DISTANCE_TO_CITY_CENTER -7.310e-02 4.446e-03 -16.443 < 2e-16 ***
## DISTANCE_TO_METRO -7.083e-02 6.640e-03 -10.667 < 2e-16 ***
## RHabitacion_Banyo 1.340e-01 1.514e-02 8.853 < 2e-16 ***
## BUILTTYPEID2 -4.509e-01 1.206e-02 -37.389 < 2e-16 ***
## BUILTTYPEID3 -2.808e-01 1.077e-02 -26.064 < 2e-16 ***
## DISTRITOBenicalap -1.949e-01 1.275e-02 -15.284 < 2e-16 ***
## DISTRITOBenimaclet 1.084e-01 1.601e-02 6.772 1.29e-11 ***
## DISTRITOCamins al Grau 3.184e-01 1.635e-02 19.469 < 2e-16 ***
## DISTRITOCampanar 1.429e-01 1.429e-02 10.003 < 2e-16 ***
## DISTRITOCiutat Vella 3.111e-01 1.524e-02 20.417 < 2e-16 ***
## DISTRITOEl Pla del Real 2.764e-01 1.463e-02 18.888 < 2e-16 ***
## DISTRITOExtramurs 6.930e-02 1.379e-02 5.026 5.03e-07 ***
## DISTRITOJesús -2.646e-01 1.563e-02 -16.927 < 2e-16 ***
## DISTRITOL'Eixample 3.758e-01 1.407e-02 26.704 < 2e-16 ***
## DISTRITOL'Olivereta -2.985e-01 1.238e-02 -24.107 < 2e-16 ***
## DISTRITOLa Saïdia -2.290e-01 1.297e-02 -17.659 < 2e-16 ***
## DISTRITOPatraix -2.348e-01 1.188e-02 -19.758 < 2e-16 ***
## DISTRITOPoblats Marítims 8.370e-02 1.257e-02 6.657 2.84e-11 ***
## DISTRITOQuatre Carreres -1.189e-01 1.225e-02 -9.705 < 2e-16 ***
## DISTRITORascanya -1.516e-01 1.382e-02 -10.972 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.3052 on 27294 degrees of freedom
## Multiple R-squared: 0.7864, Adjusted R-squared: 0.7862
## F-statistic: 4187 on 24 and 27294 DF, p-value: < 2.2e-16
Superficie construida (CONSTRUCTEDAREA) Esta variable presenta un coeficiente positivo de 0.00626, altamente significativo (p < 2e-16). Esto implica que, manteniendo constantes el resto de variables, un incremento de un metro cuadrado en la superficie construida se traduce en un aumento del log-precio del 0.626%. En términos reales, se trata de uno de los factores más importantes a la hora de explicar el precio, lo que es coherente con la literatura inmobiliaria: las viviendas más grandes suelen tener un precio absoluto superior.
Número de habitaciones (ROOMNUMBER) Sorprendentemente, el número de habitaciones muestra un coeficiente negativo de −0.0346, también estadísticamente significativo (p < 2e-16). Esto indicaría que, a igualdad del resto de variables, cada habitación adicional reduce el precio en un 3.4% aproximadamente. Este resultado puede parecer contraintuitivo, pero podría estar capturando un efecto de correlación con viviendas de gran tamaño y distribución menos eficiente, o ubicadas en zonas menos cotizadas, es decir, más habitaciones no siempre implican más valor si el resto de características no son proporcionales (como baños o superficie útil).
Número de baños (BATHNUMBER) En cambio, el número de baños tiene una influencia muy positiva sobre el precio, con un coeficiente de 0.1833 (p < 2e-16), lo que implica que un baño adicional incrementa el precio en torno a un 20.1%. Esto evidencia la importancia de este elemento como indicador de confort y adecuación para familias o usos intensivos de la vivienda.
Ascensor (HASLIFT) La presencia de ascensor está asociada con un coeficiente de 0.3368, también altamente significativo. Su interpretación implica que una vivienda con ascensor es, en promedio, un 40% más cara que una equivalente sin este equipamiento. Este resultado es especialmente relevante en ciudades con edificios antiguos o de varias plantas, donde el ascensor representa un factor diferencial clave en la valoración.
Distancia al centro urbano (DISTANCE_TO_CITY_CENTER) Esta variable presenta un coeficiente negativo de −0.0731 (p < 2e-16), indicando que, por cada unidad adicional de distancia al centro (presumiblemente en kilómetros), el precio de la vivienda disminuye en un 7.3%. Esto refleja el valor asociado a la cercanía al centro histórico y comercial de Valencia, donde se concentran los servicios, oportunidades laborales y atractivos culturales.
Distancia a la estación de metro más cercana (DISTANCE_TO_METRO) Del mismo modo, la distancia al metro muestra una relación negativa con el precio, con un coeficiente de −0.0708, también muy significativo. Esto sugiere que, por cada unidad de distancia adicional al metro, el precio cae un 6.8%, lo que evidencia la importancia del acceso al transporte público en la valoración de un inmueble.
Relación entre habitaciones y baños
(RHabitacion_Banyo) La variable
RHabitacion_Banyo refleja cómo se distribuyen los espacios
funcionales en el interior de la vivienda. Su coeficiente de 0.1340
implica que una mejor proporción entre habitaciones y baños se asocia
con un mayor precio, posiblemente porque indica una vivienda más
equilibrada y cómoda. Aunque su efecto no es tan grande como otras
variables, sigue siendo estadísticamente significativo.
Variables categóricas:
BUILTTYPEID_1, _2, _3) en una única variable categórica.
El modelo ha tomado como categoría de referencia el tipo 1, comparando
contra este los efectos de los tipos 2 y 3:BUILTTYPEID2: coeficiente de −0.4509, lo que indica que las viviendas de tipo 2 tienen un precio un 36.3% inferior al tipo 1.
BUILTTYPEID3: coeficiente de −0.2808, es decir, un 24.5% inferior al tipo 1.
Estos efectos son altamente significativos y reflejan que el tipo constructivo de la vivienda tiene un peso considerable sobre el precio, posiblemente vinculado a la antigüedad, materiales o diseño arquitectónico.
Distrito (DISTRITO) La variable
DISTRITO agrupa las viviendas según su ubicación en uno de
los 16 distritos administrativos de Valencia. En el modelo, se ha
considerado como referencia uno de los distritos (no mostrado,
probablemente el primero alfabéticamente o el que se codificó como
base). Se observan diferencias sustanciales en el precio medio de las
viviendas entre distritos:
Distritos con efecto positivo (mayor precio que la media):
L’Eixample: +37.6%
Ciutat Vella: +31.1%
Camins al Grau: +31.8%
El Pla del Real: +27.6%
Campanar: +14.3%
Estos distritos corresponden a zonas centrales o muy demandadas, con fuerte actividad comercial, cultural y buenas infraestructuras.
Distritos con efecto negativo (menor precio que la media):
L’Olivereta: −29.8%
Jesús: −26.5%
Patraix: −23.5%
La Saïdia: −22.9%
Benicalap: −19.5%
Estas zonas, generalmente más periféricas o menos urbanizadas, presentan precios significativamente inferiores, lo que pone de manifiesto la segregación espacial del mercado inmobiliario en Valencia.
Conclusión global: El modelo de regresión explica aproximadamente un 78.6% de la varianza del log-precio de las viviendas (R² ajustado = 0.786), lo que evidencia un buen poder explicativo. Todas las variables incluidas resultaron estadísticamente significativas, con signos coherentes con la teoría económica o, en caso contrario, explicables por interacciones entre variables o sesgos del mercado.
Entre los principales determinantes del precio destacan: la superficie construida, el número de baños, la presencia de ascensor y la localización (tanto en términos de distrito como de distancia al centro o al transporte). Estos resultados permiten entender cómo se valoran distintos atributos en el mercado de compraventa de viviendas en Valencia y pueden servir de base para la toma de decisiones por parte de promotores, compradores o administraciones públicas.
modelo_full_2025 <- lm(logprice ~ ., data = Valencia_modelo_2025)
vif(modelo_full_2025) # Verifica mejoras
## GVIF Df GVIF^(1/(2*Df))
## size 3.211066 1 1.791945
## rooms 7.542823 1 2.746420
## bathrooms 6.748917 1 2.597868
## hasLift 1.290693 1 1.136087
## status 1.184001 2 1.043129
## distance 7.478360 1 2.734659
## distancia_min_estacion_m 1.870644 1 1.367715
## district 15.406666 17 1.083759
## RHabitacion_Banyo 5.844287 1 2.417496
modelo_opt_2025 <- stepAIC(modelo_full_2025, direction = "both", trace = FALSE)
summary(modelo_opt_2025)
##
## Call:
## lm(formula = logprice ~ size + bathrooms + hasLift + status +
## distance + district + RHabitacion_Banyo, data = Valencia_modelo_2025)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.71732 -0.16787 0.02008 0.19692 1.28748
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 12.9324413 0.2496445 51.803 < 2e-16 ***
## size 0.0047487 0.0001655 28.702 < 2e-16 ***
## bathrooms 0.1321975 0.0133347 9.914 < 2e-16 ***
## hasLift 0.3242507 0.0158975 20.396 < 2e-16 ***
## statusnewdevelopment 0.1253698 0.0368683 3.400 0.000682 ***
## statusrenew -0.1557713 0.0209226 -7.445 1.27e-13 ***
## distance -0.0001279 0.0000138 -9.271 < 2e-16 ***
## districtAlgirós -0.8586118 0.2450096 -3.504 0.000465 ***
## districtBenicalap -1.0447375 0.2439544 -4.283 1.91e-05 ***
## districtBenimaclet -0.9639333 0.2506289 -3.846 0.000123 ***
## districtCamins al Grau -0.7826477 0.2430551 -3.220 0.001296 **
## districtCampanar -0.8379746 0.2440120 -3.434 0.000603 ***
## districtCiutat Vella -0.8019552 0.2469100 -3.248 0.001176 **
## districtEl Pla del Real -0.7729900 0.2468300 -3.132 0.001755 **
## districtExtramurs -0.9507878 0.2462419 -3.861 0.000115 ***
## districtJesús -1.1471413 0.2441916 -4.698 2.75e-06 ***
## districtL'Eixample -0.7154828 0.2460929 -2.907 0.003673 **
## districtL'Olivereta -1.2670231 0.2438456 -5.196 2.18e-07 ***
## districtLa Patacona -0.1788630 0.2455693 -0.728 0.466452
## districtLa Saïdia -1.0527010 0.2450263 -4.296 1.79e-05 ***
## districtPatraix -1.1575641 0.2443684 -4.737 2.27e-06 ***
## districtPoblats Marítims -0.7461436 0.2417341 -3.087 0.002044 **
## districtQuatre Carreres -0.9030419 0.2434831 -3.709 0.000212 ***
## districtRascanya -1.2656560 0.2433211 -5.202 2.11e-07 ***
## RHabitacion_Banyo -0.0317329 0.0091112 -3.483 0.000503 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.3404 on 2896 degrees of freedom
## Multiple R-squared: 0.7735, Adjusted R-squared: 0.7716
## F-statistic: 412 on 24 and 2896 DF, p-value: < 2.2e-16
Superficie construida (size)
La variable size presenta un coeficiente positivo de
0.00475, altamente significativo (p < 2e-16). Esto
implica que, manteniendo constantes el resto de variables, un metro
cuadrado adicional se traduce en un aumento del 0.475% en el
log-precio de la vivienda. Este efecto es consistente con la
literatura del mercado inmobiliario, donde el tamaño es uno de los
principales determinantes del valor.
Número de baños (bathrooms)
El número de baños muestra un coeficiente positivo de
0.1322 (p < 2e-16), lo que indica que un
baño adicional incrementa el precio en torno a un 14.1%
(exp(0.1322) − 1). Esto resalta la importancia de los baños
como indicador de confort y adecuación para familias o viviendas de gran
tamaño.
Ascensor (hasLift)
La variable hasLift tiene un coeficiente de
0.3243, también muy significativo. Esto implica que, en
promedio, las viviendas con ascensor son aproximadamente 38.3%
más caras que aquellas que no lo tienen
(exp(0.3243) − 1). La presencia de ascensor representa un
factor diferencial, especialmente en edificios antiguos sin esta
instalación.
Estado del inmueble (status)
Esta variable categórica incluye tres niveles: vivienda usada (base),
nueva (statusnewdevelopment) y renovada
(statusrenew). Sus efectos son:
statusnewdevelopment: coef. = 0.1254 →
las viviendas nuevas son 13.4% más caras que las
usadas.statusrenew: coef. = −0.1558 → las
viviendas renovadas son 14.4% más baratas que las
usadas.Estos resultados sugieren que el mercado valora más una vivienda completamente nueva que una reformada.
Distancia al centro urbano
(distance)
Con un coeficiente negativo de −0.000128 (p <
2e-16), se interpreta que cada metro adicional de distancia al
centro urbano reduce el precio de la vivienda en un 0.0127%, lo
cual es coherente con la mayor demanda por vivir cerca del núcleo
urbano.
Distrito (district)
district es una variable categórica que agrupa las
viviendas según los 17 distritos de Valencia. Se ha tomado como
referencia un distrito (no mostrado en el resumen). Se observan efectos
negativos y significativos en la mayoría de los distritos respecto a esa
referencia:
Ejemplos destacados: - districtBenicalap: coef. =
−1.045 → aproximadamente −64.8%
respecto al distrito base. - districtL’Olivereta: coef. =
−1.267 → unas −71.7% más barato. -
districtL’Eixample: coef. = −0.715 →
−50.5%, aunque sigue siendo más caro en términos
absolutos (esto depende de la categoría base).
Estas diferencias reflejan la importancia de la localización dentro de la ciudad, evidenciando la existencia de una clara segmentación espacial en el mercado inmobiliario de Valencia.
Conclusión global El modelo explica el 77.2% de la varianza del log-precio (R² ajustado = 0.7716), lo que indica un buen ajuste. La mayoría de las variables incluidas resultaron estadísticamente significativas y con signos coherentes con la teoría económica.
Los principales determinantes del precio son:
Superficie
Número de baños
Ascensor
Distancia al centro urbano
Ubicación distrital
Estos resultados permiten comprender cómo se valoran distintos atributos en el mercado inmobiliario de Valencia, siendo útiles tanto para análisis académicos como para toma de decisiones por parte de compradores, promotores o responsables públicos.
Por último, para terminar de analizar las diferencias que hay entre la influencia de estas variables sobre el precio entre los dos años, haremos uso de correlaciones de Pearson. De esta forma, observaremos qué variables están más correlacionadas con el precio y como cambia esta importancia de 2018 a 2025:
# Seleccionamos las variables numéricas + LOGPRICE
Valencia_modelo_2018$HASLIFT <- as.numeric(Valencia_modelo_2018$HASLIFT)
cor_data_2018 <- Valencia_modelo_2018 %>%
dplyr::select(LOGPRICE, CONSTRUCTEDAREA, ROOMNUMBER, BATHNUMBER, HASLIFT,
DISTANCE_TO_CITY_CENTER, DISTANCE_TO_METRO, RHabitacion_Banyo)
cor_matrix_2018 <- cor(cor_data_2018, use = "complete.obs")
# Correlación solo con respecto a LOGPRICE
corrplot(cor_matrix_2018, method = "color", type = "lower",
tl.col = "black", tl.cex = 0.8, addCoef.col = "black",
number.cex = 0.7, order = "hclust")
1. Variables con mayor correlación positiva con el precio (LOGPRICE)
Constructed Area (CONSTRUCTEDAREA): Con una correlación
de 0.58, es la variable que presenta la mayor asociación positiva con el
precio. Esto indica que, en términos generales, cuanto mayor es el área
construida de una vivienda, mayor es su precio, lo cual es coherente con
la lógica del mercado inmobiliario.
Número de Baños (BATHNUMBER): Presenta una correlación
de 0.46 con LOGPRICE. Tener más baños se relaciona con viviendas más
completas o de mayor confort, lo que se traduce en precios más
altos.
Habitación con Baño (RHabitacion_Banyo): Tiene una
correlación positiva de 0.34. La presencia de habitaciones con baño
privado parece asociarse con un mayor valor del inmueble, posiblemente
por asociarse a construcciones más modernas o de alta gama.
Ascensor (HASLIFT): Con un valor de 0.30, indica que los
edificios con ascensor tienden a tener viviendas con precios más altos,
lo que podría deberse a su asociación con edificios más recientes o de
mejor calidad.
Número de Habitaciones (ROOMNUMBER): Muestra una
correlación moderada de 0.34 con el precio. Aunque se espera una
asociación positiva, su efecto es menor que el del área construida o el
número de baños, lo cual podría indicar que el número total de
habitaciones no siempre implica mayor valor si no están bien
distribuidas o si son pequeñas.
2. Variables con correlación negativa con el precio
Distancia al Centro (DISTANCE_TO_CITY_CENTER): Con una
correlación de -0.33, muestra una relación negativa importante: cuanto
más alejada está la vivienda del centro urbano, menor es su precio. Esto
es esperable en contextos urbanos donde el centro suele concentrar mayor
valor comercial y servicios.
Distancia al Metro (DISTANCE_TO_METRO): Presenta una
correlación de -0.20, lo cual sugiere que las viviendas más alejadas de
estaciones de metro tienden a tener precios más bajos. Este resultado
subraya la importancia de la accesibilidad al transporte público.
3. Correlaciones entre variables explicativas
Es importante mencionar que algunas variables independientes presentan correlaciones entre sí, como:
ROOMNUMBER y BATHNUMBER (0.56): viviendas con más
habitaciones tienden a tener también más baños.
CONSTRUCTEDAREA se relaciona tanto con
BATHNUMBER (0.50) como con ROOMNUMBER (0.39),
lo cual tiene sentido ya que una mayor área permite más espacios
funcionales.
Estas asociaciones deben ser consideradas para evitar problemas de colinealidad en modelos predictivos más complejos, aunque el análisis previo de VIF sugiere que no hay problemas críticos de multicolinealidad.
Conclusión
El análisis de correlación confirma que variables como el tamaño, la calidad de los acabados (baños, habitaciones en suite), y la accesibilidad (proximidad al centro o al metro) tienen un impacto importante en el precio de la vivienda. Estos resultados apoyan la selección de variables realizada en el modelo de regresión lineal y serán tenidos en cuenta en fases posteriores del análisis como el PCA o modelos predictivos más avanzados.
# Seleccionamos las variables numéricas + logprice
Valencia_modelo_2025$hasLift <- as.numeric(Valencia_modelo_2025$hasLift)
cor_data_2025 <- Valencia_modelo_2025 %>%
dplyr::select(logprice, RHabitacion_Banyo, size, rooms, bathrooms, hasLift,
distance, distancia_min_estacion_m)
cor_matrix_2025 <- cor(cor_data_2025, use = "complete.obs")
# Correlación solo con respecto a LOGPRICE
corrplot(cor_matrix_2025, method = "color", type = "lower",
tl.col = "black", tl.cex = 0.8, addCoef.col = "black",
number.cex = 0.7, order = "hclust")
1. Variables con mayor correlación positiva con el precio (logprice)
size (Superficie construida):
Correlación = 0.65 Es la variable que presenta la mayor
asociación positiva con el precio. A mayor superficie construida, mayor
precio, lo que es totalmente coherente con el comportamiento esperado en
el mercado inmobiliario.
bathrooms (Número de baños):
Correlación = 0.69 Una de las variables con más peso. Los
inmuebles con más baños tienden a tener mayor valor, dado que reflejan
un mayor nivel de confort y adecuación para familias o viviendas
grandes.
hasLift (Ascensor): Correlación = 0.48 La
presencia de ascensor tiene una fuerte relación con el precio. Esto
podría deberse a que muchos edificios antiguos (sin ascensor) suelen
tener un precio más bajo por su falta de accesibilidad.
rooms (Número de habitaciones):
Correlación = 0.47 Aunque es positivo, su influencia es
menor que la de size o bathrooms. Esto puede reflejar que no todas las
habitaciones aportan el mismo valor si no están bien distribuidas.
RHabitacion_Banyo (Relación habitaciones/baños):
Correlación = 0.23 Una distribución eficiente entre
habitaciones y baños también parece estar relacionada con precios más
altos.
2. Variables con correlación negativa con el precio
distance (Distancia al centro):
Correlación = −0.32 Cuanto más alejada del centro está la
vivienda, menor es su precio. Esto es esperable, ya que la localización
céntrica suele tener mayor demanda y valor.
distancia_min_estacion_m (Distancia mínima a estación de metro):
Correlación = −0.13 La relación es más débil pero sigue
siendo negativa: las viviendas más alejadas del metro tienden a ser más
baratas, lo que subraya la importancia del transporte público.
3. Correlaciones entre variables explicativas
bathrooms y size: Correlación = 0.76 Es muy alta. Las
viviendas más grandes suelen tener más baños, lo cual es coherente y
esperable.
rooms y bathrooms: Correlación = 0.54 También elevada,
lo que indica que hay un patrón de coexistencia entre ambos
elementos.
rooms y size: Correlación = 0.67 La superficie
construida aumenta generalmente con el número de habitaciones.
Estas correlaciones sugieren cierta colinealidad entre variables explicativas, aunque los valores de VIF vistos anteriormente indican que no representan un problema grave para el modelo de regresión.
Conclusión
El análisis de correlaciones confirma la importancia de variables como el tamaño (size), el confort (bathrooms, hasLift) y la localización (distance) en la explicación del precio (logprice). Estos resultados respaldan las elecciones realizadas para la regresión lineal y orientan futuros análisis, como la selección de variables o la reducción de dimensión (e.g. PCA).
Aunque algunas variables siguen siendo clave (como el tamaño y los baños), su influencia ha disminuido con el tiempo, posiblemente debido a cambios en las preferencias del comprador, mejoras en estándares de vivienda o el desarrollo de nuevas zonas residenciales. Por otro lado, variables como la relación entre habitaciones y baños ganan relevancia, lo que indica una evolución hacia la valoración del confort y el diseño funcional más que de simples cantidades.