Informe Ejecutivo

Bogotá, 15 de Septiembre de 2023

Señores INMOBILIARIA C&A Junta Directiva Cali

Referencia: Informe Construcción de Modelo sobre precios de Inmuebles.

Respetados Señores,

A continuación, el informe de los hallazgos frente a la construcción del modelo de precios de inmuebles después de revisada la Base de datos enviada por sus asesores:

  1. Definición del Problema: Con base en los datos de ofertas de vivienda descargadas de la base de datos, requieren el apoyo en la construcción de un modelo que les oriente sobre los precios de los inmuebles para la compañia internacional que desea ubicar a dos de sus empleados con sus familias en la ciudad.

  2. Revisión de la data Disponible: Se recibe un dataset (o base de datos) en formato R con 8.322 filas y 13 variables disponibles para evaluar entre ellas: Zona , Estrato, Precio M2, Área Construida, Tipo de Inmueble, etc.

Frente a los requermientos del cliente evaluamos estas como las mejores opciones:

Solicitud del Cliente No. 1

Casa No. 1: Precio de Venta $321 Millones , area construida 249 m2, parqueaderos 1, baños 5, habitaciones 5, Barrio la merced que se encontaria ubicado en la comuna 3 de cali empezando
la zona norte de Cali, es una zona de bastante historica y puede que la casa sea un poco
vieja por lo cual es importante hacer la visita tecnica para evaluar las condiciones de la misma.

Casa No. 2: Precio de Venta $250 Millones , area construida 243 m2, parqueaderos 1, baños 4, habitaciones 5, Barrio el bosque que se encontaria ubicado en la comuna 2 de cali es un
barrio de 53 años aprox. donde habitan principalmente personas pensionadas cobn parques grandes alrededor.

Casa No. 3: Precio de Venta $330 Millones , area construida 260 m2, parqueaderos 1, baños 3, habitaciones 4, Barrio la merced que se encontaria ubicado en la comuna 3 de cali empezando
la zona norte de Cali, es una zona de bastante historica y puede que la casa sea un poco
vieja por lo cual es importante hacer la visita tecnica para evaluar las condiciones de la misma.

Casa No. 4: Precio de Venta $350 Millones , area construida 346 m2, parqueaderos 1, baños 2, habitaciones 4, Barrio vipasa ubicado en la comuna 3 de cali muy cerca a los cerros el bosque y los altos de menga se conoce por sus multiples parques y sus zonas verdes.

Casa No. 5: Precio de Venta $35 Millones , area construida 202 m2, parqueaderos 1, baños 4, habitaciones 5, Barrio el bosque que se encontaria ubicado en la comuna 2 de cali es un
barrio de 53 años aprox. donde habitan principalmente personas pensionadas cobn parques grandes alrededor.

Solicitud del Cliente No. 2

Apartamento No. 1: Precio de Venta $730 Millones , area construida 573 m2, parqueaderos 3,
baños 8, habitaciones 5, Barrio Guadalupe ubicado en la comuna 19 de cali en el sector hay clases socioeconómicas media y alta en el extremo sur de la ciudad.

Apartamento No. 2: Precio de Venta $670 Millones , area construida 300 m2, parqueaderos 3,
baños 5, habitaciones 6, Barrio seminario ubicado en la comuna 19 de cali en el sector hay clases socioeconómicas media y alta en el extremo sur de la ciudad.

Conclusiones del Modelo Evaluado.

Frente a la definición del problema inicial en la construcción de un modelo que les oriente sobre los precios de los inmuebles con la data evaluada y los diferentes modelos se puede concluir que se sugiere que se debe buscar otro tipo de modelo diferentes a los evaluados que permitan explicar esa variable de precio debido a que esta no es explicada en buena medida solo por el área construida y estrato en su gran medida.

Adicional es claro que en el data set entregado no se contemplaron todas las variables del estudio por lo cual seria importante ver si desde la fuente existen otras variables que no se contemplaron y que nos permitirían acercarnos de manera más precisa al modelo en este caso parace importamte tener en cuenta el año del predio debido a que esta variable nos permitiria ver en funcion del precio realmente que es lo mas conveniente para los clientes.

Se adjuntan documento R-Mark Down con las líneas de código de las variables y funciones evaluadas que acompañan cada una de las interpretaciones de los gráficos y tablas relacionadas en este informe, todas realizadas en el programa R estudio.

Quedo atenta a sus comentarios,

Laura Yohanna Bermúdez Murillo

Data Science Independiente

Análisis de Datos

A continuación, se muestran los resultados del análisis de los datos:

REQUERIMIENTO No. 1

ACTIVIDAD No. 1

Revision de los requerimientos por parte de una compañía internacional que desea ubicar a dos de sus empleados con sus familias en la ciudad con las siguientes condiciones:

# Cargar el paquete knitr
library(knitr)
## Warning: package 'knitr' was built under R version 4.2.3
# Crear un conjunto de datos con las características de las viviendas
caracteristicas_viviendas <- data.frame(
  Características = c("Tipo", "Área construida", "Parqueaderos", "Baños", "Habitaciones", "Estrato", "Zona", "Crédito preaprobado"),
  Vivienda_1 = c("Casa", 200, 1, 2, 4, "4 o 5", "Norte", "350 millones"),
  Vivienda_2 = c("Apartamento", 300, 3, 3, 5, "5 o 6", "Sur", "850 millones"))

# Crear la tabla con kable
tabla_caracteristicas <- kable(caracteristicas_viviendas, format = "markdown", col.names = c("", "Vivienda 1", "Vivienda 2"))

# Imprimir la tabla
print(tabla_caracteristicas)
## 
## 
## |                    |Vivienda 1   |Vivienda 2   |
## |:-------------------|:------------|:------------|
## |Tipo                |Casa         |Apartamento  |
## |Área construida     |200          |300          |
## |Parqueaderos        |1            |3            |
## |Baños               |2            |3            |
## |Habitaciones        |4            |5            |
## |Estrato             |4 o 5        |5 o 6        |
## |Zona                |Norte        |Sur          |
## |Crédito preaprobado |350 millones |850 millones |

BASE DE DATOS 1

Pasos requeridos para la obtención de los resultados

  1. Realice un filtro a la base de datos e incluya solo las ofertas de : base1: casas, de la zona norte de la ciudad. Presente los primeros 3 registros de las bases y algunas tablas que comprueben la consulta. (Adicional un mapa con los puntos de las bases. Discutir si todos los puntos se ubican en la zona correspondiente o se presentan valores en otras zonas, por que?).

a. Revisamos la data disponible:

