library(readxl)
datos_cali <- read_excel("~/OneDrive - PUJ Cali/PUJ Msc/Semestre I/Métodos y simulación estadística 2022 - B/Actividad OLX/olx_viviendas_cali.xlsx", 
    sheet = "datos")
require(ggplot2)
require(ggpubr)
require(plotly)
require(CGPfunctions)
require(patchwork)

# Identificación de las variables
names(datos_cali)
##  [1] "ID"                 "URL"                "ciudad"            
##  [4] "Zona"               "Barrio"             "Cordenada_latitud" 
##  [7] "cordenada_longitud" "Tipo"               "piso"              
## [10] "Estrato"            "Area_contruida"     "parqueaderos"      
## [13] "Baños"              "Habitaciones"       "Precio"
# Tabla de frecuencias de algunas variables de interés.
prop.table(table(datos_cali$Zona))*100
## 
##  Zona Centro   Zona Norte   Zona Oeste Zona Oriente     Zona Sur 
##     2.530510    34.816942    23.097631     9.924623    29.630294
# Se realiza la exploración de los datos para visualizar la participación por zonas
g1 = ggplot(datos_cali,aes(Zona)) +
  geom_bar(width=0.5, colour="coral2", fill="coral2") +
  labs(x="Zona",y= "Cantidad") +
  ggtitle("Cantidad de viviendas por zonas") +
  geom_text(aes(label=..count..), stat='count',position=position_dodge(0.9),vjust=-0.9,hjust=0.5, size=3) + 
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1))  

ggplotly(g1)
est_s = datos_cali$Estrato == 6
est_max = datos_cali[est_s,]

# Medidas para el area construida en estrato 6.
promedio_area = mean(est_max$Area_contruida,na.rm = TRUE)
mediana_area = median(est_max$Area_contruida,na.rm = TRUE)
max_area = max(est_max$Area_contruida,na.rm = TRUE)
min_area = min(est_max$Area_contruida,na.rm = TRUE)
desviacion_area = sd(est_max$Area_contruida,na.rm = TRUE)
cv_area = (desviacion_area/promedio_area)*100 # Coefiente de variación del área construida

# Medidas para el precio de viviendas en estratato más alto 6
promedio_precio = mean(est_max$Precio,na.rm = TRUE)
mediana_precio = median(est_max$Precio,na.rm = TRUE)
max_precio = max(est_max$Precio,na.rm = TRUE)
min_precio = min(est_max$Precio,na.rm = TRUE)
desviacion_precio = sd(est_max$Precio,na.rm = TRUE)
cv_precio = (desviacion_precio/promedio_precio)*100 #Coefiente de variación del precio en el estrato 6

# Tabla de estadisticas descriptivas para el área en estrato 6
data.frame(promedio_area,mediana_area,max_area,min_area,desviacion_area,cv_area)
##   promedio_area mediana_area max_area min_area desviacion_area  cv_area
## 1      243.0066          196     2000       30        178.0705 73.27805
# Tabla de estadisticas descriptivas para el precio en estrato 6
data.frame(promedio_precio,mediana_precio,max_precio,min_precio,desviacion_precio,cv_precio)
##   promedio_precio mediana_precio max_precio min_precio desviacion_precio
## 1       868668042          7e+08    4.5e+09   1.65e+08         538915170
##   cv_precio
## 1  62.03925
# Zona vs Precio en estrato 6
g1 = ggplot(est_max,aes(x=Zona,y=Precio,fill=Zona)) + 
  geom_boxplot()+theme_bw()+ ggtitle("Zona vs Precio - Estrato 6") 
ggplotly(g1)
#
g2 = ggplot(est_max,aes(x=Zona,y=Area_contruida,fill=Zona)) + 
  geom_boxplot()+theme_bw()+ ggtitle("Zona vs Area Construida - Estrato 6") 
