Paso 1.- Filtrar barrio de interés y solo apartamentos. Se emplea la libreria RecordLinkage que permite encontrar registros con valores similares en un conjunto de datos. De acuerdo con (Sariyar & Borg, 2010) este paquete permite “la detección de homónimos y principalmente sinónimos en los datos”. Específicamente se emplea la función jarowinkler() con un umbral de 0.9 que tiene un nivel de discriminación aceptable para esta actividad. Se elige el barrio “el caney” para esta actividad.
library(readxl)
Datos_Vivienda <- read_excel("Datos_Vivienda.xlsx")
head(Datos_Vivienda)
| Zona | piso | Estrato | precio_millon | Area_contruida | parqueaderos | Banos | Habitaciones | Tipo | Barrio | cordenada_longitud | Cordenada_latitud |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Zona Sur | 2 | 6 | 880 | 237 | 2 | 5 | 4 | Casa | pance | -76.46300 | 3.43000 |
| Zona Oeste | 2 | 4 | 1200 | 800 | 3 | 6 | 7 | Casa | miraflores | -76.46400 | 3.42800 |
| Zona Sur | 3 | 5 | 250 | 86 | NA | 2 | 3 | Apartamento | multicentro | -76.46400 | 3.42900 |
| Zona Sur | NA | 6 | 1280 | 346 | 4 | 6 | 5 | Apartamento | ciudad jardín | -76.46400 | 3.43300 |
| Zona Sur | 2 | 6 | 1300 | 600 | 4 | 7 | 5 | Casa | pance | -76.46438 | 3.43463 |
| Zona Sur | 3 | 6 | 513 | 160 | 2 | 4 | 4 | Casa | pance | -76.46438 | 3.43463 |
pos=which(Datos_Vivienda$Barrio=="el caney")
datos_sub=Datos_Vivienda[pos,]
require(RecordLinkage)
pos_2=which(jarowinkler("el caney",Datos_Vivienda$Barrio)>0.9 & Datos_Vivienda$Tipo=="Apartamento")
datos_sub2=Datos_Vivienda[pos_2,]
head(datos_sub2)
| Zona | piso | Estrato | precio_millon | Area_contruida | parqueaderos | Banos | Habitaciones | Tipo | Barrio | cordenada_longitud | Cordenada_latitud |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Zona Sur | 4 | 4 | 215 | 92 | 1 | 3 | 3 | Apartamento | el caney | -76.51279 | 3.48038 |
| Zona Sur | 2 | 3 | 160 | 65 | 1 | 2 | 3 | Apartamento | el caney | -76.51563 | 3.38403 |
| Zona Sur | NA | 4 | 140 | 60 | NA | 2 | 2 | Apartamento | el caney | -76.51572 | 3.38425 |
| Zona Sur | 7 | 4 | 160 | 60 | NA | 2 | 3 | Apartamento | el caney | -76.51578 | 3.38493 |
| Zona Sur | 7 | 5 | 150 | 60 | NA | 2 | 2 | Apartamento | el caney | -76.51593 | 3.38480 |
| Zona Sur | 2 | 4 | 166 | 60 | NA | 2 | 3 | Apartamento | el caney | -76.51593 | 3.38397 |
Paso 2.- Exploración inicial del subconjunto de datos obtenido en el paso anterior para el barrio identificado como “el caney” de la ciudad de Cali. Se obtienen la Media, la Mediana y la Desviación Estandar para las variables Precio y Area.
Donde:
2.1.- La Media Aritmética se expresa según la siguiente ecuación \[ \text{Media aritmética}= \frac{\sum_{i=1}^{N}x_{i}}{N}=\frac{x_{1}+x_{2}+x_{3}...+x_{n}}{N} \] 2.2.- Mediana. En una muestra de datos ordenada en modo creciente, si el número n de datos es impar, entonces la Mediana es el dato central; es decir, \[ {Mediana}= x_{\frac{n+1}{2}} \] si el número n de datos es par, entonces la Mediana es la media de los dos datos centrales; es decir,
\[ {Mediana}= \frac{x_{\frac{n}{2}} + x_{\frac{n}{2}+1}}{2} \] 2.3.- Desviación Estándar. Mide la desviación o dispersión de los datos con respecto a la media. Se expresa según la siguiente ecuación:
\[ s = \sqrt{\frac{1}{N-1} \sum_{i=1}^N (x_i - \overline{x})^2} \]
# Tabla de indicadores
promedio_precio=mean(datos_sub2$precio_millon, na.rm=TRUE)
mediana_precio=median(datos_sub2$precio_millon, na.rm=TRUE)
desv_est_precio=sd(datos_sub2$precio_millon, na.rm=TRUE)
varianza_precio=desv_est_precio^2
promedio_area=mean(datos_sub2$Area_contruida, na.rm=TRUE)
mediana_area=median(datos_sub2$Area_contruida, na.rm=TRUE)
desv_est_area=sd(datos_sub2$Area_contruida, na.rm=TRUE)
cantidad_ofertas=length(datos_sub2$Zona)
resultado=data.frame(promedio_precio,mediana_precio,desv_est_precio,promedio_area,mediana_area,desv_est_area,cantidad_ofertas)
resultado
| promedio_precio | mediana_precio | desv_est_precio | promedio_area | mediana_area | desv_est_area | cantidad_ofertas |
|---|---|---|---|---|---|---|
| 182.7258 | 155.5 | 60.93744 | 68.85935 | 60 | 19.82704 | 124 |
Paso 3.- Mapa interactivo de los resultados.
require(leaflet)
leaflet() %>% addCircleMarkers(lng=datos_sub2$cordenada_longitud, lat=datos_sub2$Cordenada_latitud, radius=0.3) %>% addTiles()
Paso 4.- Exploracion Bivariado entre Precio versus Area Construida
require(ggplot2)
require(plotly)
g1=ggplot(data=datos_sub2,aes(y=precio_millon, x=Area_contruida))+geom_point()+geom_smooth()
ggplotly(g1)
pos3=which(datos_sub2$Area_contruida<120)
datos_sub3=datos_sub2[pos3,]
g2=ggplot(data=datos_sub3,aes(y=precio_millon, x=Area_contruida))+geom_point()+geom_smooth()
ggplotly(g2)
Bibliografia
Sariyar, M & Borg, A. 2010. The RecordLinkage Package: Detecting Errors in Data. The R Journal 2:2, pages 61-67.