DataVivienda <-read.csv("C:/Users/lberm/OneDrive/Documentos/MAESTRIA/MODELOS_APRENDIZAJE_ESTADIS/vivienda.csv")
str(DataVivienda)
## 'data.frame':    8322 obs. of  13 variables:
##  $ id       : int  8312 8311 8307 8296 8297 8298 8299 8300 8286 8287 ...
##  $ zona     : chr  "Zona Oeste" "Zona Oeste" "Zona Oeste" "Zona Sur" ...
##  $ piso     : int  4 1 NA 2 NA NA 2 NA NA 2 ...
##  $ estrato  : int  6 6 5 3 5 5 6 5 5 5 ...
##  $ preciom  : int  1300 480 1200 220 330 1350 305 480 275 285 ...
##  $ areaconst: num  318 300 800 150 112 390 125 280 74 120 ...
##  $ parquea  : int  2 1 4 1 2 8 2 4 1 2 ...
##  $ banios   : int  4 4 7 2 4 10 3 4 2 4 ...
##  $ habitac  : int  2 4 5 4 3 10 3 4 3 3 ...
##  $ tipo     : chr  "Apartamento" "Casa" "Casa" "Casa" ...
##  $ barrio   : chr  "arboleda" "normandía" "miraflores" "el guabal" ...
##  $ longitud : num  -76576 -76571 -76568 -76565 -76565 ...
##  $ latitud  : num  3454 3454 3455 3417 3408 ...

b. Se revisa que la informacion tenga consitencia en los datos antes de hacer los filtros correpondientes, como lo podemos evidencia en tipo Casa tenemos varias connotaciones para casa entonces procedemos a dejar una sola, en el caso Zona si se evidencia un solo nombre para zona norte, Corregimos los diferentes nombres de casa antes de aplicar los filtros:

Se excluye de la base de datos la columna piso ya que no es relevante dentro del informe.

borrar <- c("piso")
DataVivienda <- DataVivienda[ ,!(names(DataVivienda) %in% borrar)]
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.2.3
## 
## 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
DataVivienda1 <- DataVivienda %>%
  mutate(tipo = case_when(
    tipo %in% c("CASA", "Casa") ~ "casa",
    tipo %in% c("APARTAMENTO", "apto") ~ "Apartamento",
    TRUE ~ tipo  # Mantén cualquier otro valor tal como está
  ))
valores_unicos <- unique(DataVivienda1$tipo)
print(valores_unicos)
## [1] "Apartamento" "casa"        NA

c. Realice un filtro con : casas, zona norte y presentamos las muestras de los filtros.

# filtros punto 1: casas de la zona norte de la ciudad
library(dplyr)
punto_1 <- filter(DataVivienda1,zona == "Zona Norte" & tipo == "casa")
head(punto_1, 3)
##     id       zona estrato preciom areaconst parquea banios habitac tipo
## 1 8088 Zona Norte       3     149       130      NA      2       3 casa
## 2 6812 Zona Norte       4     670       470       4      5       5 casa
## 3 6673 Zona Norte       5     750       300       2      3       5 casa
##            barrio longitud latitud
## 1   brisas de los   -76555 3417.00
## 2  tejares de san   -76545    3.44
## 3 el gran limonar   -76544 3397.00

d. Mapa con los puntos de la base filtrada, todos los puntos se ubican en la zona correspondiente , porque?

str(punto_1)
## 'data.frame':    722 obs. of  12 variables:
##  $ id       : int  8088 6812 6673 6479 6338 6340 6141 6143 6155 5710 ...
##  $ zona     : chr  "Zona Norte" "Zona Norte" "Zona Norte" "Zona Norte" ...
##  $ estrato  : int  3 4 5 3 4 4 5 3 6 5 ...
##  $ preciom  : int  149 670 750 155 540 530 390 1100 550 1530 ...
##  $ areaconst: num  130 470 300 80 306 400 265 500 395 776 ...
##  $ parquea  : int  NA 4 2 NA 3 4 1 NA NA 6 ...
##  $ banios   : int  2 5 3 2 4 3 4 8 8 6 ...
##  $ habitac  : int  3 5 5 3 4 3 6 5 6 10 ...
##  $ tipo     : chr  "casa" "casa" "casa" "casa" ...
##  $ barrio   : chr  "brisas de los" "tejares de san" "el gran limonar" "villa del prado" ...
##  $ longitud : num  -76555 -76545 -76544 -76543 -76542 ...
##  $ latitud  : num  3417 3.44 3397 3449 3422 ...
require(leaflet)
## Loading required package: leaflet
## Warning: package 'leaflet' was built under R version 4.2.3
leaflet() %>% addTiles() %>% 
  setView(lng =  -76.51595234451665, lat = 3.436834062816008, zoom = 10)  %>%
  addCircleMarkers(lng = punto_1$longitud,
                   lat = punto_1$latitud,
                   stroke = FALSE, 
                   fillOpacity = 0.5,
                   radius = 4,
                   color = 'blue')
 Se observan con los filtros 717 datos y en mapa la mayor concentracion de  puntos se   
 ubican en el Norte de la ciudad de Cali, si se ven otros dispersos por toda la ciudad 
 esto se debe a varias posibilidades, entre las principales que destaco: el dataframe fue obtenido por la tecnica de web scraping lo que puede generar errores en la obtencion de la      data, otro problema es que hay errores de identificacion de los barrios o de las coordenadas 
del mismo por eso tendria que hacerse una re-verificacion para saber que tan confiable es la  data.

ACTIVIDAD No. 2

Realice un análisis exploratorio de datos enfocado en la correlación entre la variable respuesta (precio del apartamento) en función del área construida, estrato, numero de baños, numero de habitaciones y zona donde se ubica la vivienda. Use gráficos interactivos con el paquete plotly e interprete los resultados.

a. Analisis Descriptivo de las variables:

