Bases de Datos y Programación

Karla Jazmín López Pasión

1 de octubre de 2021


Ejercicio 1

Utilizando la información correspondiente a los resultados del Censo de Población y Vivienda 2020 del INEGI para el estado de Jalisco obtener lo siguiente:

  1. Los 10 municipios con mayor proporción de población con alguna discapacidad.

Para realizar este ejercicio utilicé los datos de la población total y de las personas con discapacidad de cada municipio. Con base en estos datos determiné la proporción dividiendo el número de personas con discapacidad entre la población total y decidí multiplicar el resultado por 100 para que se apreciara de mejor manera tal proporción. De esta manera, se muestran a continuación los 10 municipios con mayor proporción de población con alguna discapacidad:

tdisc<-aggregate(cbind(as.numeric(jal$POBTOT),
                           as.numeric(jal$PCON_DISC))~NOM_MUN,
                     data=jal,sum)
pdisc <-((tdisc$V2)/as.numeric(tdisc$V1)*100)
df1<-data.frame(tdisc,pdisc)
df1orden <- df1[with(df1, order(-df1$pdisc)), ][1:10,]
colnames(df1orden)<-c("Municipios","Pob_Total", "Pob_Disc", "Prop_Pob_Disc")
ej1<-data.frame(df1orden,row.names = c(1:10))
datatable(ej1,class="hover")
  1. Los 30 municipios con mayor proporción de población con 65 años o más

Para realizar este ejercicio utilicé los datos de la población total y de las personas con discapacidad de cada municipio. Con base en estos datos determiné la proporción dividiendo el número de personas con 65 años o más entre la población total y decidí multiplicar el resultado por 100 para que se apreciara de mejor manera tal proporción. De esta manera, se muestran a continuación los 30 municipios con mayor proporción de población con 65 años o más:

t65<-aggregate(cbind(as.numeric(jal$POBTOT),
                           as.numeric(jal$POB65_MAS))~NOM_MUN,
                     data=jal,sum)
p65 <-((t65$V2)/as.numeric(t65$V1)*100)
df2<-data.frame(t65,p65)
df2orden <- df2[with(df2, order(-df2$p65)), ][1:30,]
colnames(df2orden)<-c("Municipios","Pob_Total", "Pob_65años", "Prop_Pob_65años")
ej2<-data.frame(df2orden,row.names = c(1:30))
datatable(ej2,class="hover")
  1. Los 30 municipios con mayor población económicamente activa.

Para realizar este ejercicio utilicé los datos de la población económicamente activa de cada municipio. De esta manera, se muestran a continuación los 30 municipios con mayor población económicamente activa:

tPEA<-aggregate(cbind(as.numeric(jal$PEA))~NOM_MUN,
                     data=jal,sum)
tPEAorden=tPEA[order(-tPEA$V1),][1:30,]
colnames(tPEAorden)<-c("Municipios","PEA")
ej3<-data.frame(tPEAorden,row.names = c(1:30))
datatable(ej3,class="hover")
  1. Los 10 municipios con mayor población indígena.
ti<-aggregate(cbind(as.numeric(jal$P3YM_HLI))~NOM_MUN,
                     data=jal,sum)
## Warning in cbind(as.numeric(jal$P3YM_HLI)): NAs introduced by coercion
tiorden=ti[order(-ti$V1),][1:10,]
colnames(tPEAorden)<-c("Municipios","Población_Indígena")
ej5<-data.frame(tiorden,row.names = c(1:10))
datatable(ej5,class="hover")
  1. Los 10 municipios con mayor proporción de viviendas particulares habitadas con internet.

Para realizar este ejercicio utilicé los datos de las viviendas particulares habitadas y los datos de las viviendas particulares habitadas con internet. Con base en estos datos determiné la proporción dividiendo el número de as viviendas particulares habitadas con internet entre el número de viviendas particulares habitadas y decidí multiplicar el resultado por 100 para que se apreciara de mejor manera tal proporción. De esta manera, se muestran a continuación los 10 municipios con mayor proporción de viviendas particulares habitadas con internet.

