CASO VIVIENDAS A&C

Con base en los datos de ofertas de vivienda descargadas del portal Fincaraiz para apartamento de estrato 4 con área construida menor a 200 m2 (vivienda4.RDS) la inmobiliaria A&C requiere el apoyo de un cientifico de datos en la construcción de un modelo que lo oriente sobre los precios de inmuebles.Con este propósito el equipo de asesores a diseñado los siguientes pasos para obtener un modelo y así poder a futuro determinar los precios de los inmuebles a negociar

PUNTO 1

Realice un análisis exploratorio de las variables precio de vivienda (millones de pesos COP) y área de la vivienda (metros cuadrados) - incluir gráficos e indicadores apropiados interpretados.

Desarrollo

library(paqueteMETODOS)
data(vivienda4)
data_Apto <-subset(vivienda4,vivienda4$tipo == "Apartamento")

La información con la que se realizará el analisis solo incluye los inmuebles tipo “Apartamemto”, según lo planteado en el enunciado, este corresponde a 1363 registros, como vemos a continuación:

data_Apto
## # A tibble: 1,363 × 5
##    zona       estrato preciom areaconst tipo       
##    <fct>      <fct>     <dbl>     <dbl> <fct>      
##  1 Zona Norte 4          232.        52 Apartamento
##  2 Zona Norte 4          255.       108 Apartamento
##  3 Zona Sur   4          258.        96 Apartamento
##  4 Zona Norte 4          250.        82 Apartamento
##  5 Zona Norte 4          247.        75 Apartamento
##  6 Zona Norte 4          222.        60 Apartamento
##  7 Zona Norte 4          227.        84 Apartamento
##  8 Zona Norte 4          255.       117 Apartamento
##  9 Zona Norte 4          232.        60 Apartamento
## 10 Zona Norte 4          237.        75 Apartamento
## # ℹ 1,353 more rows
summary(data_Apto)
##            zona      estrato     preciom        areaconst     
##  Zona Centro :   7   3:   0   Min.   :207.4   Min.   : 40.00  
##  Zona Norte  : 237   4:1363   1st Qu.:228.8   1st Qu.: 60.00  
##  Zona Oeste  :  52   5:   0   Median :236.1   Median : 70.00  
##  Zona Oriente:   2   6:   0   Mean   :237.7   Mean   : 75.48  
##  Zona Sur    :1065            3rd Qu.:243.6   3rd Qu.: 84.00  
##                               Max.   :305.2   Max.   :200.00  
##           tipo     
##  Apartamento:1363  
##  Casa       :   0  
##                    
##                    
##                    
## 

Con este información podemos observar que no tenemos datos faltantes en la base de datos suministrada. adicionalmente observamos que las 5 variables suministradas en la base de datos son las siguientes:

  1. variable zona de tipo: Cualitativa-nominal
frecuencia_zona <- table(data_Apto$zona)
porcentajes <- round(100 * frecuencia_zona / sum(frecuencia_zona), 1)
barras <- barplot(frecuencia_zona, main = "Diagrama de Barras de zona", 
                  xlab = "Zona", ylab = "Frecuencia", col = "skyblue", 
                  border = "black", ylim = c(0, max(frecuencia_zona) * 1.2))
text(barras, frecuencia_zona + 0.5, labels = paste(porcentajes, "%"), pos = 3, cex = 0.8, col = "black")

Con esta grafica podemos apreciar que los apartamentos analisados estan ubicados en 5 zonas, la mayor parte de estos pertenecen a la zona sur (78.1%), le sigue la zona norte (17.4%), continua la zona oeste, zona oriente y zona centro.

  1. variable estrato de tipo: cualitativa-ordinal
frecuencia_estrato <- table(data_Apto$estrato)
porcentajes <- round(100 * frecuencia_estrato / sum(frecuencia_estrato), 1)
barras <- barplot(frecuencia_estrato, main = "Diagrama de Barras de Estratos", 
                  xlab = "Estrato", ylab = "Frecuencia", col = "skyblue", 
                  border = "black", ylim = c(0, max(frecuencia_estrato) * 1.2))
text(barras, frecuencia_estrato + 0.5, labels = paste(porcentajes, "%"), pos = 3, cex = 0.8, col = "black")

con este grafico podemos apreciar que el 100% de la muestra de apartamentos pertenecen al estrato 4.

  1. variable preciom de tipo: cuantitativa-continua
length(data_Apto$preciom)
## [1] 1363
summary(data_Apto$preciom) 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   207.4   228.8   236.1   237.7   243.6   305.2
hist(data_Apto$preciom)

boxplot(data_Apto$preciom, xlab="Apartamentos", ylab="Precios de apartamentos")

de acuerdo a las graficas e información sintetizada de la muestra vemos que el valor de los apartamentos que estamos analizando cuestan entre 207.4 millones y 305.2 millones, la mediana corresponde a 236.1 millones (50% de los valores se encuentran por debajo y 50% de los valores por encima) y la media de la muestra es 237.7 millones, el hecho de que la media sea mayor que la mediana significa que hay un leve sesgo hacia la derecha (se puede evidenciar en el histograma) por la presencia de alguno valores extremadamente altos (lo que podemos evidenciar en el grafico de caja).del histograma adjunto podemos rescatar que la mayoria de los apartamentos tiene un valor alrededor de los 230-240 millones de pesos, adicionalmente vemos en el grafico de cajas que tenemos algunos valores por encima de los 260 millones que deberian analizarse para cerciorarnos de si son atipicos y si afectan nuestra muestra.

