# Cargamos las librerías necesarias
library(readxl)
library(GGally)
## Loading required package: ggplot2
## Registered S3 method overwritten by 'GGally':
## method from
## +.gg ggplot2
library(lmtest)
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
# Cargar el archivo especificando el rango de celdas y los tipos de columna
BienesyCasas1 <- read_excel("BienesyCasas1.xlsx",
range = "A1:F100",
col_types = c("numeric", "numeric", "numeric", "numeric", "text", "text"))
# Visualización de correlaciones
ggpairs(BienesyCasas1[, 1:4])

# Modelo de regresión inicial
modelo_inicial <- lm(y ~ ., data = BienesyCasas1)
summary(modelo_inicial)
##
## Call:
## lm(formula = y ~ ., data = BienesyCasas1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -14660 -4197 1308 4161 16174
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.134e+05 5.470e+03 39.018 < 2e-16 ***
## x1 3.482e+01 3.631e+00 9.590 1.5e-15 ***
## x2 1.531e+02 1.958e+03 0.078 0.93784
## x3 8.616e+02 3.208e+02 2.685 0.00858 **
## x41 1.650e+04 1.581e+03 10.440 < 2e-16 ***
## x51 1.751e+03 1.704e+03 1.028 0.30678
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 6572 on 93 degrees of freedom
## Multiple R-squared: 0.7697, Adjusted R-squared: 0.7573
## F-statistic: 62.16 on 5 and 93 DF, p-value: < 2.2e-16
# Análisis de residuales del modelo inicial
residuales_iniciales <- modelo_inicial$residuals
summary(residuales_iniciales)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -14660 -4197 1308 0 4161 16174
# Ajuste de un modelo modificado excluyendo variables poco significativas
modelo_modificado <- lm(y ~ x1 + x3 + x4, data = BienesyCasas1)
summary(modelo_modificado)
##
## Call:
## lm(formula = y ~ x1 + x3 + x4, data = BienesyCasas1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -13490 -4597 1323 3699 17295
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.133e+05 5.275e+03 40.429 < 2e-16 ***
## x1 3.522e+01 2.541e+00 13.863 < 2e-16 ***
## x3 9.234e+02 3.133e+02 2.948 0.00403 **
## x41 1.596e+04 1.472e+03 10.841 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 6540 on 95 degrees of freedom
## Multiple R-squared: 0.7671, Adjusted R-squared: 0.7597
## F-statistic: 104.3 on 3 and 95 DF, p-value: < 2.2e-16
# Evaluación de residuos del modelo modificado
residuales_modificado <- modelo_modificado$residuals
summary(residuales_modificado)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -13490 -4597 1323 0 3699 17295
# Pruebas para supuestos del modelo
shapiro.test(residuales_modificado) # Prueba de normalidad
##
## Shapiro-Wilk normality test
##
## data: residuales_modificado
## W = 0.96594, p-value = 0.0115
gqtest(modelo_modificado) # Prueba de homocedasticidad
##
## Goldfeld-Quandt test
##
## data: modelo_modificado
## GQ = 1.079, df1 = 46, df2 = 45, p-value = 0.3998
## alternative hypothesis: variance increases from segment 1 to 2
dwtest(modelo_modificado) # Prueba de autocorrelación
##
## Durbin-Watson test
##
## data: modelo_modificado
## DW = 1.946, p-value = 0.2167
## alternative hypothesis: true autocorrelation is greater than 0
# Visualización de diagnóstico para el modelo modificado
par(mfrow = c(2, 2))
plot(modelo_modificado)

# Predicción y evaluación de precios de casas específicas
casas_nuevas <- data.frame(x1 = c(2190, 1848),
x3 = c(4, 9),
x4 = as.factor(c("1", "0")))
# Ajusta la predicción multiplicando por 1000 para convertir a pesos si necesario
resultados_prediccion <- predict(modelo_modificado, newdata = casas_nuevas, interval = "confidence") * 1000
# Mostrar los resultados de predicción
print(resultados_prediccion)
## fit lwr upr
## 1 310053682 306680559 313426805
## 2 286660747 284713359 288608135
# Resultados de predicción para las casas específicas
Explicación:
- Carga de datos y tipos de columnas: Especificamos los tipos de datos
mientras cargamos el archivo para mantener la integridad de los
datos.
- Visualización de correlaciones: Usamos ggpairs para visualizar
correlaciones entre las variables numéricas y detectar posibles
relaciones lineales.
- Modelo de regresión: Ajustamos un modelo inicial con todas las
variables y luego un modelo modificado sin las variables menos
significativas (como x2 y x5 en tu análisis original).
- Evaluación de residuos y pruebas estadísticas: Realizamos pruebas
para normalidad, homocedasticidad y autocorrelación para validar los
supuestos del modelo.
- Predicción de precios: Utilizamos el modelo modificado para predecir
los precios de casas específicas, ajustando las predicciones para su
interpretación en términos de pesos colombianos (multiplicando por 1000
si la unidad original está en miles).