library(knitr)
punto_2 <-summary(punto_1[, c("preciom", "areaconst", "estrato", "banios", "habitac", "zona")])
knitr::kable(punto_2, caption = "ANALISIS DE LAS VARIABLES")
ANALISIS DE LAS VARIABLES
preciom areaconst estrato banios habitac zona
Min. : 89.0 Min. : 30.0 Min. :3.000 Min. : 0.000 Min. : 0.000 Length:722
1st Qu.: 261.2 1st Qu.: 140.0 1st Qu.:3.000 1st Qu.: 2.000 1st Qu.: 3.000 Class :character
Median : 390.0 Median : 240.0 Median :4.000 Median : 3.000 Median : 4.000 Mode :character
Mean : 445.9 Mean : 264.9 Mean :4.202 Mean : 3.555 Mean : 4.507 NA
3rd Qu.: 550.0 3rd Qu.: 336.8 3rd Qu.:5.000 3rd Qu.: 4.000 3rd Qu.: 5.000 NA
Max. :1940.0 Max. :1440.0 Max. :6.000 Max. :10.000 Max. :10.000 NA
head(punto_2)
##     preciom         areaconst         estrato          banios      
##  Min.   :  89.0   Min.   :  30.0   Min.   :3.000   Min.   : 0.000  
##  1st Qu.: 261.2   1st Qu.: 140.0   1st Qu.:3.000   1st Qu.: 2.000  
##  Median : 390.0   Median : 240.0   Median :4.000   Median : 3.000  
##  Mean   : 445.9   Mean   : 264.9   Mean   :4.202   Mean   : 3.555  
##  3rd Qu.: 550.0   3rd Qu.: 336.8   3rd Qu.:5.000   3rd Qu.: 4.000  
##  Max.   :1940.0   Max.   :1440.0   Max.   :6.000   Max.   :10.000  
##     habitac           zona          
##  Min.   : 0.000   Length:722        
##  1st Qu.: 3.000   Class :character  
##  Median : 4.000   Mode  :character  
##  Mean   : 4.507                     
##  3rd Qu.: 5.000                     
##  Max.   :10.000

b.Elimimamos de la data valores Nulos como limpieza de la base de datos.

punto_2.1 <- punto_1[c("preciom", "areaconst", "estrato", "banios", "habitac", "zona")]
punto_2.1_df <- as.data.frame(punto_2.1)
punto_2.1_df <- punto_2.1_df[complete.cases(punto_2.1_df),]
sum(is.na(punto_2.1_df)) # Conteo de valores faltantes
## [1] 0
View(punto_2.1_df)

c. Graficos dinamicos de las principales variables

Histrograma de precio m2

library(plotly)
## Warning: package 'plotly' was built under R version 4.2.3
## Loading required package: ggplot2
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
plot <- plot_ly(punto_2.1_df, type = "histogram")
plot <- plot %>% add_trace(x = ~preciom, name = "Precio M2 Casa")
plot

Histograma de Area

plot <- plot_ly(punto_2.1_df, type = "histogram")
plot <- plot %>% add_trace(x = ~areaconst, name = "Area_construida")
plot

Grafica Relacion del Estrato Vs Precio

options(warn = -1)

plot_estrato <- plot_ly(data = punto_2.1_df, x = ~estrato, y = ~preciom, color = ~zona,
                        type = "box", boxpoints = "all",
                        text = ~paste("Precio:", preciom, "<br>Estrato:", estrato)) %>%
  layout(title = "Relación entre Precio y Estrato",
         xaxis = list(title = "Estrato"),
         yaxis = list(title = "Precio (millones COP)")) %>%
  style(marker = list(color = "purple"))

options(warn = 0)

plot_estrato

d. correlación entre la variable respuesta (precio del apartamento)

library(GGally)
## Warning: package 'GGally' was built under R version 4.2.3
## Registered S3 method overwritten by 'GGally':
##   method from   
##   +.gg   ggplot2
corr <-punto_2.1_df[,c("preciom","areaconst","estrato","banios","habitac")]
ggpairs(corr, title="Grafica de correlacion entre variable respuesta(precio) Vs otras variables ") 

Analisis de Correlacion

Precio Vs Area Construida: Correlacion positiva 0.731 lo que indica que ambas variables tienden a incrementarses junta, a Mayor Precio mayor area construida.

Precio Vs Estrato: Correlacion positiva 0.612 lo que indica que ambas variables tienden a incrementarses junta, a Mayor Precio mayor estrato.

Precio Vs Baños: Correlacion positiva 0.523 lo que indica que ambas variables tienden a incrementarses junta, a Mayor Precio mayor estrato.

Precio Vs habitaciones: Correlacion positiva 0.323 (debil) lo que indica que ambas variables tienden a incrementarses pero en una menor proporcion a Mayor Precio mas habitaciones.

ACTIVIDAD No. 3

Estime un modelo de regresión lineal múltiple con las variables del punto anterior (precio = f(área construida, estrato, número de cuartos, número de parqueaderos, número de baños ) ) e interprete los coeficientes si son estadísticamente significativos. Las interpretaciones deber están contextualizadas y discutir si los resultados son lógicos. Adicionalmente interprete el coeficiente R2 y discuta el ajuste del modelo e implicaciones (que podrían hacer para mejorarlo).

a. se aplica la regreson y se identifican los coeficientes

punto_3_MV = lm(preciom ~ areaconst + estrato + banios+ habitac, data = punto_2.1_df )
summary(punto_3_MV)
## 
## Call:
## lm(formula = preciom ~ areaconst + estrato + banios + habitac, 
##     data = punto_2.1_df)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -961.17  -79.37  -17.71   49.14 1072.88 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -234.04276   29.69581  -7.881  1.2e-14 ***
## areaconst      0.82516    0.04346  18.986  < 2e-16 ***
## estrato       85.77820    7.20303  11.909  < 2e-16 ***
## banios        26.82962    5.32670   5.037  6.0e-07 ***
## habitac        1.23258    4.12582   0.299    0.765    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 159 on 717 degrees of freedom
## Multiple R-squared:  0.6507, Adjusted R-squared:  0.6488 
## F-statistic:   334 on 4 and 717 DF,  p-value: < 2.2e-16

b. La ecuación de regresión corresponde a:

Precio=−234.04+0.8256(areaconst)+85.778(estrato)+26.82(baños)+1.23(habitaciones)

c. los resultados son logicos?

Intercept (Intercepto): El intercepto es el valor esperado de la variable de respuesta cuando todas las variables predictoras son iguales a cero. En este caso, el intercepto es -234.04276. Esto significa que cuando todas las demás variables son cero, el precio medio es de -234.04276. Sin embargo, en la mayoría de los contextos, un precio negativo no tendría sentido, lo que podría indicar un problema en el modelo o en los datos.

areaconst: El coeficiente de “areaconst” es 0.82516. Esto significa que, manteniendo constantes las otras variables, se espera que un aumento de una unidad en “areaconst” esté asociado con un aumento de 0.82516 en el precio medio.

estrato: El coeficiente de “estrato” es 85.77820. Esto significa que, manteniendo constantes las otras variables, se espera que un aumento de una unidad en “estrato” esté asociado con un aumento de 85.77820 en el precio medio.

banios: El coeficiente de “banios” es 26.82962. Esto significa que, manteniendo constantes las otras variables, se espera que un aumento de una unidad en “banios” esté asociado con un aumento de 26.82962 en el precio medio.