a continuación vemos como se distribuyen los precios por zona, vemos que los valores mas altos tienden a ser en la zona centro, sin embargo en la zona norte y sur tenemos que algunos apartamentos tienen valores superiores a los 280 millones, valores significativamente altos en esta muestra

boxplot(data_Apto$preciom ~ data_Apto$zona, 
        main = "Distribución de Precios por Zonas",
        xlab = "Zonas", ylab = "Precio",
        col = "lightblue", border = "black")

  1. variable areaconst de tipo: cuantitativa-continua
summary(data_Apto$areaconst) 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   40.00   60.00   70.00   75.48   84.00  200.00
hist(data_Apto$areaconst)

boxplot(data_Apto$areaconst, xlab="Apartamentos", ylab="Area Construida de apartamentos")

de acuerdo a las graficas e información sintetizada de la muestra vemos que el tamaño de los apartamentos que estamos analizando estan entre 40 metros cuadrados y 200 metros cuadrados, la mediana corresponde a 70 m^2 (50% de los valores se encuentran por debajo y 50% de los valores por encima) y la media de la muestra es 75.48 m^2, eal igual que lo evidenciado con la valoriable preciom hay un leve sesgo hacia la derecha (se puede evidenciar en el histograma) por la presencia de alguno valores extremadamente altos (lo que podemos evidenciar en el grafico de caja).del histograma adjunto podemos rescatar que la mayor frecuencia de area para los apartamentos de la muestra esta entre 50-60 m^2, adicionalmente vemos en el grafico de cajas que tenemos algunos valores por encima de los 100 m^2 que deberian analizarse para cerciorarnos de si son atipicos y si afectan nuestra muestra.

a continuación vemos como se distribuyen las areas de los apartamentos por zona, vemos que los valores mas altos tienden a ser en la zona centro, sin embargo en la zona norte y sur tenemos que algunos apartamentos tienen vun area superior a la tendencia de la muestra.

boxplot(data_Apto$areaconst ~ data_Apto$zona, 
        main = "Distribución de area construida por Zonas",
        xlab = "Zonas", ylab = "area construida",
        col = "lightblue", border = "black")

  1. variable tipo: cualitativa-nominal
frecuencia_tipo <- table(data_Apto$tipo)
porcentajes <- round(100 * frecuencia_tipo / sum(frecuencia_tipo), 1)
barras <- barplot(frecuencia_tipo, main = "Diagrama de Barras de Tipo", 
                  xlab = "Tipo", ylab = "Frecuencia", col = "skyblue", 
                  border = "black", ylim = c(0, max(frecuencia_tipo) * 1.2))
text(barras, frecuencia_tipo + 0.5, labels = paste(porcentajes, "%"), pos = 3, cex = 0.8, col = "black")

Con esta grafica podemos ver que para este ejercicio la muestra unicamente contiene inmuebles de tipoa apartamento donde se tienen 1363 datos, pero la data original nos suministraba 1706 registros, al tomar unicamente la información correspondiente a los apartamentos trabajamos con el 79.9% de la data inicial, como vemos en la grafica a continuación.

frecuencia_tipo_inmueble <- table(vivienda4$tipo)
porcentajes <- round(100 * frecuencia_tipo_inmueble / sum(frecuencia_tipo_inmueble), 1)
etiquetas <- paste(names(frecuencia_tipo_inmueble), "(", porcentajes, "%)", sep="")
pie(frecuencia_tipo_inmueble, labels = etiquetas, main = "Gráfico de Pie de Zonas", col = rainbow(length(frecuencia_tipo_inmueble)))

PUNTO 2

Realice un análisis exploratorio bivariado de datos, enfocado en la relación entre la variable respuesta (precio) en función de la variable predictora (área construida) - incluir gráficos e indicadores apropiados interpretados.

Desarrollo

Para esto graficaremos la relación entre las variables area construida y precio:

x <- data_Apto$areaconst  
y <- data_Apto$preciom  
plot(x,y)

cor.test(x,y, method = "pearson")
## 
##  Pearson's product-moment correlation
## 
## data:  x and y
## t = 58.616, df = 1361, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.8305531 0.8607445
## sample estimates:
##       cor 
## 0.8463271
library(GGally)
ggpairs(data_Apto[,3:4], title="Data Apartamentos") 

a traves de la visualización de la grafica de la variable x (area construida) y la variables y (precio) podemos determinar que entre estas 2 variables existe un relación lineal positiva y directa, adicionalmente al revisar el coeficiente de correlación obtenemos que es del 0.846, este se considera una correlación fuerte debido a que es mayor que 0.8.

PUNTO 3

Estime el modelo de regresión lineal simple entre precio=f(area)+ε.Interprete los coeficientes del modelo β0, β1 en caso de ser correcto.

Desarrollo

Plantearemos el modelo con la siguiente estructura: variable predictora X=areaconstruida variable respuesta y=precio

el objetivo es plantear una función de la forma y= B0+B1*x+ε

modelo <- lm(y ~ x, data = data_Apto)
modelo
## 
## Call:
## lm(formula = y ~ x, data = data_Apto)
## 
## Coefficients:
## (Intercept)            x  
##    200.0635       0.4984
summary(modelo)
## 
## Call:
## lm(formula = y ~ x, data = data_Apto)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -26.5139  -5.0886  -0.0031   4.6406  24.3309 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 2.001e+02  6.698e-01  298.67   <2e-16 ***
## x           4.984e-01  8.503e-03   58.62   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 7.081 on 1361 degrees of freedom
## Multiple R-squared:  0.7163, Adjusted R-squared:  0.7161 
## F-statistic:  3436 on 1 and 1361 DF,  p-value: < 2.2e-16

