DATA IDE a nivel de PROVINCIAS (variable numerica) La data original del Indice de Densidad Estatal (IDE) para el Peru esta elaborado por PNUD
link="https://github.com/PoliticayGobiernoPUCP/EstadisticaPoliticaGobiernoII/raw/master/sesiones/data/idePeru.xlsx"
library(openxlsx)
datos=read.xlsx(link,
sheet = 1, #hoja que cargaremos, corresponde al a?o 2012.
startRow = 4, #desde esta fila empezaremos a leer, aseguremonos de no perder t?tulos
skipEmptyRows = T, skipEmptyCols = T)
datos= datos[-c(223:226),] #La data acaba en la fila 222. Eliminemos filas innecesarias
datos=datos[-c(1:3),] #La tercera fila, con informaci?n de Per?, es innecesaria. Hay que eliminarla
columnas=c(seq(5,17,2))
datos = datos[,-columnas] #Hemos dejado listas las filas. Sin embargo, tenemos columnas que no son necesarias. Podemos crear una secuencia para eliminarlas todas; es decir, que empieza en el 5 y termine en el 17 y que los saltos sean de 2.
regiones=datos[!is.na(datos$X2),] #creamos un subconjunto llamado regiones
row.names(regiones)=NULL #resetear el indice de regiones
regiones=regiones[c(1,2)] #El subconjunto debe contener solo la informaci?n del Ubigeo y del nombre de la regi?n. Seleccionemos las columnas que nos interesan que son las dichas anteriormente.
colnames(regiones) = c("ubigeoRegion", "region") #hay que ponerle nombres adecuados a las columas del subconjunto
provincias=datos[is.na(datos$X2),] #creamos un subconjunto llamado provincias. Seleccionemos ?nicamente las filas que tienen datos perdios en la columna "X2"
row.names(provincias)=NULL #resetear el indice de provincias
provincias=provincias[,-c(2)] #Eliminemos la segunda columna X2 pues no es necesaria
#hay que ingresar los nombres en el orden que se requiere
names(provincias) <- c("ubigeoProvincia", "PROVINCIA", "habitantes", "IDE", "identidad", "medicos", "asistenciasecu", "saneamiento", "electrificacion")
provincias$ubigeoRegion=provincias$ubigeoProvincia
substr(provincias$ubigeoRegion,3,6)='0000' #Como queremos que la informaci?n de la regi?n aparezca junto a la informaci?n de la provincia, debemos juntar nuestras subtablas. Retener los primeros digitos del ubigeo de regi?n. A?adirle ceros a la cola de lo que acabamos de retener.
row.names(provincias)=NULL #Hay que resetear el ?ndice
provinciasIDE = merge(provincias, regiones, by="ubigeoRegion") #Ahora podemos a?adir la informaci?n de las provincias y de las regiones en nuestra data final, es decir, juntemos distritos con informaci?n de provincias
provinciasIDE= provinciasIDE[,c(1,2,11,3:10)] # ordenando las variables de la data
# convertir las variables a numerica
provinciasIDE$habitantes= as.numeric(provinciasIDE$habitantes)
provinciasIDE$IDE= as.numeric(provinciasIDE$IDE)
provinciasIDE$'identidad' = as.numeric(provinciasIDE$'identidad')
provinciasIDE$"medicos"= as.numeric(provinciasIDE$"medicos")
provinciasIDE$ "asistenciasecu"=as.numeric(provinciasIDE$"asistenciasecu")
provinciasIDE$"saneamiento" = as.numeric(provinciasIDE$"saneamiento")
provinciasIDE$"electrificacion"= as.numeric(provinciasIDE$"electrificacion")
provinciasIDE$ubigeoRegion= NULL
provinciasIDE$region= NULL
provinciasIDE$ubigeoProvincia= NULL
head(provinciasIDE,10)
DATA IDH a nivel de PROVINCIAS La data original del Indice de Desarrollo Humano (IDH) para el Peru esta elaborado por PNUD (variable numerica)
link1="https://docs.google.com/spreadsheets/d/e/2PACX-1vTp-Zw7bYP8fpWdTMdYdHwGXmYxMJCpSR1qK0vFvuB9fQOQPm07OHYyh_NpUv4Y5qeVA5D2XeHuKxATe4NGR30/pub?output=xlsx"
IDH=read.xlsx(link1,
sheet = 1,
skipEmptyRows = T, skipEmptyCols = T) #evita filas vacias / evita columnas vacias
names(IDH)= c("ubigeoProvincia", "PROVINCIA", "habitantes", "IDH", "esperanza", "secucompleta", "educatiempo", "percapitaf")
IDH$ubigeoProvincia= NULL
IDH$habitantes= NULL
str(IDH)
## 'data.frame': 195 obs. of 6 variables:
## $ PROVINCIA : chr "Chachapoyas" "Bagua" "Bongara" "Condorcanqui" ...
## $ IDH : num 0.334 0.292 0.279 0.169 0.251 ...
## $ esperanza : num 72.5 73.7 72.2 70.1 71.2 ...
## $ secucompleta: num 45.69 39.88 29.59 8.02 34.6 ...
## $ educatiempo : num 7.4 6.56 6.14 5.25 5.17 ...
## $ percapitaf : num 307 241 261 148 211 ...
head(IDH)
DATA Indice de salud niños <5 años a nivel de PROVINCIAS (“saludninos”)
La data original del Indice está construida por: 1) Porcentaje de desnutrición infantil 2007 (variable numerica) 2) EDA Enfermedad de Diarrea Aguda infantil fue elaborada a partir de la información de la SALA SITUACIONAL del Centro Nacional de Epidemiología, Prevención y Control de Enfermedades del año 2018 (variable numerica) 3) Numero de niños muertos 2007 (variable numerica)
library(openxlsx)
link2= "https://docs.google.com/spreadsheets/d/e/2PACX-1vT1w842ldEsmlvPAbyPhQD6lhDHMurICPCehefpyabv8lCK-PmLjnU67IZqqZOAviHffW6EmIooL37W/pub?output=xlsx"
saludninos= read.xlsx(link2,
sheet= 5,
skipEmptyRows = T,
skipEmptyCols = T)
names(saludninos)= c("ubigeoProvincia", "PROVINCIA", "desnutricion", "eda", "mortalidad", "isalud")
saludninos$region= NULL
saludninos$ubigeoProvincia= NULL
str(saludninos)
## 'data.frame': 195 obs. of 5 variables:
## $ PROVINCIA : chr "Chachapoyas" "Bagua" "Bongará" "Condorcanqui" ...
## $ desnutricion: num 1986 3888 1072 4665 2589 ...
## $ eda : num 981 2916 446 3218 1418 ...
## $ mortalidad : num 23 28 13 30 30 8 46 61 9 15 ...
## $ isalud : num 997 2277 510 2638 1346 ...
data= merge(provinciasIDE, IDH, by= "PROVINCIA")
data2= merge(data, saludninos, by= "PROVINCIA")
head(data2)
row.names(data2)= data2$PROVINCIA
data2$PROVINCIA =NULL
str(data2)
## 'data.frame': 149 obs. of 16 variables:
## $ habitantes : num 105694 73243 28318 7974 57957 ...
## $ IDE : num 0.747 0.577 0.633 0.658 0.559 ...
## $ identidad : num 97.9 98.8 97.2 98.2 97.9 ...
## $ medicos : num 16.93 2.63 10.45 8.59 11.18 ...
## $ asistenciasecu : num 93.7 77.5 83.1 89.5 74.9 ...
## $ saneamiento : num 63 31.2 48.2 47.8 25.6 ...
## $ electrificacion: num 90.5 76.7 70.6 79.1 62.7 ...
## $ IDH : num 0.354 0.191 0.209 0.254 0.237 ...
## $ esperanza : num 73.4 71.4 66.2 66.7 72.8 ...
## $ secucompleta : num 66.5 36.7 41.6 34.6 34.9 ...
## $ educatiempo : num 7.88 4.67 4.72 6.95 4.58 ...
## $ percapitaf : num 289 117 147 200 193 ...
## $ desnutricion : num 3204 4730 1617 331 3063 ...
## $ eda : num 2541 986 316 117 1074 ...
## $ mortalidad : num 33 29 35 9 28 61 45 26 20 15 ...
## $ isalud : num 1926 1915 656 152 1388 ...
Estandarizamos:
data2_s= as.data.frame(scale(data2[,-c(1,2,8,16)])) #creamos subset de puntuaciones estandarizadas
head(data2_s)
library(psych)
pearson= cor(data2_s)
pearson
## identidad medicos asistenciasecu saneamiento
## identidad 1.00000000 0.3447268 0.596618657 0.4398010
## medicos 0.34472677 1.0000000 0.419696445 0.6735922
## asistenciasecu 0.59661866 0.4196964 1.000000000 0.4145312
## saneamiento 0.43980102 0.6735922 0.414531165 1.0000000
## electrificacion 0.49172621 0.5368197 0.671414031 0.6412860
## esperanza 0.31697007 0.5263551 0.350869825 0.5440871
## secucompleta 0.60395182 0.5957711 0.800790694 0.6088538
## educatiempo 0.38712472 0.7364577 0.683099960 0.6991449
## percapitaf 0.34756145 0.7518571 0.546718635 0.7751378
## desnutricion 0.01520069 0.2455858 -0.006303684 0.1548339
## eda 0.09069119 0.4503525 0.126293302 0.2745264
## mortalidad 0.08222114 0.3468117 0.084349800 0.2263267
## electrificacion esperanza secucompleta educatiempo
## identidad 0.4917262 0.31697007 0.6039518 0.3871247
## medicos 0.5368197 0.52635506 0.5957711 0.7364577
## asistenciasecu 0.6714140 0.35086983 0.8007907 0.6831000
## saneamiento 0.6412860 0.54408708 0.6088538 0.6991449
## electrificacion 1.0000000 0.42393247 0.7825606 0.7491412
## esperanza 0.4239325 1.00000000 0.4622723 0.5602633
## secucompleta 0.7825606 0.46227234 1.0000000 0.8670539
## educatiempo 0.7491412 0.56026332 0.8670539 1.0000000
## percapitaf 0.6921941 0.65047501 0.7400428 0.8983882
## desnutricion 0.1473826 0.08773521 0.1041538 0.1548962
## eda 0.2550437 0.21153840 0.2586788 0.3294834
## mortalidad 0.1984388 0.10913006 0.2029312 0.2428847
## percapitaf desnutricion eda mortalidad
## identidad 0.3475614 0.015200691 0.09069119 0.08222114
## medicos 0.7518571 0.245585806 0.45035247 0.34681167
## asistenciasecu 0.5467186 -0.006303684 0.12629330 0.08434980
## saneamiento 0.7751378 0.154833854 0.27452643 0.22632674
## electrificacion 0.6921941 0.147382611 0.25504373 0.19843878
## esperanza 0.6504750 0.087735206 0.21153840 0.10913006
## secucompleta 0.7400428 0.104153776 0.25867879 0.20293118
## educatiempo 0.8983882 0.154896239 0.32948340 0.24288467
## percapitaf 1.0000000 0.239628784 0.41672183 0.32890966
## desnutricion 0.2396288 1.000000000 0.88277362 0.93661815
## eda 0.4167218 0.882773623 1.00000000 0.96869849
## mortalidad 0.3289097 0.936618152 0.96869849 1.00000000
cor.plot(pearson,
numbers=T,
upper= FALSE,
main="correlacion",
show.legend = "FALSE")
KMO(data2_s)
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = data2_s)
## Overall MSA = 0.82
## MSA for each item =
## identidad medicos asistenciasecu saneamiento
## 0.77 0.91 0.90 0.86
## electrificacion esperanza secucompleta educatiempo
## 0.92 0.83 0.85 0.82
## percapitaf desnutricion eda mortalidad
## 0.87 0.73 0.69 0.60
fa.parallel(pearson, fm="pa", fa="fa", main = "Scree Plot",n.obs = nrow(data2_s)) # la estructura de mi data me dice cuantas indices hay o deberia formar. Por la pendiente por el salto mas grande
## Parallel analysis suggests that the number of factors = 3 and the number of components = NA
data2_sF <-fa(data2_s,
nfactors=3, #factores o latentes, reduce en 9 dimensiones a 2 dimensiones
rotate="varimax") # lo que se cambia es la data y el numero de factores
## Warning in fa.stats(r = r, f = f, phi = phi, n.obs = n.obs, np.obs
## = np.obs, : The estimated weights for the factor scores are probably
## incorrect. Try a different factor extraction method.
## Warning in fac(r = r, nfactors = nfactors, n.obs = n.obs, rotate =
## rotate, : An ultra-Heywood case was detected. Examine the results carefully
loadings(data2_sF)
##
## Loadings:
## MR1 MR2 MR3
## identidad 0.222 0.598
## medicos 0.728 0.243 0.266
## asistenciasecu 0.264 0.857
## saneamiento 0.741 0.107 0.316
## electrificacion 0.513 0.106 0.635
## esperanza 0.624 0.207
## secucompleta 0.501 0.808
## educatiempo 0.753 0.123 0.536
## percapitaf 0.886 0.197 0.339
## desnutricion 0.928
## eda 0.242 0.940
## mortalidad 0.117 0.994
##
## MR1 MR2 MR3
## SS loadings 3.529 2.878 2.771
## Proportion Var 0.294 0.240 0.231
## Cumulative Var 0.294 0.534 0.765
sort(data2_sF$communalities)
## identidad esperanza medicos saneamiento
## 0.4067896 0.4342907 0.6592267 0.6596614
## electrificacion asistenciasecu desnutricion educatiempo
## 0.6774509 0.8038708 0.8653193 0.8686633
## secucompleta percapitaf eda mortalidad
## 0.9115575 0.9382871 0.9465089 0.9950000
sort(data2_sF$uniquenesses)
## mortalidad eda percapitaf secucompleta
## -0.005315107 0.053506511 0.061749880 0.088493259
## educatiempo desnutricion asistenciasecu electrificacion
## 0.131262126 0.134646731 0.196077653 0.322681040
## saneamiento medicos esperanza identidad
## 0.340289553 0.340734352 0.565649327 0.593095822
sort(data2_sF$complexity)
## desnutricion mortalidad eda asistenciasecu
## 1.010876 1.036931 1.141355 1.188127
## esperanza identidad percapitaf saneamiento
## 1.226553 1.271670 1.396867 1.400351
## medicos secucompleta educatiempo electrificacion
## 1.505735 1.699369 1.869025 1.980657
fa.diagram(data2_sF)