habitac: El coeficiente de “habitac” es 1.23258. Esto significa que, manteniendo constantes las otras variables, se espera que un aumento de una unidad en “habitac” esté asociado con un aumento de 1.23258 en el precio medio.

Es importante destacar que el coeficiente de “habitac” tiene un valor p (Pr(>|t|)) muy alto (0.765), lo que indica que no es estadísticamente significativo en el modelo. Esto sugiere que “habitac” puede no estar contribuyendo significativamente a la predicción del precio y podría considerarse para su eliminación del modelo si no es relevante en el contexto de tu análisis.

En términos generales, los resultados son lógicos en el sentido de que los coeficientes tienen signos esperados y magnitudes que sugieren relaciones proporcionales. Sin embargo, debes prestar atención al coeficiente de “habitac” debido a su falta de significancia estadística.

d. Analisis del R2

es igual a 0.6507 lo que obtenemos que hay un 65% que las variables mencionadas tiene relacion con el precio del inmueble.

e. Pruebas de Hipotesis

Hipótesis para ßo:Ho:βo=0,Ha:β0≠0

Donde el P Valor=2.2e−16 Ya que P Valor<0.05 , se rechaza H0:ß0=0

Hipótesis para ß1:H0:β1=0,Ha:β1≠0

P Valor=2.2e−16 Ya que P Valor<0.05 , se rechaza Ho:ß2=0

Hipótesis para ß2:Ho:β2=0,Ha:β2≠0

P Valor=2.2e−16 ya que P Valor<0.05 , se rechaza Ho:ß2=0

Hipótesis para ß3:Ho:β3=0,Ha:β3≠0

P Valor=2.2e−16 Ya que P Valor<0.05 , se rechaza Ho:ß3=0

f. que haria para mejorar el modelo.

Para mejorar el modelo podemos plantear quitar o evaluar algunas variables que realmente expliquen de mejor manera el modelo, por ejemplo solo dejar las relaciones posotivas fuertes en este caso precio Vs estrato + baños y con eso determinar si obtenemos un mejor resultado de R2. Tambien podemos hacer pruebas cruzadas para ajustar mejor la ecuacion y la prediccion del modelo de tal manera que nos permita buscar las variables optimas.

ACTIVIDAD No. 4

Realice la validación de supuestos del modelo e interprete los resultados (no es necesario corregir en caso de presentar problemas, solo realizar sugerencias de que se podría hacer).

a. se realiza validacion de residuales, QQ Normal, valores ajustados, Aprovechamientos

par(mfrow = c(2,2))
plot(punto_3_MV)

b. Verificación de supuestos sobre el error.

1.Los errores del modelo tienen media cero E[ε]=0

R/Si se observa la grafica 1 se observan que los errores tienen una media cero y tienen un comportamiento aleatorio.

2.Los errores del modelo tienen varianza constante V[ε]=σ2

R/Si observamos el grafico de residuales vs. valores ajustados se observa que existe una
varianza constante, ya que no muestran ningun patron.

  1. Normalidad de los residuos.

R/Supuesto: Los residuos siguen una distribución normal. Validacion: Observando el grafico de normalidad vemos que la nube de puntos en la escala
normal se puede agustar por una linea recta, por lo que se establece que los errores tiene una distribución normal.

  1. Homocedasticidad

R: Supuesto: La varianza de los residuos es constante a lo largo de los valores de las variables predictoras.

Validación:

residuos <- residuals(punto_3_MV)
valores_ajustados <- fitted(punto_3_MV)
plot(valores_ajustados, residuos, col = "blue", main = "Grafico de Residuos vs. Valores Ajustados")
abline(h = 0, col = "red")

Aplicacion de prueba de Breusch-Pagan

library(lmtest)
## Warning: package 'lmtest' was built under R version 4.2.3
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.2.3
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
resultado_bp <- bptest(punto_3_MV)
print(resultado_bp)
## 
##  studentized Breusch-Pagan test
## 
## data:  punto_3_MV
## BP = 134.62, df = 4, p-value < 2.2e-16

La hipótesis nula (H0) en el test de Breusch-Pagan es que no hay heteroscedasticidad, lo que significa que la varianza de los errores es constante (homocedasticidad). La hipótesis alternativa (H1) es que hay heteroscedasticidad, es decir, la varianza de los errores no es constante y varía con respecto a una o más variables predictoras.

Dado que el valor p es muy pequeño (p-value < 2.2e-16), podemos rechazar la hipótesis nula (H0) y concluir que hay evidencia suficiente para afirmar que existe heteroscedasticidad en el modelo de regresión. En otras palabras, la varianza de los errores no es constante en todas las combinaciones de valores de las variables predictoras, lo que sugiere que el modelo de regresión lineal puede no ser adecuado para describir los datos correctamente.

Cuando se detecta heteroscedasticidad en un modelo de regresión, es importante considerar la posibilidad de transformar las variables.

ACTIVIDAD No. 5

Con el modelo identificado debe predecir el precio de la vivienda con las características de la primera solicitud.

punto_5 <- DataVivienda1[c("tipo","areaconst","parquea", "banios", "habitac","estrato", "zona","preciom")]
punto_5df <- as.data.frame(punto_5)
punto_5df <- punto_5df[complete.cases(punto_5df),]
sum(is.na(punto_5df)) # Conteo de valores faltantes
## [1] 0
punto_5_MV = lm(preciom ~ areaconst + estrato + banios+ habitac+tipo+parquea+zona,data = punto_5df )
summary(punto_5_MV)
## 
## Call:
## lm(formula = preciom ~ areaconst + estrato + banios + habitac + 
##     tipo + parquea + zona, data = punto_5df)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1488.92   -84.59   -11.64    57.49  1018.00 
## 
## Coefficients:
##                    Estimate Std. Error t value Pr(>|t|)    
## (Intercept)      -246.00687   24.84273  -9.903  < 2e-16 ***
## areaconst           0.88111    0.02277  38.696  < 2e-16 ***
## estrato            83.40364    3.03554  27.476  < 2e-16 ***
## banios             61.09020    2.57666  23.709  < 2e-16 ***
## habitac           -27.53702    2.27477 -12.105  < 2e-16 ***
## tipocasa          -24.35638    6.05323  -4.024 5.79e-05 ***
## parquea            75.21846    2.51375  29.923  < 2e-16 ***
## zonaZona Norte   -103.19182   22.38207  -4.610 4.09e-06 ***
## zonaZona Oeste     17.25003   23.17100   0.744   0.4566    
## zonaZona Oriente  -52.09916   25.34955  -2.055   0.0399 *  
## zonaZona Sur      -94.65016   22.13295  -4.276 1.93e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 171.7 on 6706 degrees of freedom
## Multiple R-squared:  0.7378, Adjusted R-squared:  0.7374 
## F-statistic:  1887 on 10 and 6706 DF,  p-value: < 2.2e-16
predict(punto_5_MV,list(tipo ="casa",areaconst=200,parquea=1, banios=2, habitac= 4,estrato=(5),zona="Zona Norte"))
##        1 
## 306.9356