al ver el resumen del del modelo lineal tenemos que la prueba f nos arroja un valor p de 2.2e-16, este es muy pequeño indicandonos que hay evidencia fuerte para rechazar el h0 indicandonos que para la ecuación del modelo que alguno de los coeficientes B0 o B1 serán diferente de cero.

B0: usando la estadistica t para analizar los coeficientes obtenemos sobre el intercepto (B0) el valor p es 2e-16 este es menor que el alpha de 0.05, por lo tanto validamos que el intercepto es diferente de cero y en la prueba se establece con el valor de 200.1.

B1: usando la estadistica t para analizar los coeficientes obtenemos sobre la pendiente (B1) el valor p es 2e-16 este es menor que el alpha de 0.05, por lo tanto validamos que la pendiente es diferente de cero y en la prueba se establece con el valor de 0.4984

por lo tanto la ecuación planteada es: y = 200.001+0.4984*(x)+ε

el intercepto nos indicaria que el minimo valor de un apartamento corresponde a 200.1 millones lo que ocurre si x es cero pero para este contexto no aplicaria porque no podemos tener un aparatamento con 0 metros cuadrados, podemos interpretarlo para decir que los apartamentos estimados con este modelo costarán minimo 200.1 millones.

la pendiente nos indica que por cada metro cuadrado adicional en el apartamento aumentara el precio en 0.4984 unidades.

PUNTO 4

Construir un intervalo de confianza (95%) para el coeficiente β1, interpretar y concluir si el coeficiente es igual a cero o no. Compare este resultado con una prueba de hipótesis t.

Desarrollo

confint(object = modelo, level = 0.95)
##                   2.5 %     97.5 %
## (Intercept) 198.7494103 201.377500
## x             0.4817357   0.515097

en la prueba t vimos que el valor del intercepto no es cero, al traer el intervalo de confianza del 95% de los coeficientes tenemos que para el intercepto el rango establecido contiene el valor arrojado por la prueba t, 200.1 se encuentra entre 198.74 y 201.37 lo cual tiene concondancia.

PUNTO 5

Calcule e interprete el indicador de bondad R2

Desarrollo

este indicador se calcula al establecer el modelo lineal

resumen <- summary(modelo)
r2 <- resumen$r.squared
r2
## [1] 0.7162696

obtenemos que el valor es del 0.716, lo que nos indica que la variable área en el modelo planteado explica aproximadamente el 71.62696% de los datos generados para el precio de los apartamentos.

PUNTO 6

¿Cuál sería el precio promedio estimado para un apartamento de 110 metros cuadrados? Considera entonces con este resultado que un apartamento en la misma zona con 110 metros cuadrados en un precio de 200 millones sería una atractiva esta oferta? ¿Qué consideraciones adicionales se deben tener?.

Desarrollo

para responder esta pregunta calcularemos el valor de un apartamento de 110 m^2 según el modelo lineal:

predict(modelo, data.frame(x=110), interval = "confidence", level = 0.95)
##        fit      lwr      upr
## 1 254.8893 254.2014 255.5771

este valor seria de 254 millones según lo establecido por el modelo planteado, si se encuentra un apartamento con las mismas condiciones en un valor de 200 millones seguramente será una oferta mas atractiva el de menor valor, sin embargo hay multiples consideraciones a tener en cuenta, el numero de habitaciones, baños, que tan moderno es el inmueble, si cuenta con ascensor, acabados internos, entre otras variables que en este momento no contamos con la información requerida para realizar la comparación, lo que si tenemos que tener en cuenta es que el valor de 200 millones es muy inferior corresponden a 54 millones menos lo cual puede sugerir que el inmueble sufre algun tipo de defecto, afectación o que bien al vendedor le urge hallar un comprador y esta dispuesto a sacribir una parte del valor real del inmueble.

PUNTO 7

Realice la validación de los supuestos del modelo por medio de gráficos apropiados, interpretarlos y sugerir posibles soluciones si se violan algunos de ellos. Utilice las pruebas de hipótesis para la validación de supuestos y compare los resultados con lo observado en los gráficos asociados.

Desarrollo

Realizaremos la validación de los 3 supuestos: Normalidad, Homoscedasticidad, No Autocorrelación y visualización de outliers

  1. Prueba de Normalidad
shapiro.test(residuals(modelo))
## 
##  Shapiro-Wilk normality test
## 
## data:  residuals(modelo)
## W = 0.99885, p-value = 0.5419

El resultado del Valor p es mayor al alpha, lo que nos indica que no rechazo H0, por lo tanto los errores estan normalmente distribuidos.

  1. Prueba de Independencia de los errores
plot(modelo$residuals)

lmtest::dwtest(modelo)
## 
##  Durbin-Watson test
## 
## data:  modelo
## DW = 2.0204, p-value = 0.6435
## alternative hypothesis: true autocorrelation is greater than 0

El resultado del Valor p es mayor al alpha, lo que nos indica que no rechazo H0, por lo tanto los errores muestarn independencia entre ellos.

  1. Prueba de homocedasticidad:
lmtest::bptest(modelo)
## 
##  studentized Breusch-Pagan test
## 
## data:  modelo
## BP = 0.83288, df = 1, p-value = 0.3614

El resultado del Valor p es mayor al alpha, lo que nos indica que no rechazo H0, por lo tanto los errores tienen varianza constante.

  1. verificación visual de los residuos
par(mfrow = c(2, 2)) 
plot(modelo) 

