Correlaciones entre variables del CENSO de Viviendas, Hogares y Personas e Ingresos promedios comunales de la CASEN 2017.

P02: Ocupación de la vivienda

VE-CC-AJ

DataIntelligence

Lunes 12-07-2021


1 Nivel nacional URBANO (código 1)

1.1 Construcción de la tabla a correlacionar

Construcción de tablas con frecuencias de respuesta por categoría desde el Censo: Viviendas

1.2 Pregunta P02: Ocupación de la vivienda

Esta pregunta posee 4 categorias de respuesta:

1 Con moradores presentes.
2 Con moradores ausentes.
3 En venta, para arriendo, abandonada u otro.
4 De temporada (vacacional u otro).

Leemos las respuestas a la pregunta P02 del censo de viviendas 2017 y obtenemos la tabla de frecuencias por categoría:

Generación de tabla de contingencia para la variable P02

tabla_con_clave <- readRDS("censos_con_clave/censo_viviendas_con_clave_17.rds")
tabla_con_clave_u <- filter(tabla_con_clave, tabla_con_clave$AREA == 1)
b <- tabla_con_clave_u$COMUNA
c <- tabla_con_clave_u$P02
cross_tab =  xtabs( ~ unlist(b) + unlist(c))
tabla <- as.data.frame(cross_tab)
d <-tabla[!(tabla$Freq == 0),]
d$anio <- "2017"


categorias <- sort(unique(tabla_con_clave_u$P02 ))
categorias <- as.data.frame(categorias)
names(categorias)[1] <- "cat"

categorias <- filter(categorias, categorias$cat != 99)
categorias <- filter(categorias, categorias$cat != 98)

d_t <- filter(d,d$unlist.c. == categorias[1,1])
for(i in categorias[2,1]:categorias[nrow(categorias),1]){
  d_i <- filter(d,d$unlist.c. == i)
  d_t = merge( x = d_t, y = d_i, by = "unlist.b.", all.x = TRUE)
}
 
# Agregamos un cero a los códigos comunales de 4 dígitos, que queda en la columna llamada **código**:
codigos <- d_t$unlist.b.
rango <- seq(1:nrow(d_t))
cadena <- paste("0",codigos[rango], sep = "")
cadena <- substr(cadena,(nchar(cadena)[rango])-(4),6)
codigos <- as.data.frame(codigos)
cadena <- as.data.frame(cadena)
comuna_corr <- cbind(d_t,cadena)
comuna_corr <- comuna_corr[,-c(1),drop=FALSE] 
 
names(comuna_corr)[ncol(comuna_corr)] <- "código"
 
quitar <- seq(3,(ncol(comuna_corr)-1),3)
comuna_corr <- comuna_corr[,-c(quitar),drop=FALSE]


names(comuna_corr)[2] <- "Con moradores presentes"
names(comuna_corr)[4] <- "Con moradores ausentes"
names(comuna_corr)[6] <- "En venta, para arriendo, abandonada u otro"
names(comuna_corr)[8] <- "De temporada (vacacional u otro)"

renombrar <- seq(1,(ncol(comuna_corr)-2),2)
for (v in renombrar) {
  names(comuna_corr)[v] <- "categoria"
}
 
## Generación de Ingresos promedios a nivel urbano y su unión con la tabla de contingencia


ingresos_expandidos_2017 <- readRDS("Ingresos_expandidos_urbano_17.rds")
df_2017_2 = merge( x = comuna_corr, y = ingresos_expandidos_2017, by = "código", all.x = TRUE)

df_2017_2 <- df_2017_2[,-c(2,4,6,8,10),drop=FALSE]

kbl(head(df_2017_2,50)) %>%
  kable_styling(bootstrap_options = c("striped", "hover")) %>%
  kable_paper() %>%
  scroll_box(width = "100%", height = "300px")
