# Instalamos las librerías
library(forecast)
library(reshape2)
library(stats)
library(ggplot2)
library(ggthemes)
library(ggrepel)
library(dplyr)
library(tidyr)
library(readxl)
library(reticulate)
library(plotly)


# CArga de datos
library(readxl)
dF<- read_excel("d:/mis documentos/METODOS ESTADISTICOS/Unidad1/Datos_Vivienda.xlsx")

#agregación de ID

ID=1:dim(dF)[1]
dF=data.frame(ID,dF)

head(dF)
##   ID       Zona piso Estrato precio_millon Area_contruida parqueaderos Banos
## 1  1   Zona Sur    2       6           880            237            2     5
## 2  2 Zona Oeste    2       4          1200            800            3     6
## 3  3   Zona Sur    3       5           250             86           NA     2
## 4  4   Zona Sur   NA       6          1280            346            4     6
## 5  5   Zona Sur    2       6          1300            600            4     7
## 6  6   Zona Sur    3       6           513            160            2     4
##   Habitaciones        Tipo                Barrio cordenada_longitud
## 1            4        Casa                 pance          -76.46300
## 2            7        Casa            miraflores          -76.46400
## 3            3 Apartamento           multicentro          -76.46400
## 4            5 Apartamento ciudad jardv<U+2260>n          -76.46400
## 5            5        Casa                 pance          -76.46438
## 6            4        Casa                 pance          -76.46438
##   Cordenada_latitud
## 1           3.43000
## 2           3.42800
## 3           3.42900
## 4           3.43300
## 5           3.43463
## 6           3.43463
#Paso 1. Filtrar un barrio de interes y solo apartamentos:

#Selección de una parte del dataset filtrando por un barrio

#entrega la posición de las filas que tienen como barrio el ingenio
pos=which(dF$Barrio=="el ingenio")

#se crea un nuevo dataframe con el filtro
dF_sub=dF[pos,]

head(dF_sub)
##        ID     Zona piso Estrato precio_millon Area_contruida parqueaderos Banos
## 37     37 Zona Sur    4       5          1450           1200            2     6
## 123   123 Zona Sur    3       5           290            100            1     3
## 221   221 Zona Sur    4       5           360             99            1     3
## 582   582 Zona Sur   NA       4           550            197            2     4
## 2397 2397 Zona Sur    2       5           410            136            2     4
## 2446 2446 Zona Sur    4       5           390            198            1     4
##      Habitaciones        Tipo     Barrio cordenada_longitud Cordenada_latitud
## 37              6        Casa el ingenio          -76.46862           3.43624
## 123             3 Apartamento el ingenio          -76.48498           3.41789
## 221             2 Apartamento el ingenio          -76.48953           3.49684
## 582             3 Apartamento el ingenio          -76.49900           3.47100
## 2397            4 Apartamento el ingenio          -76.52000           3.37900
## 2446            3 Apartamento el ingenio          -76.52030           3.38197
#Instalar paquete
require(RecordLinkage)

#Extracción de datos filtrando los barrios que coincidan en un 80 % con el texto ingenio
pos2=which(jarowinkler("ingenio",dF$Barrio)>0.8 & dF$Tipo=="Apartamento")
datos_sub2=dF[pos2,]
head(datos_sub2)
##        ID     Zona piso Estrato precio_millon Area_contruida parqueaderos Banos
## 123   123 Zona Sur    3       5           290            100            1     3
## 221   221 Zona Sur    4       5           360             99            1     3
## 582   582 Zona Sur   NA       4           550            197            2     4
## 2397 2397 Zona Sur    2       5           410            136            2     4
## 2446 2446 Zona Sur    4       5           390            198            1     4
## 2792 2792 Zona Sur   NA       5           300            147            2     3
##      Habitaciones        Tipo     Barrio cordenada_longitud Cordenada_latitud
## 123             3 Apartamento el ingenio          -76.48498           3.41789
## 221             2 Apartamento el ingenio          -76.48953           3.49684
## 582             3 Apartamento el ingenio          -76.49900           3.47100
## 2397            4 Apartamento el ingenio          -76.52000           3.37900
## 2446            3 Apartamento el ingenio          -76.52030           3.38197
## 2792            3 Apartamento el ingenio          -76.52200           3.38100
#Paso 2. Exploración Inicial

