library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.1 ──
## ✔ ggplot2 3.3.5 ✔ purrr 0.3.4
## ✔ tibble 3.1.7 ✔ dplyr 1.0.9
## ✔ tidyr 1.2.0 ✔ stringr 1.4.0
## ✔ readr 2.1.2 ✔ forcats 0.5.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
library(sf)
## Linking to GEOS 3.9.1, GDAL 3.3.2, PROJ 7.2.1; sf_use_s2() is TRUE
library(sp)
library(spdep)
## Warning: package 'spdep' was built under R version 4.2.1
## Loading required package: spData
## Warning: package 'spData' was built under R version 4.2.1
## To access larger datasets in this package, install the spDataLarge
## package with: `install.packages('spDataLarge',
## repos='https://nowosad.github.io/drat/', type='source')`
library(rgdal)
## Please note that rgdal will be retired by the end of 2023,
## plan transition to sf/stars/terra functions using GDAL and PROJ
## at your earliest convenience.
##
## rgdal: version: 1.5-32, (SVN revision 1176)
## Geospatial Data Abstraction Library extensions to R successfully loaded
## Loaded GDAL runtime: GDAL 3.3.2, released 2021/09/01
## Path to GDAL shared files: C:/Users/matir/AppData/Local/R/win-library/4.2/rgdal/gdal
## GDAL binary built with GEOS: TRUE
## Loaded PROJ runtime: Rel. 7.2.1, January 1st, 2021, [PJ_VERSION: 721]
## Path to PROJ shared files: C:/Users/matir/AppData/Local/R/win-library/4.2/rgdal/proj
## PROJ CDN enabled: FALSE
## Linking to sp version:1.4-7
## To mute warnings of possible GDAL/OSR exportToProj4() degradation,
## use options("rgdal_show_exportToProj4_warnings"="none") before loading sp or rgdal.
library(rgeos)
## rgeos version: 0.5-9, (SVN revision 684)
## GEOS runtime version: 3.9.1-CAPI-1.14.2
## Please note that rgeos will be retired by the end of 2023,
## plan transition to sf functions using GEOS at your earliest convenience.
## GEOS using OverlayNG
## Linking to sp version: 1.4-7
## Polygon checking: TRUE
library(tmap)
## Warning: package 'tmap' was built under R version 4.2.1
library(tmaptools)
## Warning: package 'tmaptools' was built under R version 4.2.1
library(spgwr)
## Warning: package 'spgwr' was built under R version 4.2.1
## NOTE: This package does not constitute approval of GWR
## as a method of spatial analysis; see example(gwr)
library(grid)
library(gridExtra)
##
## Attaching package: 'gridExtra'
## The following object is masked from 'package:dplyr':
##
## combine
library(raster)
##
## Attaching package: 'raster'
## The following object is masked from 'package:dplyr':
##
## select
library(viridis)
## Loading required package: viridisLite
library(spatstat)
## Warning: package 'spatstat' was built under R version 4.2.1
## Loading required package: spatstat.data
## Warning: package 'spatstat.data' was built under R version 4.2.1
## Loading required package: spatstat.geom
## Warning: package 'spatstat.geom' was built under R version 4.2.1
## spatstat.geom 2.4-0
##
## Attaching package: 'spatstat.geom'
## The following objects are masked from 'package:raster':
##
## area, rotate, shift
## The following object is masked from 'package:grid':
##
## as.mask
## Loading required package: spatstat.random
## Warning: package 'spatstat.random' was built under R version 4.2.1
## spatstat.random 2.2-0
## Loading required package: spatstat.core
## Warning: package 'spatstat.core' was built under R version 4.2.1
## Loading required package: nlme
##
## Attaching package: 'nlme'
## The following object is masked from 'package:raster':
##
## getData
## The following object is masked from 'package:dplyr':
##
## collapse
## Loading required package: rpart
## spatstat.core 2.4-4
## Loading required package: spatstat.linnet
## Warning: package 'spatstat.linnet' was built under R version 4.2.1
## spatstat.linnet 2.3-2
##
## spatstat 2.3-4 (nickname: 'Watch this space')
## For an introduction to spatstat, type 'beginner'
library(leaflet)
data <- readRDS("C:/Users/matir/OneDrive/Escritorio/Mati/Universidad/2022/Segundo Trimestre/Analitica Espacial/bases/Propiedades_RM_sf.rds")
data2 <- readRDS("C:/Users/matir/OneDrive/Escritorio/Mati/Universidad/2022/Segundo Trimestre/Analitica Espacial/bases/Permisos_2017.rds")
viviendas <- readRDS("C:/Users/matir/OneDrive/Escritorio/Mati/Universidad/2022/Segundo Trimestre/Analitica Espacial/bases/viviendas_2017.rds")
personas <- readRDS("C:/Users/matir/OneDrive/Escritorio/Mati/Universidad/2022/Segundo Trimestre/Analitica Espacial/Clase 2/personas/personas_2017.rds")
censo_zc <- readRDS("C:/Users/matir/OneDrive/Escritorio/Mati/Universidad/2022/Segundo Trimestre/Analitica Espacial/bases/zc_censo2017.rds")
censo_zc <- readRDS("C:/Users/matir/OneDrive/Escritorio/Mati/Universidad/2022/Segundo Trimestre/Analitica Espacial/bases/zc_censo2017.rds")
#PREGUNTA 1: Determinación de clústeres de alto y bajo nivel educacional. Para ello, es necesario expandirse a las comunas vecinas a modo de no delimitar información en las zonas censales periféricas dentro de la comuna de estudio.
Para efectos de profundizar el estudio de la comuna de Independencia y no omitir o alterar clusters que puedan existir en distintas zonas, se tomaran en consideración las cuatro comunas que colindan con Independencia, siendo estas:
Con ello, filtramos cada base con nuestra comuna a estudiar (Independencia) y las comunas vecinas:
comuna_indep <- c(13108)
comuna_renca <- c(13128)
comuna_conchali <- c(13104)
comuna_recoleta <- c(13127)
comuna_santiago_c <- c(13101)
# Bases Comuna Independencia
ind_propiedades <- data[data$codigo_comuna == 13108,]
ind_permisos <- data2[data2$COD_COMUNA == 13108,]
ind_viviendas <- viviendas[viviendas$COMUNA == 13108,]
ind_personas <- personas[personas$COMUNA == 13108,]
ind_personas_censo_zc <- censo_zc[censo_zc$COMUNA == 13108,]
# Base Comunas: Renca, Conchali, Recoleta y Santiago C.
c_v_propiedades <- data[data$codigo_comuna == c(13128,13104,13127,13101),]
c_v_permisos <- data2[data2$COD_COMUNA == c(13128,13104,13127,13101),]
## Warning in data2$COD_COMUNA == c(13128, 13104, 13127, 13101): longitud de objeto
## mayor no es múltiplo de la longitud de uno menor
c_v_viviendas <- viviendas[viviendas$COMUNA == c(13128,13104,13127,13101),]
## Warning in viviendas$COMUNA == c(13128, 13104, 13127, 13101): longitud de objeto
## mayor no es múltiplo de la longitud de uno menor
c_v_personas <- personas[personas$COMUNA == c(13128,13104,13127,13101),]
## Warning in personas$COMUNA == c(13128, 13104, 13127, 13101): longitud de objeto
## mayor no es múltiplo de la longitud de uno menor
c_v_personas_censo_zc <- censo_zc[censo_zc$COMUNA == c(13128,13104,13127,13101),]
## Warning in censo_zc$COMUNA == c(13128, 13104, 13127, 13101): longitud de objeto
## mayor no es múltiplo de la longitud de uno menor
Con tal de tener una variable que muestre a qué zona censal pertenece cada observación, al igual que obtener un mayor detalle, creamos la variable “ZONA” tanto para las observaciones de la comuna de independencia como las comunas contiguas a esta:
# Para base sólo con la comuna Independencia:
ind_personas <-
ind_personas %>%
mutate( # crear variables
CODIGO_COMUNA = COMUNA * 10 ^ 6,
DISTRITO_CENSAL = DC * 10 ^ 4,
CODIGO_AREA = AREA * 10 ^ 3,
ZC_LOC,
ZONA = as.numeric(CODIGO_COMUNA + DISTRITO_CENSAL + CODIGO_AREA + ZC_LOC),
COD_VIV = ZONA* 10 ^ 4 + NVIV,)
# Para base con las demás comunas:
c_v_personas <-
c_v_personas %>%
mutate( # crear variables
CODIGO_COMUNA = COMUNA * 10 ^ 6,
DISTRITO_CENSAL = DC * 10 ^ 4,
CODIGO_AREA = AREA * 10 ^ 3,
ZC_LOC,
ZONA = as.numeric(CODIGO_COMUNA + DISTRITO_CENSAL + CODIGO_AREA + ZC_LOC),
COD_VIV = ZONA* 10 ^ 4 + NVIV,
)
Luego, filtramos ambos sets de datos por las variables relevantes para este estudio: - Zona - Edad - Nivel de Educación - Rama - Nivel de Escolaridad - Sexo - Res_5 - Res_Hab - Parentezco - L_Nac - N_personas - N_hogar
# Base comuna Independencia:
ind_personas2 <- ind_personas %>%
dplyr::select(ZONA,P09,P15,P18,ESCOLARIDAD,P08,P11PAIS,P10PAIS,P07,P12,PERSONAN,NHOGAR)
colnames(ind_personas2) <- c("ZONA","EDAD","NIVEL_EDU","RAMA_TRABAJO","ESCOLARIDAD","SEXO","RES_5","RES_HAB","PARENTEZCO","L_NAC","N_PERSONAS","N_HOGAR")
# Base comuna contiguas:
c_v_personas2 <- c_v_personas %>%
dplyr::select(COMUNA,ZONA,P09,P15,P18,ESCOLARIDAD,P08,P11PAIS,P10PAIS,P07,P12,PERSONAN,NHOGAR)
colnames(c_v_personas2) <- c("COMUNA","ZONA","EDAD","NIVEL_EDU","RAMA_TRABAJO","ESCOLARIDAD","SEXO","RES_5","RES_HAB","PARENTEZCO","L_NAC","N_PERSONAS","N_HOGAR")
c_v_personas2$NOMBRE_COMUNA <- as.factor(ifelse(c_v_personas$COMUNA == 13101, 'Santiago',
ifelse(c_v_personas$COMUNA == 13104, 'Conchalí',
ifelse(c_v_personas$COMUNA == 13127, 'Recoleta',
ifelse(c_v_personas$COMUNA == 13128, 'Renca',"")))))
Variable Población Total por Comuna
A modo de tener una mirada general del tamaño poblacional de cada comuna, se calcula la población total:
poblacion_total_ind <-
ind_personas2 %>%
summarise( # RESUMENES DE VARIABLES
TOTAL_PERSONAS = n() # n() cuenta el numero de entradas, en este caso cada fila es una persona.
)
print(paste("Población total comuna Independencia: ", poblacion_total_ind))
## [1] "Población total comuna Independencia: 100281"
print(paste("Densidad poblacional: ", round(poblacion_total_ind / 7,2) ))
## [1] "Densidad poblacional: 14325.86"
poblacion_total_renca <-
c_v_personas2 %>%
filter(COMUNA %in% comuna_renca) %>%
summarise( # RESUMENES DE VARIABLES
TOTAL_PERSONAS = n() # n() cuenta el numero de entradas, en este caso cada fila es una persona.
)
print(paste("Población total comuna Renca: ", poblacion_total_renca))
## [1] "Población total comuna Renca: 36788"
print(paste("Densidad poblacional: ", round(poblacion_total_renca / 24.2,2) ))
## [1] "Densidad poblacional: 1520.17"
poblacion_total_conchali <-
c_v_personas2 %>%
filter(COMUNA %in% comuna_conchali) %>%
summarise( # RESUMENES DE VARIABLES
TOTAL_PERSONAS = n() # n() cuenta el numero de entradas, en este caso cada fila es una persona.
)
print(paste("Población total comuna Conchali: ", poblacion_total_conchali))
## [1] "Población total comuna Conchali: 31739"
print(paste("Densidad poblacional: ", round(poblacion_total_conchali / 10.7,2) ))
## [1] "Densidad poblacional: 2966.26"
poblacion_total_recoleta <-
c_v_personas2 %>%
filter(COMUNA %in% comuna_recoleta) %>%
summarise( # RESUMENES DE VARIABLES
TOTAL_PERSONAS = n() # n() cuenta el numero de entradas, en este caso cada fila es una persona.
)
print(paste("Población total comuna Recoleta: ", poblacion_total_recoleta))
## [1] "Población total comuna Recoleta: 39462"
print(paste("Densidad poblacional: ", round(poblacion_total_recoleta / 16.2,2) ))
## [1] "Densidad poblacional: 2435.93"
poblacion_total_santiago_c <-
c_v_personas2 %>%
filter(COMUNA %in% comuna_santiago_c) %>%
summarise( # RESUMENES DE VARIABLES
TOTAL_PERSONAS = n() # n() cuenta el numero de entradas, en este caso cada fila es una persona.
)
print(paste("Población total comuna Santiago Centro: ", poblacion_total_santiago_c))
## [1] "Población total comuna Santiago Centro: 101124"
print(paste("Densidad poblacional: ", round(poblacion_total_santiago_c / 23.2,2) ))
## [1] "Densidad poblacional: 4358.79"
A continuación se realiza un estudio y comparación entre Independencia y sus comunas contiguas en terminos de edad, nivel de educación y años de escolaridad de sus habitantes:
Primero realizaremos el análisis de las variables mencionadas para la comuna de Independencia:
Ind_edad <-
ind_personas2 %>%
dplyr::filter(!is.na(EDAD)) %>%
dplyr::filter(EDAD!= 98 & EDAD!= 99)
Ind_edad2 <- table(Ind_edad$EDAD)
Ind_edad2 <- as.data.frame(Ind_edad2)
names(Ind_edad2) <- c("Edad", "Frecuencia")
Ind_edad2$Porcentaje_Edad <- paste0(
sprintf("%4.1f",
round(Ind_edad2$Frecuencia/sum(Ind_edad2$Frecuencia)*100, 2)), "%")
Ind_edad2
## Edad Frecuencia Porcentaje_Edad
## 1 0 1496 1.5%
## 2 1 1383 1.4%
## 3 2 1345 1.3%
## 4 3 1204 1.2%
## 5 4 1179 1.2%
## 6 5 1151 1.1%
## 7 6 1166 1.2%
## 8 7 1089 1.1%
## 9 8 1078 1.1%
## 10 9 1080 1.1%
## 11 10 936 0.9%
## 12 11 908 0.9%
## 13 12 928 0.9%
## 14 13 915 0.9%
## 15 14 976 1.0%
## 16 15 967 1.0%
## 17 16 988 1.0%
## 18 17 1055 1.0%
## 19 18 1190 1.2%
## 20 19 1318 1.3%
## 21 20 1575 1.6%
## 22 21 1832 1.8%
## 23 22 1957 1.9%
## 24 23 2081 2.1%
## 25 24 2230 2.2%
## 26 25 2354 2.4%
## 27 26 2479 2.5%
## 28 27 2527 2.5%
## 29 28 2489 2.5%
## 30 29 2350 2.3%
## 31 30 2266 2.3%
## 32 31 2056 2.0%
## 33 32 1959 1.9%
## 34 33 1841 1.8%
## 35 34 1842 1.8%
## 36 35 1778 1.8%
## 37 36 1674 1.7%
## 38 37 1616 1.6%
## 39 38 1436 1.4%
## 40 39 1444 1.4%
## 41 40 1450 1.4%
## 42 41 1413 1.4%
## 43 42 1388 1.4%
## 44 43 1330 1.3%
## 45 44 1332 1.3%
## 46 45 1227 1.2%
## 47 46 1212 1.2%
## 48 47 1181 1.2%
## 49 48 1149 1.1%
## 50 49 1049 1.0%
## 51 50 1118 1.1%
## 52 51 1021 1.0%
## 53 52 1182 1.2%
## 54 53 1125 1.1%
## 55 54 1073 1.1%
## 56 55 998 1.0%
## 57 56 988 1.0%
## 58 57 917 0.9%
## 59 58 931 0.9%
## 60 59 956 0.9%
## 61 60 923 0.9%
## 62 61 840 0.8%
## 63 62 806 0.8%
## 64 63 790 0.8%
## 65 64 739 0.7%
## 66 65 696 0.7%
## 67 66 680 0.7%
## 68 67 623 0.6%
## 69 68 633 0.6%
## 70 69 604 0.6%
## 71 70 590 0.6%
## 72 71 603 0.6%
## 73 72 589 0.6%
## 74 73 542 0.5%
## 75 74 497 0.5%
## 76 75 444 0.4%
## 77 76 422 0.4%
## 78 77 396 0.4%
## 79 78 348 0.3%
## 80 79 322 0.3%
## 81 80 299 0.3%
## 82 81 307 0.3%
## 83 82 249 0.2%
## 84 83 275 0.3%
## 85 84 269 0.3%
## 86 85 240 0.2%
## 87 86 230 0.2%
## 88 87 189 0.2%
## 89 88 191 0.2%
## 90 89 121 0.1%
## 91 90 126 0.1%
## 92 91 114 0.1%
## 93 92 98 0.1%
## 94 93 58 0.1%
## 95 94 67 0.1%
## 96 95 53 0.0%
## 97 96 27 0.0%
## 98 97 21 0.0%
## 99 100 43 0.0%
ggplot(data = ind_personas2, aes(x = EDAD))+
geom_histogram(aes(y = ..density..),color="darkblue", fill="lightblue",bins = 100) +
labs(x = "Edad", y = "Frecuencia", title = "Distribución Edades", subtitle = "Comuna Independencia")+
theme_classic()+
scale_x_continuous(breaks = pretty(ind_personas2$EDAD, n = 13),name = "Edad") +
scale_y_continuous(name = "", labels = scales::comma)+
geom_density(lwd = 0.6, colour = 2,fill = 4, alpha = 0.25)
Edades por rango etario:
data_values_range <- ind_personas2 %>% # Aggregate values in range
mutate(ranges = cut(EDAD,
seq(0, 100, 10))) %>%
group_by(ranges) %>%
dplyr::summarize(Total = n()) %>%
as.data.frame()
data_values_range$Porcentaje_Edad <- paste0(
sprintf("%4.1f",
round(data_values_range$Total/sum(data_values_range$Total)*100, 2)), "%")
data_values_range
## ranges Total Porcentaje_Edad
## 1 (0,10] 11611 11.6%
## 2 (10,20] 10820 10.8%
## 3 (20,30] 22565 22.5%
## 4 (30,40] 17096 17.1%
## 5 (40,50] 12399 12.4%
## 6 (50,60] 10114 10.1%
## 7 (60,70] 7001 7.0%
## 8 (70,80] 4462 4.4%
## 9 (80,90] 2197 2.2%
## 10 (90,100] 520 0.5%
## 11 <NA> 1496 1.5%
Podemos identificar que la edad de las personas que habitan en la comuna de Independencia se concentran entre 20 y 45 años aproximadamente. Esto nos indica que Independencia cuenta con habitantes relativamente jovenes, dentro de los cuales podrian ser tanto estudiantes como trabajadores.
Ind_n_educacion <-
ind_personas2 %>%
dplyr::filter(!is.na(NIVEL_EDU)) %>%
dplyr::filter(NIVEL_EDU!= 98 & NIVEL_EDU!= 99)%>%
dplyr::filter(EDAD>=18)
Ind_n_educacion2 <- table(Ind_n_educacion$NIVEL_EDU)
Ind_n_educacion2 <- as.data.frame(Ind_n_educacion2)
names(Ind_n_educacion2) <- c("nivel", "frecuencia")
Ind_n_educacion2$Porc_Educ <- paste0(
sprintf("%4.1f",
round(Ind_n_educacion2$frecuencia/sum(Ind_n_educacion2$frecuencia)*100, 2)), "%")
Ind_n_educacion2
## nivel frecuencia Porc_Educ
## 1 1 9 0.0%
## 2 2 4 0.0%
## 3 3 14 0.0%
## 4 4 150 0.2%
## 5 5 7462 9.6%
## 6 6 2179 2.8%
## 7 7 24233 31.1%
## 8 8 12277 15.8%
## 9 9 2987 3.8%
## 10 10 767 1.0%
## 11 11 10255 13.2%
## 12 12 16598 21.3%
## 13 13 848 1.1%
## 14 14 149 0.2%
figura1 <- ggplot(Ind_n_educacion2,aes(x = nivel, y = frecuencia)) +
geom_bar(stat = "identity", color= "darkblue", fill= "lightblue") +
labs(x = "Nivel", y = "Frecuencia", title = "Nivel educacion" , subtitle = "Comuna Independencia") +
theme_classic() +
scale_y_continuous(labels = scales::comma) +
geom_text(aes(label = Porc_Educ),
color="darkblue",
size=3,
vjust = -0.5)
figura1
print(paste("Escolaridad Promedio: ", round(mean(Ind_n_educacion$NIVEL_EDU),2)))
## [1] "Escolaridad Promedio: 8.71"
print(paste("Desviación Estandar Escolaridad: ", round(sd(Ind_n_educacion$NIVEL_EDU),2)))
## [1] "Desviación Estandar Escolaridad: 2.42"
rango <- c( (1:11), (11:14) )
ind_personas_2_2 <- ind_personas2 %>% dplyr::filter(!is.na(NIVEL_EDU)) %>%
dplyr::filter(NIVEL_EDU!= 98 & NIVEL_EDU!= 99)%>%
dplyr::filter(EDAD>=18)
data_values_range2 <- ind_personas_2_2 %>% # Aggregate values in range
mutate(ranges = cut(NIVEL_EDU,
seq(from = 1, to = 14, by = 9))) %>%
group_by(ranges) %>%
dplyr::summarize(Total = n()) %>%
as.data.frame()
data_values_range2$Porcentaje_Nivel_Educacional <- paste0(
sprintf("%4.1f",
round(data_values_range2$Total/sum(data_values_range2$Total)*100, 2)), "%")
data_values_range2
## ranges Total Porcentaje_Nivel_Educacional
## 1 (1,10] 50073 64.2%
## 2 <NA> 27859 35.8%
En términos del nivel de educación, un 28,1% de los habitantes de Independencia posee el nivel de “Científico Humanista”, lo que corresponde a que completaron la enseñanza media, pero no poseen estudios universitarios o posteriores. Luego, un 17,8% de la población de Independencia cuenta con un nivel de educación “Profesional”, un 16,5% cuenta con “Educación Básica”, un 13,6% con “Técnico Profesional” y un 11% con “Técnico Superior”. Aquello nos indica que Independencia se encuentra dividida entre individuos que sólo cuentan con enseñanza básica y media (correspondiente al 44,6% de la población) e individuos que poseen algún grado de enseñanza superior (correspondiente al 42,4% de la población).
#REMOVER OUTLIERS:
Ind_n_escolaridad <-
ind_personas2 %>%
dplyr::filter(!is.na(ESCOLARIDAD)) %>%
dplyr::filter(ESCOLARIDAD!= 98 & ESCOLARIDAD!= 99) %>%
dplyr::filter(EDAD>=18)
Ind_n_escolaridad2 <- table(Ind_n_escolaridad$ESCOLARIDAD)
Ind_n_escolaridad2 <- as.data.frame(Ind_n_escolaridad2)
names(Ind_n_escolaridad2) <- c("nivel", "frecuencia")
Ind_n_escolaridad2$Porc_Esc <- paste0(
sprintf("%4.1f",
round(Ind_n_escolaridad2$frecuencia/sum(Ind_n_escolaridad2$frecuencia)*100, 2)), "%")
Ind_n_escolaridad2
## nivel frecuencia Porc_Esc
## 1 0 1313 1.7%
## 2 1 235 0.3%
## 3 2 397 0.5%
## 4 3 651 0.8%
## 5 4 948 1.2%
## 6 5 803 1.0%
## 7 6 2715 3.5%
## 8 7 915 1.2%
## 9 8 3492 4.5%
## 10 9 1912 2.5%
## 11 10 4034 5.2%
## 12 11 3537 4.6%
## 13 12 29317 37.8%
## 14 13 2514 3.2%
## 15 14 5427 7.0%
## 16 15 6180 8.0%
## 17 16 3816 4.9%
## 18 17 8505 11.0%
## 19 18 91 0.1%
## 20 19 621 0.8%
## 21 20 87 0.1%
## 22 21 124 0.2%
figura2 <- ggplot(Ind_n_escolaridad2, aes(x = nivel, y = frecuencia)) +
geom_bar(stat = "identity",color="darkblue", fill="lightblue") +
labs(x="Nivel", y="Frecuencia", title="Años de Escolaridad" , subtitle = "Comuna Independencia") +
theme_classic() +
scale_y_continuous(labels = scales::comma) +
geom_text(aes(label = Porc_Esc),
color="darkblue",
size=3,
vjust = -0.5)
figura2
print(paste("Escolaridad Promedio: ", round(mean(Ind_n_escolaridad$ESCOLARIDAD),2)))
## [1] "Escolaridad Promedio: 12.04"
print(paste("Desviación Estandar Escolaridad: ", round(sd(Ind_n_escolaridad$ESCOLARIDAD),2)))
## [1] "Desviación Estandar Escolaridad: 3.64"
Al observar los años de escolaridad que poseen los habitantes mayores de 18 años de Independencia, se puede identificar que en su mayoria, un 37.8% de la población, cuenta con 12 años de escolaridad, lo cual corresponde a enseñanza media. Con mayor detalle, podemos ver que la mayoría de la fuerza laboral no sobrepasa los 12 años de educación, especificamente un 65% aproximadamente. En otras palabras, suponiendo la relación salario-años de educación, gran parte de los habitantes de la comuna poseen un sueldo relativo al promedio en Chile y por ende un bajo poder adquisitivo.
Si bien, gran parte de la concentración no supera cuarto medio, existe también una porción importante de personas con estudios superiores, esta corresponde a un 35% aproximadamente. Este segmento de personas, manteniendo el mismo supuesto anterior, tendrán un mayor poder adqusitivo.
En base al estudio anterior, a continuación se realizará el mismo análisis para las comunas contiguas a Independencia:
nombrecomunas <- c("Santiago", "Conchalí","Recoleta","Renca")
names(nombrecomunas) <- c("13101","13104","13127","13128")
ggplot(data = c_v_personas2, aes(x = EDAD))+
geom_histogram(color="darkblue", fill="lightblue")+
labs(x = "Edad", y = "Frecuencia", title = "Distribución Edades", subtitle = "Comunas: Santiago Centro, Conchalí, Recoleta y Renca") +
theme_classic() +
scale_x_continuous(breaks = pretty(ind_personas2$EDAD, n = 13),name = "Edad") +
scale_y_continuous(name = "", labels = scales::comma) +
facet_grid(COMUNA ~ ., labeller = labeller(COMUNA = nombrecomunas), scales = "free")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
c_v_n_educacion <-
c_v_personas2 %>%
dplyr::filter(!is.na(NIVEL_EDU)) %>%
dplyr::filter(NIVEL_EDU!= 98 & NIVEL_EDU!= 99)%>%
dplyr::filter(EDAD>=18)
c_v_n_educacion2 <- table(c_v_n_educacion$NOMBRE_COMUNA, c_v_n_educacion$NIVEL_EDU)
c_v_n_educacion2 <- as.data.frame(c_v_n_educacion2)
names(c_v_n_educacion2) <- c("Comuna", "Nivel_Educ", "Frecuencia")
c_v_n_educacion2 <- group_by(c_v_n_educacion2, Comuna) %>% mutate(Porc_Educ = Frecuencia/sum(Frecuencia)*100)
c_v_n_educacion2$Porc_Educ <- paste0(sprintf("%4.1f", round(c_v_n_educacion2$Porc_Educ, 2)), "%")
c_v_n_educacion2
## # A tibble: 56 × 4
## # Groups: Comuna [4]
## Comuna Nivel_Educ Frecuencia Porc_Educ
## <fct> <fct> <int> <chr>
## 1 Conchalí 1 1 " 0.0%"
## 2 Recoleta 1 5 " 0.0%"
## 3 Renca 1 8 " 0.0%"
## 4 Santiago 1 8 " 0.0%"
## 5 Conchalí 2 2 " 0.0%"
## 6 Recoleta 2 3 " 0.0%"
## 7 Renca 2 3 " 0.0%"
## 8 Santiago 2 3 " 0.0%"
## 9 Conchalí 3 2 " 0.0%"
## 10 Recoleta 3 5 " 0.0%"
## # … with 46 more rows
figura3 <- ggplot(c_v_n_educacion2,aes(x = Nivel_Educ, y = Frecuencia)) +
geom_bar(stat = "identity", color= "darkblue", fill= "lightblue") +
labs(x = "Nivel", y = "Frecuencia", title = "Nivel de Educacion" , subtitle = "Comunas: Santiago Centro, Conchalí, Recoleta y Renca") +
theme_classic() +
scale_y_continuous(labels = scales::comma) +
facet_grid(Comuna ~ ., labeller = labeller(Comuna = nombrecomunas), scales = "free") +
geom_text(aes(label = Porc_Educ),
color="black",
size=2.5,
vjust = -0.5)
figura3
educ_zonas <-
c_v_personas2 %>%
dplyr::filter(!is.na(NIVEL_EDU)) %>%
dplyr::filter(NIVEL_EDU!= 98 & NIVEL_EDU!= 99) %>%
dplyr::filter(EDAD>=18) %>%
group_by(NOMBRE_COMUNA) %>%
summarise(EDUC_PROM = mean(NIVEL_EDU),
MIX_EDUC = sd(NIVEL_EDU))
educ_zonas
## # A tibble: 4 × 3
## NOMBRE_COMUNA EDUC_PROM MIX_EDUC
## <fct> <dbl> <dbl>
## 1 Conchalí 7.99 2.29
## 2 Recoleta 8.14 2.39
## 3 Renca 7.60 2.16
## 4 Santiago 9.88 2.52
c_v_n_escolaridad <-
c_v_personas2 %>%
dplyr::filter(!is.na(ESCOLARIDAD)) %>%
dplyr::filter(ESCOLARIDAD!= 98 & ESCOLARIDAD!= 99)%>%
dplyr::filter(EDAD>=18)
c_v_n_escolaridad2 <- table(c_v_n_escolaridad$NOMBRE_COMUNA, c_v_n_escolaridad$ESCOLARIDAD)
c_v_n_escolaridad2 <- as.data.frame(c_v_n_escolaridad2)
names(c_v_n_escolaridad2) <- c("Comuna", "Nivel_Esc", "Frecuencia")
c_v_n_escolaridad2 <- group_by(c_v_n_escolaridad2, Comuna) %>% mutate(Porc_Esc = Frecuencia/sum(Frecuencia)*100)
c_v_n_escolaridad2$Porc_Esc <- paste0(sprintf("%4.1f", round(c_v_n_escolaridad2$Porc_Esc, 2)), "%")
c_v_n_escolaridad2
## # A tibble: 88 × 4
## # Groups: Comuna [4]
## Comuna Nivel_Esc Frecuencia Porc_Esc
## <fct> <fct> <int> <chr>
## 1 Conchalí 0 548 " 2.3%"
## 2 Recoleta 0 666 " 2.2%"
## 3 Renca 0 677 " 2.6%"
## 4 Santiago 0 891 " 1.1%"
## 5 Conchalí 1 148 " 0.6%"
## 6 Recoleta 1 183 " 0.6%"
## 7 Renca 1 183 " 0.7%"
## 8 Santiago 1 184 " 0.2%"
## 9 Conchalí 2 279 " 1.2%"
## 10 Recoleta 2 303 " 1.0%"
## # … with 78 more rows
figura4 <- ggplot(c_v_n_escolaridad2, aes(x = Nivel_Esc, y = Frecuencia)) +
geom_bar(stat = "identity",color="darkblue", fill="lightblue") +
labs(x="Nivel Escolaridad", y="Frecuencia", title="Años escolaridad" , subtitle = "Comunas: Santiago Centro, Conchalí, Recoleta y Renca") +
theme_classic() +
scale_y_continuous(labels = scales::comma) +
facet_grid(Comuna ~ ., labeller = labeller(Comuna = nombrecomunas), scales = "free") +
geom_text(aes(label = Porc_Esc),
color="darkblue",
size=3,
vjust = -0.5)
figura4
esco_zonas <-
c_v_personas2 %>%
dplyr::filter(!is.na(ESCOLARIDAD)) %>%
dplyr::filter(ESCOLARIDAD!= 98 & ESCOLARIDAD!= 99) %>%
dplyr::filter(EDAD>=18) %>%
group_by(NOMBRE_COMUNA) %>%
summarise(ESCOL_PROM = mean(ESCOLARIDAD),
MIX_EDUC = sd(ESCOLARIDAD))
esco_zonas
## # A tibble: 4 × 3
## NOMBRE_COMUNA ESCOL_PROM MIX_EDUC
## <fct> <dbl> <dbl>
## 1 Conchalí 10.8 3.85
## 2 Recoleta 11.1 3.94
## 3 Renca 10.3 3.76
## 4 Santiago 13.6 3.68
Tras este breve analisis exploratorio de las comunas limitantes con Independencia, podemos ver que tanto: Conchalí, Recoleta y Renca, siguen un patrón muy similar en terminos de años de escolaridad y educación que nuestra comuna de interés. Sin embargo, en Santiago Centro podemos notar que el nivel de escolaridad tiende a ser mas alto para su fuerza laboral. De hecho, su nivel de escolaridad promedio es de aproximadamente 14 años. En cambio, las demás no superan los 11 años.
Vamos a utilizar las comunas colindantes a Independencia, las cuales serían Conchalí, Renca, Recoleta y Santiago. Para ellas, analizaremos la distribución por zona de los niveles de educación en estas comunas.
censo17 <-
personas %>%
dplyr::filter(COMUNA == 13108 | COMUNA == 13128 | COMUNA == 13127 | COMUNA == 13104 | COMUNA == 13101 ) %>%
dplyr::filter(AREA == 1) %>%
dplyr::filter(P07 == 1) %>%
mutate(
CODIGO_COMUNA = COMUNA * 10 ^ 6,
DISTRITO_CENSAL = DC * 10 ^ 4,
CODIGO_AREA = AREA * 10 ^ 3,
ZC_LOC,
COD_INE_15 = as.numeric(CODIGO_COMUNA + DISTRITO_CENSAL + CODIGO_AREA + ZC_LOC)) %>%
dplyr::select(COD_INE_15, COMUNA, P07, P08, P09, P15, ESCOLARIDAD, P18)
colnames(censo17) <- c("ZONA", "COMUNA", "Parent", "Sexo", "Edad", "Educ_Nivel", "Escolaridad", "Rama_Econ")
jefe_hogar <- censo17 %>%
dplyr::filter(Escolaridad !=98 & Escolaridad !=99) %>%
dplyr::filter(Edad>=18) %>%
group_by(ZONA) %>%
summarise(Escol_prom = mean(Escolaridad))
ae <- censo_zc %>%
dplyr::select(COD_INE_15) %>%
left_join(jefe_hogar, by = c("COD_INE_15"="ZONA")) %>%
dplyr::filter(!is.na(Escol_prom))
boxplot(ae$Escol_prom)
tm_shape(ae) +
tm_fill("Escol_prom",palette = "Reds", title="", n=5, style = "quantile") + tm_borders() + tm_layout(legend.position = c("left", "bottom"))+ tm_layout(main.title = "Escolaridad promedio", title.size = 1.5,main.title.position="left")
Insight importante: Notamos que la media entre las 5 comunas es de 12 años, es decir, la mayoría de las personas completaron la educación escolar hasta 4° medio. Asimismo, en Santiago Centro existen zonas censales cuyo nivel de educacion promedio supera los 15 años, por lo tanto podemos inferir que son lugares donde ocurre el fenomeno de econmía del conocimiento, pues en estos lugares se concentran en su mayoría recintos de educación superior y empresas relacionadas a la tecnologia. Además en Renca, podemos observar algo similar en la zona censal que se encuentra en la esquina izquierda, esto probablemente se explica porque este lugar delimita con el aeropuerto y además hay en el multiples multinacionales.
crs_latlon <- "+proj=longlat +datum=WGS84 +no_defs"
crs_utm <- "+proj=utm +zone=19 +south +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0"
ae_sf <- st_as_sf(ae) %>%
st_transform(crs_utm) %>%
as_Spatial()
#QUEEN NEIGHBORS
neighbours_queen <- poly2nb(ae_sf)
neighbours_queen
## Neighbour list object:
## Number of regions: 283
## Number of nonzero links: 1678
## Percentage nonzero weights: 2.095169
## Average number of links: 5.929329
#ROOK
neighbours_rook <- poly2nb(ae_sf, queen = FALSE)
neighbours_rook
## Neighbour list object:
## Number of regions: 283
## Number of nonzero links: 1416
## Percentage nonzero weights: 1.768033
## Average number of links: 5.003534
#COMPARACIÓN DE RESULTADOS
plot(ae_sf, border = 'lightgrey')
plot(neighbours_rook, coordinates(ae_sf), add=TRUE, col='red')
Cada zona censal tiene aproximadamente 5 vecinos.
list_q <- nb2listw(neighbours_queen)
list_q
## Characteristics of weights list object:
## Neighbour list object:
## Number of regions: 283
## Number of nonzero links: 1678
## Percentage nonzero weights: 2.095169
## Average number of links: 5.929329
##
## Weights style: W
## Weights constants summary:
## n nn S0 S1 S2
## W 283 80089 283 101.2583 1163.665
globalMoran_q <- moran.test(ae$Escol_prom, list_q)
globalMoran_q
##
## Moran I test under randomisation
##
## data: ae$Escol_prom
## weights: list_q
##
## Moran I statistic standard deviate = 24.998, p-value < 2.2e-16
## alternative hypothesis: greater
## sample estimates:
## Moran I statistic Expectation Variance
## 0.878030442 -0.003546099 0.001243667
globalMoran_q[["estimate"]][["Moran I statistic"]]
## [1] 0.8780304
moran <- moran.plot(ae$Escol_prom, listw = nb2listw(neighbours_queen, style = "W"))
Podemos ver que tenemos una pendiente positiva, es decir que la correlación de los datos es positivo, por ende, identificamos que tenemos clustering positivo. Cuadrante 1 y cuadrante 3: los puntos se acumulan en estos dos cuadrantes, los rezagos están sobre la media, la autocorrelación es positiva. Las vecinos de las zonas estudiadas tienen niveles de educación similares. Cuadrantes 2 y cuadrante 4: la correlación en estos cuadrantes es negativa, rezagos bajo la media, tendencia a correlacionarse es muy bajo. Sin embargo, vemos que la mayoría de los datos se acumula en los cuadrantes 1 y 3, por ello, vamos a encontrar clústeres en su mayoría o únicamente HH y LL.
Lo anterior quiere decir que hay un patrón de agrupamiento, por ello utilizaremos la I de Moran Local para ver donde se ubican estos clusteres.
#Este mapa marca donde estan los HH, HL, LH y LL, o sea, donde se ubican los clusteres altos y los outliers.
local <- localmoran(x = ae$Escol_prom, listw = nb2listw(neighbours_queen, style = "W"))
moran.map <- cbind(ae, local)
tm_shape(moran.map) +
tm_fill(col = "Ii",
style = "quantile",
title = "local moran statistic")
## Variable(s) "Ii" contains positive and negative values, so midpoint is set to 0. Set midpoint = NA to show the full spectrum of the color palette.
Los valores altos están muy correlacionados entre sí.
quadrant <- vector(mode="numeric",length=nrow(local))
m.zc <- moran$x- mean(moran$x,na.rm = T)
m.local <- moran$wx- mean(moran$wx,na.rm = T)
signif <- 0.1
quadrant[m.zc >0 & m.local>0] <- 4
quadrant[m.zc <0 & m.local<0] <- 1
quadrant[m.zc <0 & m.local>0] <- 2
quadrant[m.zc >0 & m.local<0] <- 3
quadrant[local[,5]>signif] <- 0
quadrant
## [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 1 1 1 1 0 1 1 0 1 1 0 0 0 0 0 0
## [38] 0 0 4 4 0 0 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 1 1 1
## [75] 1 1 0 1 0 1 0 1 3 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
## [112] 1 0 0 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [149] 0 0 1 0 0 1 0 0 0 0 4 4 4 0 0 0 4 4 4 0 4 0 4 4 4 4 4 4 4 0 4 0 4 4 4 4 4
## [186] 4 0 4 4 0 4 4 4 4 4 4 4 4 4 4 4 4 0 4 4 4 4 4 0 4 4 4 4 0 0 0 0 0 0 0 0 0
## [223] 0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 4 4 4 4 4 4 4 4 4 4 4 4 4 4 0 4 4 4 4 4 4
## [260] 4 4 4 4 4 4 4 4 4 0 0 4 4 4 4 4 0 4 4 4 4 4 4 4
ae1 <- ae %>%
dplyr::select(-COD_INE_15) %>%
cbind(ae, quadrant) %>%
mutate(quadrant = as.character(quadrant))
mapa_1 <- ggplot() +
geom_sf(data= ae1, aes(fill = quadrant)) +
scale_fill_manual(name = "", labels = c("NS", "LL", "LH", "HL", "HH"),
values = c("0" = "white", "1"="blue", "2"= rgb(0,0,1,alpha=0.4), "3"=rgb(1,0,0,alpha=0.4), "4"= "red")) +
ggtitle('Indice de Moral Local (p=0,1)')
mapa_1
quadrant1 <- vector(mode="numeric",length=nrow(local))
signif1 <- 0.01
quadrant1[m.zc >0 & m.local>0] <- 4
quadrant1[m.zc <0 & m.local<0] <- 1
quadrant1[m.zc <0 & m.local>0] <- 2
quadrant1[m.zc >0 & m.local<0] <- 3
quadrant1[local[,5]>signif1] <- 0
ae2 <- ae %>%
dplyr::select(-COD_INE_15) %>%
cbind( quadrant1) %>%
mutate(quadrant1 = as.character(quadrant1))
mapa_2 <- ggplot() +
geom_sf(data= ae2, aes(fill = quadrant1)) +
scale_fill_manual(name = "", labels = c("NS", "LL", "LH", "HL", "HH"),
values = c("0" = "white", "1"="blue", "2"= rgb(0,0,1,alpha=0.4), "3"=rgb(1,0,0,alpha=0.4), "4"= "red")) +
ggtitle('Indice de Moral Local (p=0,01)')
mapa_2
library(ggpubr)
##
## Attaching package: 'ggpubr'
## The following objects are masked from 'package:spatstat.geom':
##
## border, rotate
## The following object is masked from 'package:raster':
##
## rotate
ggarrange(mapa_1,mapa_2, ncol = 2,common.legend = T,
labels = c('p-value<=0.1','p-value<=0.01'),
legend = 'bottom')
#rojo: educación más alto
#azul: educación más bajo
#blanco: no relacionado
Según el nivel de significancia, también cambia la cantidad de clústeres. Con un menor nivel de confianza, podemos observar desaparición de algunas zonas de clusteres, sobretodo de las zonas LL.
De acuerdo a lo visto con el primer gráfico de escolaridad promedio, notamos que efectivamente la concentración del clúster HH se ubica en la comuna de Santiago, esto debido a, como mencionamos anteriormente, hay gran cantidad de universidades, centros de investigación y oficinas de distintos rubros. Por otra parte, los clústers LL se ubican con mayor significancia en la comuna de Conchalí y Renca.
#PREGUNTA 2: Distribución de precios y superficie construida en la comuna. # V. Distribución de precios en la comuna de Independencia.
options(warn = -1,
scipen=999,
stringsAsFactors = FALSE)
crs_latlon <- "+proj=longlat +datum=WGS84 +no_defs"
crs_utm <-"+proj=utm +zone=19 +south +datum=WGS84 +units=m +no_defs"
cod_ae <- c(13108)
ae <- censo_zc %>%
dplyr::filter(as.integer(COMUNA) %in% cod_ae) %>%
dplyr::filter(AREA == 1)
Precios <- data %>%
dplyr::filter(as.integer(codigo_comuna) %in% cod_ae) %>%
mutate(
ufm2 = uf/m2_const)
Precios_casa1 <- data %>%
dplyr::filter(as.integer(codigo_comuna) %in% cod_ae) %>%
dplyr::filter(d_casa == 1) %>%
mutate(
ufm2 = uf/m2_const)
Precios_casa0 <- data %>%
dplyr::filter(as.integer(codigo_comuna) %in% cod_ae) %>%
dplyr::filter(d_casa == 0) %>%
mutate(
ufm2 = uf/m2_const)
Precios <- st_as_sf(Precios, coords = c('longitud','latitud'), crs = 4326, agr = 'identity')
Precios_ae <-
Precios %>%
st_join( transmute(ae, COD_INE_15),join = st_intersects, left = FALSE)
Precios_casa1 <- st_as_sf(Precios_casa1, coords = c('longitud','latitud'), crs = 4326, agr = 'identity')
precios_ae_c1 <-
Precios_casa1 %>%
st_join( transmute(ae, COD_INE_15),join = st_intersects, left = FALSE)
Precios_casa0 <- st_as_sf(Precios_casa0, coords = c('longitud','latitud'), crs = 4326, agr = 'identity')
precios_ae_c0 <-
Precios_casa0 %>%
st_join( transmute(ae, COD_INE_15),join = st_intersects, left = FALSE)
grafo_base <- ae %>% ggplot() +geom_sf(fill = NA) + theme_bw()
grafo_base +
geom_sf(data = precios_ae_c0, color = alpha("blue", 0.4), shape=15) +
geom_sf(data = precios_ae_c1, color = alpha("red", 0.4), shape=17)+
ggtitle('Departamentos y Casas en Independencia')
grafo_base +
geom_sf(data = Precios_ae, color = alpha("red", 0.4)) +
ggtitle('Referencias totales disponibles en Independencia')
print(paste("Precio promedio UF/m2 comuna Independencia: ", round(mean(Precios$ufm2),2)))
## [1] "Precio promedio UF/m2 comuna Independencia: 54.45"
print(paste("Precio promedio DEPTO UF/m2 comuna Independencia: ", round(mean(Precios_casa0$ufm2),2)))
## [1] "Precio promedio DEPTO UF/m2 comuna Independencia: 55.53"
print(paste("Precio promedio CASA UF/m2 comuna Independencia: ", round(mean(Precios_casa1$ufm2),2)))
## [1] "Precio promedio CASA UF/m2 comuna Independencia: 47.06"
area_estudio_utm_sp <-
ae %>%
st_transform(crs_utm) %>%
as_Spatial()
Precios_ae_utm_sp <-
Precios_ae %>%
st_transform(crs_utm) %>%
as_Spatial()
ext <- raster::extent(Precios_ae_utm_sp)
x_min <- ext[1] - 100
x_max <- ext[2] + 100
y_min <- ext[3] - 100
y_max <- ext[4] + 100
grd <- expand.grid(x = seq(from = x_min, to = x_max, by = 10),
y = seq(from = y_min, to = y_max, by = 10))
coordinates(grd) <- ~x + y
gridded(grd) <- TRUE
proj4string(grd) <- crs_utm
idw_precios_viv <-
gstat::idw(
formula = Precios_ae_utm_sp@data$ufm2 ~ 1,
locations = Precios_ae_utm_sp,
newdata = grd,
idp = 1,
na.action = na.omit,
nmax = 12)
## [inverse distance weighted interpolation]
proj4string(idw_precios_viv) <- proj4string(Precios_ae_utm_sp)
idw_precios_viv <- mask(raster(idw_precios_viv), area_estudio_utm_sp)
tm_shape(idw_precios_viv) +
tm_raster(n=10,palette = "viridis",
title="Precios Ofertados \nInverse Distance Weighted (IDW)")
#PREGUNTA 3: Concentración de proyectos inmobiliarios en venta, separando el mercado de las casas de los departamentos. # VI. Concentración de proyectos inmobiliarios en venta: Casas y departamentos
Precio UF/m2 promedio por zona en Independencia:
ae4 <- data_1_deptos <- data %>%
filter(d_proyecto==0) %>%
filter(d_casa==0) %>%
filter(codigo_comuna == comuna_indep) %>%
group_by(codigo_zona) %>%
mutate(ufm2 = uf/m2_const) %>%
summarise(uf_m2_promedio = mean(ufm2)) %>%
dplyr::select(codigo_zona, uf_m2_promedio) %>%
left_join(censo_zc, by = c("codigo_zona"="COD_INE_15"))
ae4 <- st_sf(ae4)
tm_shape(ae4) + tm_fill("uf_m2_promedio",palette = "Reds", title="", n=5, style = "quantile") + tm_borders() + tm_layout(legend.position = c("left", "bottom"))+ tm_layout(main.title = "Precio Promedio por Zona para Departamentos", main.title.size = 0.9,main.title.position="left")
ae5 <- data_1_deptos <- data %>%
filter(d_casa==1) %>%
filter(d_proyecto==0)%>%
filter(codigo_comuna == comuna_indep) %>%
group_by(codigo_zona) %>%
mutate(ufm2 = uf/m2_const) %>%
summarise(uf_m2_promedio = mean(ufm2)) %>%
dplyr::select(codigo_zona, uf_m2_promedio) %>%
left_join(censo_zc, by = c("codigo_zona"="COD_INE_15"))
ae5 <- st_sf(ae5)
tm_shape(ae5) + tm_fill("uf_m2_promedio",palette = "Blues", title="", n=5, style = "quantile") + tm_borders() + tm_layout(legend.position = c("left", "bottom"))+ tm_layout(main.title = "Precio Promedio por Zona para Casas", main.title.size = 0.9,main.title.position="left")
descripcion deptos / casas
summary(precios_ae_c0)
## ID uf m2_const sup_terreno dormitorios
## Min. :13218 Min. :1303 Min. : 20.0 Min. : 20.0 Min. :1.000
## 1st Qu.:13435 1st Qu.:1900 1st Qu.: 32.0 1st Qu.: 32.0 1st Qu.:1.000
## Median :13654 Median :2200 Median : 40.0 Median : 40.0 Median :2.000
## Mean :13652 Mean :2338 Mean : 44.3 Mean : 44.3 Mean :1.776
## 3rd Qu.:13869 3rd Qu.:2600 3rd Qu.: 52.0 3rd Qu.: 52.0 3rd Qu.:2.000
## Max. :14084 Max. :9500 Max. :463.0 Max. :463.0 Max. :4.000
## baños estacionamientos bodegas d_casa
## Min. :1.000 Min. : 0.0000 Min. :0.00000 Min. :0
## 1st Qu.:1.000 1st Qu.: 0.0000 1st Qu.:0.00000 1st Qu.:0
## Median :1.000 Median : 0.0000 Median :0.00000 Median :0
## Mean :1.186 Mean : 0.2854 Mean :0.08121 Mean :0
## 3rd Qu.:1.000 3rd Qu.: 0.0000 3rd Qu.:0.00000 3rd Qu.:0
## Max. :3.000 Max. :15.0000 Max. :3.00000 Max. :0
## d_proyecto codigo_zona codigo_comuna codigo_region
## Min. :0.0000 Min. :13108011001 Min. :13108 Min. :13
## 1st Qu.:0.0000 1st Qu.:13108021004 1st Qu.:13108 1st Qu.:13
## Median :0.0000 Median :13108041002 Median :13108 Median :13
## Mean :0.0174 Mean :13108039970 Mean :13108 Mean :13
## 3rd Qu.:0.0000 3rd Qu.:13108051005 3rd Qu.:13108 3rd Qu.:13
## Max. :1.0000 Max. :13108071002 Max. :13108 Max. :13
## ufm2 COD_INE_15 geometry
## Min. : 4.104 Min. :13108011001 POINT :862
## 1st Qu.: 49.094 1st Qu.:13108021004 epsg:4326 : 0
## Median : 54.644 Median :13108041002 +proj=long...: 0
## Mean : 55.535 Mean :13108039970
## 3rd Qu.: 61.083 3rd Qu.:13108051005
## Max. :242.424 Max. :13108071002
summary(precios_ae_c1)
## ID uf m2_const sup_terreno
## Min. :599.0 Min. : 1937 Min. : 51.0 Min. : 60.0
## 1st Qu.:630.2 1st Qu.: 4594 1st Qu.:105.0 1st Qu.:126.2
## Median :661.5 Median : 5982 Median :140.0 Median :216.5
## Mean :661.5 Mean : 6657 Mean :149.6 Mean :235.2
## 3rd Qu.:692.8 3rd Qu.: 7978 3rd Qu.:186.2 3rd Qu.:306.0
## Max. :724.0 Max. :17900 Max. :428.0 Max. :565.0
## dormitorios baños estacionamientos bodegas d_casa
## Min. :2.000 Min. :1.000 Min. :0.00 Min. :0.0000 Min. :1
## 1st Qu.:3.000 1st Qu.:2.000 1st Qu.:0.00 1st Qu.:0.0000 1st Qu.:1
## Median :4.000 Median :2.000 Median :0.00 Median :0.0000 Median :1
## Mean :4.333 Mean :2.246 Mean :1.04 Mean :0.1111 Mean :1
## 3rd Qu.:5.000 3rd Qu.:3.000 3rd Qu.:2.00 3rd Qu.:0.0000 3rd Qu.:1
## Max. :9.000 Max. :7.000 Max. :5.00 Max. :2.0000 Max. :1
## d_proyecto codigo_zona codigo_comuna codigo_region
## Min. :0 Min. :13108011002 Min. :13108 Min. :13
## 1st Qu.:0 1st Qu.:13108031002 1st Qu.:13108 1st Qu.:13
## Median :0 Median :13108051001 Median :13108 Median :13
## Mean :0 Mean :13108041955 Mean :13108 Mean :13
## 3rd Qu.:0 3rd Qu.:13108051005 3rd Qu.:13108 3rd Qu.:13
## Max. :0 Max. :13108071002 Max. :13108 Max. :13
## ufm2 COD_INE_15 geometry
## Min. : 19.37 Min. :13108011002 POINT :126
## 1st Qu.: 35.97 1st Qu.:13108031002 epsg:4326 : 0
## Median : 43.94 Median :13108051001 +proj=long...: 0
## Mean : 47.06 Mean :13108041955
## 3rd Qu.: 55.16 3rd Qu.:13108051005
## Max. :112.50 Max. :13108071002
#PREGUNTA 4:Concentración de nueva oferta en la comuna de estudio.
PE_2017_sf <- data2 %>%
st_transform(crs_latlon)
PE_2017_ae <-
PE_2017_sf %>%
st_join(
transmute(ae),join = st_intersects,left = FALSE)
grafo_base +
geom_sf(data = PE_2017_ae, color = alpha("blue", 0.4)) +
ggtitle('Referencias disponibles en area de estudio')
PE_2017_ae_habitacional <- PE_2017_ae %>%
dplyr::filter(USO_DESTIN == "HABITACIONAL")
tabla <- barplot(table(PE_2017_ae_habitacional$GLOSA_DEST))
PE_2017_ae_utm_sp <-
PE_2017_ae %>%
dplyr::filter(USO_DESTIN == "HABITACIONAL") %>%
st_transform(crs_utm) %>%
as_Spatial()
w <- as.owin(c(x_min - 500, x_max + 500, y_min -500, y_max + 500))
pts <- coordinates(PE_2017_ae_utm_sp)
p <- ppp(pts[,1], pts[,2], window = w)
kde_PE_img <-
stats::density(
x = p,
adjust = .5,
weights = PE_2017_ae_utm_sp@data$CANTIDAD_U)
kde_PE <- raster(kde_PE_img)
proj4string(kde_PE) <- proj4string(PE_2017_ae_utm_sp)
kde_PE <- mask(kde_PE, area_estudio_utm_sp)
kde_PE_adj <- kde_PE * 10000
tm_shape(kde_PE_adj) +
tm_raster(n=10,palette = "viridis",
title="Permisos de Edificación \nKernel Density Estimation (KDE)")
pix_kde_PE <- as(kde_PE_adj, "SpatialPixelsDataFrame")
df_kde_PE <- as.data.frame(pix_kde_PE)
names(df_kde_PE) <- c("value","X","Y")
p_kde_PE <-
ggplot(aes(x = X, y = Y), data = df_kde_PE) +
geom_tile(aes(fill = value)) +
coord_equal() +
scale_fill_viridis() +
theme_bw() +
xlab("") + ylab("") +
labs(title = "Permisos de Edificación Area de Estudio",
subtitle = "Kernel Density Estimation (KDE)",
fill = "Densidad\nNuevos Proyectos")
p_kde_PE
SOBREPOSICIóN DE IMÁGENES
Para ver con mayor claridad la interacción de estas variables podemos realizar un mapa dinámico (leaflet):
viv <- idw_precios_viv
PE <- kde_PE_adj
palviv<- colorNumeric(c('#482677FF','#404788FF','#39568CFF','#1F968BFF','#73D055FF','#FDE725FF'),
values(viv), na.color = "transparent")
palPE <- colorNumeric(c('#ffffd4','#fee391','#fec44f','#fe9929','#d95f0e','#993404'),
values(PE), na.color = "transparent")
leaflet(data = ae) %>%
## mapas de fondo1
addTiles(group = "OSM (default)") %>%
addProviderTiles(providers$Stamen.Toner, group = "Toner") %>%
addProviderTiles(providers$Stamen.TonerLite, group = "Toner Lite") %>%
addProviderTiles(providers$Esri.WorldImagery, group = "Satellite")%>%
#raster
addRasterImage(viv, colors = palviv, opacity = 0.7, group = "viv") %>%
addLegend("bottomleft", pal = palviv, values = values(viv), group = "viv",
title = "viv", opacity = 0.4)%>%
addRasterImage(PE, colors = palPE, opacity = 0.7, group = "PE") %>%
addLegend("bottomleft", pal = palPE, values = values(PE), group = "PE",
title = "PE", opacity = 0.4)%>%
## Controles
addLayersControl(
baseGroups = c("Toner Lite", "OSM (default)", "Toner", "Satellite"),
overlayGroups = c( "viv", "PE" ),
options = layersControlOptions(collapsed = TRUE))
dest_permiso <- table(ind_permisos$GLOSA_DEST)
dest_permiso <- as.data.frame(dest_permiso)
names(dest_permiso) <- c("destino", "frecuencia")
dest_permiso
## destino
## 1 Bares, restaurantes y cafés
## 2 Casa aislada
## 3 Casa continua
## 4 Casa continua; Comercio
## 5 Casa pareada
## 6 Comercio
## 7 Comercio; Oficinas sin destino específico
## 8 Comercio; Oficinas sin destino específico; Otros
## 9 Comercio; Transportes y almacenamiento; Oficinas sin destino específico
## 10 Esparcimiento y diversión
## 11 Esparcimiento y diversión; Otros
## 12 Locales comerciales
## 13 Locales comerciales; Oficinas sin destino específico
## 14 Oficinas sin destino específico
## 15 Organizaciones religiosas
## 16 Salud
## frecuencia
## 1 1
## 2 7
## 3 31
## 4 1
## 5 2
## 6 8
## 7 1
## 8 1
## 9 1
## 10 2
## 11 1
## 12 2
## 13 1
## 14 1
## 15 1
## 16 3
figura4 <- ggplot(dest_permiso, aes(x = reorder(destino,frecuencia), y = frecuencia)) + geom_bar(stat = "identity") +labs(x="Destino", y="Frecuencia", title="Cantidad proyectos y sus destinos" , subtitle = "Comuna Independencia") + coord_flip() + theme_classic()+ scale_fill_brewer(palette="Dark2")
figura4