tint<-aggregate(cbind(as.numeric(jal$TVIVPARHAB),
                           as.numeric(jal$VPH_INTER))~NOM_MUN,
                     data=jal,sum)
pint <-((tint$V2)/as.numeric(tint$V1)*100)
df6<-data.frame(tint,pint)
df6orden <- df6[with(df6, order(-df6$pint)), ][1:10,]
colnames(df6orden)<-c("Municipios","Viviendas_Part_Hab", "Viviendas_Internet", "Prop_Viv_Internet")
ej6<-data.frame(df6orden,row.names = c(1:10))
datatable(ej6,class="hover")

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á

Para resolver este ejercicio lo primero que realicé fue poner todas las letras de la cadena de texto en minusculas; segundo, le quité todas las tildes; tercero, quité todos los espacios y, por último, revertí toda la cadena de texto y la puse en la variable q. Finalmente, indiqué que se imprimiera “Es un palíndromo” en caso de que la cadena de texto contenida en p y la cadena de texto invertida contenida en q fuera un palíndromo, como se muestra a continuación:

palindromo<-"A mamá Roma le aviva el amor a papá y a papá Roma le aviva el amor a mamá"
p<-tolower(palindromo)
p<-chartr('áéíóú','aeiou',p)
p<-gsub(" ","",p)
q<- sapply(lapply(strsplit(p, NULL), rev), paste, collapse="")
ifelse(p==q,"Es un palíndromo","No es palídromo")
## [1] "Es un palíndromo"

De esta manera demostré que la cadena de texto “A mamá Roma le aviva el amor a papá y a papá Roma le aviva el amor a mamá” es un palíndromo.

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

\[\begin{equation*} X=\begin{pmatrix} 3 & 4 & -1\\ 2 & -1 & 3\\ 2 & 2 & 1 \end{pmatrix} \end{equation*}\]

Una matriz de dimensiones 3x3 es definida positiva cuando sus tres menores principales son positivos. Por lo anterior, analicé si estos tres menores principales de la matriz (X) eran positivos, como se muestra a coninuación:

3>0
## [1] TRUE
matriz2<-matrix(c(3,4,2,-1),
                    ncol=2,byrow=T) 
matriz2
##      [,1] [,2]
## [1,]    3    4
## [2,]    2   -1
det(matriz2)>0
## [1] FALSE
matrizX<-matrix(c(3,4,-1,2,-1,3,2,2,1),
                    ncol=3,byrow=T) 
matrizX
##      [,1] [,2] [,3]
## [1,]    3    4   -1
## [2,]    2   -1    3
## [3,]    2    2    1
det(matrizX)>0
## [1] FALSE

De esta manera, la matrix (X) no es definida positiva. Sin embargo, en caso de que hubiera sido definida positiva, habría calculado su inversa y comprobado que \(XX^{-1}\) = I de la siguiente manera:

Matriz inversa:

inversa_matrizX<-solve(matrizX)
inversa_matrizX
##            [,1]       [,2] [,3]
## [1,]  0.6363636  0.5454545   -1
## [2,] -0.3636364 -0.4545455    1
## [3,] -0.5454545 -0.1818182    1

\(XX^{-1}\) = I

matrizX%*%inversa_matrizX
##              [,1]          [,2] [,3]
## [1,] 1.000000e+00 -8.326673e-17    0
## [2,] 0.000000e+00  1.000000e+00    0
## [3,] 1.110223e-16 -2.775558e-17    1

Ejercicio 4

Se mejoró el reporte comparado con el formato básico. Se cambió el tipo de letra, el color de fondo y se inclluyeron imágenes necesarias, como los logos de la institución. Asimismo, se mejoró el aspecto de las tablas de información.