código Con moradores presentes Con moradores ausentes En venta, para arriendo, abandonada u otro De temporada (vacacional u otro) ingresos_expandidos
01101 55473 3597 5382 1048 71930106513
01107 28418 1748 2716 209 33766585496
01401 2760 300 257 51 4966851883
01404 356 52 110 25 NA
01405 1291 192 165 419 3068247619
02101 98654 5897 6350 853 133249367039
02102 3147 182 279 33 4979702302
02104 3216 349 284 58 5109282942
02201 45714 3987 3022 324 71981127235
02203 1641 224 85 31 4869699464
02301 7656 641 740 110 7207910819
02302 1456 184 115 38 3084818966
03101 44680 3134 5410 418 52819016037
03102 4888 673 460 1321 5628052276
03103 2877 74 284 22 4671058718
03201 3301 198 660 93 3499391196
03202 4363 708 888 257 4895805596
03301 13895 1089 1095 139 16404810756
03303 1397 91 211 59 2035200054
03304 2873 365 396 134 3424422750
04101 61968 4859 6946 5015 61749247282
04102 63744 4749 7318 6254 61277269093
04103 3073 184 431 119 2855312920
04104 398 18 97 44 908664019
04106 5388 281 331 202 7058750373
04201 6810 430 549 102 8703433491
04202 706 52 158 93 2122281844
04203 5831 685 639 3407 6098444926
04204 5119 337 449 140 7690585032
04301 26844 1716 2037 384 31197719080
04302 2113 226 214 102 3124505460
04303 4834 235 326 124 6930326684
04304 1919 231 198 82 2328107498
05101 97891 5332 7770 4979 90946261553
05102 5745 176 267 69 9352095757
05103 12943 607 1070 4608 14075920021
05105 5418 344 680 9090 5490274928
05107 8840 532 814 4768 9839456903
05109 116645 8817 8779 12878 118563074323
05201 2414 249 115 57 NA
05301 19451 966 1599 116 23711104774
05302 3350 153 387 35 3654416747
05303 2502 75 187 38 2855998928
05304 3651 139 231 30 4140022481
05401 8625 459 673 281 9183080280
05402 3866 165 231 49 5094117762
05403 1771 83 226 3313 1921527704
05404 1443 71 175 120 2333781007
05405 1670 60 176 3255 2160521991
05501 25102 889 2408 196 26131733924

1.2.0.1 Tabla a correlacionar:

#union_final_urb_corr  <- union_final_urb[,-c(1)]
write_xlsx(df_2017_2, "P02_urbano.xlsx")

1.2.0.2 Estadísticos básicos de nuestras frecuencias

data_sum <- summary(df_2017_2)

kbl(head(data_sum)) %>%
  kable_styling(bootstrap_options = c("striped", "hover")) %>%
  kable_paper() %>%
  scroll_box(width = "100%", height = "500px")
código Con moradores presentes Con moradores ausentes En venta, para arriendo, abandonada u otro De temporada (vacacional u otro) ingresos_expandidos
Length:319 Min. : 308 Min. : 6.0 Min. : 24.0 Min. : 5.0 Min. :7.054e+08
Class :character 1st Qu.: 1835 1st Qu.: 87.0 1st Qu.: 136.0 1st Qu.: 49.5 1st Qu.:2.954e+09
Mode :character Median : 4484 Median : 222.0 Median : 349.0 Median : 92.0 Median :5.697e+09
NA Mean : 15129 Mean : 762.9 Mean : 943.1 Mean : 513.3 Mean :1.784e+10
NA 3rd Qu.: 15422 3rd Qu.: 681.0 3rd Qu.: 853.5 3rd Qu.: 179.0 3rd Qu.:1.857e+10
NA Max. :164314 Max. :15816.0 Max. :12142.0 Max. :13775.0 Max. :1.870e+11
union_final_urb <- df_2017_2

1.2.0.3 Gráficas:

library(plotly)
df_2017_fig <- union_final_urb 
fig <- plot_ly(df_2017_fig, x = df_2017_fig$código, y = df_2017_fig[,2]
, name = colnames(df_2017_fig[2]), type = 'scatter', mode = 'lines',
                 width=7000, height=400) 

grafica_fn <- function(g){
  fig <<- fig %>% add_trace(y = ~df_2017_fig[,g]
, name = colnames(df_2017_fig[g]), mode = 'lines',
                 width=5000, height=400) 
}

for (g in 3:(ncol(union_final_urb))) {
grafica_fn(g)
}

fig <- fig %>% layout(autosize = T)
fig 
df_2017_2f <- filter(df_2017_fig, df_2017_fig$ingresos_expandidos != 'is.na')
df_2017_2f_sin_codigo <-  df_2017_2f[,-c(1)]

df_2017_2f_sin_codigo_sin_ing_exp <-  df_2017_2f_sin_codigo[,-c(5)]
tabla <- cor(x=df_2017_2f_sin_codigo_sin_ing_exp, y=df_2017_2f_sin_codigo$ingresos_expandidos, method=c("kendall"), use = "pairwise")
tabla <- tabla[-c(5),]
tabla <- as.data.frame(tabla)
names(tabla)[1] <- "Correlación"
saveRDS(tabla,"tablas_de_corr/C_P02_URBANO.rds")
tabla %>% rownames_to_column("Ocupación de la vivienda")%>%  
  mutate(Correlación = cell_spec(Correlación, background=ifelse(Correlación == max(Correlación), "#fc0303", "#5cb81f"))) %>% 
  kbl(booktabs = T, linesep = "", escape=FALSE) %>% 
    kable_paper(full_width = F) %>%
    column_spec(1, color = "black")%>%
    column_spec(2, color = "white")