para concluir tenemos que se cumplen los supuestos planteados para el modelo y por lo tanto es un modelo aceptable que explica la relación de las variables en un 71.62696%

PUNTO 8

De ser necesario realice una transformación apropiada para mejorar el ajuste y supuestos del modelo.

Desarrollo

Se planteará realizar la transformación Box-cox, para lo cual buscaremos el lambda optimo y calcularemos el r^2 del modelo y validaremos los supuestos.

library(MASS)
bc <- boxcox(modelo, lambda = seq(-4, 4, by = 0.1))

lambda_opt <- bc$x[which.max(bc$y)]
lambda_opt
## [1] 1.010101
y_transformada <- (y^lambda_opt - 1) / lambda_opt
y_transformada
##    [1] 241.9598 265.8042 268.9251 260.9126 257.6685 231.4795 236.1270 266.3223
##    [9] 241.1886 246.6539 251.2294 238.4156 244.8608 249.5092 240.7009 232.8037
##   [17] 249.5805 251.4250 238.8173 235.6706 257.3511 237.9183 241.5414 310.1592
##   [25] 286.5344 269.5570 257.8290 246.2990 226.7782 249.9312 252.2231 228.1093
##   [33] 248.4866 237.3954 241.2886 240.2267 250.0698 232.5049 253.6439 247.7728
##   [41] 237.9969 249.4109 234.1480 233.6231 246.8983 231.4172 228.2670 230.5669
##   [49] 227.6668 243.3355 236.1110 244.2421 236.2220 238.5140 253.0278 236.0145
##   [57] 251.8915 248.7060 273.3408 255.3140 243.3251 245.4185 230.2899 231.5574
##   [65] 233.2835 249.9044 248.5088 236.3602 250.3436 244.5304 248.8255 234.2248
##   [73] 247.9701 240.2549 245.4132 235.6310 245.0835 276.0274 238.0511 236.3741
##   [81] 243.5658 244.0853 226.5553 232.3133 231.9756 233.5057 253.9737 244.6785
##   [89] 243.2599 249.9815 265.5642 255.8594 247.0261 272.9993 261.8201 264.2974
##   [97] 238.8202 263.5333 243.3931 225.7394 244.9225 238.7550 241.5089 256.7728
##  [105] 250.1826 246.7901 241.9238 225.9635 254.4004 253.8385 267.8453 225.5025
##  [113] 239.3665 246.0296 228.2290 238.2934 253.9059 316.1858 241.7499 290.9186
##  [121] 278.9989 232.2980 244.0445 278.4660 266.2958 274.8411 254.1392 244.1488
##  [129] 233.7027 242.3334 244.0455 244.1193 228.3155 246.3257 284.1817 232.3637
##  [137] 244.0665 237.0874 245.7412 247.2713 223.5909 253.4746 243.3493 229.3533
##  [145] 236.7717 251.6599 269.1079 243.0762 247.8611 232.2192 245.5101 239.1532
##  [153] 244.8371 239.3637 232.8046 242.2979 240.1307 221.5424 240.9638 237.5627
##  [161] 251.6103 246.8190 254.6951 255.1982 253.5259 241.6030 228.1187 248.1814
##  [169] 264.2348 258.4338 271.9134 275.0301 265.6799 266.2189 251.0366 267.3320
##  [177] 247.0514 264.7893 240.3889 285.1634 293.8842 243.0185 297.1598 263.5199
##  [185] 231.4298 230.1473 233.3106 245.6364 240.0165 245.1942 240.5858 248.4809
##  [193] 242.6077 264.6731 264.2668 243.9752 238.3850 245.0879 241.8261 239.7842
##  [201] 229.1327 241.8477 246.5552 243.9683 245.2657 239.5042 238.1394 241.8098
##  [209] 230.5446 242.6093 259.7068 251.7012 241.2357 248.9072 250.1626 247.0727
##  [217] 246.1722 246.0439 229.1692 233.6424 229.8088 254.3677 227.7994 261.8677
##  [225] 240.1074 248.6922 269.9263 252.5141 238.9190 249.2398 264.5685 245.0423
##  [233] 244.6721 255.6045 232.6687 241.7043 236.6016 235.6468 237.9076 254.3789
##  [241] 235.5156 237.6133 242.1883 241.4310 241.8719 230.1696 229.5792 239.7125
##  [249] 225.4955 284.1937 240.1773 271.2204 233.9187 243.3996 244.9948 243.8127
##  [257] 246.0430 244.9261 235.1970 251.9842 253.6184 319.1222 253.6575 267.3515
##  [265] 270.2984 235.3396 261.7096 284.5292 266.1706 256.2627 236.8051 240.5796
##  [273] 265.9267 261.7478 255.6333 282.8443 255.5059 245.7764 241.5632 290.5770
##  [281] 252.4794 251.0548 271.3500 288.4960 238.4571 235.0557 235.5573 250.7406
##  [289] 252.0202 239.6454 246.2278 245.4706 232.8650 248.2645 252.0455 251.5772
##  [297] 230.0440 239.3866 238.2273 234.1171 250.0693 243.0166 233.4054 240.4877
##  [305] 242.0140 235.5756 234.7212 250.6731 240.4282 234.5111 238.1666 231.6568
##  [313] 250.5068 245.5930 233.9871 234.1164 235.1288 230.8902 236.9159 238.8633
##  [321] 236.3304 239.3235 235.4005 252.8432 258.9227 236.5696 226.8557 233.9090
##  [329] 244.9878 231.3191 259.6640 244.7386 248.2602 235.8028 242.1872 239.8675
##  [337] 252.8923 240.7876 243.6727 242.9987 254.3101 244.7330 238.0921 230.6215
##  [345] 219.2091 260.7141 255.8782 255.4942 242.8241 243.3897 269.9149 239.3353
##  [353] 240.9820 233.1713 228.4039 233.0311 243.9420 257.1556 232.0367 251.8420
##  [361] 241.7044 216.8603 229.6613 240.3421 259.6813 243.9432 242.9597 230.1754
##  [369] 231.1784 223.0726 241.3975 242.8435 246.3412 232.1605 243.4000 294.2859
##  [377] 230.6757 255.6914 245.2397 237.2506 234.8129 263.8572 261.5182 281.0793
##  [385] 314.0953 307.3667 247.9421 312.2671 296.0022 285.4794 271.5406 287.1856
##  [393] 266.8984 265.8771 263.5800 234.9799 265.2731 263.7137 273.8284 242.9225
##  [401] 250.3677 247.9427 249.6103 238.8996 246.2565 238.0924 268.7617 235.8309
##  [409] 256.6183 255.5832 250.2443 250.8709 247.7536 252.4912 235.9930 240.7481
##  [417] 256.0049 241.2856 234.6871 251.2718 255.7888 246.9222 254.0717 244.9628
##  [425] 257.7148 257.4529 240.2698 251.7567 272.8421 250.3563 231.0623 255.5187
##  [433] 246.0005 254.0483 246.7234 276.3774 226.5302 249.4981 242.4545 239.9255
##  [441] 274.8716 264.4841 248.5227 241.9658 246.8649 247.3249 254.9252 252.2592
##  [449] 244.0345 246.0145 243.7610 249.9035 249.3036 250.6348 268.6945 270.4627
##  [457] 274.0453 234.5084 262.1060 271.3132 248.9428 248.4386 252.8040 251.1456
##  [465] 252.3689 269.7938 266.2032 252.8618 256.8589 248.6040 259.1903 243.2871
##  [473] 231.3882 253.1580 248.2605 264.6714 246.7536 256.7230 243.4717 250.9627
##  [481] 248.6347 256.6436 246.4250 261.5026 253.9249 245.0314 266.2494 220.2601
##  [489] 251.7289 254.5757 269.2148 256.0296 245.9678 267.1637 235.8992 243.6110
##  [497] 256.7225 236.4223 268.4103 247.5337 231.2041 222.0444 248.9241 246.2273
##  [505] 270.6386 239.9173 247.3391 253.0074 238.6015 258.2027 261.3596 259.9949
##  [513] 250.2129 261.5481 237.3022 260.8356 255.5165 252.8375 247.0033 261.0783
##  [521] 268.1105 238.3142 247.3363 237.4823 252.9642 267.0442 255.1868 259.7459
##  [529] 242.7984 243.3692 272.8173 277.8122 253.3708 268.6963 246.6474 230.4254
##  [537] 250.9513 240.2137 253.6847 222.5067 251.6840 278.7123 233.3185 240.2432
##  [545] 234.5226 252.1898 243.6042 264.3569 248.7872 242.7405 251.4638 238.2256
##  [553] 245.1526 255.2329 250.6104 269.9481 250.7391 239.8785 272.6001 291.4215
##  [561] 238.1239 248.2924 248.3646 236.9332 233.4675 239.9892 254.6387 243.6738
##  [569] 256.1388 255.8490 245.9427 268.9239 254.9576 251.7467 252.1633 253.7798
##  [577] 264.6076 246.4555 271.4068 287.3877 281.4564 248.2365 240.3949 249.2199
##  [585] 241.9567 249.4304 246.6281 275.5216 254.3338 262.2387 269.2130 245.6358
##  [593] 233.7542 257.7547 249.8766 232.3317 228.1460 233.6663 234.0096 246.6716
##  [601] 233.9665 240.8720 230.9154 233.5521 242.3669 228.9538 250.2298 246.4006
##  [609] 260.4377 243.9602 232.2015 259.5923 231.9755 226.4140 249.7267 241.3421
##  [617] 233.2520 284.2006 272.7751 235.4524 263.9449 253.5084 264.5509 251.6086
##  [625] 253.1065 240.3980 270.0355 254.3455 254.9648 243.7795 294.0061 239.4387
##  [633] 236.9269 243.3567 246.6290 259.6967 253.3475 246.9611 242.6666 244.8093
##  [641] 260.4713 245.9352 247.2900 242.4789 245.8392 258.0039 242.9805 254.0317
##  [649] 240.7514 243.6111 243.7309 246.0864 245.9050 247.4799 247.1017 269.4727
##  [657] 254.9316 256.5632 257.0013 257.0672 265.1055 247.9218 242.5167 312.1006
##  [665] 250.8188 262.8235 310.5873 224.9899 293.4709 253.2592 240.9283 245.0679
##  [673] 249.0097 235.2293 250.3060 254.6167 250.4173 248.3283 252.7007 253.3234
##  [681] 246.6528 254.4576 232.2488 259.6962 248.8003 258.7850 250.4829 262.7800
##  [689] 240.5471 242.7147 237.5936 244.0188 246.1369 246.9624 234.0724 246.1485
##  [697] 243.0297 227.7454 249.9367 251.6058 250.9789 235.7693 233.6590 229.6047
##  [705] 250.7103 244.9629 248.8662 245.1676 245.2667 242.1150 244.7215 241.1727
##  [713] 253.0582 236.5721 251.3661 249.9687 238.4206 261.8407 229.7675 249.4843
##  [721] 246.8393 246.0531 240.7668 237.1141 234.7488 245.2705 237.0863 246.5102
##  [729] 247.6435 249.4594 239.0365 247.2390 241.5463 238.8752 249.6325 249.1366
##  [737] 233.8737 242.5659 268.6845 268.0820 241.5655 258.8753 237.1760 258.9545
##  [745] 262.3325 246.4057 250.8481 223.1448 243.9599 249.6105 252.8138 240.7590
##  [753] 228.5782 268.6586 248.4846 258.9929 267.8782 240.2844 250.4761 250.3963
##  [761] 267.4998 241.8771 285.1052 256.5566 250.7882 232.6649 299.0637 280.9752
##  [769] 276.5579 255.6445 289.1977 229.7372 251.8551 314.2095 255.0547 268.3878
##  [777] 276.5441 293.6767 249.7050 257.8487 245.1271 247.2083 268.0964 265.0152
##  [785] 258.8296 226.4508 233.9141 297.7808 234.9833 246.1277 251.2364 250.0150
##  [793] 254.4264 238.2595 249.4143 266.9081 266.9081 249.9168 266.0358 261.2666
##  [801] 278.7058 264.6574 245.9029 269.9425 284.1167 243.0981 289.9253 248.8439
##  [809] 246.0681 236.4757 250.3769 243.9293 243.0686 240.3585 250.1819 259.2327
##  [817] 279.1827 270.0987 247.4352 252.0714 284.4373 259.9518 226.4797 248.3788
##  [825] 246.6560 249.0569 246.2945 250.6561 236.2004 268.7586 267.5314 240.6197
##  [833] 255.2338 249.8396 259.8586 258.4688 241.5476 240.2018 250.7855 244.0488
##  [841] 232.2603 245.1432 250.4298 237.4464 226.9043 252.3286 244.3292 230.1245
##  [849] 250.8946 242.5288 262.2690 242.7050 249.8803 257.5268 246.4906 250.4233
##  [857] 240.0068 257.4971 249.2300 231.7611 234.8568 235.5529 228.6674 250.5405
##  [865] 236.8958 271.9179 237.0757 254.6843 252.9828 254.1624 251.6019 258.4560
##  [873] 240.4161 229.6399 250.6722 239.3627 246.6662 232.1922 243.6233 237.0510
##  [881] 245.9015 225.3304 232.5691 224.6519 246.5055 238.9856 251.6167 243.3918
##  [889] 248.2169 237.6034 244.9934 234.4595 256.2252 234.7829 225.7465 240.0971
##  [897] 249.1227 229.5868 243.0667 234.4478 237.1614 238.0225 230.3734 236.9347
##  [905] 264.4973 229.1083 226.9043 233.0584 260.5859 258.0389 243.1000 258.1202
##  [913] 238.8595 231.9024 243.2708 236.6810 238.2099 245.3500 250.0175 260.0910
##  [921] 244.4930 249.2376 265.3787 226.8233 255.2512 247.0845 232.0037 251.4356
##  [929] 248.8472 248.1185 228.7223 241.8423 260.5627 241.7406 243.8307 256.3538
##  [937] 247.2474 234.3665 233.9433 251.0955 242.2995 258.8546 239.1883 244.9604
##  [945] 246.4129 247.5444 253.9762 237.0855 226.5081 237.8650 231.6621 237.2740
##  [953] 239.4664 249.5944 245.6900 233.8550 244.0867 234.4811 241.9617 240.3812
##  [961] 224.8461 232.0748 233.9691 248.2095 240.4796 231.9267 228.6831 235.7331
##  [969] 255.8979 248.4888 250.0582 235.2673 233.0546 237.9381 240.9993 252.8473
##  [977] 236.7004 232.8079 248.3171 242.0173 256.2885 240.7234 241.4039 252.1338
##  [985] 215.7102 238.1651 254.3509 246.7196 259.9295 236.8057 236.5886 241.9381
##  [993] 248.3980 239.1629 239.3633 236.1591 235.9488 224.9010 238.3584 249.8247
## [1001] 241.2883 239.4365 239.2430 225.9089 245.3007 229.0829 234.7950 246.1109
## [1009] 250.3940 248.9436 246.7052 255.8775 247.8947 240.9981 238.7571 254.7000
## [1017] 250.3276 258.0107 232.3135 243.1418 241.4590 240.4695 241.8046 241.1231
## [1025] 249.2816 232.4808 228.4751 251.6071 268.1612 235.5547 244.1610 253.2360
## [1033] 251.5381 248.5099 234.6739 246.8183 274.1707 266.5777 238.9678 236.0907
## [1041] 245.5593 240.4311 226.4355 241.8006 230.0670 239.3181 246.7540 239.3233
## [1049] 239.8570 235.5009 244.5085 227.2210 246.2400 245.9122 230.0700 252.2765
## [1057] 242.9782 230.9040 225.5033 256.3723 238.1717 231.0974 230.4195 242.8547
## [1065] 235.6670 243.4190 240.5927 247.8200 255.4798 243.4183 253.9343 245.4764
## [1073] 272.5794 245.7646 243.5940 231.5941 247.8657 237.1728 236.3788 263.6280
## [1081] 248.3591 246.2539 256.8506 251.2073 239.6677 244.1041 270.8929 255.8373
## [1089] 235.9008 264.0714 254.3743 248.7464 257.4276 255.0677 238.2924 249.3840
## [1097] 250.7694 234.3000 247.6857 259.8341 227.4660 258.4936 243.9284 235.2929
## [1105] 250.1376 235.6273 253.2232 236.4580 241.4082 243.1473 236.6479 234.2678
## [1113] 245.2731 246.4672 238.3010 238.7080 244.1782 247.2152 252.3865 233.6734
## [1121] 244.3033 235.0210 247.2881 235.2776 248.3375 255.4486 231.7641 252.1386
## [1129] 258.3512 254.1476 240.2592 250.4229 244.8698 270.6822 229.7810 248.3721
## [1137] 243.5273 252.2032 237.6186 225.7809 268.1365 241.8935 230.8454 236.8390
## [1145] 252.1789 250.9314 246.0547 235.1148 245.6758 237.4028 232.7304 236.0362
## [1153] 240.8805 252.3571 230.6411 253.9046 235.7386 240.6498 253.9219 256.0932
## [1161] 240.7906 245.2400 248.3494 237.3079 246.8065 260.1978 247.2258 240.8197
## [1169] 245.9290 246.2463 250.9134 252.9744 254.1166 236.3629 259.2762 251.5866
## [1177] 260.1221 251.7262 247.0096 244.1963 253.6487 246.0040 250.4935 264.2594
## [1185] 248.9747 271.3146 257.6492 241.7025 247.0374 263.7624 253.9568 245.3555
## [1193] 242.7649 232.5839 259.9580 241.6154 241.5253 230.5805 228.3122 240.5104
## [1201] 244.6025 263.7956 243.8732 234.7625 234.4732 232.6031 242.2731 227.5612
## [1209] 247.6227 256.1130 239.3493 248.5726 266.5685 251.9164 241.1302 258.0907
## [1217] 241.7244 259.8388 223.7293 253.4749 252.8080 241.9128 251.6859 262.3075
## [1225] 252.1232 243.6496 269.6565 255.1208 243.0387 235.5429 233.1909 242.1322
## [1233] 250.0033 242.5378 250.6834 247.6171 235.9306 234.8204 240.5030 235.3201
## [1241] 231.5048 257.8505 242.2068 257.1784 247.7690 234.5316 239.0936 231.2929
## [1249] 246.2348 248.4413 249.9735 248.8578 234.2450 237.0665 236.1846 249.9593
## [1257] 248.8011 236.6022 258.0603 233.3260 241.2850 229.8598 238.5887 243.7974
## [1265] 227.1703 236.8399 243.8636 240.4446 241.0088 222.4214 231.6846 220.5418
## [1273] 229.3788 234.6109 241.3026 259.4397 247.0916 245.5071 250.0813 246.9603
## [1281] 231.7377 232.9486 239.0102 239.4307 228.4471 236.9026 257.6428 240.7088
## [1289] 236.7828 259.0788 246.2898 228.4270 224.3683 266.4021 242.6496 248.5234
## [1297] 254.7516 254.7922 237.9608 241.4512 236.9912 245.9720 247.8466 259.3032
## [1305] 254.9799 248.0363 251.0223 247.5891 244.6974 250.7245 250.9331 235.7347
## [1313] 235.9782 254.0876 237.7766 244.4254 265.7515 246.5989 254.4541 252.8708
## [1321] 253.1230 236.4936 248.2545 237.0216 242.4000 243.6414 236.6683 250.8004
## [1329] 254.0615 230.1599 216.0661 240.9965 241.3531 246.7699 260.6872 243.2892
## [1337] 268.9548 291.4012 247.3659 264.4172 278.3296 267.5059 274.1437 267.5662
## [1345] 248.6790 252.4447 247.3624 234.9050 260.9049 233.0450 250.2025 252.8505
## [1353] 272.6325 250.7122 271.1444 224.1571 245.9269 230.8552 256.8406 237.8561
## [1361] 220.8704 236.1808 255.7573
modelo_transformado <- lm(y_transformada ~ x, data_Apto)
summary(modelo_transformado)
## 
## Call:
## lm(formula = y_transformada ~ x, data = data_Apto)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -28.0390  -5.3827  -0.0074   4.9051  25.7219 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 2.079e+02  7.079e-01  293.71   <2e-16 ***
## x           5.270e-01  8.986e-03   58.64   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 7.483 on 1361 degrees of freedom
## Multiple R-squared:  0.7165, Adjusted R-squared:  0.7163 
## F-statistic:  3439 on 1 and 1361 DF,  p-value: < 2.2e-16