El precio para un inmueble de las caracteristicas descritas tendria un precio aproximado de $ 306 Millones.

ACTIVIDAD No. 6

Con las predicciones del modelo sugiera potenciales ofertas que responda a la solicitud de la vivienda 1. Tenga encuentra que la empresa tiene crédito pre-aprobado de máximo 350 millones de pesos. Realice un análisis y presente en un mapa al menos 5 ofertas potenciales que debe discutir.

a. Relizamos una base de datos tomando como referencia las caracteristicas minimas solicitados por el cliente y teniendo en cuenta que solo tiene un preaprobado de $350 Millones.

punto_6 <- filter(DataVivienda1, tipo == "casa" & parquea==1 & banios>=2 & areaconst>=200
                  & habitac >= 4 & estrato >=4 & zona == "Zona Norte" & preciom <= 350)
punto_6df <- as.data.frame(punto_6)
punto_6df <- punto_6df[complete.cases(punto_6df),]
sum(is.na(punto_6df)) # Conteo de valores faltantes
## [1] 0
#punto_6df <- punto_6df[order(-Punto_6df$areaconst),]
punto_6df <- head(punto_6df, 5)
head(punto_6df, 10)
##     id       zona estrato preciom areaconst parquea banios habitac tipo
## 1  766 Zona Norte       5     321       249       1      5       5 casa
## 2 1009 Zona Norte       5     250       243       1      4       5 casa
## 3 1108 Zona Norte       4     330       260       1      3       4 casa
## 4 1943 Zona Norte       5     350       346       1      2       4 casa
## 5 4267 Zona Norte       5     335       202       1      4       5 casa
##      barrio  longitud latitud
## 1 la merced -76.50291 3.46757
## 2 el bosque -76.50755 3.47838
## 3 la merced -76.51060 3.48108
## 4    vipasa -76.51847 3.47503
## 5 el bosque -76.53044 3.48399
View(punto_6df)

b. Se elabora un mapa para revisar las ubicaciones y cada una de las caracteristicas descritas en el punto anterior con el cliente.

leaflet() %>% addTiles() %>% 
  setView(lng =  -76.51595234451665, lat = 3.436834062816008, zoom = 10)  %>%
  addCircleMarkers(lng = punto_6df$longitud,
                   lat = punto_6df$latitud,
                   stroke = FALSE, 
                   fillOpacity = 0.5,
                   radius = 7,
                   color = 'blue')

c. Analisis de los resultados:

Con los fitros solicitados por el cliente obtuvimos 4 potenciales propiedades que podrian definirse asi,

Casa No. 1: Precio de Venta $321 Millones , area construida 249 m2, parqueaderos 1, baños 5, habitaciones 5, Barrio la merced que se encontaria ubicado en la comuna 3 de cali empezando
la zona norte de Cali, es una zona de bastante historica y puede que la casa sea un poco
vieja por lo cual es importante hacer la visita tecnica para evaluar las condiciones de la misma.

Casa No. 2: Precio de Venta $250 Millones , area construida 243 m2, parqueaderos 1, baños 4, habitaciones 5, Barrio el bosque que se encontaria ubicado en la comuna 2 de cali es un
barrio de 53 años aprox. donde habitan principalmente personas pensionadas cobn parques grandes alrededor.

Casa No. 3: Precio de Venta $330 Millones , area construida 260 m2, parqueaderos 1, baños 3, habitaciones 4, Barrio la merced que se encontaria ubicado en la comuna 3 de cali empezando
la zona norte de Cali, es una zona de bastante historica y puede que la casa sea un poco
vieja por lo cual es importante hacer la visita tecnica para evaluar las condiciones de la misma.

Casa No. 4: Precio de Venta $350 Millones , area construida 346 m2, parqueaderos 1, baños 2, habitaciones 4, Barrio vipasa ubicado en la comuna 3 de cali muy cerca a los cerros el bosque y los altos de menga se conoce por sus multiples parques y sus zonas verdes.

Casa No. 5: Precio de Venta $35 Millones , area construida 202 m2, parqueaderos 1, baños 4, habitaciones 5, Barrio el bosque que se encontaria ubicado en la comuna 2 de cali es un
barrio de 53 años aprox. donde habitan principalmente personas pensionadas cobn parques grandes alrededor.

REQUERIMIENTO No. 2

la segunda solicitud que tiene un crédito pre-aprobado por valor de $850 millones.

ACTIVIDAD No. 1

Realice un filtro a la base de datos e incluya solo las ofertas de : base2: Apartamentos, de la zona sur de la ciudad. Presente los primeros 3 registros de las bases y algunas tablas que comprueben la consulta. (Adicional un mapa con los puntos de las bases. Discutir si todos los puntos se ubican en la zona correspondiente o se presentan valores en otras zonas, por que?).

a. Revisamos la data disponible:

DataVivienda <-read.csv("C:/Users/lberm/OneDrive/Documentos/MAESTRIA/MODELOS_APRENDIZAJE_ESTADIS/vivienda.csv")
str(DataVivienda)
## 'data.frame':    8322 obs. of  13 variables:
##  $ id       : int  8312 8311 8307 8296 8297 8298 8299 8300 8286 8287 ...
##  $ zona     : chr  "Zona Oeste" "Zona Oeste" "Zona Oeste" "Zona Sur" ...
##  $ piso     : int  4 1 NA 2 NA NA 2 NA NA 2 ...
##  $ estrato  : int  6 6 5 3 5 5 6 5 5 5 ...
##  $ preciom  : int  1300 480 1200 220 330 1350 305 480 275 285 ...
##  $ areaconst: num  318 300 800 150 112 390 125 280 74 120 ...
##  $ parquea  : int  2 1 4 1 2 8 2 4 1 2 ...
##  $ banios   : int  4 4 7 2 4 10 3 4 2 4 ...
##  $ habitac  : int  2 4 5 4 3 10 3 4 3 3 ...
##  $ tipo     : chr  "Apartamento" "Casa" "Casa" "Casa" ...
##  $ barrio   : chr  "arboleda" "normandía" "miraflores" "el guabal" ...
##  $ longitud : num  -76576 -76571 -76568 -76565 -76565 ...
##  $ latitud  : num  3454 3454 3455 3417 3408 ...