summary(datos_sub2)
##        ID           Zona               piso              Estrato     
##  Min.   : 123   Length:130         Length:130         Min.   :4.000  
##  1st Qu.:4026   Class :character   Class :character   1st Qu.:5.000  
##  Median :4278   Mode  :character   Mode  :character   Median :5.000  
##  Mean   :4396                                         Mean   :5.085  
##  3rd Qu.:5118                                         3rd Qu.:5.000  
##  Max.   :7464                                         Max.   :6.000  
##  precio_millon   Area_contruida  parqueaderos           Banos      
##  Min.   :175.0   Min.   : 56.0   Length:130         Min.   :1.000  
##  1st Qu.:265.5   1st Qu.: 88.5   Class :character   1st Qu.:2.000  
##  Median :300.0   Median :102.5   Mode  :character   Median :3.000  
##  Mean   :316.7   Mean   :117.7                      Mean   :2.823  
##  3rd Qu.:350.0   3rd Qu.:126.9                      3rd Qu.:3.000  
##  Max.   :700.0   Max.   :600.0                      Max.   :5.000  
##   Habitaciones       Tipo              Barrio          cordenada_longitud
##  Min.   :1.000   Length:130         Length:130         Min.   :-76.55    
##  1st Qu.:3.000   Class :character   Class :character   1st Qu.:-76.53    
##  Median :3.000   Mode  :character   Mode  :character   Median :-76.53    
##  Mean   :3.162                                         Mean   :-76.53    
##  3rd Qu.:4.000                                         3rd Qu.:-76.53    
##  Max.   :5.000                                         Max.   :-76.48    
##  Cordenada_latitud
##  Min.   :3.346    
##  1st Qu.:3.381    
##  Median :3.383    
##  Mean   :3.388    
##  3rd Qu.:3.384    
##  Max.   :3.497
#Paso 2 Exploración Inicial
#Calcula los estimadores basicos eliminando los valores nulos
promedio_precio=mean(datos_sub2$precio_millon,na.rm=TRUE)
mediana_precio=median(datos_sub2$precio_millon,na.rm=TRUE)
promedio_area=mean(datos_sub2$Area_contruida,na.rm=TRUE)
cantidad_ofertas=length(datos_sub2$Zona)

resultado=data.frame(promedio_precio,mediana_precio,promedio_area,cantidad_ofertas)
resultado
##   promedio_precio mediana_precio promedio_area cantidad_ofertas
## 1        316.6846            300      117.7467              130
## Paso 3

require(leaflet)
leaflet() %>% addCircleMarkers(lng = datos_sub2$cordenada_longitud,lat = datos_sub2$Cordenada_latitud,radius = 0.3,color = "black",label = datos_sub2$ID) %>% addTiles()
###
##Paso 4. Exploración Bivariada entre Precio vs Area Construida




hist(datos_sub2$Area_contruida, main = "OLX: histograma del area de viviendas",
      xlab = "area", ylab = "frecuencia",
      col = "steelblue")

plot(datos_sub2$Area_contruida, datos_sub2$precio_millon)

boxplot(datos_sub2$precio_millon ~ datos_sub2$Zona, col = "gray",
        main = "Precios\nsegún la Zona")

p <- ggplot(datos_sub2)

p <- ggplot(datos_sub2, aes(x = Area_contruida, y = precio_millon, colour = Estrato))

p <- p + geom_point()
p

g1=ggplot(data = datos_sub2,aes(y=precio_millon,x=Area_contruida)) + geom_point() + geom_smooth()
ggplotly(g1)
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
## filtrando en la grafica las areas menores a 400m2

pos3=which(datos_sub2$Area_contruida<400)
datos_sub3=datos_sub2[pos3,]

g2=ggplot(data = datos_sub3,aes(y=precio_millon,x=Area_contruida)) + geom_point() + geom_smooth()
ggplotly(g2)
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'