a continuación realizaremos la Validación de supuestos Normalidad, Homoscedasticidad, No Autocorrelación y visualización de outliers

  1. Prueba de Normalidad
shapiro.test(residuals(modelo_transformado))
## 
##  Shapiro-Wilk normality test
## 
## data:  residuals(modelo_transformado)
## W = 0.99885, p-value = 0.5361

El resultado del Valor p es mayor al alpha, lo que nos indica que no rechazo H0, por lo tanto los errores estan normalmente distribuidos.

  1. Prueba de Independencia de los errores
plot(modelo_transformado$residuals)

lmtest::dwtest(modelo_transformado)
## 
##  Durbin-Watson test
## 
## data:  modelo_transformado
## DW = 2.0204, p-value = 0.6432
## alternative hypothesis: true autocorrelation is greater than 0

El resultado del Valor p es mayor al alpha, lo que nos indica que no rechazo H0, por lo tanto los errores muestarn independencia entre ellos.

  1. Prueba de homocedasticidad:
lmtest::bptest(modelo_transformado)
## 
##  studentized Breusch-Pagan test
## 
## data:  modelo_transformado
## BP = 0.7931, df = 1, p-value = 0.3732

El resultado del Valor p es mayor al alpha, lo que nos indica que no rechazo H0, por lo tanto los errores tienen varianza constante.

  1. verificación visual de los residuos
