Utilizando la informacion correspondiente a los resultados del Censo de Poblacion y Vivienda 2020 del INEGI para el estado de Jalisco, obtener lo siguiente:
1. Los 10 municipios con mayor proporcion de poblacion con alguna discapacidad.
2. Los 30 municipios con mayor proporcion de poblacion con 65 anos o mas.
3. Los 30 municipios con mayor poblacion economicamente activa.
4. Los 10 municipios con mayor proporcion de poblacion sin educacion basica.
5. Los 10 municipios con mayor poblacion indigena.
6. Los 10 municipios con mayor proporcion de viviendas particulares habitadas con internet.
Se carga la base de datos por medio del comando read_excel(), es importante que se considere cambiar a NA los asteriscos (*) o los No disponibles (N/D) que en ocasiones por cuestiones de seguridad INEGI coloca en algunos datos.
Al revisar las dimensiones se nota que cuenta con 125 renglones, número que coincide con el número de municipios con los que cuenta la entidad. Así mismo si se despliega el primer renglón y las primeras 10 columnas se confirma que la unidad de análisis de la BD corresponde al municipio. Del mismo modo verificamos que las columnas con datos númericos si se encuentran en tipo double lo que nos permitirá hacer las siguientes operaciones.
dim(Jalisco)
## [1] 125 227
Jalisco[1,1:10]
## # A tibble: 1 x 10
## ENTIDAD NOM_ENT MUN NOM_MUN NOM_LOC POBTOT POBFEM POBMAS P_0A2 P_0A2_F
## <dbl> <chr> <dbl> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 14 Jalisco 1 Acatic Total del mu~ 23175 11792 11383 1294 639
1. Los 10 municipios con mayor proporcion de poblacion con alguna discapacidad..
Ya que se requiere una proporción se debe de calcular una nueva variable, por ello, lo primero que se hace es crear un data frame con nuestras dos variables de interes: la población total (POBTOT) y la población con alguna discapacidad (PCON_DISC)
PC_DISC<-aggregate(cbind((POBTOT),(PCON_DISC))~NOM_MUN,
data=Jalisco,sum)
names(PC_DISC) = c("NOM_MUN", "POBTOT", "PCON_DISC")
PC_DISC [1:3,]
## NOM_MUN POBTOT PCON_DISC
## 1 Acatic 23175 995
## 2 Acatlán de Juárez 25250 1103
## 3 Ahualulco de Mercado 23630 1302
Ahora, realizamos y almacenamos el cálculo para después incorporarlo al data frame
POR_DISC<-((PC_DISC$PCON_DISC/PC_DISC$POBTOT)*100)
PC_DISC$PORC_DISC<-POR_DISC
PC_DISC[1:3,]
## NOM_MUN POBTOT PCON_DISC PORC_DISC
## 1 Acatic 23175 995 4.293420
## 2 Acatlán de Juárez 25250 1103 4.368317
## 3 Ahualulco de Mercado 23630 1302 5.509945
Ahora ordenamos los datos calculados de mayor a menor para extraerlos y guardar los 10 municipios con mayor proporcion de poblacion con alguna discapacidad en un nuevo data frame.
PC_DISC <- PC_DISC[order(PC_DISC$PORC_DISC,decreasing = TRUE),]
DIEZM_DISC<-PC_DISC[1:10,]
DIEZM_DISC
## NOM_MUN POBTOT PCON_DISC PORC_DISC
## 21 Chimaltitán 3270 379 11.590214
## 34 El Limón 5368 561 10.450820
## 18 Cañadas de Obregón 4388 454 10.346399
## 75 San Julián 16792 1549 9.224631
## 42 Huejúcar 5920 543 9.172297
## 83 Santa María del Oro 1815 165 9.090909
## 28 Cuautla 2166 195 9.002770
## 82 Santa María de los Ángeles 3515 306 8.705548
## 31 Ejutla 1981 172 8.682484
## 69 San Cristóbal de la Barranca 2924 241 8.242134
2. Los 30 municipios con mayor proporcion de poblacion con 65 anos o mas..
Como en el inciso anterior se requiere el calculo de una nueva variable a partir de las variables población total (POBTOT) y población de 65 años y mas (POB65_MAS)
PC_65M<-aggregate(cbind(POBTOT,POB65_MAS)~NOM_MUN,
data=Jalisco,sum)
names(PC_65M) = c("NOM_MUN", "POBTOT", "POB65_MAS")
PC_65M [1:3,]
## NOM_MUN POBTOT POB65_MAS
## 1 Acatic 23175 1984
## 2 Acatlán de Juárez 25250 1893
## 3 Ahualulco de Mercado 23630 2368
Ahora, realizamos y almacenamos el cálculo para después incorporarlo al data frame
POR_65M<-((PC_65M$POB65_MAS/PC_65M$POBTOT)*100)
PC_65M$PORC_65M<-POR_65M
PC_65M[1:3,]
## NOM_MUN POBTOT POB65_MAS PORC_65M
## 1 Acatic 23175 1984 8.560949
## 2 Acatlán de Juárez 25250 1893 7.497030
## 3 Ahualulco de Mercado 23630 2368 10.021160
Ahora ordenamos los datos calculados de mayor a menor para extraerlos y guardar los 30 municipios con mayor proporcion de poblacion con 65 años o mas en un nuevo data frame.
PC_65M <- PC_65M[order(PC_65M$PORC_65M,decreasing = TRUE),]
TREINTAM_65M<-PC_65M[1:30,]
TREINTAM_65M
## NOM_MUN POBTOT POB65_MAS PORC_65M
## 31 Ejutla 1981 380 19.18223
## 34 El Limón 5368 991 18.46125
## 105 Totatiche 4180 747 17.87081
## 82 Santa María de los Ángeles 3515 605 17.21195
## 68 Quitupan 7734 1277 16.51151
## 42 Huejúcar 5920 976 16.48649
## 28 Cuautla 2166 347 16.02031
## 20 Chapala 55196 8496 15.39242
## 18 Cañadas de Obregón 4388 674 15.36007
## 60 Mexticacán 5307 804 15.14980
## 39 Guachinango 4199 636 15.14646
## 10 Atenguillo 4176 625 14.96648
## 94 Teocuitatlán de Corona 11039 1641 14.86548
## 81 San Sebastián del Oeste 5086 743 14.60873
## 83 Santa María del Oro 1815 265 14.60055
## 92 Tenamaxtlán 7302 1064 14.57135
## 103 Tonaya 5961 862 14.46066
## 62 Mixtlán 3638 518 14.23859
## 52 Juchitlán 5534 779 14.07662
## 115 Villa Guerrero 5525 775 14.02715
## 9 Atengo 5599 775 13.84176
## 113 Valle de Juárez 6151 850 13.81889
## 118 Yahualica de González Gallo 22394 3081 13.75815
## 117 Villa Purificación 11303 1550 13.71317
## 111 Unión de Tula 13799 1875 13.58794
## 78 San Martín Hidalgo 28102 3773 13.42609
## 58 Mascota 14451 1936 13.39700
## 65 Pihuamo 11386 1516 13.31460
## 91 Tecolotlán 16603 2157 12.99163
## 12 Atoyac 8689 1128 12.98193
3. Los 30 municipios con mayor poblacion economicamente activa.
Para este inciso no hay necedidad de realizar ningun calculo de nueva variable ya que la población economicamente activa se encuentra en la variable PEA, por lo que solo se creara una tabla con unicamente esta columna y se ordenará de mayor a menor para hacer la selección de los 30 municipios con mayor poblacion economicamente activa
PEA<-aggregate(PEA~NOM_MUN,
data=Jalisco,sum)
PEA<-PEA[order(PEA$PEA, decreasing = TRUE),]
TREINTAM_PEA<-PEA[1:30,]
names(TREINTAM_PEA) = c("Municipio", "Población Economicamente Activa")
TREINTAM_PEA
## Municipio Población Economicamente Activa
## 120 Zapopan 781705
## 40 Guadalajara 747410
## 99 Tlajomulco de Zúñiga 370745
## 80 San Pedro Tlaquepaque 357168
## 102 Tonalá 294989
## 67 Puerto Vallarta 163237
## 35 El Salto 111997
## 56 Lagos de Moreno 86038
## 95 Tepatitlán de Morelos 78547
## 124 Zapotlán el Grande 60735
## 63 Ocotlán 52863
## 85 Tala 44064
## 7 Arandas 41838
## 73 San Juan de los Lagos 36700
## 125 Zapotlanejo 33842
## 44 Ixtlahuacán de los Membrillos 33290
## 13 Autlán de Navarro 32845
## 53 La Barca 31182
## 11 Atotonilco el Alto 31024
## 6 Ameca 29067
## 20 Chapala 26183
## 36 Encarnación de Díaz 25385
## 66 Poncitlán 24287
## 50 Jocotepec 23572
## 96 Tequila 21120
## 23 Cihuatlán 20220
## 14 Ayotlán 18996
## 93 Teocaltiche 18412
## 101 Tomatlán 18094
## 84 Sayula 18078
4. Los 10 municipios con mayor proporcion de poblacion sin educacion basica.
Según información de la Secretaría de Educación del Gobierno del Estado de México1 la educación básica abarca los niveles educativos de preescolar, primaria, y secundaria. Así mismo si se revisa el diccionario de datos de la información censal, resulta que no existe una variable construida que englobe al total de personas sin educación básica por lo que se usarán la siguientes variables para la construcción de dicha variable:
* P3A5_NOA: Personas de 3 a 5 años de edad que no van a la escuela.
* P6A11_NOA: Población de 6 a 11 años que no asiste a la escuela.
* P12A14NOA: Personas de 12 a 14 años de edad que no van a la escuela.
* P15YM_SE: Personas de 15 a 130 años de edad que no aprobaron ningún grado de escolaridad o que sólo tienen nivel preescolar.
* P15PRI_IN: Personas de 15 a 130 años de edad que tienen como máxima escolaridad hasta el quinto grado aprobado en primaria. Incluye a las personas que no especificaron los grados aprobados en el nivel señalado.
* P15SEC_IN: Personas de 15 a 130 años de edad que tienen como máxima escolaridad hasta segundo grado aprobado de secundaria. Incluye a las personas que no especificaron los grados aprobados en el nivel señalado.
SNEDUCBAS<-aggregate(cbind(P3A5_NOA, P6A11_NOA, P12A14NOA, P15YM_SE, P15PRI_IN, P15SEC_IN)~NOM_MUN,
data=Jalisco,sum)
P_SNEDUCBAS<-(SNEDUCBAS$P3A5_NOA+SNEDUCBAS$P6A11_NOA+SNEDUCBAS$P12A14NOA+SNEDUCBAS$P15YM_SE+SNEDUCBAS$P15PRI_IN+SNEDUCBAS$P15SEC_IN)
Ya que el inciso nuevamente requiere la proporción, para más orden se creará un nuevo data frame unicamente con la población total y la variable que se acaba de calcular. Esto se hará en dos pasos, primero se creará el data frame con población por municipio y posteriormente se anexará una columna con la información de personas sin educación básica.
PC_SNEDUCBAS<-aggregate(POBTOT~NOM_MUN,
data=Jalisco,sum)
PC_SNEDUCBAS$P_SNEDUCBAS<-P_SNEDUCBAS
PC_SNEDUCBAS[1:3,]
## NOM_MUN POBTOT P_SNEDUCBAS
## 1 Acatic 23175 5858
## 2 Acatlán de Juárez 25250 3575
## 3 Ahualulco de Mercado 23630 3163
Ahora en un solo paso se crea la columna que almacena el calculo para la proporción de personas sin educación
PC_SNEDUCBAS$POR_SNEDUCBAS<-((PC_SNEDUCBAS$P_SNEDUCBAS/PC_SNEDUCBAS$POBTOT)*100)
PC_SNEDUCBAS[1:3,]
## NOM_MUN POBTOT P_SNEDUCBAS POR_SNEDUCBAS
## 1 Acatic 23175 5858 25.27724
## 2 Acatlán de Juárez 25250 3575 14.15842
## 3 Ahualulco de Mercado 23630 3163 13.38553
Ya que se requieren los 10 municipios con mayor proporcion de poblacion sin educacion basica se ordenará el data frame para crear un dat aframe nuevo que contenga unicamente el top 10
PC_SNEDUCBAS<- PC_SNEDUCBAS[order(PC_SNEDUCBAS$POR_SNEDUCBAS,decreasing = TRUE),]
DIEZM_SNEDUC<-PC_SNEDUCBAS[1:10,]
DIEZM_SNEDUC
## NOM_MUN POBTOT P_SNEDUCBAS POR_SNEDUCBAS
## 61 Mezquitic 22083 8231 37.27302
## 83 Santa María del Oro 1815 661 36.41873
## 49 Jilotlán de los Dolores 9425 3304 35.05570
## 68 Quitupan 7734 2508 32.42824
## 18 Cañadas de Obregón 4388 1383 31.51778
## 48 Jesús María 18982 5863 30.88716
## 82 Santa María de los Ángeles 3515 1051 29.90043
## 21 Chimaltitán 3270 959 29.32722
## 65 Pihuamo 11386 3281 28.81609
## 69 San Cristóbal de la Barranca 2924 820 28.04378
5. Los 10 municipios con mayor poblacion indigena.
Para este inciso se usará la variable P3YM_HLI (Personas de 3 a 130 años de edad que hablan alguna lengua indígena) asumiendo que las personas hablantes de alguna lengua indígena son o se consideran indígenas. En ese sentido solo se creará un data frame con esta variable, se ordenará y finalmnte se guardará unicamente lo 10 municipios con más personas con esta condición en un nuevo data frame.
P_INDIG<-aggregate(P3YM_HLI~NOM_MUN,
data=Jalisco,sum)
P_INDIG<- P_INDIG[order(P_INDIG$P3YM_HLI,decreasing = TRUE),]
DIEZM_PINDIG<-P_INDIG[1:10,]
names(DIEZM_PINDIG) = c("Municipio", "Población Indígena")
DIEZM_PINDIG
## Municipio Población Indígena
## 60 Mezquitic 16102
## 117 Zapopan 14413
## 39 Guadalajara 4150
## 97 Tlajomulco de Zúñiga 4052
## 16 Bolaños 4026
## 78 San Pedro Tlaquepaque 3194
## 65 Puerto Vallarta 3069
## 100 Tonalá 1413
## 34 El Salto 1283
## 83 Tala 1038
6. Los 10 municipios con mayor proporcion de viviendas particulares habitadas con internet. Para el calculo de esta proporción usaremos la variable de Viviendas particulares habitadas que disponen de Internet (VPH_INTER) respecto a la variable de Total de viviendas particulares habitadas (TVIVPARHAB) Por lo que se creará un data frame con ambas variables y se realizará el calculo correspondiente para tener una columna que contenga la proporcion de viviendas particulares habitadas con internet.
VIV_INTER<-aggregate(cbind(TVIVPARHAB, VPH_INTER)~NOM_MUN,
data=Jalisco,sum)
VIV_INTER$PC_VINTER<-((VIV_INTER$VPH_INTER/VIV_INTER$TVIVPARHAB)*100)
VIV_INTER[1:3,]
## NOM_MUN TVIVPARHAB VPH_INTER PC_VINTER
## 1 Acatic 6408 2877 44.89700
## 2 Acatlán de Juárez 6372 3361 52.74639
## 3 Ahualulco de Mercado 6519 2881 44.19389
Por último, ordenamos el data frame de mayor a menor para extraer los 10 municipio con más viviendas con está caracteristica.
VIV_INTER<- VIV_INTER[order(VIV_INTER$PC_VINTER,decreasing = TRUE),]
DIEZM_VIVINTER<-VIV_INTER[1:10,]
DIEZM_VIVINTER
## NOM_MUN TVIVPARHAB VPH_INTER PC_VINTER
## 40 Guadalajara 398543 299970 75.26666
## 120 Zapopan 425194 319756 75.20238
## 67 Puerto Vallarta 86523 59566 68.84412
## 124 Zapotlán el Grande 31449 21061 66.96874
## 80 San Pedro Tlaquepaque 185279 123377 66.58985
## 20 Chapala 16339 10384 63.55346
## 102 Tonalá 150488 95438 63.41901
## 99 Tlajomulco de Zúñiga 212301 131838 62.09957
## 63 Ocotlán 29112 17784 61.08821
## 84 Sayula 9439 5738 60.79034
Demostrar que la siguiente cadena de texto es un palindromo:
A mamá Roma le aviva el amor a papá y a papá Roma le aviva el amor a mamá.
Primero se guarda la frase en la variable P, se tiene que entrecomillar.
P<-"A mamá Roma le aviva el amor a papá y a papá Roma le aviva el amor a mamá"
P
## [1] "A mamá Roma le aviva el amor a papá y a papá Roma le aviva el amor a mamá"
Ya que un palíndromo se define por la RAE2 como “Palabra o frase cuyas letras están dispuestas de tal manera que resulta la misma leída de izquierda a derecha que de derecha a izquierda” resulta iirelevante la posición de los espacios y la presencia de acentos y mayusculas por lo que:
Se pasará todo el texto a minusculas y se guardará en la misma variable P
P<-tolower(P)
P
## [1] "a mamá roma le aviva el amor a papá y a papá roma le aviva el amor a mamá"
Ahora para que la evaluación de si es un palíndromo se pueda llevar a cabo de manera correcta se tienen que buscar y remplazar las vocales acentuadas con la función gsub
P<-gsub("á","a", P)
P<-gsub("é","e", P)
P<-gsub("í","i", P)
P<-gsub("ó","o", P)
P<-gsub("ú","u", P)
P
## [1] "a mama roma le aviva el amor a papa y a papa roma le aviva el amor a mama"
Por medio de la misma función se eliminarán los espacios
P<-gsub(" ","",P)
P
## [1] "amamaromaleavivaelamorapapayapaparomaleavivaelamoramama"
Para invertir el orden de los caracteres primero se tiene que convertir la frase a una lista
L<-strsplit(P, NULL)
L
## [[1]]
## [1] "a" "m" "a" "m" "a" "r" "o" "m" "a" "l" "e" "a" "v" "i" "v" "a" "e" "l" "a"
## [20] "m" "o" "r" "a" "p" "a" "p" "a" "y" "a" "p" "a" "p" "a" "r" "o" "m" "a" "l"
## [39] "e" "a" "v" "i" "v" "a" "e" "l" "a" "m" "o" "r" "a" "m" "a" "m" "a"
class(L)
## [1] "list"
Ahora, con la función lapply se aplica la función rev a la lista. Como ejemplo también se aplicará a otra lista que contiene “hola” para verificar que efectivamente revierte el orden de los caracteres
Originales
L
## [[1]]
## [1] "a" "m" "a" "m" "a" "r" "o" "m" "a" "l" "e" "a" "v" "i" "v" "a" "e" "l" "a"
## [20] "m" "o" "r" "a" "p" "a" "p" "a" "y" "a" "p" "a" "p" "a" "r" "o" "m" "a" "l"
## [39] "e" "a" "v" "i" "v" "a" "e" "l" "a" "m" "o" "r" "a" "m" "a" "m" "a"
H1
## [[1]]
## [1] "h" "o" "l" "a"
Invertidos
Q<-lapply(L, rev)
Q
## [[1]]
## [1] "a" "m" "a" "m" "a" "r" "o" "m" "a" "l" "e" "a" "v" "i" "v" "a" "e" "l" "a"
## [20] "m" "o" "r" "a" "p" "a" "p" "a" "y" "a" "p" "a" "p" "a" "r" "o" "m" "a" "l"
## [39] "e" "a" "v" "i" "v" "a" "e" "l" "a" "m" "o" "r" "a" "m" "a" "m" "a"
O<-lapply(H1, rev)
O
## [[1]]
## [1] "a" "l" "o" "h"
Ahora con las funciones paste y unlist se transformara la lista con los caracteres invertidos nuevamente en una cadena de texto como al principio del ejercicio. Se aplicará también para el otro ejemplo
Q<-paste(unlist(Q), collapse="")
Q
## [1] "amamaromaleavivaelamorapapayapaparomaleavivaelamoramama"
class(Q)
## [1] "character"
O<-paste(unlist(O), collapse="")
O
## [1] "aloh"
class(O)
## [1] "character"
Desplegamos ambas cadenas de texto (originales e invertidas) y con un operador logico se verifica que sean equivalentes
frase requerida
P
## [1] "amamaromaleavivaelamorapapayapaparomaleavivaelamoramama"
Q
## [1] "amamaromaleavivaelamorapapayapaparomaleavivaelamoramama"
P==Q
## [1] TRUE
frase de ejemplo
H
## [1] "hola"
O
## [1] "aloh"
H==O
## [1] FALSE
Con esto queda comprobado que la frase dada “A mamá Roma le aviva el amor a papá y a papá Roma le aviva el amor a mamá” se puede leer del mismo modo de izquierda a derecha y viceversa ya que las letras que componen dichas frases al invertirlas conservan el mismo acomodo a diferencia de la palabra “hola”
Probar si la siguiente matriz \((X)\) es definida positiva y, si sí, obtener su inversa. Y una vez obtenida su inversa, comprobar que \(XX^{-1} = I\)
\[
X=
\left(
\begin{array}{ll}
3 & 4 & {-1} \\
2 & -1 & 3 \\
2 & 2 & 1
\end{array}
\right)
\]
Lo primero que setiene que hacer es ingresa la matriz \((X)\) pro medio de la función matrix señalando como será el número de columnas y el acomodo ya sea por columnas o por renglones
X<-matrix(c(3,4,-1,2,-1,3,2,2,1),ncol=3,byrow=TRUE)
X
## [,1] [,2] [,3]
## [1,] 3 4 -1
## [2,] 2 -1 3
## [3,] 2 2 1
Tomando en cuenta que una matriz se define como positiva si su determinado es diferente \(Det(X)> 0\) se debe calcular el determinante
detX<-det(x=X)
detX
## [1] -11
En este caso se observa que \(X\) es definida negativa ya que el determinante resulto en un número negativo, es decir \(Det(X)< 0\).
Por su parte, para el cálculo de la inversa se hace uso de la función solve()
invX<-solve(a = X)
invX
## [,1] [,2] [,3]
## [1,] 0.6363636 0.5454545 -1
## [2,] -0.3636364 -0.4545455 1
## [3,] -0.5454545 -0.1818182 1
Para la comprobación del enunciado \(XX^{-1} = I\) siendo que \(I\) representa la matriz identidad, es decir \[ I= \left( \begin{array}{ll} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{array} \right) \]
se multiplican la matriz inicial con su matriz inversa y se redondea este número para ser almacenado en la variable \(XX\)
XX<-round(X%*%invX,0)
XX
## [,1] [,2] [,3]
## [1,] 1 0 0
## [2,] 0 1 0
## [3,] 0 0 1
Si se tiene ambas matrices y se realiza una operación lógica
\[
XX=\left(
\begin{array}{ll}
1 & 0 & 0 \\
0 & 1 & 0 \\
0 & 0 & 1
\end{array}
\right)\] \[
I=
\left(
\begin{array}{ll}
1 & 0 & 0 \\
0 & 1 & 0 \\
0 & 0 & 1
\end{array}
\right)
\]
$$
XX==I
## [,1] [,2] [,3]
## [1,] TRUE TRUE TRUE
## [2,] TRUE TRUE TRUE
## [3,] TRUE TRUE TRUE
Entonces queda demostrado que \(XX^{-1} = I\)
Ejercicio libre de programación:
* Se utilizan dos colores
* Se usan dos tipografías
* Se hace uso de las “quotes”
* Se utilizan notas al pie de págia
* Se utilizan negritas y cursivas
SEDUC (2021) Educación Básica. Gobierno del Estado de México. Recuperado de: https://seduc.edomex.gob.mx/educacion-basica↩
RAE (2021) Diccionario de la Lengua Española. Real Academia Española. Recuperado de:https://dle.rae.es/palíndromo↩