####b. Se revisa que la informacion tenga consitencia en los datos antes de hacer los filtros correpondientes, como lo podemos evidencia en tipo Casa tenemos varias connotaciones para casa entonces procedemos a dejar una sola, en el caso Zona si se evidencia un solo nombre para zona norte, Corregimos los diferentes nombres de casa antes de aplicar los filtros:

library(dplyr)

DataVivienda1 <- DataVivienda %>%
  mutate(tipo = case_when(
    tipo %in% c("CASA", "Casa") ~ "casa",
    tipo %in% c("APARTAMENTO", "apto") ~ "Apartamento",
    TRUE ~ tipo  # Mantén cualquier otro valor tal como está
  ))
valores_unicos <- unique(DataVivienda1$tipo)
print(valores_unicos)
## [1] "Apartamento" "casa"        NA

c. Realice un filtro con : apartamento, zona sur y presentamos las muestras de los filtros.

# filtros punto 1: casas de la zona norte de la ciudad
library(dplyr)
punto_7.1 <- filter(DataVivienda1,zona == "Zona Sur" & tipo == "Apartamento")
head(punto_1, 3)
##     id       zona estrato preciom areaconst parquea banios habitac tipo
## 1 8088 Zona Norte       3     149       130      NA      2       3 casa
## 2 6812 Zona Norte       4     670       470       4      5       5 casa
## 3 6673 Zona Norte       5     750       300       2      3       5 casa
##            barrio longitud latitud
## 1   brisas de los   -76555 3417.00
## 2  tejares de san   -76545    3.44
## 3 el gran limonar   -76544 3397.00

d. Mapa con los puntos de la base filtrada, todos los puntos se ubican en la zona correspondiente , porque?

str(punto_7.1)
## 'data.frame':    2786 obs. of  13 variables:
##  $ id       : int  8299 8286 8287 8288 8228 8229 8191 8192 8193 8199 ...
##  $ zona     : chr  "Zona Sur" "Zona Sur" "Zona Sur" "Zona Sur" ...
##  $ piso     : int  2 NA 2 1 1 8 NA 5 5 NA ...
##  $ estrato  : int  6 5 5 5 3 4 6 4 4 6 ...
##  $ preciom  : int  305 275 285 310 145 240 800 225 310 875 ...
##  $ areaconst: num  125 74 120 166 60 90 221 74 100 194 ...
##  $ parquea  : int  2 1 2 2 1 1 2 1 2 2 ...
##  $ banios   : int  3 2 4 4 2 2 4 2 2 5 ...
##  $ habitac  : int  3 3 3 3 3 3 3 3 4 3 ...
##  $ tipo     : chr  "Apartamento" "Apartamento" "Apartamento" "Apartamento" ...
##  $ barrio   : chr  "bella suiza" "valle del lili" "bella suiza" "bella suiza" ...
##  $ longitud : num  -76565 -76564 -76564 -76564 -76559 ...
##  $ latitud  : num  3408 3409 3.41 3.41 3386 ...
require(leaflet)

leaflet() %>% addTiles() %>% 
  setView(lng =  -76.51595234451665, lat = 3.436834062816008, zoom = 10)  %>%
  addCircleMarkers(lng = punto_7.1$longitud,
                   lat = punto_7.1$latitud,
                   stroke = FALSE, 
                   fillOpacity = 0.5,
                   radius = 4,
                   color = 'red')

#####Se observan con los filtros 2786 datos y en mapa la mayor concentracion de puntos se ubican en la Zona Sur de la ciudad de Cali, si se ven otros dispersos por toda la ciudad esto se debe a varias posibilidades, entre las principales que destaco: el dataframe fue obtenido por la tecnica de web scraping lo que puede generar errores en la obtencion de la data, otro problema es que hay errores de identificacion de los barrios o de las coordenadas del mismo por eso tendria que hacerse una re-verificacion para saber que tan confiable es la data.

ACTIVIDAD No. 2

Realice un análisis exploratorio de datos enfocado en la correlación entre la variable respuesta (precio del apartamento) en función del área construida, estrato, numero de baños, numero de habitaciones y zona donde se ubica la vivienda. Use gráficos interactivos con el paquete plotly e interprete los resultados.

a. Analisis Descriptivo de las variables:

library(knitr)
punto_7.2 <-summary(punto_7.1[, c("preciom", "areaconst", "estrato", "banios", "habitac", "zona")])
knitr::kable(punto_7.2, caption = "ANALISIS DE LAS VARIABLES")
ANALISIS DE LAS VARIABLES
preciom areaconst estrato banios habitac zona
Min. : 75.0 Min. : 40.00 Min. :3.00 Min. :0.000 Min. :0.000 Length:2786
1st Qu.: 175.0 1st Qu.: 65.00 1st Qu.:4.00 1st Qu.:2.000 1st Qu.:3.000 Class :character
Median : 245.0 Median : 85.00 Median :5.00 Median :2.000 Median :3.000 Mode :character
Mean : 297.4 Mean : 97.49 Mean :4.63 Mean :2.489 Mean :2.966 NA
3rd Qu.: 335.0 3rd Qu.:110.00 3rd Qu.:5.00 3rd Qu.:3.000 3rd Qu.:3.000 NA
Max. :1750.0 Max. :932.00 Max. :6.00 Max. :8.000 Max. :6.000 NA
head(punto_7.2)
##     preciom         areaconst         estrato         banios     
##  Min.   :  75.0   Min.   : 40.00   Min.   :3.00   Min.   :0.000  
##  1st Qu.: 175.0   1st Qu.: 65.00   1st Qu.:4.00   1st Qu.:2.000  
##  Median : 245.0   Median : 85.00   Median :5.00   Median :2.000  
##  Mean   : 297.4   Mean   : 97.49   Mean   :4.63   Mean   :2.489  
##  3rd Qu.: 335.0   3rd Qu.:110.00   3rd Qu.:5.00   3rd Qu.:3.000  
##  Max.   :1750.0   Max.   :932.00   Max.   :6.00   Max.   :8.000  
##     habitac          zona          
##  Min.   :0.000   Length:2786       
##  1st Qu.:3.000   Class :character  
##  Median :3.000   Mode  :character  
##  Mean   :2.966                     
##  3rd Qu.:3.000                     
##  Max.   :6.000

b.Elimimamos de la data valores Nulos como limpieza de la base de datos.

punto_7.2 <- DataVivienda[c("preciom", "areaconst", "estrato", "banios", "habitac", "zona")]
punto_7.2_df <- as.data.frame(punto_7.1)
punto_7.2_df <- punto_7.2_df[complete.cases(punto_7.2_df),]
sum(is.na(punto_2.1_df)) # Conteo de valores faltantes
## [1] 0
View(punto_7.2_df)
View(punto_7.2)