Ocupación de la vivienda Correlación
Con moradores presentes 0.859878064245561
Con moradores ausentes 0.733527063970099
En venta, para arriendo, abandonada u otro 0.737329346036761
De temporada (vacacional u otro) 0.376003711302094
df_arreglo <- df_2017_fig

1.3 Kendall

#df_2017_fig <- filter(df_arreglo, df_2017_2frt$ingresos_expandidos != 'is.na')
chart.Correlation(df_2017_2f_sin_codigo, histogram=TRUE, method = c( "kendall"), pch=20)

1.4 Pearson

chart.Correlation(df_2017_2f_sin_codigo, histogram=TRUE, method = c( "pearson"), pch=20)

1.5 Spearman

chart.Correlation(df_2017_2f_sin_codigo, histogram=TRUE, method = c( "spearman"), pch=20)

2 Nivel nacional RURAL (código 2)

2.1 Pregunta P02: Ocupación de la vivienda

Esta pregunta posee 4 categorias de respuesta:

1 Con moradores presentes.
2 Con moradores ausentes.
3 En venta, para arriendo, abandonada u otro.
4 De temporada (vacacional u otro).

Leemos las respuestas a la pregunta P02 del censo de viviendas 2017 y obtenemos la tabla de frecuencias por categoría:

tabla_con_clave <- readRDS("censos_con_clave/censo_viviendas_con_clave_17.rds")
tabla_con_clave_u <- filter(tabla_con_clave, tabla_con_clave$AREA == 2)
b <- tabla_con_clave_u$COMUNA
c <- tabla_con_clave_u$P02
cross_tab =  xtabs( ~ unlist(b) + unlist(c))
tabla <- as.data.frame(cross_tab)
d <-tabla[!(tabla$Freq == 0),]
d$anio <- "2017"


categorias <- sort(unique(tabla_con_clave_u$P02 ))
categorias <- as.data.frame(categorias)
names(categorias)[1] <- "cat"

categorias <- filter(categorias, categorias$cat != 99)
categorias <- filter(categorias, categorias$cat != 98)

d_t <- filter(d,d$unlist.c. == categorias[1,1])
for(i in categorias[2,1]:categorias[nrow(categorias),1]){
  d_i <- filter(d,d$unlist.c. == i)
  d_t = merge( x = d_t, y = d_i, by = "unlist.b.", all.x = TRUE)
}
 
# Agregamos un cero a los códigos comunales de 4 dígitos, que queda en la columna llamada **código**:
codigos <- d_t$unlist.b.
rango <- seq(1:nrow(d_t))
cadena <- paste("0",codigos[rango], sep = "")
cadena <- substr(cadena,(nchar(cadena)[rango])-(4),6)
codigos <- as.data.frame(codigos)
cadena <- as.data.frame(cadena)
comuna_corr <- cbind(d_t,cadena)
comuna_corr <- comuna_corr[,-c(1),drop=FALSE] 
 
names(comuna_corr)[ncol(comuna_corr)] <- "código"
 
quitar <- seq(3,(ncol(comuna_corr)-1),3)
comuna_corr <- comuna_corr[,-c(quitar),drop=FALSE]


names(comuna_corr)[2] <- "Con moradores presentes"
names(comuna_corr)[4] <- "Con moradores ausentes"
names(comuna_corr)[6] <- "En venta, para arriendo, abandonada u otro"
names(comuna_corr)[8] <- "De temporada (vacacional u otro)"

renombrar <- seq(1,(ncol(comuna_corr)-2),2)
for (v in renombrar) {
  names(comuna_corr)[v] <- "categoria"
}
 
kbl(head(comuna_corr,50)) %>%
  kable_styling(bootstrap_options = c("striped", "hover")) %>%
  kable_paper() %>%
  scroll_box(width = "100%", height = "300px")
categoria Con moradores presentes categoria Con moradores ausentes categoria En venta, para arriendo, abandonada u otro categoria De temporada (vacacional u otro) código
1 797 2 76 3 99 4 516 01101
1 52 2 8 3 25 4 3 01107
1 1367 2 246 3 561 4 3385 01401
1 481 2 9 3 80 4 522 01402
1 478 2 191 3 129 4 1233 01403
1 595 2 46 3 285 4 1402 01404
1 337 2 85 3 90 4 147 01405
1 329 2 11 3 68 4 291 02101
1 144 2 39 3 43 4 350 02102
1 386 2 28 3 150 4 6 02103
1 326 2 100 3 52 4 210 02104
1 979 2 387 3 637 4 2259 02201
1 106 2 33 3 25 4 275 02202
1 1393 2 197 3 268 4 307 02203
1 215 2 103 3 78 4 1129 02301
1 68 2 6 3 37 4 55 02302
1 966 2 337 3 287 4 334 03101
1 811 2 231 3 249 4 7019 03102
1 971 2 167 3 189 4 162 03103
1 418 2 75 3 110 4 1298 03201
1 254 2 30 3 322 4 92 03202
1 1936 2 443 3 521 4 286 03301
1 1777 2 296 3 416 4 438 03302
1 878 2 116 3 205 4 554 03303
1 504 2 67 3 148 4 1741 03304
1 5784 2 598 3 609 4 1686 04101
1 4089 2 423 3 473 4 2451 04102
1 411 2 48 3 51 4 189 04103
1 1083 2 95 3 365 4 560 04104
1 1624 2 84 3 267 4 398 04105
1 3390 2 282 3 265 4 640 04106
1 3388 2 196 3 483 4 362 04201
1 2698 2 140 3 534 4 897 04202
1 1448 2 152 3 224 4 903 04203
1 3721 2 218 3 399 4 315 04204
1 7908 2 685 3 1461 4 1062 04301
1 2797 2 229 3 655 4 663 04302
1 5443 2 336 3 1007 4 769 04303
1 1846 2 114 3 221 4 202 04304
1 1700 2 112 3 443 4 509 04305
1 281 2 62 3 111 4 772 05101
1 2966 2 233 3 301 4 1850 05102
1 781 2 34 3 110 4 137 05103
1 359 2 20 3 37 4 30 05104
1 970 2 61 3 120 4 769 05105
1 1615 2 134 3 137 4 604 05107
1 144 2 56 3 16 4 85 05201
1 1246 2 51 3 145 4 89 05301
1 1321 2 61 3 137 4 44 05302
1 670 2 39 3 83 4 40 05303
## Generación de Ingresos promedios a nivel urbano y su unión con la tabla de contingencia


ingresos_expandidos_2017 <- readRDS("Ingresos_expandidos_rural_17.rds")
df_2017_2 = merge( x = comuna_corr, y = ingresos_expandidos_2017, by = "código", all.x = TRUE)


df_2017_2 <- df_2017_2[,-c(2,4,6,8,10),drop=FALSE]

kbl(head(df_2017_2,50)) %>%
  kable_styling(bootstrap_options = c("striped", "hover")) %>%
  kable_paper() %>%
  scroll_box(width = "100%", height = "300px")
código Con moradores presentes Con moradores ausentes En venta, para arriendo, abandonada u otro De temporada (vacacional u otro) ingresos_expandidos
01101 797 76 99 516 52180713221
01107 52 8 25 3 NA
01401 1367 246 561 3385 3822052676
01402 481 9 80 522 283538750
01403 478 191 129 1233 NA
01404 595 46 285 1402 645917134
01405 337 85 90 147 2502464414
02101 329 11 68 291 NA
02102 144 39 43 350 NA
02103 386 28 150 6 3290056742
02104 326 100 52 210 3844002134
02201 979 387 637 2259 39457387800
02202 106 33 25 275 NA
02203 1393 197 268 307 2985112297
02301 215 103 78 1129 4183793832
02302 68 6 37 55 NA
03101 966 337 287 334 38699138722
03102 811 231 249 7019 NA
03103 971 167 189 162 4034940816
03201 418 75 110 1298 NA
03202 254 30 322 92 4545663075
03301 1936 443 521 286 11299454698
03302 1777 296 416 438 1039186477
03303 878 116 205 554 1425547554
03304 504 67 148 1741 2089066548
04101 5784 598 609 1686 44274327972
04102 4089 423 473 2451 46918711304
04103 411 48 51 189 2397612293
04104 1083 95 365 560 982530309
04105 1624 84 267 398 786383423
04106 3390 282 265 640 4695441470
04201 3388 196 483 362 5109649759
04202 2698 140 534 897 1558270441
04203 1448 152 224 903 3704185607
04204 3721 218 399 315 5681637894
04301 7908 685 1461 1062 25683781418
04302 2797 229 655 663 2300832587
04303 5443 336 1007 769 5835357638
04304 1846 114 221 202 1817183694
04305 1700 112 443 509 778712384
05101 281 62 111 772 74756602991
05102 2966 233 301 1850 6779018483
05103 781 34 110 137 NA
05104 359 20 37 30 NA
05105 970 61 120 769 4295363979
05107 1615 134 137 604 9102071069
05201 144 56 16 85 NA
05301 1246 51 145 89 18714795984
05302 1321 61 137 44 3471349123
05303 670 39 83 40 2512319225

2.1.0.1 Tabla a correlacionar:

union_final_rur <- df_2017_2
#union_final_urb_corr  <- union_final_urb[,-c(1)]
write_xlsx(union_final_rur, "P02_rural.xlsx")

2.1.0.2 Estadísticos básicos de nuestras frecuencias

data_sum <- summary(df_2017_2)

kbl(head(data_sum)) %>%
  kable_styling(bootstrap_options = c("striped", "hover")) %>%
  kable_paper() %>%
  scroll_box(width = "100%", height = "500px")
código Con moradores presentes Con moradores ausentes En venta, para arriendo, abandonada u otro De temporada (vacacional u otro) ingresos_expandidos
Length:319 Min. : 3.0 Min. : 1.00 Min. : 1.0 Min. : 1.0 Min. :2.792e+08
Class :character 1st Qu.: 872.5 1st Qu.: 46.25 1st Qu.: 109.0 1st Qu.: 137.5 1st Qu.:1.809e+09
Mode :character Median : 1743.0 Median : 83.50 Median : 192.0 Median : 267.0 Median :3.546e+09
NA Mean : 2179.6 Mean :125.94 Mean : 242.4 Mean : 489.6 Mean :8.206e+09
NA 3rd Qu.: 2953.0 3rd Qu.:156.00 3rd Qu.: 322.0 3rd Qu.: 552.2 3rd Qu.:7.252e+09
NA Max. :16319.0 Max. :866.00 Max. :1461.0 Max. :7019.0 Max. :7.585e+10

2.1.0.3 Gráficas:

library(plotly)
df_2017_fig <- union_final_rur 
fig <- plot_ly(df_2017_fig, x = df_2017_fig$código, y = df_2017_fig[,2]
, name = colnames(df_2017_fig[2]), type = 'scatter', mode = 'lines',
                 width=7000, height=400) 

grafica_fn <- function(g){
  fig <<- fig %>% add_trace(y = ~df_2017_fig[,g]
, name = colnames(df_2017_fig[g]), mode = 'lines',
                 width=5000, height=400) 
}

for (g in 3:(ncol(union_final_urb))) {
grafica_fn(g)
}

fig <- fig %>% layout(autosize = T)
fig 
union_final_urb <- df_2017_fig

3 \(\tau\)

df_2017_2f <- filter(union_final_urb, union_final_urb$ingresos_expandidos != 'is.na')
df_2017_2fuy <- df_2017_2f[, -c(1,6)]
tabla <- cor(x=df_2017_2fuy, y=df_2017_2f$ingresos_expandidos, method=c("kendall"), use = "pairwise")
tabla <- as.data.frame(tabla)
names(tabla)[1] <- "Correlación"
saveRDS(tabla,"tablas_de_corr/C_P02_RURAL.rds")
tabla %>% rownames_to_column("Ocupación de la vivienda")%>%  
  mutate(Correlación = cell_spec(Correlación, background=ifelse(Correlación == max(Correlación), "#fc0303", "#5cb81f"))) %>% 
  kbl(booktabs = T, linesep = "", escape=FALSE) %>% 
    kable_paper(full_width = F) %>%
    column_spec(1, color = "black")%>%
    column_spec(2, color = "white")
Ocupación de la vivienda Correlación
Con moradores presentes 0.32220831481742
Con moradores ausentes 0.333883932342798
En venta, para arriendo, abandonada u otro 0.209104910425649
De temporada (vacacional u otro) 0.0853250586625385

3.1 Kendall

chart.Correlation(df_2017_2f_sin_codigo, histogram=TRUE, method = c( "kendall"), pch=20)

3.2 Pearson

chart.Correlation(df_2017_2f_sin_codigo, histogram=TRUE, method = c( "pearson"), pch=20)

3.3 Spearman

chart.Correlation(df_2017_2f_sin_codigo, histogram=TRUE, method = c( "spearman"), pch=20)