# Análisis Exploratorio de Datos # En la siguiente liga se puede bajar archivo zip con los csv's de la EIC2015 # http://www.beta.inegi.org.mx/proyectos/enchogares/especiales/intercensal/ #Cargamos la base de datos sobre población, es un csv datpob = read.csv("TR_PERSONA11.csv") # 723,696 86 names(datpob) # [1] "ID_VIV" "ID_PERSONA" "ENT" # [4] "NOM_ENT" "MUN" "NOM_MUN" # [7] "LOC50K" "NOM_LOC" "COBERTURA" #[10] "ESTRATO" "UPM" "FACTOR" #[13] "NUMPER" "SEXO" "EDAD" #[16] "PARENT" "PARENT_OTRO_C" "IDENT_MADRE" #[19] "IDENT_PADRE" "SERSALUD" "AFRODES" #[22] "ACTA_NAC" "DHSERSAL1" "DHSERSAL2" #[25] "PERTE_INDIGENA" "ENT_PAIS_NAC" "NACIONALIDAD" #[28] "HLENGUA" "QDIALECT_C" "QDIALECT_INALI" #[31] "HESPANOL" "ELENGUA" "ASISTEN" #[34] "MUN_ASI" "NOM_MUN_ASI" "ENT_PAIS_ASI" #[37] "TIE_TRASLADO_ESCU" "MED_TRASLADO_ESC1" "MED_TRASLADO_ESC2" #[40] "MED_TRASLADO_ESC3" "ESCOLARI" "NIVACAD" #[43] "ALFABET" "ESCOACUM" "MUN_RES10" #[46] "NOM_MUN_RES10" "ENT_PAIS_RES10" "SITUA_CONYUGAL" #[49] "IDENT_PAREJA" "CONACT" "OCUPACION_C" #[52] "SITUACION_TRAB" "AGUINALDO" "VACACIONES" #[55] "SERVICIO_MEDICO" "UTILIDADES" "INCAP_SUELDO" #[58] "SAR_AFORE" "CREDITO_VIVIENDA" "INGTRMEN" #[61] "ACTIVIDADES_C" "MUN_TRAB" "NOM_MUN_TRAB" #[64] "ENT_PAIS_TRAB" "TIE_TRASLADO_TRAB" "MED_TRASLADO_TRAB1" #[67] "MED_TRASLADO_TRAB2" "MED_TRASLADO_TRAB3" "ACTI_SIN_PAGO1" #[70] "ACTI_SIN_PAGO2" "ACTI_SIN_PAGO3" "ACTI_SIN_PAGO4" #[73] "ACTI_SIN_PAGO5" "ACTI_SIN_PAGO6" "ACTI_SIN_PAGO7" #[76] "ACTI_SIN_PAGO8" "HIJOS_NAC_VIVOS" "HIJOS_FALLECIDOS" #[79] "HIJOS_SOBREVIV" "FECHA_NAC_M" "FECHA_NAC_A" #[82] "SOBREVIVENCIA" "EDAD_MORIR_D" "EDAD_MORIR_M" #[85] "EDAD_MORIR_A" "TAMLOC" # Ingreso por trabajo (mensual) aa = datpob$INGTRMEN aa = aa[!is.na(aa)] length(aa) aa = aa[aa<999999] summary(datpob$FACTOR) hist(aa[aa<6000]) # Cada renglón corresponde a una persona N = length(unique(datpob$ID_PERSONA)) # = 723,696 # Algunas redefiniciones datpob$NIVACAD = as.factor(datpob$NIVACAD) datpob$EDAD[datpob$EDAD==999] = NA # Nota: La estimación del total de la población de Guanajuato es total = sum(datpob$FACTOR) # 5853677 sum(datpob[ datpob$NOM_MUN=="León",]$FACTOR) # 1578626 sum(datpob[ datpob$NOM_MUN=="Celaya",]$FACTOR) # 494304 sum(datpob[ datpob$MUN==14,]$FACTOR) # 152113 # FACTOR = Factor de expansión # En el presente análisis, no haremos inferencias globales. Sólo # exploraremos la muestra, como si fuera toda la población competa # Esto es, no haremos más uso de la variable FACTOR # Cuántos hombres y mujeres hay? (en la muestra) table(datpob$SEXO) # 1 3 (1 H, 3 M) (pregunta 1, hoja 5 de la EIC 2015) # 348350 375346 # Proporción de Hombres y Mujeres table(datpob$SEXO)/N # 1 3 # 0.4813485 0.5186515 # Edades summary( datpob$EDAD[ !is.na(datpob$EDAD) ] ) # Hay 428 na's, quitarlos # Min. 1st Qu. Median Mean 3rd Qu. Max. # 0.00 12.00 25.00 29.33 43.00 110.00 # Alfababetismo table(datpob$ALFABET) M = sum( table( datpob$ALFABET[ !is.na(datpob$ALFABET) ] ) ) 100*table(datpob$ALFABET)/M # Nos fijamos solamente en los datos de Salamanca aa = datpob[ datpob$NOM_MUN=="Salamanca", ] table(aa$ALFABET) M = sum( table( aa$ALFABET[ !is.na(aa$ALFABET) ] ) ) 100*table(aa$ALFABET)/M # Nos fijamos solamente en los datos de Xichú aa = datpob[ datpob$NOM_MUN=="Xichú", ] table(aa$ALFABET) M = sum( table( aa$ALFABET[ !is.na(aa$ALFABET) ] ) ) 100*table(aa$ALFABET)/M nombres = unique( datpob$NOM_MUN ) alfabetismo = rep(0,46) for(i in 1:46){ aa = datpob[ datpob$NOM_MUN==nombres[i], ] M = sum( table( aa$ALFABET[ !is.na(aa$ALFABET) ] ) ) alfabetismo[i] = (100*table(aa$ALFABET)/M)[1] } data.frame(nombres,alfabetismo) mean(alfabetismo) mean(datpob$EDAD) # variable indicadora de si la variable edad es NA edna = is.na(datpob$EDAD) edad = datpob$EDAD[ !edna ] NN = length(edad) # 723268 # La cantidad de personas que tienen 5 años o menos # edordenada = sort(edad) numper5 = 0 for( i in 1:NN ){ if(edad[i] <= 5){numper5 = numper5+1} } sum(edad<=5) sum((datpob$EDAD[!edna] <= 5)*(datpob$FACTOR[!edna])) # Histograma de las edades hist(edad) # puntos de división de clases de edades ed = seq(0,110,by=5) hist(edad, breaks=ed) aa = hist(edad, breaks=ed, col="cyan", main="Edades de la Población de Guanajuato", ylab="Número") aa$counts # [1] 83711 71137 74093 69530 64281 55889 50273 51614 42541 36920 29791 25949 20035 #[14] 15278 12033 8965 5949 3506 1315 384 66 8 # Cuantiles quantile(edad,probs=seq(0,1,by=.1) ) # 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100% # 0 5 10 15 20 25 32 39 48 60 110 # Calcular el cuantil del 70% (cuantil=percentil) bb = sort(edad) nn = length(bb) # 723268 pp = .7 * nn cc = floor(pp) dd = ceiling(pp) (bb[dd]+bb[cc])/2 # 39 # boxplots par(mfrow=c(2,1), mar=c(1,1,1,1)) hist(edad, breaks=ed, col="cyan", main="Edades de la Población de Guanajuato", ylab="Número") ee = boxplot(edad, horizontal = TRUE) ee$stats # [1,] 0 # [2,] 12 # [3,] 25 # [4,] 43 # [5,] 89 # Exploración de información por municipio unique(datpob$MUN) unique(datpob$NOM_MUN ) # Edad mediana por municipio ff = by(datpob$EDAD[!edna],datpob$MUN[!edna],median) gg = by(datpob$EDAD[!edna],datpob$NOM_MUN[!edna],median) # Edad media por municipio hh = by(datpob$EDAD[!edna],datpob$MUN[!edna],mean) ii = by(datpob$EDAD[!edna],datpob$NOM_MUN[!edna],mean) summary(hh) # ordenados por edades jj = sort(gg) kk = sort(ii) barplot(jj) barplot(jj[1:10]) noms = c("Dr. Mora", "Dolores","S.L.Paz","Tierra Blanca", "Ocampo","Purísima","San Diego","San Felipe","S.J. Iturbide","Victoria") barplot(jj[1:10],names.arg=noms,horiz=TRUE) barplot(jj, horiz=TRUE) barplot(sort(hh)) barplot(sort(hh)[1:10]) barplot(sort(hh)[1:10],names.arg=noms) noms = c("Purísima", "Dolores","Tierra Blanca","S.L.Paz","S.J. Iturbide", "Dr. Mora","San Felipe","Silao","S.F.Rincón","Ocampo") barplot(jj[1:10],names.arg=noms,horiz=TRUE) barplot(jj, horiz=TRUE) # boxplots por municipio library(ggplot2) qplot(datpob$NOM_MUN[!edna], datpob$EDAD[!edna], geom = "boxplot") qplot(as.factor(datpob$MUN[!edna]), datpob$EDAD[!edna], geom = "boxplot") noms = c("Guanajuato", "León", "Celaya","Irapuato","Salamanca" ) sel = is.element(datpob$NOM_MUN,noms) sel2 = (sel & !edna) qplot(as.factor(datpob$MUN[sel2]), datpob$EDAD[sel2], geom = "boxplot") # Celaya y Guanajuato se ven similares. Es así? summary(datpob$EDAD[datpob$NOM_MUN=="Guanajuato"]) summary(datpob$EDAD[datpob$NOM_MUN=="Celaya"]) # Min. 1st Qu. Median Mean 3rd Qu. Max. NA's # 0.00 14.00 27.00 30.31 44.00 102.00 43 # Min. 1st Qu. Median Mean 3rd Qu. Max. NA's # 0.00 13.00 27.00 29.24 43.00 99.00 21 aa = datpob$EDAD[datpob$NOM_MUN=="Yuriria"] aa = aa[!is.na(aa)] summary(aa) 001 Abasolo 002 Acámbaro 003 San Miguel de Allende 004 Apaseo el Alto 005 Apaseo el Grande 006 Atarjea 007 Celaya 008 Manuel Doblado 009 Comonfort 010 Coroneo 011 Cortazar 012 Cuerámaro 013 Doctor Mora 014 Dolores Hidalgo Cuna de la Independencia Nacional 015 Guanajuato 016 Huanímaro 017 Irapuato 018 Jaral del Progreso 019 Jerécuaro 020 León 021 Moroleón 022 Ocampo 023 Pénjamo 024 Pueblo Nuevo 025 Purísima del Rincón 026 Romita 027 Salamanca 028 Salvatierra 029 San Diego de la Unión 030 San Felipe 031 San Francisco del Rincón 032 San José Iturbide 033 San Luis de la Paz 034 Santa Catarina 035 Santa Cruz de Juventino Rosas 036 Santiago Maravatío 037 Silao de la Victoria 038 Tarandacuao 039 Tarimoro 040 Tierra Blanca 041 Uriangato 042 Valle de Santiago #Cargamos la base de datos sobre viviendas, es un csv datviv = read.csv("TR_VIVIENDA11.csv") # 178,100 88 # [1] "ID_VIV" "ENT" "NOM_ENT" "MUN" # [5] "NOM_MUN" "LOC50K" "NOM_LOC" "COBERTURA" # [9] "ESTRATO" "UPM" "FACTOR" "CLAVIVP" #[13] "PAREDES" "TECHOS" "PISOS" "CUADORM" #[17] "TOTCUART" "COCINA" "LUGAR_COCINA" "COMBUSTIBLE" #[21] "ESTUFA" "ELECTRICIDAD" "FOCOS" "FOCOS_AHORRA" #[25] "AGUA_ENTUBADA" "ABA_AGUA_ENTU" "ABA_AGUA_NO_ENTU" "TINACO" #[29] "CISTERNA" "BOMBA_AGUA" "REGADERA" "BOILER" #[33] "CALENTADOR_SOLAR" "AIRE_ACON" "PANEL_SOLAR" "SERSAN" #[37] "CONAGUA" "USOEXC" "DRENAJE" "DESTINO_BASURA" #[41] "SEPARA_BASURA" "SEPARA_ALI" "SEPARA_ABO" "SEPARA_VEN" #[45] "REFRIGERADOR" "LAVADORA" "HORNO" "AUTOPROP" #[49] "RADIO" "TELEVISOR" "TELEVISOR_PP" "COMPUTADORA" #[53] "TELEFONO" "CELULAR" "INTERNET" "SERV_TV_PAGA" #[57] "TENENCIA" "NUM_DUE_VIV1" "NUM_DUE_VIV2" "ESCRITURAS_VIV" #[61] "FORMA_ADQUI" "FINANCIAMIENTO" "DEUDA" "NUMPERS" #[65] "INGR_PEROTROPAIS" "INGR_PERDENTPAIS" "INGR_AYUGOB" "INGR_JUBPEN" #[69] "TERRENO_AGROPE" "TERRENO_VIVERO" "NUM_DUE_TERR" "ALIM_ADU1" #[73] "ALIM_ADU2" "ALIM_ADU3" "ING_ALIM_ADU1" "ING_ALIM_ADU2" #[77] "ING_ALIM_ADU3" "ALIM_MEN1" "ALIM_MEN2" "ALIM_MEN3" #[81] "ING_ALIM_MEN1" "ING_ALIM_MEN2" "ING_ALIM_MEN3" "TAMLOC" #[85] "TIPOHOG" "JEFE_SEXO" "JEFE_EDAD" "INGTRHOG" aa = datviv$CLAVIVP # Hoja 1, Pregunta 7 aa = datviv$PAREDES # Hoja 2, Pregunta 1 aa = datviv$TECHOS # Hoja 2, Pregunta 2 aa = datviv$PISOS # Hoja 2, Pregunta 3 aa = datviv$CUADORM # Hoja 2, Pregunta 4 aa = datviv$TOTCUART # Hoja 2, Pregunta 5 aa = datviv$COCINA # Hoja 2, Pregunta 6 aa = datviv$LUGAR_COCINA # Hoja 2, Pregunta 7 aa = datviv$FOCOS # Hoja 2, Pregunta 11 a sel = (!is.na(aa))&(aa<91) bb = datviv$FOCOS[sel] aa = datviv$AUTOPROP aa = datviv$CELULAR aa = datviv$COMPUTADORA aa = datviv$NUMPERS aa = datviv$PANEL_SOLAR aa = datviv$TINACO aa = datviv$DRENAJE aa = datviv$ELECTRICIDAD aa = datviv$SERSAN table(aa) ############################################################ # Mapas # Tomado del sitio de Diego Valle: # https://www.diegovalle.net/mxmaps/ # if (!require("devtools")) { # install.packages("devtools") # } # devtools::install_github("diegovalle/mxmaps") library("mxmaps") df_mxstate$value = df_mxstate$pop mxstate_choropleth(df_mxstate, title = "Población por Estado") gto = df_mxmunicipio[df_mxmunicipio[,1]=="11",] # [1] 46 19 gto$value = gto$pop gto$value = alfabetismo mungto = gto$region # seleccionar municipios de Guanajuato mungto = gto[gto$municipio_name=="Silao de la Victoria",]$region mxmunicipio_choropleth(gto, num_colors = 1, title = "Alfabetismo", zoom=mungto) area = c(615,877,1559,376,419,322,553,820,485,124,334,260,231,1658,1015,128, 851,177,883,1220,159,1026,1561,60,290,441,757,592,1014,3007,426,548, 2030,194,429,84,539,120,334,411,116,821,1047,129,899,668) # km2 por municipio gto$value = gto$pop / area # En hh guardamos edad media por municipio gto$value = hh mxmunicipio_choropleth(gto, num_colors = 1, title = "Edad Media por Municipio", zoom=mungto)