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.

II. Análisis Macro Comuna Independencia y Comunas Vecinas

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"

III. Análisis Distribución Variables de Interés

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.

IV. Análisis exploratorio y asociación espacial de variable “escolaridad promedio”

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