Instrucciones

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.

Censo 2020

Ejercicio 1

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

Ejercicio 2

  1. Demostrar que la siguiente cadena de texto es un palíndromo: A mamá Roma le aviva el amor a papá y a papá Roma le aviva el amor a mamá

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

Ejercicio 3

  1. 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\)

\[ A= \left[\begin{array}{ccc} 3 & 4 & -1\\ 2 & -1 & 3\\ 2 & 2 & 1 \end{array}\right]\]

  1. Se trata de una matriz definida positiva si los determinantes de las submatrices principales son positivos. A continuación se nombran \(A_1\), \(A_2\) y \(A\) a las submatrices de \(A\) y se obtienen sus respectivos determinantes con el comando “det()”.
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.