c. Graficos dinamicos de las principales variables

Histrograma de precio m2

library(plotly)
plot <- plot_ly(punto_7.2_df, type = "histogram")
plot <- plot %>% add_trace(x = ~preciom, name = "Precio M2 Casa")
plot

Histograma de Area

plot <- plot_ly(punto_7.2_df, type = "histogram")
plot <- plot %>% add_trace(x = ~areaconst, name = "Area_construida")
plot

Grafica de Relacion del Estrto Vs Precio

options(warn = -1)

plot_estrato <- plot_ly(data = punto_7.2_df, x = ~estrato, y = ~preciom, color = ~zona,
                        type = "box", boxpoints = "all",
                        text = ~paste("Precio:", preciom, "<br>Estrato:", estrato)) %>%
  layout(title = "Relación entre Precio y Estrato",
         xaxis = list(title = "Estrato"),
         yaxis = list(title = "Precio (millones COP)")) %>%
  style(marker = list(color = "purple"))

options(warn = 0)

plot_estrato

d. correlación entre la variable respuesta (precio del apartamento)

library(GGally)
corr <-punto_7.2_df[,c("preciom","areaconst","estrato","banios","habitac")]
ggpairs(corr, title="Grafica de correlacion entre variable respuesta(precio) Vs otras variables ") 

Analisis de Correlacion

Precio Vs Area Construida: Correlacion positiva 0.724 lo que indica que ambas variables tienden a incrementarses junta, a Mayor Precio mayor area construida.

Precio Vs Estrato: Correlacion positiva 0.652 lo que indica que ambas variables tienden a incrementarses junta, a Mayor Precio mayor estrato.

Precio Vs Baños: Correlacion positiva 0.715 lo que indica que ambas variables tienden a incrementarses junta, a Mayor Precio mayor estrato.

Precio Vs habitaciones: Correlacion positiva 0.315 (debil) lo que indica que ambas variables tienden a incrementarses pero en una menor proporcion a Mayor Precio mas habitaciones.

ACTIVIDAD No. 3

Estime un modelo de regresión lineal múltiple con las variables del punto anterior (precio = f(área construida, estrato, número de cuartos, número de parqueaderos, número de baños ) ) e interprete los coeficientes si son estadísticamente significativos. Las interpretaciones deber están contextualizadas y discutir si los resultados son lógicos. Adicionalmente interprete el coeficiente R2 y discuta el ajuste del modelo e implicaciones (que podrían hacer para mejorarlo).

a. se aplica la regresion y se identifican los coeficientes

punto_7.3_MV = lm(preciom ~ areaconst + estrato + banios+ habitac, data = punto_7.2_df )
summary(punto_7.3_MV)
## 
## Call:
## lm(formula = preciom ~ areaconst + estrato + banios + habitac, 
##     data = punto_7.2_df)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1294.48   -45.43    -2.83    40.75   973.04 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -272.20021   18.15035 -14.997  < 2e-16 ***
## areaconst      1.48498    0.06269  23.688  < 2e-16 ***
## estrato       70.45157    3.61505  19.488  < 2e-16 ***
## banios        66.38680    3.94746  16.818  < 2e-16 ***
## habitac      -23.24546    4.57897  -5.077 4.23e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 102.2 on 1855 degrees of freedom
## Multiple R-squared:  0.6992, Adjusted R-squared:  0.6985 
## F-statistic:  1078 on 4 and 1855 DF,  p-value: < 2.2e-16

b. La ecuación de regresión corresponde a:

Precio=−272.20+1.484(areaconst)+70.451(estrato)+66.38(baños)-23.24(habitaciones)

c. los resultados son logicos?

Intercept (Intercepto): El intercepto es el valor esperado de la variable de respuesta cuando todas las variables predictoras son iguales a cero. En este caso, el intercepto es -272.20021, lo que significa que cuando todas las demás variables son cero, el precio medio es de -272.20021. Sin embargo, en la mayoría de los contextos, un precio negativo no tendría sentido, lo que podría indicar un problema en el modelo o en los datos.

areaconst: El coeficiente de “areaconst” es 1.48498. Esto significa que, manteniendo constantes las otras variables, se espera que un aumento de una unidad en “areaconst” esté asociado con un aumento de 1.48498 en el precio medio.

estrato: El coeficiente de “estrato” es 70.45157. Esto significa que, manteniendo constantes las otras variables, se espera que un aumento de una unidad en “estrato” esté asociado con un aumento de 70.45157 en el precio medio.

banios: El coeficiente de “banios” es 66.38680. Esto significa que, manteniendo constantes las otras variables, se espera que un aumento de una unidad en “banios” esté asociado con un aumento de 66.38680 en el precio medio.

habitac: El coeficiente de “habitac” es -23.24546. Esto significa que, manteniendo constantes las otras variables, se espera que un aumento de una unidad en “habitac” esté asociado con una disminución de 23.24546 en el precio medio.

En general, los resultados son lógicos en el sentido de que los coeficientes tienen signos esperados y magnitudes que sugieren relaciones proporcionales. Sin embargo, el intercepto negativo es inusual y podría indicar un problema en el modelo o en los datos.

d. Analisis del R2

es igual a 0.6992 lo que obtenemos que hay un 65% que las variables mencionadas tiene relacion con el precio del inmueble.

e. Pruebas de Hipotesis

Hipótesis para ßo:Ho:βo=0,Ha:β0≠0

Donde el P Valor=2.2e−16 Ya que P Valor<0.05 , se rechaza H0:ß0=0

Hipótesis para ß1:H0:β1=0,Ha:β1≠0

P Valor=2.2e−16 Ya que P Valor<0.05 , se rechaza Ho:ß2=0

Hipótesis para ß2:Ho:β2=0,Ha:β2≠0

P Valor=2.2e−16 ya que P Valor<0.05 , se rechaza Ho:ß2=0

Hipótesis para ß3:Ho:β3=0,Ha:β3≠0

P Valor=2.2e−16 Ya que P Valor<0.05 , se rechaza Ho:ß3=0

f. que haria para mejorar el modelo.

Para mejorar el modelo podemos plantear quitar o evaluar algunas variables que realmente expliquen de mejor manera el modelo, por ejemplo solo dejar las relaciones posotivas fuertes en este caso precio Vs estrato + baños y con eso determinar si obtenemos un mejor resultado de R2. Tambien podemos hacer pruebas cruzadas para ajustar mejor la ecuacion y la prediccion del modelo de tal manera que nos permita buscar las variables optimas.

ACTIVIDAD No. 4