par(mfrow = c(2, 2)) 
plot(modelo) 

resumen_ajustado <- summary(modelo_transformado)
r2_ajustado <- resumen_ajustado$r.squared
r2_ajustado
## [1] 0.7164648

para el modelo transformado tenemos que se cumplen los supuestos planteados y por lo tanto es un modelo aceptable que explica la relación de las variables en un 71.64648% para este modelo la ecuación planteada seria: y = 207.9+0.527*(x)+ε

PUNTO 9

De ser necesario compare el ajuste y supuestos del modelo inicial y el transformado.

Desarrollo

al comparar el modelo inicial lineal y el planteado por el box-cox vemos que en ambos se cumplen los supuestos y que el indicador de bondad de ajustes es muy similar, para el modelo inicial el valor es del 71.62696% y el del modelo ajustado es del 71.64648%, indicandonos que el modelo mas optimo es el ajustado y la ecuación mas acertada y = 207.9+0.527*(x)+ε.

PUNTO 10

Estime varios modelos y compare los resultados obtenidos. En el mejor de los modelos, ¿se cumplen los supuestos sobre los errores?

Desarrollo

Procederemos a realizar la prueba con otros modelos:

modelo_lm_log <- lm(preciom ~ log(areaconst), data = data_Apto)
summary(modelo_lm_log)
## 
## Call:
## lm(formula = preciom ~ log(areaconst), data = data_Apto)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -22.9725  -5.4109  -0.1832   4.9141  24.1899 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     53.8202     3.4091   15.79   <2e-16 ***
## log(areaconst)  42.8778     0.7936   54.03   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 7.496 on 1361 degrees of freedom
## Multiple R-squared:  0.682,  Adjusted R-squared:  0.6818 
## F-statistic:  2919 on 1 and 1361 DF,  p-value: < 2.2e-16
modelo_log_lm <- lm(log(preciom) ~ areaconst, data = data_Apto)
summary(modelo_log_lm)
## 
## Call:
## lm(formula = log(preciom) ~ areaconst, data = data_Apto)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.104645 -0.020942  0.000593  0.019371  0.099110 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 5.318e+00  2.835e-03 1876.11   <2e-16 ***
## areaconst   2.007e-03  3.598e-05   55.77   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.02996 on 1361 degrees of freedom
## Multiple R-squared:  0.6956, Adjusted R-squared:  0.6954 
## F-statistic:  3110 on 1 and 1361 DF,  p-value: < 2.2e-16
modelo_log_log <- lm(log(preciom) ~ log(areaconst), data = data_Apto) 
summary(modelo_log_log)
## 
## Call:
## lm(formula = log(preciom) ~ log(areaconst), data = data_Apto)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.104277 -0.022240  0.000027  0.020782  0.093359 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    4.722680   0.014102  334.91   <2e-16 ***
## log(areaconst) 0.174148   0.003283   53.05   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.03101 on 1361 degrees of freedom
## Multiple R-squared:  0.674,  Adjusted R-squared:  0.6738 
## F-statistic:  2814 on 1 and 1361 DF,  p-value: < 2.2e-16
modelo_lm_lm <- lm(preciom ~ areaconst, data = data_Apto)
summary(modelo_lm_lm)
## 
## Call:
## lm(formula = preciom ~ areaconst, data = data_Apto)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -26.5139  -5.0886  -0.0031   4.6406  24.3309 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 2.001e+02  6.698e-01  298.67   <2e-16 ***
## areaconst   4.984e-01  8.503e-03   58.62   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 7.081 on 1361 degrees of freedom
## Multiple R-squared:  0.7163, Adjusted R-squared:  0.7161 
## F-statistic:  3436 on 1 and 1361 DF,  p-value: < 2.2e-16
summary(modelo_lm_log)$r.squared
## [1] 0.6820159
summary(modelo_log_lm)$r.squared
## [1] 0.6955958
summary(modelo_log_log)$r.squared
## [1] 0.6740362
summary(modelo_lm_lm)$r.squared
## [1] 0.7162696

