Resuelve los siguientes ejercicios prácticos utilizando R. Los ejercicios propuestos tienen distintas ponderaciones, y la calificación final de dicha actividad será dada a conocer en el espacio correspondiente de la plataforma Moodle. La ponderación se muestra al inicio o al final del respectivo enunciado del ejercicio.
Utilizando la información correspondiente a los resultados del Censo de Población y Vivienda 2020 del INEGI (https://www.inegi.org.mx/programas/ccpv/2020/default.html) para el estado de Jalisco disponible en la plataforma Moodle, obtener lo siguiente:
1. Los 10 municipios con mayor proporción de población con alguna discapacidad.
Para obtener la proporción de población con discapacidad de cada municipio crearemos un arreglo de columnas ( data frame) a partir de nuestra base “Jalisco”. El nuevo objeto “proporcion_disc” contiene para cada municipio: la población total, la población con discapacidad y la proporción a la que equivale ésta última.
library(readxl)
library(dplyr)##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
Jalisco<-read_excel("/Users/mac/Downloads/Jalisco.xlsx")
proporcion_disc<- data.frame(Municipio= Jalisco$NOM_MUN,
poblacion_total= Jalisco$POBTOT,
poblacion_discapacidad=Jalisco$PCON_DISC,
proporcion= round(as.numeric(Jalisco$PCON_DISC)/as.numeric(Jalisco$POBTOT),4))
head(proporcion_disc)## Municipio poblacion_total poblacion_discapacidad proporcion
## 1 Acatic 23175 995 0.0429
## 2 Acatlán de Juárez 25250 1103 0.0437
## 3 Ahualulco de Mercado 23630 1302 0.0551
## 4 Amacueca 5743 307 0.0535
## 5 Amatitán 16490 961 0.0583
## 6 Ameca 60386 3438 0.0569
A continuación, haremos uso del paquete “dplyr” que anteriormente llamamos y obtendremos a partir de nuestra tabla previa los 10 municipios que tienen las proporciones más elevadas de población con discapacidad. Usamos la función “top_n” indicando que los valores se desplegarán en orden descendente.
final<-proporcion_disc%>%
top_n(n=10,proporcion)%>%
arrange(desc(proporcion)) final## Municipio poblacion_total poblacion_discapacidad
## 1 Chimaltitán 3270 379
## 2 El Limón 5368 561
## 3 Cañadas de Obregón 4388 454
## 4 San Julián 16792 1549
## 5 Huejúcar 5920 543
## 6 Santa María del Oro 1815 165
## 7 Cuautla 2166 195
## 8 Santa María de los Ángeles 3515 306
## 9 Ejutla 1981 172
## 10 San Cristóbal de la Barranca 2924 241
## proporcion
## 1 0.1159
## 2 0.1045
## 3 0.1035
## 4 0.0922
## 5 0.0917
## 6 0.0909
## 7 0.0900
## 8 0.0871
## 9 0.0868
## 10 0.0824
2. Los 30 municipios con mayor proporción de población con 65 años o más.
Con una lógica similar al ejercicio previo, obtendremos la proporción de población mayor o igual a 65 años mediante la división del número de casos entre la población total de cada municipio.
proporcion_65<- data.frame(Municipio= Jalisco$NOM_MUN,
poblacion_total= Jalisco$POBTOT,
poblacion_65=Jalisco$POB65_MAS,
prop= round(as.numeric(Jalisco$POB65_MAS)/as.numeric(Jalisco$POBTOT),3))
head(proporcion_65)## Municipio poblacion_total poblacion_65 prop
## 1 Acatic 23175 1984 0.086
## 2 Acatlán de Juárez 25250 1893 0.075
## 3 Ahualulco de Mercado 23630 2368 0.100
## 4 Amacueca 5743 644 0.112
## 5 Amatitán 16490 1198 0.073
## 6 Ameca 60386 6970 0.115
Nuevamente desplegaremos los primeros lugares de la tabla, es decir, aquellos municipios con la mayor proporción de personas adultas mayores en el estado de Jalisco.
final_1<-proporcion_65%>%
top_n(n=30,prop)%>%
arrange(desc(prop))
final_1## Municipio poblacion_total poblacion_65 prop
## 1 Ejutla 1981 380 0.192
## 2 El Limón 5368 991 0.185
## 3 Totatiche 4180 747 0.179
## 4 Santa María de los Ángeles 3515 605 0.172
## 5 Huejúcar 5920 976 0.165
## 6 Quitupan 7734 1277 0.165
## 7 Cuautla 2166 347 0.160
## 8 Chapala 55196 8496 0.154
## 9 Cañadas de Obregón 4388 674 0.154
## 10 Guachinango 4199 636 0.151
## 11 Mexticacán 5307 804 0.151
## 12 Atenguillo 4176 625 0.150
## 13 Teocuitatlán de Corona 11039 1641 0.149
## 14 Santa María del Oro 1815 265 0.146
## 15 San Sebastián del Oeste 5086 743 0.146
## 16 Tenamaxtlán 7302 1064 0.146
## 17 Tonaya 5961 862 0.145
## 18 Mixtlán 3638 518 0.142
## 19 Juchitlán 5534 779 0.141
## 20 Villa Guerrero 5525 775 0.140
## 21 Atengo 5599 775 0.138
## 22 Valle de Juárez 6151 850 0.138
## 23 Yahualica de González Gallo 22394 3081 0.138
## 24 Villa Purificación 11303 1550 0.137
## 25 Unión de Tula 13799 1875 0.136
## 26 Mascota 14451 1936 0.134
## 27 San Martín Hidalgo 28102 3773 0.134
## 28 Pihuamo 11386 1516 0.133
## 29 Atoyac 8689 1128 0.130
## 30 Tecolotlán 16603 2157 0.130
El redondeo de la proporción para los casos previos cambia según las diferencias entre cada dato. Es decir, para poder distinguir entre los primeros lugares de la lista, en ocasiones es necesario considerar más (o menos) decimales para poder diferenciar a los elementos que se quiere seleccionar.
3. Los 30 municipios con mayor población económicamente activa.
A diferencia de los ejercicios previos, en esta ocasión se requiere la población y no la proporción económicamente activa . Es decir, se enlistan los 30 municipios con el mayor número de casos de población económicamente activa. Dado que la función aggregate nos permite obtener estadísticas y operaciones sencillas en subconjuntos de una base, la utilizaremos para contar el número de casos por municipio
econ_activos<-as.numeric(Jalisco$PEA)
pob_econom<- aggregate(econ_activos~NOM_MUN, data=Jalisco,sum)
head(pob_econom)## NOM_MUN econ_activos
## 1 Acatic 11515
## 2 Acatlán de Juárez 10912
## 3 Ahualulco de Mercado 11710
## 4 Amacueca 2480
## 5 Amatitán 7625
## 6 Ameca 29067
final_2<-pob_econom%>%
top_n(n=30,econ_activos)%>%
arrange(desc(econ_activos))
final_2## NOM_MUN econ_activos
## 1 Zapopan 781705
## 2 Guadalajara 747410
## 3 Tlajomulco de Zúñiga 370745
## 4 San Pedro Tlaquepaque 357168
## 5 Tonalá 294989
## 6 Puerto Vallarta 163237
## 7 El Salto 111997
## 8 Lagos de Moreno 86038
## 9 Tepatitlán de Morelos 78547
## 10 Zapotlán el Grande 60735
## 11 Ocotlán 52863
## 12 Tala 44064
## 13 Arandas 41838
## 14 San Juan de los Lagos 36700
## 15 Zapotlanejo 33842
## 16 Ixtlahuacán de los Membrillos 33290
## 17 Autlán de Navarro 32845
## 18 La Barca 31182
## 19 Atotonilco el Alto 31024
## 20 Ameca 29067
## 21 Chapala 26183
## 22 Encarnación de Díaz 25385
## 23 Poncitlán 24287
## 24 Jocotepec 23572
## 25 Tequila 21120
## 26 Cihuatlán 20220
## 27 Ayotlán 18996
## 28 Teocaltiche 18412
## 29 Tomatlán 18094
## 30 Sayula 18078
4. Los 10 municipios con mayor proporción de población sin educación básica.
De acuerdo con la Ley General de Educación (http://www.diputados.gob.mx/LeyesBiblio/pdf/LGE_300919.pdf) en su capítulo II, la educación básica de compone por el nivel inicial, preescolar, primaria y secundaria.
Por lo tanto, la proporción de población sin educación básica por municipio se obtiene a partir de la división de casos sin el nivel educativo entre la población total. Para que el numerador contemple al grueso de casos en la población y no solo al grupo de 15+, se sumarán las columnas con la población que no asiste a la escuela en los siguientes segmentos: 6 a 11 y 12 a 14 años, más la población 15+ sin escolaridad. Ninguno de estos casos cuenta con educación básica al momento del corte.
no_educacion_b= rowSums(Jalisco[,c("P15YM_SE","P12A14NOA","P6A11_NOA")])
sin_e_basica<- data.frame(Municipio= Jalisco$NOM_MUN,
poblacion_total= Jalisco$POBTOT,
per_cent= round(as.numeric(no_educacion_b)/as.numeric(Jalisco$POBTOT),4))
head(sin_e_basica)## Municipio poblacion_total per_cent
## 1 Acatic 23175 0.0774
## 2 Acatlán de Juárez 25250 0.0307
## 3 Ahualulco de Mercado 23630 0.0300
## 4 Amacueca 5743 0.0402
## 5 Amatitán 16490 0.0401
## 6 Ameca 60386 0.0363
final_3<-sin_e_basica%>%
top_n(n=10,per_cent)%>%
arrange(desc(per_cent))
final_3## Municipio poblacion_total per_cent
## 1 Santa María del Oro 1815 0.1912
## 2 Mezquitic 22083 0.1907
## 3 Quitupan 7734 0.1231
## 4 Jilotlán de los Dolores 9425 0.1143
## 5 Bolaños 7043 0.1130
## 6 Jesús María 18982 0.1108
## 7 Pihuamo 11386 0.1100
## 8 Cañadas de Obregón 4388 0.0989
## 9 Chimaltitán 3270 0.0917
## 10 Cuautitlán de García Barragán 18370 0.0889
5. Los 10 municipios con mayor población indígena.
Para obtener los primeros 10 municipios con mayor población en hogares censales indígenas, usamos nuevamente la función “aggregate” para el conteo de casos por cada municipio. Posteriormente, desplegaremos los primeros 10 casos con la función “top_n” de dplyr.
num_HLI<-as.numeric(Jalisco$PHOG_IND)## Warning: NAs introduced by coercion
pob_indigena<- aggregate(num_HLI~NOM_MUN, data=Jalisco,sum)
head(pob_indigena)## NOM_MUN num_HLI
## 1 Acatic 40
## 2 Acatlán de Juárez 70
## 3 Ahualulco de Mercado 65
## 4 Amacueca 34
## 5 Amatitán 150
## 6 Ameca 322
final_4<-pob_indigena%>%
top_n(n=10,num_HLI)%>%
arrange(desc(num_HLI))
final_4## NOM_MUN num_HLI
## 1 Zapopan 26955
## 2 Mezquitic 16776
## 3 Tlajomulco de Zúñiga 9052
## 4 Guadalajara 7689
## 5 San Pedro Tlaquepaque 7676
## 6 Puerto Vallarta 6928
## 7 Bolaños 4183
## 8 Tonalá 2974
## 9 El Salto 2739
## 10 Tala 2081
6. Los 10 municipios con mayor proporción de viviendas particulares habitadas con internet.
La proporción de viviendas particulares con internet se obtiene a partir de la división de casos entre el número total de viviendas particulares habitadas por municipio . A continuación se nombra un arreglo con la población total, número de casos y proporción correspondiente por municipio.
viviendas_internet<- data.frame(Municipio= Jalisco$NOM_MUN,
viviendas_total= Jalisco$TVIVPARHAB,
viviendas_c_internet=Jalisco$VPH_INTER,
percentage= round(as.numeric(Jalisco$VPH_INTER)/as.numeric(Jalisco$TVIVPARHAB),4))
head(viviendas_internet)## Municipio viviendas_total viviendas_c_internet percentage
## 1 Acatic 6408 2877 0.4490
## 2 Acatlán de Juárez 6372 3361 0.5275
## 3 Ahualulco de Mercado 6519 2881 0.4419
## 4 Amacueca 1588 580 0.3652
## 5 Amatitán 4213 2010 0.4771
## 6 Ameca 17361 8802 0.5070
final_5<-viviendas_internet%>%
top_n(n=10,percentage)%>%
arrange(desc(percentage))
final_5## Municipio viviendas_total viviendas_c_internet percentage
## 1 Guadalajara 398543 299970 0.7527
## 2 Zapopan 425194 319756 0.7520
## 3 Puerto Vallarta 86523 59566 0.6884
## 4 Zapotlán el Grande 31449 21061 0.6697
## 5 San Pedro Tlaquepaque 185279 123377 0.6659
## 6 Chapala 16339 10384 0.6355
## 7 Tonalá 150488 95438 0.6342
## 8 Tlajomulco de Zúñiga 212301 131838 0.6210
## 9 Ocotlán 29112 17784 0.6109
## 10 Sayula 9439 5738 0.6079
Usando la función string es posible extraer elementos y/o fragmentos de una cadena de caracteres. Para saber si tratamos con un palíndromo es posible comparar el texto original con una cadena que tenga los mismos elementos y el orden invertido.
cadena_1<- "amamaromaleavivaelamorapapayapaparomaleavivaelamoramama"
palindromo <- function(x) {
invertir<-lapply(strsplit(x, NULL),rev)
juntar_invertidos<- sapply(invertir, paste, collapse="")
}
cadena_2<-palindromo(cadena_1)Haremos dos comparaciones: una sobre el número de elementos en la cadena con “nchar” y la segunda sobre el contenido de la cadena mediante “==”.
nchar(cadena_1)## [1] 55
nchar(cadena_2)## [1] 55
cadena_1==cadena_2## [1] TRUE
\[ A= \left[\begin{array}{ccc} 3 & 4 & -1\\ 2 & -1 & 3\\ 2 & 2 & 1 \end{array}\right]\]
A_1<- matrix(c(3),byrow = TRUE,ncol = 1)
A_1## [,1]
## [1,] 3
determinante_A1<- det(A_1)
determinante_A1## [1] 3
A_2<- matrix(c(3,4,2,-1),byrow = TRUE,ncol = 2)
A_2## [,1] [,2]
## [1,] 3 4
## [2,] 2 -1
determinante_A2<- det(A_2)
determinante_A2## [1] -11
A<- matrix(c(3,4,-1,2,-1,3,2,2,1),byrow = TRUE,ncol = 3)
A## [,1] [,2] [,3]
## [1,] 3 4 -1
## [2,] 2 -1 3
## [3,] 2 2 1
determinante_A<- det(A)
determinante_A## [1] -11
A continuación consultaremos si \(A\), \(A_1\) y \(A_2\) son todas positivas:
determinantes<-c(determinante_A,determinante_A1,determinante_A2)
determinantes## [1] -11 3 -11
if (determinantes[1] & determinantes[2] & determinantes[3] > 0) {
print("positive")
} else {
print("negative")
}## [1] "negative"
La matriz \(A\) no es definida positiva; dos de los determinantes de sus submatrices son negativos.
El ejercicio termina al identificar que la matriz es negativa ya que de acuerdo con las indicaciones, sólo si es positiva se procede a invertirla y calcular la matriz identidad.
#Ejercicio 4
En comparación con el formato que Markdown genera por default, el presente trabajo contiene ajustes que pretenden facilitar su revisión: se ha seleccionado un fondo con colores alusivos a la institución de procedencia y los ejercicios se han asignado a diferentes secciones. Adicionalmente, se ha modificado el formato del texto y se han agregado hipervínculos de consulta en algunas secciones.