Ejercicio 1

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

Ejercio 2

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”


Ejercio 3

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 4

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


  1. SEDUC (2021) Educación Básica. Gobierno del Estado de México. Recuperado de: https://seduc.edomex.gob.mx/educacion-basica

  2. RAE (2021) Diccionario de la Lengua Española. Real Academia Española. Recuperado de:https://dle.rae.es/palíndromo