ggplotly(g2)
# Visualización geografica de las viviendas para el estarto 6
require(leaflet)
## Loading required package: leaflet
leaflet() %>% addCircleMarkers(lng = est_max$Cordenada_latitud, lat = est_max$cordenada_longitud, radius = 0.4, color = "red",label = est_max$Precio) %>% addTiles()
## Warning in validateCoords(lng, lat, funcName): Data contains 21 rows with either
## missing or invalid lat/lon values and will be ignored
# Grafica bivariada de Zona de calia vs Tipo de vivienda para el estrato 6
require(CGPfunctions)
PlotXTabs2(est_max,Zona,Tipo) + theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1))

# Tabla de frecuencias de los estratos a nivel poblacional
prop.table(table(datos_cali$Zona,datos_cali$Estrato))*100
##               
##                          1           2           3           4           5
##   Zona Centro   0.00000000  0.21594385  1.94349469  0.25193450  0.08997661
##   Zona Norte    0.07198128  1.18769120 10.63523484  6.73025013 13.29854238
##   Zona Oeste    0.05398596  0.17995321  0.98974267  1.61957891  5.43458701
##   Zona Oriente  0.44988303  3.22116250  6.08241857  0.10797193  0.03599064
##   Zona Sur      0.03599064  0.32391578  4.28288645 11.67896347 10.34730970
##               
##                          6
##   Zona Centro   0.03599064
##   Zona Norte    2.87925139
##   Zona Oeste   14.86413532
##   Zona Oriente  0.00000000
##   Zona Sur      2.95123268
est_s = datos_cali$Estrato == 3
est_medio = datos_cali[est_s,]

# Medidas para el area construida en estrat 3.
promedio_aream = mean(est_medio$Area_contruida,na.rm = TRUE)
mediana_aream = median(est_medio$Area_contruida,na.rm = TRUE)
max_aream = max(est_medio$Area_contruida,na.rm = TRUE)
min_aream = min(est_medio$Area_contruida,na.rm = TRUE)
desviacion_aream = sd(est_medio$Area_contruida,na.rm = TRUE)
cv_aream = (desviacion_aream/promedio_aream)*100 # Coefiente de variación del área construida para el estrato 3

# Medidas para el precio de viviendas en estratato medio 3
promedio_preciop = mean(est_medio$Precio,na.rm = TRUE)
mediana_preciop = median(est_medio$Precio,na.rm = TRUE)
max_preciop = max(est_medio$Precio,na.rm = TRUE)
min_preciop = min(est_medio$Precio,na.rm = TRUE)
desviacion_preciop = sd(est_medio$Precio,na.rm = TRUE)
cv_preciop = (desviacion_preciop/promedio_preciop)*100 #Coefiente de variación del precio en el estrato 3

# Tabla de estadisticas descriptivas para el área en estrato 3
data.frame(promedio_aream,mediana_aream,max_aream,min_aream,desviacion_aream,cv_aream)
##   promedio_aream mediana_aream max_aream min_aream desviacion_aream cv_aream
## 1       156.6778           105      1810        30          144.575 92.27533
# Tabla de estadisticas descriptivas para el precio en estrato 3
data.frame(promedio_preciop,mediana_preciop,max_preciop,min_preciop,desviacion_preciop,cv_preciop)
##   promedio_preciop mediana_preciop max_preciop min_preciop desviacion_preciop
## 1        232048581         1.7e+08     3.6e+09     5.8e+07          202794664
##   cv_preciop
## 1   87.39319
# Zona vs Precio en estrato 3
g3 = ggplot(est_medio,aes(x=Zona,y=Precio,fill=Zona)) + 
  geom_boxplot()+theme_bw()+ ggtitle("Zona vs Precio - Estrato 3") 
ggplotly(g3)
## Warning: Removed 21 rows containing non-finite values (stat_boxplot).
#
g4 = ggplot(est_medio,aes(x=Zona,y=Area_contruida,fill=Zona)) + 
  geom_boxplot()+theme_bw()+ ggtitle("Zona vs Area Construida - Estrato 3") 
ggplotly(g4)
## Warning: Removed 21 rows containing non-finite values (stat_boxplot).