Advertisement
kukis03

Untitled

Jan 14th, 2024 (edited)
26
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.61 KB | None | 0 0
  1. ---
  2. title: "Racismo"
  3. author: "Jorge Moreno"
  4. date: "2024-01-11"
  5. output: pdf_document
  6. ---
  7.  
  8. ```{r setup, include=FALSE}
  9. knitr::opts_chunk$set(echo = TRUE)
  10. ```
  11.  
  12. ```{r}
  13. library(readxl)
  14. library(ggplot2)
  15. library(plotly)
  16. library(dplyr)
  17.  
  18. detenidos=read_excel("D:/Descargas/DATABASES/detenidos.xlsx")
  19. robos=read_excel("D:/Descargas/DATABASES/robos.xlsx")
  20. goneppl=read_excel("D:/Descargas/DATABASES/goneppl.xlsx")
  21.  
  22. #Eliminar edades sin dato para que no estorben
  23. detenidos2=detenidos[detenidos$edad!="SIN DATO",]
  24. #El libro solo habla de clasificación en 2 categorías, así que sorry intersexuales
  25. detenidos2=detenidos2[detenidos2$sexo!="INTERSEXUAL",]
  26.  
  27. detenidos2=detenidos2[,c(5,6,10)]
  28.  
  29. detenidos2$sexo<-as.factor(detenidos2$sexo)
  30. detenidos2$edad=as.numeric(detenidos2$edad)
  31. detenidos2$numero_detenciones=as.numeric(detenidos2$numero_detenciones)
  32.  
  33. #ggplot(data=detenidos,aes(edad,numero_detenciones,color=sexo))+geom_point()+theme_classic()
  34.  
  35.  
  36. Hombres=filter(detenidos2,sexo=="HOMBRE")
  37. Mujeres=filter(detenidos2,sexo=="MUJER")
  38.  
  39. mediaH=apply(Hombres[,-2],2,mean)
  40. mediaM=apply(Mujeres[,-2],2,mean)
  41.  
  42. covH=cov(Hombres[,-2])
  43. covM=cov(Mujeres[,-2])
  44.  
  45. nH=length(Hombres)
  46. nM=length(Mujeres)
  47.  
  48. spooled=(((nH-1)/(nH+nM-2))*covH)+(((nM-1)/(nH+nM-2))*covM)
  49. spooled
  50. spooledinv<-solve(spooled)
  51. spooledinv
  52.  
  53. haty<-(mediaH-mediaM)%*%spooledinv
  54. haty
  55.  
  56. bary1<-(haty)%*%mediaH
  57. bary1
  58.  
  59. bary2<-(haty)%*%mediaM
  60. bary2
  61.  
  62. x<-c(bary1,bary2)
  63. meany<-mean(x)
  64. meany
  65.  
  66. clas=function(group,vector,crit){
  67. data=as.matrix(group[,c(1,3)])
  68. n=length(data[,1])
  69. v=matrix(c(rep(vector[1], n), rep(vector[2], n)), nrow = 2,byrow=T)
  70. critval=diag(data%*%v)
  71. critval2=critval>crit
  72. return(critval2)
  73. #TRUE significa va a la población 1. FALSE A LA 2
  74. }
  75.  
  76. #Selección de muestra para clasificar:
  77. HombresMuestra=Hombres[sample(100),]
  78.  
  79. MujeresMuestra=Mujeres[sample(100),]
  80.  
  81. muestra=rbind(HombresMuestra,MujeresMuestra)
  82.  
  83. for (i in 1:nrow(muestra)){
  84. verdad=clas(muestra[i,],haty,meany)
  85. if(verdad){
  86. muestra[i,2]="HOMBRE"
  87. } else{
  88. muestra[i,2]="MUJER"
  89. }
  90. }
  91.  
  92. ggplot(data=muestra,aes(edad,numero_detenciones,color=sexo))+geom_point()+theme_classic()
  93. ```
  94.  
  95. El comportamiento discriminante probablemente se debe a que los hombres suelen ser más sospechosos al momento de detener a una persona, además de ser más propensos a cometer actos delictivos, lo que lleva a un mayor número de detenciones que las mujeres.
  96.  
  97. # Conglomerados
  98.  
  99. Se ha decidido agrupar a las provincias por el número de detenidos que lleven armas. Por ello, dos provincias serán más parecidas mientras menor sea el valor absoluto de la diferencia del número de individuos que lleven armas.
  100.  
  101. ```{r}
  102. #Clusters
  103.  
  104. #Eliminar detenciones en mar territorial, pues no son de una provincia:
  105. detenidos3=detenidos[detenidos$nombre_provincia!="MAR TERRITORIAL",]
  106. #Conservar solo observaciones que usen armas:
  107. detenidos3=detenidos3[detenidos3$tipo_arma!="NINGUNA",]
  108.  
  109. detProv=table(detenidos3$nombre_provincia)
  110. names(detProv)=c("AZU","BOL","CAÑ","CAR","CHI","COT","ORO","ESM","GAL","GUA","IMB","LOJ","RIO","MAN","MOR","NAP","ORE","PAS","PIC","SEL","SDO","SUC","TUN","ZAM")
  111.  
  112. matrizR=matrix(0,nrow=length(detProv),ncol=length(detProv),dimnames=list(names(detProv),names(detProv)))
  113.  
  114. for (i in 1:length(detProv)) {
  115. for (j in 1:length(detProv)) {
  116. matrizR[i,j]=abs(detProv[i]- detProv[j])
  117. }
  118. }
  119. matrizRE=scale(matrizR)
  120. distR=as.dist(matrizRE)
  121. clusterado=hclust(distR,method="complete")
  122.  
  123. plot(clusterado,hang=0.5,main="Provincias por peligro",xlab="Provincias",ylab="Distancia")
  124. rect.hclust(clusterado, k = 5, border = "red")
  125. ```
  126.  
  127. A continuación, se agrupan distritos de Guayaquil de acuerdo a los robos a unidades económicas. Dos distritos son más parecidos mientras menor sea la diferencia entre sus cantidades de robos a unidades económicas.
  128.  
  129. ```{r}
  130. #Cluster robos
  131.  
  132. #Conservar solo observaciones de robos a unidades económicas:
  133. robos2=robos[robos$`Subtipo de Incidente`=="Robo a unidades económicas",]
  134.  
  135. robDist=table(robos2$Distrito)
  136.  
  137. matrizR2=matrix(0,nrow=length(robDist),ncol=length(robDist),dimnames=list(names(robDist),names(robDist)))
  138.  
  139. for (i in 1:length(robDist)) {
  140. for (j in 1:length(robDist)) {
  141. matrizR2[i,j]=abs(robDist[i]-robDist[j])
  142. }
  143. }
  144.  
  145. matrizRE2=scale(matrizR2)
  146. distR2=as.dist(matrizRE2)
  147. clusterado2=hclust(distR2,method="average")
  148.  
  149. plot(clusterado2,hang=0.5,main="Distritos más peligrosos para negocios",xlab="Distritos",ylab="Distancia")
  150. rect.hclust(clusterado, k = 4, border = "blue")
  151. ```
  152.  
  153. Para los desaparecidos, se agrupará los mese de acuerdo al número de personas encontradas. Se considera que dos meses son similares mientras menor sea la diferencia entre sus cantidades de personas encontradas.
  154.  
  155.  
  156. ```{r}
  157. #cluster goneppl
  158.  
  159. #Quitar motivos sin dato
  160. goneppl2=goneppl[goneppl$`Motivo Desaparción`!="SIN _DATO",]
  161.  
  162. #Conservar solo los encontrados:
  163. goneppl2=goneppl2[goneppl2$`Situación Actual`=="ENCONTRADO",]
  164.  
  165. gonemotif=table(goneppl2$`Motivo Desaparción`)
  166. names(gonemotif)=c("Discapacidades","Extravío","Detención","Perdido","Prob. Econ.","Prob. Acad.","Prob. Fam.","Prob. Psic.","Prob. Soc.")
  167.  
  168. matrizR3=matrix(0,nrow=length(gonemotif),ncol=length(gonemotif),dimnames=list(names(gonemotif),names(gonemotif)))
  169.  
  170. for (i in 1:length(gonemotif)) {
  171. for (j in 1:length(gonemotif)) {
  172. matrizR3[i,j]=abs(gonemotif[i]-gonemotif[j])
  173. }
  174. }
  175.  
  176. matrizRE3=scale(matrizR3)
  177. distR3=as.dist(matrizRE3)
  178. clusterado3=hclust(distR3,method="complete")
  179.  
  180. plot(clusterado3,hang=0.5,main="Motivos con los que más se encuentra al desaparecido",xlab="Motivos",ylab="Distancia")
  181. rect.hclust(clusterado, k = 4, border = "green")
  182. ```
  183.  
  184.  
  185.  
  186.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement