Nivel nacional URBANO (código 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.1 Pregunta P01: Tipo de vivienda

Ésta pregunta posee 10 categorías de respuesta:

1 Casa
2 Departamento en edificio
3 Vivienda tradicional indígena (ruka, pae pae u otras)
4 Pieza en casa antigua o en conventillo
5 Mediagua, mejora, rancho o choza
6 Móvil (carpa, casa rodante o similar)
7 Otro tipo de vivienda particular
8 Vivienda colectiva
9 Operativo personas en tránsito (no es vivienda)
10 Operativo calle (no es vivienda)

1.2 Generación de tabla de contingencia para la variable P01

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

tabla_con_clave <- readRDS("../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$P01
cross_tab =  xtabs( ~ unlist(b) + unlist(c))
tabla <- as.data.frame(cross_tab)
d <-tabla[!(tabla$Freq == 0),]
d$anio <- "2017"

d_t <- filter(d,d$unlist.c. == 1)
for(i in 2:10){
  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)[31] <- "código"
comuna_corr <- comuna_corr[,-c(3,6,9,12,15,18,21,24,27),drop=FALSE]
names(comuna_corr )[2] <- "Casa"
names(comuna_corr )[4] <- "Departamento en edificio"
names(comuna_corr )[6] <- "Vivienda tradicional indígena"
names(comuna_corr )[8] <- "Pieza en casa antigua o en conventillo"
names(comuna_corr )[10] <- "Mediagua, mejora, rancho o choza"
names(comuna_corr )[12] <- "(carpa, casa rodante o similar)"
names(comuna_corr )[14] <- "Otro tipo de vivienda particular"
names(comuna_corr )[16] <- "Vivienda colectiva"
names(comuna_corr )[18] <- "Operativo personas en tránsito (no es vivienda)"
names(comuna_corr )[20] <- "Operativo calle (no es vivienda)"
names(comuna_corr )[21] <- "año"
 
kbl(head(comuna_corr,50)) %>%
  kable_styling(bootstrap_options = c("striped", "hover")) %>%
  kable_paper() %>%
  scroll_box(width = "100%", height = "300px")
unlist.c..x Casa unlist.c..y Departamento en edificio unlist.c..x.1 Vivienda tradicional indígena unlist.c..y.1 Pieza en casa antigua o en conventillo unlist.c..x.2 Mediagua, mejora, rancho o choza unlist.c..y.2 (carpa, casa rodante o similar) unlist.c..x.3 Otro tipo de vivienda particular unlist.c..y.3 Vivienda colectiva unlist.c..x.4 Operativo personas en tránsito (no es vivienda) unlist.c..y.4 Operativo calle (no es vivienda) año código
1 37206 2 22525 3 18 4 4478 5 357 6 38 7 640 8 236 9 1 10 1 2017 01101
1 26357 2 4142 3 13 4 445 5 1750 6 24 7 348 8 11 NA NA 10 1 2017 01107
1 2978 2 3 3 3 4 209 5 88 6 2 7 62 8 22 9 1 NA NA NA 01401
1 476 2 1 3 6 4 6 5 37 NA NA 7 14 8 3 NA NA NA NA NA 01404
1 1898 2 5 3 2 4 26 5 92 6 1 7 30 8 13 NA NA NA NA NA 01405
1 79530 2 27939 3 26 4 744 5 2694 6 38 7 617 8 164 9 1 10 1 2017 02101
1 2708 2 471 3 1 4 13 5 178 6 4 7 31 8 234 9 1 NA NA NA 02102
1 3731 2 3 3 2 4 15 5 94 6 3 7 37 8 20 9 1 10 1 2017 02104
1 46279 2 3683 3 27 4 1585 5 345 6 16 7 778 8 332 9 1 10 1 2017 02201
1 1572 2 2 3 11 4 145 5 53 NA NA 7 81 8 115 9 1 10 1 2017 02203
1 7808 2 1110 NA NA 4 33 5 65 6 11 7 70 8 48 9 1 10 1 2017 02301
1 1656 2 3 3 1 4 22 5 4 6 1 7 22 8 84 NA NA NA NA NA 02302
1 44851 2 6812 3 5 4 351 5 1329 6 35 7 152 8 106 NA NA 10 1 2017 03101
1 6903 2 52 NA NA 4 31 5 198 6 33 7 91 8 33 NA NA 10 1 2017 03102
1 3114 2 3 3 1 4 34 5 89 6 1 7 9 8 5 NA NA 10 1 2017 03103
1 4066 2 74 NA NA 4 5 5 66 6 1 7 12 8 28 NA NA NA NA NA 03201
1 5549 2 510 NA NA 4 23 5 14 6 1 7 23 8 96 NA NA NA NA NA 03202
1 15367 2 511 3 10 4 62 5 133 6 14 7 66 8 53 9 1 10 1 2017 03301
1 1689 NA NA NA NA NA NA 5 54 NA NA 7 7 8 8 NA NA NA NA NA 03303
1 3417 2 187 3 2 4 7 5 102 6 3 7 24 8 24 9 1 10 1 2017 03304
1 60391 2 17590 3 4 4 166 5 144 6 31 7 281 8 180 NA NA 10 1 2017 04101
1 71679 2 9190 3 8 4 277 5 403 6 13 7 337 8 156 9 1 10 1 2017 04102
1 3690 2 24 3 1 4 11 5 39 NA NA 7 27 8 15 NA NA NA NA NA 04103
1 548 NA NA NA NA 4 3 5 3 NA NA 7 1 8 2 NA NA NA NA NA 04104
1 6048 2 58 3 1 4 14 5 43 6 3 7 12 8 23 NA NA NA NA NA 04106
1 7404 2 212 3 1 4 39 5 157 6 12 7 42 8 24 NA NA NA NA NA 04201
1 970 NA NA NA NA 4 4 5 23 6 1 7 5 8 6 NA NA NA NA NA 04202
1 10338 2 10 3 1 4 22 5 102 6 2 7 40 8 46 NA NA 10 1 2017 04203
1 5669 2 132 NA NA 4 16 5 113 6 14 7 31 8 69 NA NA 10 1 2017 04204
1 28797 2 1575 3 2 4 127 5 279 6 18 7 137 8 44 9 1 10 1 2017 04301
1 2598 2 1 NA NA 4 5 5 21 6 3 7 12 8 15 NA NA NA NA NA 04302
1 5313 NA NA NA NA 4 25 5 159 NA NA 7 15 8 7 NA NA NA NA NA 04303
1 2359 2 1 NA NA 4 5 5 47 6 8 7 5 8 4 NA NA 10 1 2017 04304
1 82486 2 30689 3 17 4 714 5 1181 6 24 7 500 8 359 9 1 10 1 2017 05101
1 5268 2 890 NA NA 4 28 5 39 6 5 7 16 8 10 NA NA 10 1 2017 05102
1 10396 2 8548 3 4 4 45 5 91 6 1 7 121 8 22 NA NA NA NA NA 05103
1 13424 2 1759 NA NA 4 15 5 168 6 4 7 146 8 15 NA NA 10 1 2017 05105
1 13280 2 1315 3 2 4 43 5 189 6 11 7 89 8 23 9 1 10 1 2017 05107
1 77662 2 67357 3 18 4 327 5 1024 6 5 7 451 8 273 9 1 10 1 2017 05109
1 2586 2 1 3 31 4 18 5 23 6 4 7 60 8 112 NA NA NA NA NA 05201
1 18093 2 3763 3 1 4 86 5 56 6 14 7 56 8 61 9 1 10 1 2017 05301
1 3844 NA NA NA NA 4 13 5 52 NA NA 7 12 8 4 NA NA NA NA NA 05302
1 2748 NA NA NA NA 4 6 5 36 6 2 7 4 8 6 NA NA NA NA NA 05303
1 4005 2 1 NA NA 4 15 5 21 NA NA 7 6 8 3 NA NA NA NA NA 05304
1 8627 2 1261 NA NA 4 24 5 84 6 5 7 24 8 11 9 1 10 1 2017 05401
1 3906 2 312 NA NA 4 20 5 45 NA NA 7 18 8 10 NA NA NA NA NA 05402
1 3064 2 2278 NA NA 4 2 5 31 NA NA 7 10 8 8 NA NA NA NA NA 05403
1 1747 2 1 NA NA 4 7 5 34 NA NA 7 9 8 11 NA NA NA NA NA 05404
1 4423 2 681 NA NA 4 5 5 23 6 4 7 18 8 7 NA NA NA NA NA 05405
1 24824 2 3435 3 3 4 57 5 149 6 3 7 78 8 45 NA NA 10 1 2017 05501

1.3 Generación de ingresos promedios a nivel urbano y su unión con la tabla de contingencia

casen_2017 <- readRDS(file = "../casen_2017_c.rds")
casen_2017_u <- filter(casen_2017, casen_2017$zona == "Urbano")
casen_2017_u <- casen_2017_u[!is.na(casen_2017_u$ytotcor),]
Q <- quantile(casen_2017_u$ytotcor, probs=c(.25, .75), na.rm = FALSE)
iqr <- IQR(casen_2017_u$ytotcor)
casen_2017_sin_o <- subset(casen_2017_u, casen_2017_u$ytotcor > 
                                 (Q[1] - 1.5*iqr) &
                                 casen_2017_u$ytotcor < (Q[2]+1.5*iqr))
casen_2017_sin_o <- data.frame(lapply(casen_2017_sin_o, as.character),
                               stringsAsFactors=FALSE)
b <-  as.numeric(casen_2017_sin_o$ytotcor)
a <- casen_2017_sin_o$comuna
promedios_grupales <-aggregate(b, by=list(a), FUN = mean , na.rm=TRUE )
names(promedios_grupales)[1] <- "comuna"
names(promedios_grupales)[2] <- "promedio_i"
promedios_grupales$año <- "2017"
codigos_comunales <- readRDS(file = "../codigos_comunales_2011-2017.rds")
names(codigos_comunales)[1] <- "código"
names(codigos_comunales)[2] <- "comuna"
df_2017 = merge( x = promedios_grupales, y = codigos_comunales, 
                 by = "comuna", 
                 all.x = TRUE)

saveRDS(df_2017,"Ingresos_expandidos_Urbano_17.rds")
 
#Hacemos la unión con los ingresos promedio comunales expandidos:
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)

kbl(head(df_2017_2,50)) %>%
  kable_styling(bootstrap_options = c("striped", "hover")) %>%
  kable_paper() %>%
  scroll_box(width = "100%", height = "300px")
código unlist.c..x Casa unlist.c..y Departamento en edificio unlist.c..x.1 Vivienda tradicional indígena unlist.c..y.1 Pieza en casa antigua o en conventillo unlist.c..x.2 Mediagua, mejora, rancho o choza unlist.c..y.2 (carpa, casa rodante o similar) unlist.c..x.3 Otro tipo de vivienda particular unlist.c..y.3 Vivienda colectiva unlist.c..x.4 Operativo personas en tránsito (no es vivienda) unlist.c..y.4 Operativo calle (no es vivienda) año.x comuna promedio_i año.y
01101 1 37206 2 22525 3 18 4 4478 5 357 6 38 7 640 8 236 9 1 10 1 2017 Iquique 375676.9 2017
01107 1 26357 2 4142 3 13 4 445 5 1750 6 24 7 348 8 11 NA NA 10 1 2017 Alto Hospicio 311571.7 2017
01401 1 2978 2 3 3 3 4 209 5 88 6 2 7 62 8 22 9 1 NA NA NA Pozo Almonte 316138.5 2017
01404 1 476 2 1 3 6 4 6 5 37 NA NA 7 14 8 3 NA NA NA NA NA NA NA NA
01405 1 1898 2 5 3 2 4 26 5 92 6 1 7 30 8 13 NA NA NA NA NA Pica 330061.1 2017
02101 1 79530 2 27939 3 26 4 744 5 2694 6 38 7 617 8 164 9 1 10 1 2017 Antofagasta 368221.4 2017
02102 1 2708 2 471 3 1 4 13 5 178 6 4 7 31 8 234 9 1 NA NA NA Mejillones 369770.7 2017
02104 1 3731 2 3 3 2 4 15 5 94 6 3 7 37 8 20 9 1 10 1 2017 Taltal 383666.2 2017
02201 1 46279 2 3683 3 27 4 1585 5 345 6 16 7 778 8 332 9 1 10 1 2017 Calama 434325.1 2017
02203 1 1572 2 2 3 11 4 145 5 53 NA NA 7 81 8 115 9 1 10 1 2017 San Pedro de Atacama 442861.0 2017
02301 1 7808 2 1110 NA NA 4 33 5 65 6 11 7 70 8 48 9 1 10 1 2017 Tocopilla 286187.2 2017
02302 1 1656 2 3 3 1 4 22 5 4 6 1 7 22 8 84 NA NA NA NA NA María Elena 477748.0 2017
03101 1 44851 2 6812 3 5 4 351 5 1329 6 35 7 152 8 106 NA NA 10 1 2017 Copiapó 343121.0 2017
03102 1 6903 2 52 NA NA 4 31 5 198 6 33 7 91 8 33 NA NA 10 1 2017 Caldera 318653.2 2017
03103 1 3114 2 3 3 1 4 34 5 89 6 1 7 9 8 5 NA NA 10 1 2017 Tierra Amarilla 333194.9 2017
03201 1 4066 2 74 NA NA 4 5 5 66 6 1 7 12 8 28 NA NA NA NA NA Chañaral 286389.3 2017
03202 1 5549 2 510 NA NA 4 23 5 14 6 1 7 23 8 96 NA NA NA NA NA Diego de Almagro 351583.9 2017
03301 1 15367 2 511 3 10 4 62 5 133 6 14 7 66 8 53 9 1 10 1 2017 Vallenar 315981.5 2017
03303 1 1689 NA NA NA NA NA NA 5 54 NA NA 7 7 8 8 NA NA NA NA NA Freirina 289049.9 2017
03304 1 3417 2 187 3 2 4 7 5 102 6 3 7 24 8 24 9 1 10 1 2017 Huasco 337414.8 2017
04101 1 60391 2 17590 3 4 4 166 5 144 6 31 7 281 8 180 NA NA 10 1 2017 La Serena 279340.1 2017
04102 1 71679 2 9190 3 8 4 277 5 403 6 13 7 337 8 156 9 1 10 1 2017 Coquimbo 269078.6 2017
04103 1 3690 2 24 3 1 4 11 5 39 NA NA 7 27 8 15 NA NA NA NA NA Andacollo 258539.7 2017
04104 1 548 NA NA NA NA 4 3 5 3 NA NA 7 1 8 2 NA NA NA NA NA La Higuera 214257.0 2017
04106 1 6048 2 58 3 1 4 14 5 43 6 3 7 12 8 23 NA NA NA NA NA Vicuña 254177.0 2017
04201 1 7404 2 212 3 1 4 39 5 157 6 12 7 42 8 24 NA NA NA NA NA Illapel 282139.3 2017
04202 1 970 NA NA NA NA 4 4 5 23 6 1 7 5 8 6 NA NA NA NA NA Canela 233397.3 2017
04203 1 10338 2 10 3 1 4 22 5 102 6 2 7 40 8 46 NA NA 10 1 2017 Los Vilos 285214.0 2017
04204 1 5669 2 132 NA NA 4 16 5 113 6 14 7 31 8 69 NA NA 10 1 2017 Salamanca 262056.9 2017
04301 1 28797 2 1575 3 2 4 127 5 279 6 18 7 137 8 44 9 1 10 1 2017 Ovalle 280373.5 2017
04302 1 2598 2 1 NA NA 4 5 5 21 6 3 7 12 8 15 NA NA NA NA NA Combarbalá 234537.3 2017
04303 1 5313 NA NA NA NA 4 25 5 159 NA NA 7 15 8 7 NA NA NA NA NA Monte Patria 225369.1 2017
04304 1 2359 2 1 NA NA 4 5 5 47 6 8 7 5 8 4 NA NA 10 1 2017 Punitaqui 212496.1 2017
05101 1 82486 2 30689 3 17 4 714 5 1181 6 24 7 500 8 359 9 1 10 1 2017 Valparaíso 306572.5 2017
05102 1 5268 2 890 NA NA 4 28 5 39 6 5 7 16 8 10 NA NA 10 1 2017 Casablanca 348088.6 2017
05103 1 10396 2 8548 3 4 4 45 5 91 6 1 7 121 8 22 NA NA NA NA NA Concón 333932.4 2017
05105 1 13424 2 1759 NA NA 4 15 5 168 6 4 7 146 8 15 NA NA 10 1 2017 Puchuncaví 296035.5 2017
05107 1 13280 2 1315 3 2 4 43 5 189 6 11 7 89 8 23 9 1 10 1 2017 Quintero 308224.7 2017
05109 1 77662 2 67357 3 18 4 327 5 1024 6 5 7 451 8 273 9 1 10 1 2017 Viña del Mar 354715.9 2017
05201 1 2586 2 1 3 31 4 18 5 23 6 4 7 60 8 112 NA NA NA NA NA NA NA NA
05301 1 18093 2 3763 3 1 4 86 5 56 6 14 7 56 8 61 9 1 10 1 2017 Los Andes 355446.2 2017
05302 1 3844 NA NA NA NA 4 13 5 52 NA NA 7 12 8 4 NA NA NA NA NA Calle Larga 246387.3 2017
05303 1 2748 NA NA NA NA 4 6 5 36 6 2 7 4 8 6 NA NA NA NA NA Rinconada 279807.9 2017
05304 1 4005 2 1 NA NA 4 15 5 21 NA NA 7 6 8 3 NA NA NA NA NA San Esteban 219571.6 2017
05401 1 8627 2 1261 NA NA 4 24 5 84 6 5 7 24 8 11 9 1 10 1 2017 La Ligua 259482.3 2017
05402 1 3906 2 312 NA NA 4 20 5 45 NA NA 7 18 8 10 NA NA NA NA NA Cabildo 262745.9 2017
05403 1 3064 2 2278 NA NA 4 2 5 31 NA NA 7 10 8 8 NA NA NA NA NA Papudo 302317.1 2017
05404 1 1747 2 1 NA NA 4 7 5 34 NA NA 7 9 8 11 NA NA NA NA NA Petorca 237510.8 2017
05405 1 4423 2 681 NA NA 4 5 5 23 6 4 7 18 8 7 NA NA NA NA NA Zapallar 294389.2 2017
05501 1 24824 2 3435 3 3 4 57 5 149 6 3 7 78 8 45 NA NA 10 1 2017 Quillota 288694.2 2017

1.4 Calculo de la cantidad de personas por comuna apartir del censo del 2017

x <- import("../Microdato_Censo2017-Personas.csv")
my_summary_data <- x %>%
    group_by(x$COMUNA) %>%
    summarise(Count = n()) 
names(my_summary_data)[1] <- "comuna"     
names(my_summary_data)[2] <- "personas"
# recogemos el campo Comuna:
codigos <- my_summary_data$comuna
# construimos una secuencia llamada rango del 1 al total de filas del 
# dataset:
rango <- seq(1:nrow(my_summary_data))
# Creamos un string que agrega un cero a todos los registros:
cadena <- paste("0",codigos[rango], sep = "")
# El string cadena tiene o 5 o 6 digitos, los cuales siempre deben ser 
# siempre 5 
# agregandole un cero al inicio de los que tienen 4.
# Para ello extraemos un substring de la cadena sobre todas las filas 
#(rangos) 
# comenzando desde el primero o el segundo y llegando siempre al 6.
cadena <- substr(cadena,(nchar(cadena)[rango])-(4),6)
codigos <- as.data.frame(codigos)
cadena <- as.data.frame(cadena)
comuna_corr <- cbind(my_summary_data,cadena)
names(comuna_corr)[3] <- "código"
saveRDS(comuna_corr,"cant_personas_17.rds")

1.5 Unificacion de las tablas y construcción de los ingresos expandidos

df_2017_6666 = merge( x = df_2017_2, y = comuna_corr, by = "código", all.x = TRUE)

1.6 Construccionde las columna de ingresos expandidos.

Eliminamos ingresos expandidos que contengan NA

df_2017_6666$Ingresos_expandidos <- df_2017_6666$promedio_i*df_2017_6666$personas
df_2017_6666 <- filter(df_2017_6666, df_2017_6666$Ingresos_expandidos != 'is.na')

2 Correlaciones

El coeficiente de correlación de Pearson es probablemente la medida más utilizada para las relaciones lineales entre dos variables distribuidas normales y, por lo tanto, a menudo se denomina simplemente “coeficiente de correlación”. Por lo general, el coeficiente de Pearson se obtiene mediante un ajuste de mínimos cuadrados correspondiendo un valor de 1 una relación positiva perfecta, -1 una relación negativa perfecta y 0 la ausencia de una relación entre las variables.

Apliquemos los coeficientes de Pearson a los ingresos expandidos y a todas las categorias de respuesta de la pregunta P01

df_2017_6666_subset <- df_2017_6666[,c(3,5,7,9,11,13,15,17,19,21,28)]
chart.Correlation(df_2017_6666_subset, histogram=TRUE, method = c( "pearson"), pch=20)

La alta correlación que nos dá utilizando Pearson, entre los ingresos expandidos y la categoria casa nos hace sospechar de un error. El error es que las variables no cumplen uno de los supuestos básicos del método de Pearson que es el de la normalidad de las variables, distribución que debiese poseer la forma de la siguiente gráfica. Como veremos enseguida la distribución de nuestras variables es geométrica.

df_2017_6666_subset <- df_2017_6666[,c(3,28)]
chart.Correlation(df_2017_6666_subset, histogram=TRUE, method = c( "pearson"), pch=20)

2.1 La distribución normal

Una distribución normal se identifica fácilmente pues sigue la forma de una campana, las distribuciones de nuestras variables no son normales.

randNorm <- rnorm(3000)
#calculo de su densidad
randDensity <- dnorm(randNorm)
#gráfica
library(ggplot2)
ggplot(data.frame(x = randNorm, y = randDensity )) + 
  aes(x = x, y = y) +
geom_point(size=.5, color="#CC6666") + 
  labs(x = "Random Normal Variable", y = "Densidad")

2.2 La distribución geométrica.

Observamos que la distribución de nuestras variables es geométrica, tal como lo muestra la siguiente gráfica.

N <- 10000
x <- rgeom(N, .2)
hist(x, 
     xlim=c(min(x),max(x)), probability=T, nclass=max(x)-min(x)+1, 
     col='#117a65',
     main='Distribución Geométrica, p=.2')
lines(density(x,bw=1), col='red', lwd=1)

La distribución geométrica representa el número de fallas antes de obtener un éxito en una serie de ensayos de Bernoulli. Una variable aleatoria de Bernoulli \(X\) con probabilidad de éxito \(p\) tiene una función de probabilidad:

\[ f(x) = p ^ {x} (1 - p) ^ {1 - x} \qquad \qquad x = 0, 1 \] para \(0 < p < 1\).

La distribución \(X \sim {\rm Bernoulli}(p)\) es utilizada para indicar que la variable aleatoria \(X\) tiene una distribución de Bernoulli con parámetro \(p\), donde \(0 < p < 1\).

Nuestro problema es que estamos violando un supuesto fundamental del cálculo de la correlación de Pearson: La distribución nuestras variables no es normal sino que geométrica.

Supuestos de la correlación de Pearson:

  1. Los datos deben poseer una relación lineal (eso se puede determinar a través de una gráfica de dispersión).

  2. Las variables deberían poseer una distribución normal.

  3. Las observaciones utilizadas para el análisis deberían recolectarse de forma aleatoria de la población de referencia. Cuando esto no ocurre, el coeficiente de correlación podría estar sub o sobreestimado.

3 Coeficiente de correlación de rango de Kendall (\(\tau\) de Kendall)

El coeficiente de correlación τ de Kendall es no paramétrico, es decir, se puede usar cuando se viola el supuesto de distribución normal de las variables a comparar. La correlación τ de Kendall es particularmente adecuada cuando tenemos un set de datos pequeño con muchos valores en el mismo rango o clase. Se puede usar por ejemplo con datos categóricos codificados binariamente (0,1). Estudios estadísticos han demostrado que el coeficiente de correlación τ de Kendall es un mejor estimador de la correlación en la población que el coeficiente de correlación no paramétrico de Spearman ρ, por lo que se recomienda usar τ para análisis de datos no paramétricos1.

Similar al coeficiente de correlación de Pearson, la \(\tau\) de Kendall mide el grado de una relación monótona entre variables y, como la \(\rho\) de Spearman, calcula la dependencia entre variables clasificadas, lo que hace que sea factible para datos distribuidos no normales. La \(\tau\) de Kendall se puede calcular tanto para datos continuos como ordinales. En términos generales, la \(\tau\) de Kendall se distingue de la \(\rho\) de Spearman por una penalización más fuerte de las dislocaciones no secuenciales (en el contexto de las variables clasificadas).

El coeficiente \(\tau\) de kendall está basada más en los intervalos jerarquizados de las observaciones que los propios datos, esto hace que la distribución de \(\tau\) sea independiente de la que presentan las variables X e Y, siempre y cuando los datos representados por estas 2 variables sean (1) independientes y (2) continuas. Éste coeficiente es más preferido por algunos investigadores que el de Spearman, pero es más difícil de calcular, con la ventaja de que el \(\tau\) tiende más rápido a la distribución normal que el de Spearman.

Ecuación:

\[\tau = \frac{S_a - S_b}{{n(n-1)/2}} \]

Donde:

τ = Estadística de Kendall
n = # de casos en el ejemplo
Sa = Sumatoria de rangos más altos
Sb = Sumatoria de rangos más bajos


Ejemplo.

En una evaluación de los jugadores delanteros de fútbol en un país, hay 9 de ellos catalogados como más intensos para marcar goles. Para analizar esta intensidad durante un periodo de una temporada se registró sistemáticamente el grado de intensidad de cada uno de éstos delanteros tanto en juegos a nivel nacional (NP = puntajes nacional), como a nivel internacional (IP = puntajes en juegos internacionales).

Además, se registraron los rangos a nivel nacional (NR = rangos a nivel nacional) y en a nivel internacional (IR = rango a nivel internacional). Los datos se presentan en la Tabla. Los rangos se ordenan de máxima a mínima hacia abajo en cada columna de rango.

Jugador NP IP NR IR
1 84 60 1 4
2 80 64 2 2
3 78 71 3 1
4 76 61 4 3
5 70 58 5 5
6 64 57 6 6
7 62 54 7 8
8 50 55 8 7
9 47 52 9 9

Procedimiento.

Paso 1.

Se considera el IR como referencia y comienza a contabilizar a partir del primer rango, es decir, el rango con el valor de 4 y cuenta el número de los rangos menores que 4 (hacia debajo de 4): en este caso los tres números de 2, 1, y 3, es decir tenemos 3 valores menores que el valor 4.

Paso 2.

Luego cuentan los rangos mayores de 4 a partir e incluyendo el número 5, así tenemos los valores 5, 6, 8, 7, y 9, es decir, hay 5 rangos mayores que el valor 4.

Paso 3.

Se continúa así contabilizar los rangos menores y mayores para los siguientes valores de la columna de IR, es decir, a partir del valor 2 en adelante. De esta manera se generan los valores de las 2 columnas de Sa (sumatoria de rangos más altos) y Sb (sumatoria de rangos más bajos).

Jugador NP IP NR IR Sa=31 Sb=5
1 84 60 1 4 5 3
2 80 64 2 2 6 1
3 78 71 3 1 6 0
4 76 61 4 3 5 0
5 70 58 5 5 4 0
6 64 57 6 6 3 0
7 62 54 7 8 1 1
8 50 55 8 7 1 0
9 47 52 9 9 0 0

Ahora substituir en la ecuación de Kendall resulta:

\[\tau = \frac{S_a - S_b}{{n(n-1)/2}} = \frac{31 - 5}{{9(9-1)/2}} = 0,72\]

hay una asociación de 72%.

4 Aplicación de Kendall a nuestros datos

df_2017_6666_subset <- df_2017_6666[,c(3,5,7,9,11,13,15,17,19,21,28)]
chart.Correlation(df_2017_6666_subset, histogram=TRUE, method = c( "kendall"), pch=20)

El coeficiente de correlación correcto entre ingresos_expandidos y casa es de 0.82.

4.1 El coeficiente de determinación R^2

El coeficiente de correlación elevado al cuadrado es el coeficiente de determinación, R2 , que mide la cantidad de variación en una variable que es compartida por otra.

Nivel nacional RURAL (código 2)

tabla_con_clave <- readRDS("../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$P01
cross_tab =  xtabs( ~ unlist(b) + unlist(c))
tabla <- as.data.frame(cross_tab)
d <-tabla[!(tabla$Freq == 0),]
d$anio <- "2017"

d_t <- filter(d,d$unlist.c. == 1)
for(i in 2:10){
  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)[31] <- "código"
comuna_corr <- comuna_corr[,-c(3,6,9,12,15,18,21,24,27),drop=FALSE]
names(comuna_corr )[2] <- "Casa"
names(comuna_corr )[4] <- "Departamento en edificio"
names(comuna_corr )[6] <- "Vivienda tradicional indígena"
names(comuna_corr )[8] <- "Pieza en casa antigua o en conventillo"
names(comuna_corr )[10] <- "Mediagua, mejora, rancho o choza"
names(comuna_corr )[12] <- "(carpa, casa rodante o similar)"
names(comuna_corr )[14] <- "Otro tipo de vivienda particular"
names(comuna_corr )[16] <- "Vivienda colectiva"
names(comuna_corr )[18] <- "Operativo personas en tránsito (no es vivienda)"
names(comuna_corr )[20] <- "Operativo calle (no es vivienda)"
names(comuna_corr )[21] <- "año"
 
casen_2017 <- readRDS(file = "../casen_2017_c.rds")
casen_2017_u <- filter(casen_2017, casen_2017$zona == "Rural")
casen_2017_u <- casen_2017_u[!is.na(casen_2017_u$ytotcor),]
Q <- quantile(casen_2017_u$ytotcor, probs=c(.25, .75), na.rm = FALSE)
iqr <- IQR(casen_2017_u$ytotcor)
casen_2017_sin_o <- subset(casen_2017_u, casen_2017_u$ytotcor > 
                                 (Q[1] - 1.5*iqr) &
                                 casen_2017_u$ytotcor < (Q[2]+1.5*iqr))
casen_2017_sin_o <- data.frame(lapply(casen_2017_sin_o, as.character),
                               stringsAsFactors=FALSE)
b <-  as.numeric(casen_2017_sin_o$ytotcor)
a <- casen_2017_sin_o$comuna
promedios_grupales <-aggregate(b, by=list(a), FUN = mean , na.rm=TRUE )
names(promedios_grupales)[1] <- "comuna"
names(promedios_grupales)[2] <- "promedio_i"
promedios_grupales$año <- "2017"
codigos_comunales <- readRDS(file = "../codigos_comunales_2011-2017.rds")
names(codigos_comunales)[1] <- "código"
names(codigos_comunales)[2] <- "comuna"
df_2017 = merge( x = promedios_grupales, y = codigos_comunales, 
                 by = "comuna", 
                 all.x = TRUE)

saveRDS(df_2017,"Ingresos_expandidos_Rural_17.rds")
 
#Hacemos la unión con los ingresos promedio comunales expandidos:
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)

 
x <- import("../Microdato_Censo2017-Personas.csv")
my_summary_data <- x %>%
    group_by(x$COMUNA) %>%
    summarise(Count = n()) 
names(my_summary_data)[1] <- "comuna"     
names(my_summary_data)[2] <- "personas"
# recogemos el campo Comuna:
codigos <- my_summary_data$comuna
# construimos una secuencia llamada rango del 1 al total de filas del 
# dataset:
rango <- seq(1:nrow(my_summary_data))
# Creamos un string que agrega un cero a todos los registros:
cadena <- paste("0",codigos[rango], sep = "")
# El string cadena tiene o 5 o 6 digitos, los cuales siempre deben ser 
# siempre 5 
# agregandole un cero al inicio de los que tienen 4.
# Para ello extraemos un substring de la cadena sobre todas las filas 
#(rangos) 
# comenzando desde el primero o el segundo y llegando siempre al 6.
cadena <- substr(cadena,(nchar(cadena)[rango])-(4),6)
codigos <- as.data.frame(codigos)
cadena <- as.data.frame(cadena)
comuna_corr <- cbind(my_summary_data,cadena)
names(comuna_corr)[3] <- "código"
saveRDS(comuna_corr,"cant_personas_17.rds")
df_2017_6666 = merge( x = df_2017_2, y = comuna_corr, by = "código", all.x = TRUE)
 
df_2017_6666$Ingresos_expandidos <- df_2017_6666$promedio_i*df_2017_6666$personas
df_2017_6666 <- filter(df_2017_6666, df_2017_6666$Ingresos_expandidos != 'is.na')

5 Correlaciones

La distribución es asimétrica, poseyendo un sesgo positivo.

5.1 Kendall

df_2017_6666_subset <- df_2017_6666[,c(3,5,7,9,11,13,15,17,28)]
chart.Correlation(df_2017_6666_subset, histogram=TRUE, method = c( "kendall"), pch=20)

5.2 Pearson

df_2017_6666_subset <- df_2017_6666[,c(3,5,7,9,11,13,15,17,28)]
chart.Correlation(df_2017_6666_subset, histogram=TRUE, method = c( "pearson"), pch=20)

5.3 Spearman

df_2017_6666_subset <- df_2017_6666[,c(3,5,7,9,11,13,15,17,28)]
chart.Correlation(df_2017_6666_subset, histogram=TRUE, method = c( "spearman"), pch=20)

Criterios para determinar normalidad.

library(normtest) 
library(nortest)
library(moments)

Se intentará comprobar si el campo casa tiene una distribución normal.

abc <- head(df_2017_6666,5) 
kbl(abc) %>%
  kable_styling(bootstrap_options = c("striped", "hover")) %>%
  kable_paper() %>%
  scroll_box(width = "100%", height = "300px")
código unlist.c..x Casa unlist.c..y Departamento en edificio unlist.c..x.1 Vivienda tradicional indígena unlist.c..y.1 Pieza en casa antigua o en conventillo unlist.c..x.2 Mediagua, mejora, rancho o choza unlist.c..y.2 (carpa, casa rodante o similar) unlist.c..x.3 Otro tipo de vivienda particular unlist.c..y.3 Vivienda colectiva unlist.c..x.4 Operativo personas en tránsito (no es vivienda) unlist.c..y.4 Operativo calle (no es vivienda) año.x comuna.x promedio_i año.y comuna.y personas Ingresos_expandidos
01101 1 1177 NA NA 3 2 4 11 5 229 6 17 7 27 8 25 NA NA NA NA NA Iquique 272529.7 2017 1101 191468 52180713221
01401 1 4877 2 1 3 28 4 39 5 455 6 8 7 131 8 20 NA NA NA NA NA Pozo Almonte 243272.4 2017 1401 15711 3822052676
01402 1 828 2 10 3 12 4 13 5 213 6 1 7 11 8 4 NA NA NA NA NA Camiña 226831.0 2017 1402 1250 283538750
01404 1 1790 2 3 3 55 4 44 5 406 NA NA 7 25 8 5 NA NA NA NA NA Huara 236599.7 2017 1404 2730 645917134
01405 1 526 NA NA 3 9 4 8 5 77 6 1 7 28 8 10 NA NA NA NA NA Pica 269198.0 2017 1405 9296 2502464414

Hipótesis

H0: La muestra proviene de una distribución normal.

H1: La muestra no proviene de una distribución normal.

Nivel de Significancia

El nivel de significancia que se trabajará es de 0.05. \(\alpha\) =0.05

Criterio de Decisión:

Si P < \(\alpha\) Se rechaza Ho

Si p >= \(\alpha\) No se rechaza Ho

Histograma

hist(df_2017_6666[,3])

###Prueba de Anderson-Darling###
ad.test(df_2017_6666[,3])
## 
##  Anderson-Darling normality test
## 
## data:  df_2017_6666[, 3]
## A = 10.547, p-value < 2.2e-16

p-value < 2.2e-16 < 0.05 Se rechaza Ho = La muestra proviene de una distribución normal.

Referencias:

1 https://rpubs.com/MSiguenas/122473