de los modelos probados el mejor fue el modelo lineal, en este se cumplen los supuestos, sin embargo el modelo planteado por el box-cox obtiene el mejor indicador de bondad de ajuste y adicionalmente se cumplen los suspuestos.

PUNTO 11

Con los resultados obtenidos construya un informe para los directivos de la inmobiliaria, indicando el modelo apropiado y sus principales características. A este informe se deben añadir los anexos como evidencia de la realización de los pasos anteriores.

Desarrollo

Tras realizar todos los análisis estadísticos necesarios para este informe de la inmobiliaria A&C, se concluye que el modelo que mejor predice el precio de los inmuebles en función del área construida es el modelo hallado a través de la transformación box-cox. Esto se debe a que dicho modelo cumple mejor con los supuestos de normalidad necesarios para una regresión lineal, alcanzando una precisión del 71.64648% con la función y = 207.9+0.527*(x)+ε.

Sin embargo también podrían usar el modelo lineal el cual no difiere mucho en cuanto a precisión, resulta ser un poco inferior, siendo esta del 71.62696% con la función y = 200.001+0.4984*(x)+ε.

Si bien la empresa quisiera aumentar el ajuste del modelo se podría probar con un modelo donde se involucren otras variables de la data suministrada como la zona o incluyendo variables que hoy no se consideran en el estudio como el numero de habitaciones, baños, si cuenta con parqueadero, etc.