Realice la validación de supuestos del modelo e interprete los resultados (no es necesario corregir en caso de presentar problemas, solo realizar sugerencias de que se podría hacer).

a. se realiza validacion de residuales, QQ Normal, valores ajustados, Aprovechamientos

par(mfrow = c(2,2))
plot(punto_7.3_MV)

  1. Homocedasticidad

R: Supuesto: La varianza de los residuos es constante a lo largo de los valores de las variables predictoras.

Validación:

residuos <- residuals(punto_7.3_MV)
valores_ajustados <- fitted(punto_7.3_MV)
plot(valores_ajustados, residuos, col = "blue", main = "Grafico de Residuos vs. Valores Ajustados")
abline(h = 0, col = "red")

Aplicacion de prueba de Breusch-Pagan

library(lmtest)
resultado_bp <- bptest(punto_7.3_MV)
print(resultado_bp)
## 
##  studentized Breusch-Pagan test
## 
## data:  punto_7.3_MV
## BP = 749.72, df = 4, p-value < 2.2e-16

La hipótesis nula (H0) en el test de Breusch-Pagan es que no hay heteroscedasticidad, lo que significa que la varianza de los errores es constante (homocedasticidad). La hipótesis alternativa (H1) es que hay heteroscedasticidad, es decir, la varianza de los errores no es constante y varía con respecto a una o más variables predictoras.

Dado que el valor p es muy pequeño (p-value < 2.2e-16), podemos rechazar la hipótesis nula (H0) y concluir que hay evidencia suficiente para afirmar que existe heteroscedasticidad en el modelo de regresión. En otras palabras, la varianza de los errores no es constante en todas las combinaciones de valores de las variables predictoras, lo que sugiere que el modelo de regresión lineal puede no ser adecuado para describir los datos correctamente.

En este caso tendriamos que considerar la posibilidad de transformar las variables o utilizar técnicas alternativas para abordar el problema.

ACTIVIDAD No. 5

Con el modelo identificado debe predecir el precio de la vivienda con las características de la primera solicitud.

punto_5 <- DataVivienda1[c("tipo","areaconst","parquea", "banios", "habitac","estrato", "zona","preciom")]
punto_5df <- as.data.frame(punto_5)
punto_5df <- punto_5df[complete.cases(punto_5df),]
sum(is.na(punto_5df)) # Conteo de valores faltantes
## [1] 0
punto_7.5_MV = lm(preciom ~ areaconst + estrato + banios+ habitac+tipo+parquea+zona,data = punto_5df )
summary(punto_7.5_MV)
## 
## Call:
## lm(formula = preciom ~ areaconst + estrato + banios + habitac + 
##     tipo + parquea + zona, data = punto_5df)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1488.92   -84.59   -11.64    57.49  1018.00 
## 
## Coefficients:
##                    Estimate Std. Error t value Pr(>|t|)    
## (Intercept)      -246.00687   24.84273  -9.903  < 2e-16 ***
## areaconst           0.88111    0.02277  38.696  < 2e-16 ***
## estrato            83.40364    3.03554  27.476  < 2e-16 ***
## banios             61.09020    2.57666  23.709  < 2e-16 ***
## habitac           -27.53702    2.27477 -12.105  < 2e-16 ***
## tipocasa          -24.35638    6.05323  -4.024 5.79e-05 ***
## parquea            75.21846    2.51375  29.923  < 2e-16 ***
## zonaZona Norte   -103.19182   22.38207  -4.610 4.09e-06 ***
## zonaZona Oeste     17.25003   23.17100   0.744   0.4566    
## zonaZona Oriente  -52.09916   25.34955  -2.055   0.0399 *  
## zonaZona Sur      -94.65016   22.13295  -4.276 1.93e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 171.7 on 6706 degrees of freedom
## Multiple R-squared:  0.7378, Adjusted R-squared:  0.7374 
## F-statistic:  1887 on 10 and 6706 DF,  p-value: < 2.2e-16
predict(punto_7.5_MV,list(tipo ="Apartamento",areaconst=300,parquea=3, banios=3, habitac= 5,estrato=(6),zona="Zona Sur"))
##        1 
## 695.3382

El precio para un inmueble de las caracteristicas descritas tendria un precio aproximado de $ 695 Millones.

ACTIVIDAD No. 6

Con las predicciones del modelo sugiera potenciales ofertas que responda a la solicitud de la vivienda 1. Tenga encuentra que la empresa tiene crédito pre-aprobado de máximo 350 millones de pesos. Realice un análisis y presente en un mapa al menos 5 ofertas potenciales que debe discutir.

a. Relizamos una base de datos tomando como referencia las caracteristicas minimas solicitados por el cliente y teniendo en cuenta que solo tiene un preaprobado de $850 Millones.

punto_7.6 <- filter(DataVivienda1, tipo =="Apartamento" & zona =="Zona Sur" & banios>=3 &  parquea>=3  & habitac>=5 & estrato >=4 & areaconst>=300 & preciom <=850)
punto_7.6df <- as.data.frame(punto_7.6)
punto_7.6df <- punto_7.6df[complete.cases(punto_7.6df),]
sum(is.na(punto_6df)) # Conteo de valores faltantes
## [1] 0
punto_7.6df <- head(punto_7.6df, 5)
head(punto_7.6df, 10)
##  [1] id        zona      piso      estrato   preciom   areaconst parquea  
##  [8] banios    habitac   tipo      barrio    longitud  latitud  
## <0 rows> (or 0-length row.names)

b. Se elabora un mapa para revisar las ubicaciones y cada una de las caracteristicas descritas en el punto anterior con el cliente.

leaflet() %>% addTiles() %>% 
  setView(lng =  -76.51595234451665, lat = 3.436834062816008, zoom = 10)  %>%
  addCircleMarkers(lng = punto_7.6df$longitud,
                   lat = punto_7.6df$latitud,
                   stroke = FALSE, 
                   fillOpacity = 0.5,
                   radius = 7,
                   color = 'blue')

c. Analisis de los resultados

Con los fitros solicitados por el cliente obtuvimos 3 potenciales propiedades que podrian definirse asi,

Apartamento No. 1: Precio de Venta $730 Millones , area construida 573 m2, parqueaderos 3,
baños 8, habitaciones 5, Barrio Guadalupe ubicado en la comuna 19 de cali en el sector hay clases socioeconómicas media y alta en el extremo sur de la ciudad.

Apartamento No. 2: Precio de Venta $670 Millones , area construida 300 m2, parqueaderos 3,
baños 5, habitaciones 6, Barrio seminario ubicado en la comuna 19 de cali en el sector hay clases socioeconómicas media y alta en el extremo sur de la ciudad.