library(knitr)
library(kableExtra)
library(tidyr)
library(RecordLinkage)
library(leaflet)
library(htmltools)
library(readxl)
datos <- read_excel("Datos_Vivienda.xlsx")
View(datos)
id = 1:dim(datos)[1]
datos= data.frame(id,datos) ## Esre código genera una nueva columna llamada id, con los numeros desde el 1 asta el numero de filas de la tabla de datos, y luego agrega un numero a cada dato.
# filtro
require(RecordLinkage)
pos = which(jarowinkler("capri", datos$Barrio)>0.98)
datos_subdatos=datos[pos,]
head(datos_subdatos)
## id Zona piso Estrato precio_millon Area_contruida parqueaderos Banos
## 75 75 Zona Sur 3 5 270 118 2 3
## 120 120 Zona Sur NA 5 195 68 1 2
## 3978 3978 Zona Sur 5 5 320 96 NA 3
## 4071 4071 Zona Sur 5 4 220 95 1 3
## 4732 4732 Zona Sur NA 5 275 98 1 3
## 5013 5013 Zona Sur 2 5 250 108 2 2
## Habitaciones Tipo Barrio cordenada_longitud Cordenada_latitud
## 75 4 Apartamento capri -76.47922 3.43222
## 120 2 Apartamento capri -76.48456 3.45308
## 3978 3 Apartamento capri -76.52900 3.41300
## 4071 4 Apartamento capri -76.52959 3.39289
## 4732 4 Apartamento capri -76.53271 3.45091
## 5013 3 Apartamento capri -76.53455 3.42197
library(dplyr)
names(datos_subdatos)
## [1] "id" "Zona" "piso"
## [4] "Estrato" "precio_millon" "Area_contruida"
## [7] "parqueaderos" "Banos" "Habitaciones"
## [10] "Tipo" "Barrio" "cordenada_longitud"
## [13] "Cordenada_latitud"
##Resgistros totales para el viviendatipo apartamento y barrio "capri"
length(pos)
## [1] 56
Según este resultado, existen 56 observaciones en el barrio Capri, en el sur de la ciudad de Cali (ofertas de vivienda)
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_subdatos$cordenada_longitud, lat = datos_subdatos$Cordenada_latitud, radius
= 1, color = "purple", label = paste0( 'ID',datos_subdatos$ID, 'Precio:', datos_subdatos$precio_millon,'Area:',
datos_subdatos$Area_contruida, 'Barrio:', datos_subdatos$Barrio,' Lat: ' ,datos_subdatos$Cordenada_latitud, 'Long:',datos_subdatos$cordenada_longitud)) %>% addTiles()
El barrio Capri se ubica en la comuna 17 de Cali, al sur de la ciudad. Es una zona residencial consolidada, conocida por su tranquilidad, accesibilidad y oferta de servicios. Capri cuenta con una infraestructura urbana bien desarrollada, incluyendo supermercados, centros educativos, parques, restaurantes y acceso a vías principales como la Avenida Pasoancho y la Calle 5. Además, se encuentra cerca de centros comerciales como Unicentro y Jardín Plaza, lo que incrementa su atractivo para quienes buscan una buena calidad de vida en el sur de la ciudad. Esta combinación de factores lo convierte en un sector interesante tanto para compradores de vivienda como para inversionistas del mercado inmobiliario.
## Indicadores de centralidad y variabilidad para la variable "precio"
promedio_precio=mean (datos_subdatos$precio_millon,na.rm = TRUE)
mediana_precio=median(datos_subdatos$precio_millon,na.rm = TRUE)
minimo_precio=min(datos_subdatos$precio_millon,na.rm = TRUE)
maximo_precio= max(datos_subdatos$precio_millon,na.rm = TRUE)
desvest_precio=sd(datos_subdatos$precio_millon, na.rm = TRUE)
indic_precio=data.frame(promedio_precio,mediana_precio, minimo_precio, maximo_precio, desvest_precio)
indic_precio
## promedio_precio mediana_precio minimo_precio maximo_precio desvest_precio
## 1 300.3571 270 165 840 131.1865
La imagen presenta un resumen estadístico de los precios de oferta de viviendas en el barrio Capri, expresados en millones de pesos colombianos (COP). El precio promedio es de aproximadamente $300,36 millones, mientras que la mediana se ubica en $270 millones, lo cual indica que la distribución presenta un sesgo positivo: hay algunas propiedades con precios notablemente altos que elevan el promedio por encima de la mediana. El precio mínimo observado es de $165 millones, y el máximo alcanza los $840 millones, reflejando una amplia variabilidad en los precios. Esta dispersión se ve respaldada por una desviación estándar de $131,19 millones, lo que sugiere que los valores de las propiedades pueden diferir considerablemente dependiendo de factores como el área construida, número de habitaciones, acabados, o ubicación exacta dentro del barrio. Esta información es clave como punto de partida para un análisis de regresión lineal que busque explicar qué variables están asociadas con el precio de la vivienda en Capri.
## Indicadores de centralidad y variabilidad para la variable "precio"
# Indicadores de centralidad y variabilidad para la variable "Area_contruida"
promedio_area <- mean(datos_subdatos$Area_contruida, na.rm = TRUE)
mediana_area <- median(datos_subdatos$Area_contruida, na.rm = TRUE)
minimo_area <- min(datos_subdatos$Area_contruida, na.rm = TRUE)
maximo_area <- max(datos_subdatos$Area_contruida, na.rm = TRUE)
desvest_area <- sd(datos_subdatos$Area_contruida, na.rm = TRUE)
indic_area <- data.frame(promedio_area, mediana_area, minimo_area, maximo_area, desvest_area)
indic_area
## promedio_area mediana_area minimo_area maximo_area desvest_area
## 1 148.0213 106 68 520 102.5165
El área promedio construida de las casas ofertadas en el barrio Capri es de 148 m², mientras que la mediana es de 106 m², lo que sugiere que la mayoría de las viviendas tienen áreas menores al promedio, influenciado por algunas propiedades significativamente más grandes, esto tiene sentido ya que en la muestra haymás apartamentos en ofertas que casas. El área mínima es de 68 m² y la máxima de 520 m², con una desviación estándar de 102,5 m², lo cual evidencia una alta dispersión en los tamaños de las propiedades, un factor clave para explicar la variación en los precios de venta.
# Cargar plotly
library(plotly)
# Crear y mostrar el histograma interactivo
ggplotly(
ggplot(datos_subdatos, aes(x=precio_millon)) +
geom_histogram(binwidth=150, fill="steelblue", color="black", alpha=0.6) +
labs(title="Figura 1. Histograma del Precio de Viviendas en Capri",
x="Precio",
y="Frecuencia") +
theme_minimal()
)
El histograma muestra que la mayoría de las viviendas ofertadas en el barrio Capri tienen precios entre $165 y $350 millones, con una menor frecuencia de propiedades en rangos más altos. La distribución está sesgada a la derecha, lo que indica la presencia de algunas propiedades con precios considerablemente altos que no representan el comportamiento general del mercado. Esto coincide con lo observado en el resumen estadístico, donde el promedio es mayor que la mediana.
library(ggplot2)
library(plotly)
# Crear gráfico interactivo con correlación
ggplotly(
ggplot(datos_subdatos, 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 2. Relación entre Área Construida y Precio\nCoef. de correlación:",
round(cor(datos_subdatos$precio_millon, datos_subdatos$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 áea construida puede ser significativa para explicar los cambios en los precios ya que el gráfico evidencia relación lineal (positiva).Se evidencia una relación fuerte entre las variables, con un coeficiente de correlación de 0.84.
Interacciones entre variables cualitativas y cuantitativas
Este modelo no tiene efectos principales por separado, solo interacciones. Eso significa que:
El efecto del área construida sobre el precio depende completamente del tipo de vivienda (casa o apartamento).
Cada tipo de vivienda tiene su propia pendiente (su propio efecto del área construida sobre el precio).
El intercepto (186.074) no tiene una interpretación directa porque no hay efecto principal de zona ni de área construida.
mod1=lm(precio_millon~Tipo:Area_contruida,data = datos_subdatos)
summary (mod1)
##
## Call:
## lm(formula = precio_millon ~ Tipo:Area_contruida, data = datos_subdatos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -112.37 -41.31 0.94 25.28 340.39
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 186.07401 25.57515 7.276 1.62e-09 ***
## TipoApartamento:Area_contruida 0.58931 0.23171 2.543 0.0139 *
## TipoCasa:Area_contruida 0.99289 0.09755 10.178 4.52e-14 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 68.28 on 53 degrees of freedom
## Multiple R-squared: 0.739, Adjusted R-squared: 0.7291
## F-statistic: 75.01 on 2 and 53 DF, p-value: 3.493e-16
Interpretación β₁ (TipoApartamento:Area_construida):Por cada metro cuadrado adicionalen el área construida, el precio promedio de un apartamento aumenta en 0.589 millones de pesos.Este coeficiente es estadísticamente significativo (p = 0.0139 < 0.05).
β₂ (Tipocasa:Area_construida): Por cada metro cuadrado adicional en el área construida, el preciopromedio de una casa aumenta en 0.993 millones de pesos.Este coeficiente es altamente significativo (p < 0.001). En general se puede afirmar que por metro cuadrado adicional construido, el precio en millones aumenta más en una casa que en un apartamento. Evaluación del modelo
R² = 0.739: El modelo explica aproximadamente el 74% de la variabilidad en el precio, lo cual es un buen ajuste
p-value < 3.493e-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 el tipo de vivienda. Por ejemplo, ampliar una casa genera mucho más valor que hacerlo en un apartamento.
par(mfrow=c(2,2))
plot(mod1)
1. Residuos vs Ajustados (arriba izquierda) ¿Qué busca?: Ver si los errores (residuos) están distribuidos aleatoriamente.
Hay una curvatura y cierta concentración de residuos negativos para valores pequeños, y algunos puntos extremos a la derecha, lo que sugiere 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 6724, este tiene tanto un residuo grande como alta leverage, y está más allá de la línea de Cook’s distance = 0.5, lo que indica que podría ser un punto influyente que distorsiona el modelo.
Conclusión general
*El modelo podría beneficiarse de transformar alguna variable (como log del área). Tiene indicios de heterocedasticidad y no normalidad en los residuos extremos, además algunas observaciones tienen alta influencia y deben revisarse más a fondo.
mod2=lm(precio_millon~log(Area_contruida),data = datos_subdatos)
summary (mod2)
##
## Call:
## lm(formula = precio_millon ~ log(Area_contruida), data = datos_subdatos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -116.48 -31.77 -6.86 26.90 339.21
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -759.98 85.58 -8.88 3.84e-12 ***
## log(Area_contruida) 219.07 17.58 12.46 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 67.26 on 54 degrees of freedom
## Multiple R-squared: 0.7419, Adjusted R-squared: 0.7371
## F-statistic: 155.2 on 1 and 54 DF, p-value: < 2.2e-16
El coeficiente de log(Área_construida) es 219.07, lo que indica que un aumento del 1% en el área construida se asocia con un incremento de aproximadamente 2.2 millones de pesos en el precio de la vivienda (219.07 × log(1.01) ≈ 2.18). Un aumento del 10% en el área implicaría un incremento de cerca de 22 millones. Esta relación es altamente significativa (p < 2e-16). Además, el modelo explica un 73.7% de la variación en el precio, lo que indica un buen ajuste en esta muestra.
par(mfrow=c(2,2))
plot(mod2)
Aplicar el logaritmo al modelo mejoró notablemente el cumplimiento de
los supuestos de regresión. Los residuos se distribuyen de forma más
simétrica y con varianza constante, como se observa en los gráficos de
residuos y Scale-Location. Además, el Q-Q plot muestra una mejor
aproximación a la normalidad. Aunque el punto 6724 sigue siendo atípico,
su influencia es menor. En conjunto, el modelo logarítmico es más
estable y adecuado para el análisis.
¿Que pasa al predecir con este modelo transformado, por ejemplo cual seria el precio estimado de una vivienda en el barrio capri de cali con un área construida 148 metros cuadrados?
# Crear un nuevo dataframe con el valor del área
nueva_area <- data.frame(Area_contruida = 148)
# Generar el pronóstico del precio
predict(mod2, newdata = nueva_area)
## 1
## 334.7723
El precio estimado según este modelo de una vivienda en el barrio de capri en la ciudad de Cali, con un área construida de 148 metros cuadrados es de 335 millones aproximadamente.
Este modelo de regresión tiene varios beneficios prácticos para el sector inmobiliario.Para las constructoras, ofrece una herramienta valiosa para determinar los precios de un proyecto en una localidad cercana o similar dependiendo de los m2 que tenga; para las inmobiliarias, es útil para identificar qué propiedades tienen más potencial de generar comisiones más altas, ya que conocer el valor estimado de las viviendas en una zona específica, los agentes pueden enfocarse en las propiedades que tienen mayores márgenes de ganancia, optimizando su tiempo y esfuerzo.
Los dueños de propiedades también se benefician, ya que al querer vender su casa, pueden usar el modelo para fijar un precio justo, les ayuda a evitar tanto el sobreprecio como la subvaloración, asegurando que su propiedad esté bien posicionada en el mercado, también saber si agregar un metro cuadrado adicional en una casa realmente aumentaría el valor de la propiedad de manera más significativa que en un apartamento, ayudándoles a decidir si es más rentable ampliar una casa o construir un apartamento en el mismo barrio.Por otro lado, los compradores tienen la ventaja de conocer el valor estimado de una casa en un barrio determinado, lo que les permite tomar decisiones más informadas y asegurarse de no pagar de más.
Se busca definir qué factores influyen con mayor impacto en el precio de la vivienda en el barrio Capri.
mod3 = lm(precio_millon~Area_contruida + Habitaciones + Banos , data = datos_subdatos)
summary (mod3)
##
## Call:
## lm(formula = precio_millon ~ Area_contruida + Habitaciones +
## Banos, data = datos_subdatos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -104.88 -46.26 -10.41 31.10 209.42
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 69.4946 33.3339 2.085 0.042015 *
## Area_contruida 0.7667 0.1546 4.961 7.9e-06 ***
## Habitaciones 40.4737 11.5068 3.517 0.000914 ***
## Banos -11.3222 16.6677 -0.679 0.499968
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 64.53 on 52 degrees of freedom
## Multiple R-squared: 0.7712, Adjusted R-squared: 0.758
## F-statistic: 58.44 on 3 and 52 DF, p-value: < 2.2e-16
Interpretación Precio_millon=69.4946+0.7667(Area_construida)+40.4737(Habitaciones)−11.3222(Baños) En este modelo el intercepto no tiene interpretación lógica. β1(0.7667): indica que por cada metro cuadrado adicional en el área construida, el precio de la propiedad aumenta en 0.7667 millones de pesos. Esto indica que el tamaño de la propiedad tiene una relación directa y significativa con el precio.
β2(40.4737): Este coeficiente indica que cada habitación adicional en la propiedad aumenta el precio aproximadamente en 40.4737 millones de pesos. Es decir, tener más habitaciones en una propiedad incrementa considerablemente su valor, es significativa.
β3(-11.3222): Este coeficiente es negativo, lo que sugiere que cada baño adicional reduce el precio de la propiedad en 11.3222 millones de pesos. Aunque este resultado puede parecer contraintuitivo, podría reflejar una correlación en los datos que sugiere que las propiedades con más baños no siempre son valoradas más altas, o bien, puede ser que en ciertos contextos de mercado (por ejemplo, propiedades de lujo o en zonas específicas), más baños no necesariamente aumenten la demanda o el valor.Además no es significativo. Evaluación del modelo
R² = 0.7712: El modelo explica aproximadamente el 77% de la variabilidad en el precio, lo cual es un buen ajuste
p-value <2.2e-16: El modelo es estadísticamente significativo
Conclusión:El área construida y el número de habitaciones tienen un impacto positivo en el precio, lo que significa que a mayor área o más habitaciones, el valor de la propiedad sube. En cambio, el número de baños tiene un impacto negativo, lo que sugiere que en algunos contextos más baños pueden no ser tan valorados o pueden estar correlacionados con propiedades de características diferentes.
mod_multiple3=step(mod3)
## Start: AIC=470.57
## precio_millon ~ Area_contruida + Habitaciones + Banos
##
## Df Sum of Sq RSS AIC
## - Banos 1 1921 218447 469.06
## <none> 216526 470.57
## - Habitaciones 1 51516 268042 480.52
## - Area_contruida 1 102472 318998 490.26
##
## Step: AIC=469.06
## precio_millon ~ Area_contruida + Habitaciones
##
## Df Sum of Sq RSS AIC
## <none> 218447 469.06
## - Habitaciones 1 53299 271746 479.29
## - Area_contruida 1 119525 337971 491.50
Como se puede observar el AIC es más bajo al eliminar la variable baños,lo que confirma que no es significativa para el modelo, quitandola tendría mejor ajuste.
summary(mod_multiple3)
##
## Call:
## lm(formula = precio_millon ~ Area_contruida + Habitaciones, data = datos_subdatos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -97.55 -42.32 -12.44 36.09 223.99
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 57.0461 27.7026 2.059 0.044400 *
## Area_contruida 0.7134 0.1325 5.385 1.69e-06 ***
## Habitaciones 37.0765 10.3104 3.596 0.000709 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 64.2 on 53 degrees of freedom
## Multiple R-squared: 0.7692, Adjusted R-squared: 0.7605
## F-statistic: 88.33 on 2 and 53 DF, p-value: < 2.2e-16
Precio_millon=57.0461+0.7134(Area_construida)+37.0765(Habitaciones) Interpretación
β1(0.7134): Por cada metro cuadrado adicional en el área construida, el precio de la propiedad aumenta en promedio 0.7134 millones de pesos. Este coeficiente refleja que el tamaño de la propiedad tiene un impacto positivo y significativo en el precio.
37.0765 β2(37.0765): Cada habitación adicional en la propiedad aumenta el precio en promedio 37.0765 millones de pesos. Esto muestra que las propiedades con más habitaciones son valoradas más alto, y que las habitaciones son una variable signitiva en la determinación del precio.
Si bien la variable baños no genera ningun beneficio adicional al modelo en terminos de ajuste, R2 disminuye porcentualmente, aunque por muy poco.
par(mfrow=c(2,2))
plot(mod_multiple3)
La presencia de heteroscedasticidad y la distribución no normal de los
residuos sugieren que una transformación logarítmica podría ser útil
para mejorar el ajuste del modelo, especialmente para estabilizar la
varianza y aproximar la normalidad de los residuos.
library(ggplot2)
library(plotly)
# Crear gráfico interactivo con correlación
ggplotly(
ggplot(datos_subdatos, aes(x = Habitaciones, 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 3. Relación entre Habitaciones y Precio\nCoef. de correlación:",
round(cor(datos_subdatos$precio_millon, datos_subdatos$Habitaciones, use = "complete.obs"), 2)),
x = "Habitaciones",
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 una fuerte relación positiva (correlación de 0.8) entre habitaciones y precio, indicando que a más habitaciones, mayor es el precio de la propiedad.
A continuación se aplicara la transformación logarítmica a las variables de diferente forma para ver cual tiene mejor ajuste.
mod4=lm(log(precio_millon)~(Area_contruida)+Habitaciones,data = datos_subdatos)
summary (mod4)
##
## Call:
## lm(formula = log(precio_millon) ~ (Area_contruida) + Habitaciones,
## data = datos_subdatos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.33171 -0.13357 0.01432 0.12352 0.39378
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.0493262 0.0896498 56.323 < 2e-16 ***
## Area_contruida 0.0023400 0.0004287 5.458 1.3e-06 ***
## Habitaciones 0.0633959 0.0333659 1.900 0.0629 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2078 on 53 degrees of freedom
## Multiple R-squared: 0.6964, Adjusted R-squared: 0.6849
## F-statistic: 60.77 on 2 and 53 DF, p-value: 1.918e-14
mod5=lm(log(precio_millon)~log(Area_contruida)+log(Habitaciones),data = datos_subdatos)
summary (mod5)
##
## Call:
## lm(formula = log(precio_millon) ~ log(Area_contruida) + log(Habitaciones),
## data = datos_subdatos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.3645 -0.1327 -0.0162 0.1163 0.4627
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.72154 0.25617 10.624 9.71e-15 ***
## log(Area_contruida) 0.56754 0.07159 7.928 1.46e-10 ***
## log(Habitaciones) 0.12875 0.12244 1.052 0.298
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.1852 on 53 degrees of freedom
## Multiple R-squared: 0.7588, Adjusted R-squared: 0.7497
## F-statistic: 83.39 on 2 and 53 DF, p-value: < 2.2e-16
mod6=lm(log(precio_millon)~log(Area_contruida)+Habitaciones,data = datos_subdatos)
summary (mod6)
##
## Call:
## lm(formula = log(precio_millon) ~ log(Area_contruida) + Habitaciones,
## data = datos_subdatos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.3543 -0.1317 -0.0188 0.1187 0.4070
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.87315 0.28177 10.197 4.24e-14 ***
## log(Area_contruida) 0.53456 0.07265 7.358 1.20e-09 ***
## Habitaciones 0.04595 0.02845 1.615 0.112
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.1826 on 53 degrees of freedom
## Multiple R-squared: 0.7654, Adjusted R-squared: 0.7565
## F-statistic: 86.44 on 2 and 53 DF, p-value: < 2.2e-16
Aplicando las transformaciones logarítmicas se puedeo bservar que la variable habitaciones ya no es significativa.
# Graficar los residuos vs los valores ajustados
par(mfrow=c(2,2)) # Configurar la disposición de los gráficos
plot(mod6) # Generar los gráficos de diagnóstico para el modelo
Este modelo 6 sigue presentando problemas de heteroscedasticidad más
evidentes y de no normalidad de los residuos, lo que podría afectar la
precisión de las predicciones.
Modelo Múltiple descartando la variable habitaciones
# Actualizar el modelo quitando la variable Habitaciones
mod7 = lm(log(precio_millon) ~ log(Area_contruida), data = datos_subdatos)
# Resumen del modelo actualizado
summary(mod7)
##
## Call:
## lm(formula = log(precio_millon) ~ log(Area_contruida), data = datos_subdatos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.3832 -0.1204 -0.0184 0.1057 0.5322
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.61573 0.23581 11.09 1.53e-15 ***
## log(Area_contruida) 0.62301 0.04845 12.86 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.1853 on 54 degrees of freedom
## Multiple R-squared: 0.7538, Adjusted R-squared: 0.7493
## F-statistic: 165.3 on 1 and 54 DF, p-value: < 2.2e-16
# Graficar los residuos vs los valores ajustados
par(mfrow=c(2,2)) # Configurar la disposición de los gráficos
plot(mod7) # Generar los gráficos de diagnóstico para el modelo
el modelo 7 presenta una mejora significativa en la validez de los
supuestos de homoscedasticidad, normalidad de los residuos y en la
reducción de puntos influyentes en comparación con el modelo 6. Esto
hace que el modelo 7 sea una opción más confiable y robusta para hacer
predicciones y realizar inferencias. # Elección del mejor
modelo
# Ajustar los modelos
mod2 =lm(precio_millon~log(Area_contruida),data = datos_subdatos)
mod_multiple3 = lm(precio_millon ~ Area_contruida + Habitaciones, data = datos_subdatos)
mod5 = lm(log(precio_millon)~log(Area_contruida)+log(Habitaciones),data = datos_subdatos)
mod6 = lm(log(precio_millon)~log(Area_contruida)+Habitaciones,data = datos_subdatos)
mod7 = lm(log(precio_millon) ~ log(Area_contruida), data = datos_subdatos)
# Comparar AIC de los modelos
AIC(mod2, mod_multiple3, mod5,mod6,mod7)
## df AIC
## mod2 3 634.24572
## mod_multiple3 4 629.98213
## mod5 4 -25.05967
## mod6 4 -26.59449
## mod7 3 -25.90330
# Comparar R cuadrado ajustado
summary(mod2)$adj.r.squared
## [1] 0.7371249
summary(mod_multiple3)$adj.r.squared
## [1] 0.7605077
summary(mod5)$adj.r.squared
## [1] 0.7497463
summary(mod6)$adj.r.squared
## [1] 0.756512
summary(mod7)$adj.r.squared
## [1] 0.749256
Aunque el modelo 6 tiene el AIC más bajo, lo que generalmente indica un mejor ajuste, no es necesariamente el mejor modelo cuando se consideran los supuestos estadísticos. El modelo 2, aunque no tiene el AIC más bajo, cumple de manera más robusta con los supuestos de homoscedasticidad y normalidad de los residuos, lo cual es esencial para garantizar la precisión de las inferencias y las predicciones. En comparación con el modelo 7, que muestra una ligera mejora respecto al modelo 6 en algunos supuestos, el modelo 2 sigue siendo superior porque presenta una varianza más constante en los residuos y se ajusta mejor a una distribución normal, sin los problemas de heteroscedasticidad y la desviación de la normalidad que son más evidentes en los otros modelos. Por lo tanto, aunque el AIC sugiera que el modelo 6 es el mejor, en términos de fiabilidad y cumplimiento de los supuestos, el modelo 2 es la mejor opción para hacer pronósticos y realizar análisis más precisos.