DATA ORIGINAL: La data se construyó a partir de la información de SALA DE LA VIGILANCIA EPIDEMIOLOGICA DE NEUMONIAS <5 años del Centro Nacional de Epidemiología, Prevención y Control de Enfermedades del año 2018 a nivel de PROVINCIAS. http://www.dge.gob.pe/salasituacional/sala/index/SALA_VIGILA/141
V.Dependiente:Numero de casos de niños(as) <5 años con neumonia –> “numcasos”
library(openxlsx)
link1= "https://docs.google.com/spreadsheets/d/e/2PACX-1vT1w842ldEsmlvPAbyPhQD6lhDHMurICPCehefpyabv8lCK-PmLjnU67IZqqZOAviHffW6EmIooL37W/pub?output=xlsx"
neumonia= read.xlsx(link1,
sheet= 1,
skipEmptyRows = T,
skipEmptyCols = T)
names(neumonia)= c("region", "ubigeoProvincia", "PROVINCIA","numcasos", "totalninos")
neumonia$region= NULL
neumonia$ubigeoProvincia= NULL
str(neumonia)
## 'data.frame': 195 obs. of 3 variables:
## $ PROVINCIA : chr "Chachapoyas" "Bagua" "Bongará" "Condorcanqui" ...
## $ numcasos : num 12 207 5 209 16 13 38 181 8 3 ...
## $ totalninos: num 5076 9318 2895 8405 5781 ...
Creamos tasa para estandarizar nuestra variable numérica: V. Dependiente nueva –> “tnumcasos”
tnumcasos= (neumonia$numcasos/neumonia$total) *1000 #cantidad de casos de neumonia por cada mil niños(as) <5 años.
tneumonia = cbind(neumonia, tnumcasos)
head(tneumonia)
summary(tneumonia)
## PROVINCIA numcasos totalninos tnumcasos
## Length:195 Min. : 0.0 Min. : 611 Min. : 0.000
## Class :character 1st Qu.: 11.5 1st Qu.: 3487 1st Qu.: 2.869
## Mode :character Median : 28.0 Median : 6599 Median : 5.090
## Mean : 144.2 Mean : 14018 Mean : 7.093
## 3rd Qu.: 105.0 3rd Qu.: 12659 3rd Qu.: 9.222
## Max. :8991.0 Max. :643902 Max. :59.079
Interpretacion: –> MEDIA: En promedio, en el 2018 se registro en el Peru que el numero de casos de neumonia en infantes <5 años fue de 7 por cada mil niños(as) menores de 5 años.
tneumonia[which.min(tneumonia$tnumcasos),]
Interpretacion: Donde en la provincia de Asuncion en el departamento de Áncash se registro que la tasa de neumonía en el 2018 fue 0.
tneumonia[which.max(tneumonia$tnumcasos),]
Asimismo, en Atalaya, ubicado en Ayacucho, encontramos una tasa mayor a comparacion de las otras provincias con 59 casos de neumonia por cada mil niños(as) <5 años.
DATA Indice de salud niños <5 años a nivel de PROVINCIAS (“saludninos”)
La data del Indice está construida por: 1) Numero de casos de desnutrición infantil en el año 2007: La data se construyo a partir del documento “Mapa de Desnutrición Crónica en Niños Menores de cinco años a nivel Provincial y Distrital, 2007 elaborado por el INEI” (variable numerica) 2) Numero de casos de EDA (Enfermedad de Diarrea Aguda infantil): La data se construyó a partir de la información de SALA DE LA VIGILANCIA EPIDEMIOLOGICA DE EDA <5 años del Centro Nacional de Epidemiología, Prevención y Control de Enfermedades del año 2018 a nivel de PROVINCIAS. http://www.dge.gob.pe/salasituacional/sala/index/SALA_VIGILA/141 3) Numero de niños muertos en el año 2007 : La data se construyo a partir del documento “Mapa de Desnutrición Crónica en Niños Menores de cinco años a nivel Provincial y Distrital, 2007 elaborado por el INEI” (variable numerica)
library(openxlsx)
saludninos= read.xlsx(link1,
sheet= 4,
skipEmptyRows = T,
skipEmptyCols = T)
names(saludninos)= c("ubigeoProvincia", "PROVINCIA", "desnutricion", "eda", "muertes", "total", "isalud")
saludninos$ubigeoProvincia= NULL
str(saludninos)
## 'data.frame': 195 obs. of 6 variables:
## $ PROVINCIA : chr "Chachapoyas" "Bagua" "Bongará" "Condorcanqui" ...
## $ desnutricion: num 1986 3888 1072 4665 2589 ...
## $ eda : num 981 2916 446 3218 1418 ...
## $ muertes : num 23 28 13 30 30 8 46 61 9 15 ...
## $ total : num 5076 9318 2895 8405 5781 ...
## $ isalud : num 997 2277 510 2638 1346 ...
Creamos tasas para estandarizar nuestros componentes del índice
teda= (saludninos$eda/saludninos$total) *1000 #creamos tasa de eda (casos de EDA_Enfermedad de Diarrea Aguda infantil por cada mil niños(as) <5 años)
tsaludninos = cbind(saludninos, teda)
tdesnutricion= (saludninos$desnutricion/saludninos$total) *1000 #creamos tasa de desnutricion (casos de desnutricion por cada mil niños(as) <5 años)
t2saludninos= cbind(tsaludninos, tdesnutricion)
tmuertes= (saludninos$muertes/saludninos$total) *1000 #creamos tasa de mortalidad (numero de fallecidos por cada mil niños(as) <5 años)
t3saludninos= cbind(t2saludninos, tmuertes)
tisalud= (saludninos$isalud/saludninos$total) *1000 # nuestro indice lo volvemos tasa
tfinalsalud= cbind(t3saludninos, tisalud)
tfinalsalud$desnutricion= NULL
tfinalsalud$eda= NULL
tfinalsalud$muertes= NULL
tfinalsalud$total= NULL
head(tfinalsalud)
summary(tfinalsalud) #Interpretación: la media de la tasa de salud en niños menores a 5 años es 1879. Su valor mínimo es 325 (provincia Picota, perteneciente a San Martín) y el máximo 6209 (provincia Purus, perteneciente a Ucayali)
## PROVINCIA isalud teda tdesnutricion
## Length:195 Min. : 61.67 Min. : 21.69 Min. : 24.66
## Class :character 1st Qu.: 645.50 1st Qu.: 111.41 1st Qu.:262.58
## Mode :character Median : 1238.00 Median : 160.85 Median :390.94
## Mean : 2040.96 Mean : 188.26 Mean :370.49
## 3rd Qu.: 2187.83 3rd Qu.: 218.85 3rd Qu.:479.79
## Max. :53257.00 Max. :1487.80 Max. :739.61
## tmuertes tisalud
## Min. : 1.908 Min. : 32.51
## 1st Qu.: 3.677 1st Qu.:148.98
## Median : 4.697 Median :188.36
## Mean : 5.158 Mean :187.97
## 3rd Qu.: 6.076 3rd Qu.:222.11
## Max. :13.486 Max. :620.93
Interpretacion: –> MEDIA: En promedio en el Peru la tasa del indice de salud (en conjunto total de diarreas agudas, desnutricion y muertes) de niños <5 años fue de 187 casos por cada mil niños(as) menores de 5 años.
boxplot(tfinalsalud[6],horizontal=T, main= "Tasa del indice de salud de niños", xlab= "numero de casos por cada mil niños(as) <5 años", col = "bisque", outcol= "blue", pch = 20, cex = 1) #Interpretacion: Podemos ver que hay 4 valores atipicos.
Interpretacion: La provincia de Picota, la cual se encuentra el departamento de San Martin es la que tiene una tasa menor en el indice de salud de niños. Es decir, donde hay menos casos de desnutricion, defuncion y diarreas por cada mil menores de <5 años.
tfinalsalud[which.min(tfinalsalud$tisalud),]
Interpretacion: La provincia de Purus, la cual se encuentra el departamento de Ucayali es la que tiene una tasa alta en el indice de salud de niños. Es decir, donde hay mas casos de desnutricion, defuncion y diarreas por cada mil menores de <5 años.
tfinalsalud[which.max(tfinalsalud$tisalud),]
DATA Porcentaje de niños(as) <5 años sin ningún seguro a nivel de PROVINCIAS (“nseguro”) Variable numérica La data se construyo a partir del documento “Mapa de Desnutrición Crónica en Niños Menores de cinco años a nivel Provincial y Distrital, 2007 elaborado por el INEI”
library(openxlsx)
nseguroinfan= read.xlsx(link1,
sheet= 3,
skipEmptyRows = T,
skipEmptyCols = T)
names(nseguroinfan)= c("ubigeoProvincia", "PROVINCIA", "noseguroinfan")
nseguroinfan$ubigeoProvincia= NULL
str(nseguroinfan)
## 'data.frame': 195 obs. of 2 variables:
## $ PROVINCIA : chr "Chachapoyas" "Bagua" "Bongará" "Condorcanqui" ...
## $ noseguroinfan: num 21.4 13.6 32.6 14.8 16.6 35.8 19.2 40.4 49.7 24.9 ...
head(nseguroinfan)
summary(nseguroinfan)
## PROVINCIA noseguroinfan
## Length:195 Min. : 7.70
## Class :character 1st Qu.:17.25
## Mode :character Median :27.10
## Mean :28.24
## 3rd Qu.:37.70
## Max. :63.70
Interpretacion: En promedio en el Peru el 28.24% de los niños menores de <5 años no tiene ningun seguro.
nseguroinfan[which.min(nseguroinfan$noseguroinfan),] # interpretacion: La provincia que tiene el porcentaje con menos niños sin ningún tipo de seguro es Paruro (ubicado en Cuzco) con 7.7%.
nseguroinfan[which.max(nseguroinfan$noseguroinfan),] #interpretacion: La provincia que tiene el porcentaje con mayor niños sin ningún tipo de seguro es San Román, ubicado en Puno con 63.7%.
DATA Variables de control a nivel de PROVINCIAS (“vcontrol”)
La data de Variables de control está construida por: 1)Poblacion urbana (variable numerica) 2)Poblacion rural (variable numerica) 3)Costa (variable categórica dicotómica) 4)Sierra (variable categórica dicotómica) 5)Selva (variable categórica dicotómica) 6)Capital (variable categórica dicotómica)
vcontrol= read.xlsx(link1,
sheet=5,
skipEmptyRows = T,
skipEmptyCols = T)
names(vcontrol)= c("ubigeoProvincia","PROVINCIA", "urbano", "rural", "costa", "sierra", "selva", "capital", "region")
vcontrol$ubigeoProvincia= NULL
vcontrol[c(4:7)]=lapply(vcontrol[c(4:7)], as.factor)
vcontrol$region = factor(vcontrol$region,
levels = c(1:3),
labels = c("costa", "sierra", "selva"), #labels
ordered=F)
str(vcontrol)
## 'data.frame': 195 obs. of 8 variables:
## $ PROVINCIA: chr "Chachapoyas" "Bagua" "Bongará" "Condorcanqui" ...
## $ urbano : num 34343 33559 16460 6458 19526 ...
## $ rural : num 15357 38198 11005 36853 28802 ...
## $ costa : Factor w/ 2 levels "NO","SI": 1 1 1 1 1 1 1 1 1 1 ...
## $ sierra : Factor w/ 2 levels "NO","SI": 1 1 1 1 1 1 1 2 2 2 ...
## $ selva : Factor w/ 2 levels "NO","SI": 2 2 2 2 2 2 2 1 1 1 ...
## $ capital : Factor w/ 2 levels "NO","SI": 2 1 1 1 1 1 1 2 1 1 ...
## $ region : Factor w/ 3 levels "costa","sierra",..: 3 3 3 3 3 3 3 2 2 2 ...
head(vcontrol)
summary(vcontrol) #Interpretación: entre urbano y rural, encontramos que el promedio del número de personas que vive en la zona urbana es casi el tripe valor del promedio del número de personas que vive en la zona rural. También detectamos que contamos con 170 provincias que no son capital; 40 que están en la costa; 107 que están en la sierra y 48 que están en la selva.
## PROVINCIA urbano rural costa sierra
## Length:195 Min. : 1251 Min. : 0 NO:155 NO: 88
## Class :character 1st Qu.: 11250 1st Qu.: 13054 SI: 40 SI:107
## Mode :character Median : 23080 Median : 26822
## Mean : 106719 Mean : 33856
## 3rd Qu.: 60330 3rd Qu.: 42088
## Max. :7596058 Max. :141424
## selva capital region
## NO:147 NO:170 costa : 40
## SI: 48 SI: 25 sierra:107
## selva : 48
##
##
##
boxplot((vcontrol[2:3]),horizontal=T, main = "Habitantes que viven en zona urbana y rural", col = rainbow(2, alpha=0.2), border = rainbow(2, v=0.6), outcol= "orange", pch = 20, cex = 1) #Interpretacion: vemos valores atipicos en urbano y rural
## VARIABLE INDEPENDIENTE
DATA IDE a nivel de PROVINCIAS La data original del Indice de Densidad Estatal (IDE) para el Peru esta elaborado por PNUD (variable numerica)
link2="https://github.com/PoliticayGobiernoPUCP/EstadisticaPoliticaGobiernoII/raw/master/sesiones/data/idePeru.xlsx"
library(openxlsx)
datos=read.xlsx(link2,
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)
summary(provinciasIDE)
## PROVINCIA habitantes IDE identidad
## Length:194 Min. : 4251 Min. :0.4245 Min. :81.97
## Class :character 1st Qu.: 32124 1st Qu.:0.5805 1st Qu.:96.53
## Mode :character Median : 62643 Median :0.6349 Median :97.90
## Mean : 150344 Mean :0.6509 Mean :97.29
## 3rd Qu.: 120760 3rd Qu.:0.7158 3rd Qu.:98.87
## Max. :8481415 Max. :0.9104 Max. :99.50
## medicos asistenciasecu saneamiento electrificacion
## Min. : 2.598 Min. :44.03 Min. : 0.2351 Min. :33.83
## 1st Qu.: 6.453 1st Qu.:74.05 1st Qu.:40.9404 1st Qu.:61.31
## Median :10.319 Median :82.47 Median :54.1273 Median :74.08
## Mean :11.844 Mean :80.37 Mean :56.0745 Mean :71.97
## 3rd Qu.:14.588 3rd Qu.:88.82 3rd Qu.:72.3645 3rd Qu.:84.70
## Max. :44.741 Max. :99.50 Max. :99.5000 Max. :99.50
Interpretando IDE MEDIA: En promedio la presencia del estado en las provincias es de 0.65. MEDIANA: Donde hasta el 50% de las provincias tienen un indice de presencia del Estado de 0.63.
provinciasIDE[which.min(provinciasIDE$IDE),] #Atalaya es la provincia que se encuentra en Ucayali y que tiene un indice de densidad estatal menor que el resto de provincias
provinciasIDE[which.max(provinciasIDE$IDE),] #Tacna es la provincia en donde hay una mayor presencia del Estado a diferencia del resto de las otras provincias.
No puedo medir el comportamiento de las variables porque estan en diferentes escalas por eso estandarizo la unidad de medicion de las variables con las puntuaciones z.
boxplot(scale(provinciasIDE[3:8]),horizontal=T, main = "DATA IDE", col = rainbow(6, alpha=0.2),
border = rainbow(6, v=0.6), outcol= "black", pch = 20, cex = 1, las = 1,
frame = F) #Interpretacion: En las puntuaiones z la media se vuelve 0 y lo demas sera medido en distancias con respecto a la media. entonces si hay valores negativos estaran por debajo de la media y si hay valores positivos estaran por encima de la media. Es decir, hay provincias que se encuentran por encima de la media como hay provincias que se encuentran por debajo de la media en cada una de las variables de la Data IDE. Se destaca, ademas, que hay valores atipicos en identidad, medicos, asistenciasecu
## VARIABLE INDEPENDIENTE
DATA IDH a nivel de PROVINCIAS La data original del Indice de Desarrollo Humano (IDH) para el Peru esta elaborado por PNUD (variable numerica)
link2="https://docs.google.com/spreadsheets/d/e/2PACX-1vTp-Zw7bYP8fpWdTMdYdHwGXmYxMJCpSR1qK0vFvuB9fQOQPm07OHYyh_NpUv4Y5qeVA5D2XeHuKxATe4NGR30/pub?output=xlsx"
IDH=read.xlsx(link2,
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)
summary(IDH)
## PROVINCIA IDH esperanza secucompleta
## Length:195 Min. :0.1598 Min. :64.22 Min. : 8.021
## Class :character 1st Qu.:0.2303 1st Qu.:70.11 1st Qu.:32.041
## Mode :character Median :0.2731 Median :71.71 Median :45.968
## Mean :0.2918 Mean :71.59 Mean :47.174
## 3rd Qu.:0.3498 3rd Qu.:73.19 3rd Qu.:62.105
## Max. :0.5009 Max. :76.67 Max. :85.876
## educatiempo percapitaf
## Min. : 3.053 Min. :107.8
## 1st Qu.: 5.312 1st Qu.:166.7
## Median : 6.577 Median :212.3
## Mean : 6.794 Mean :241.5
## 3rd Qu.: 8.155 3rd Qu.:296.8
## Max. :11.276 Max. :556.4
Interpretando IDH MEDIA: En promedio el desarrollo humano en las provincias es de 0.29. MEDIANA: Donde hasta el 50% de las provincias tienen un indice de desarrollo humano de 0.27.
IDH[which.min(IDH$IDH),] #Interpretacion: Pachitea es la provincia (ubicado en Huanuco) con un desarrollo humano menor a comparacion de las otras provincias del Peru.
IDH[which.max(IDH$IDH),] #Interpretacion: Lima es la provincia que tiene un mayor desarrollo humano a diferencia del resto de las provincias.
No puedo medir el comportamiento de las variables porque estan en diferentes escalas por eso estandarizo la unidad de medicion de las variables con las puntuaciones z.
boxplot(scale(IDH[2:6]),horizontal=T, main = "DATA IDH", col = rainbow(5, alpha=0.2),
border = rainbow(5, v=0.6), outcol= "black", pch = 20, cex = 1,
las = 1,
frame = F) #Interpretacion: En las puntuaiones z la media se vuelve 0 y lo demas sera medido en distancias con respecto a la media. entonces si hay valores negativos estaran por debajo de la media y si hay valores positivos estaran por encima de la media. Es decir, hay provincias que se encuentran por encima de la media como hay provincias que se encuentran por debajo de la media en cada una de las variables de la Data IDH. Se destaca, ademas, que hay valores atipicos en percapital y esperanza. Asimismo, en la caja de esperanza los datos estan mas concentrados a diferencia de las otras cajas donde se evidencia una mayr variabilidad.
## VARIABLE INDEPENDIENTE
DATA seguros a nivel de PROVINCIAS La data construida a partir de los datos de la “Plataforma digital georreferenciada Sayhuite” (variable numerica) http://www.sayhuite.gob.pe/sayhuite/sayhuite.php
seguros= read.xlsx(link1,
sheet=6,
skipEmptyRows = T,
skipEmptyCols = T)
names(seguros)= c("Ubigeo","PROVINCIA", "notseguros", "porSIS")
seguros[c(3:4)]=lapply(seguros[c(3:4)], as.numeric)
seguros$Ubigeo= NULL
str(seguros)
## 'data.frame': 195 obs. of 3 variables:
## $ PROVINCIA : chr "Chachapoyas" "Bagua" "Bongará" "Condorcanqui" ...
## $ notseguros: num 51.6 52.9 66.8 47 54 66.1 57.1 69.5 64.6 55.8 ...
## $ porSIS : num 28.7 37 22 47.5 38.3 20.6 30.9 10 25.7 35.3 ...
head(seguros)
summary(seguros)
## PROVINCIA notseguros porSIS
## Length:195 Min. :23.10 Min. : 6.20
## Class :character 1st Qu.:48.65 1st Qu.:16.70
## Mode :character Median :56.30 Median :27.30
## Mean :55.93 Mean :29.68
## 3rd Qu.:63.35 3rd Qu.:40.65
## Max. :85.70 Max. :68.90
Interpretando “notseguros” : % de personas que no tienen seguros MEDIA: En promedio en las provincias el % de personas que no tienen seguros es de 55.9% MEDIANA: Donde hasta el 50% de las provincias, % de personas que no tienen seguros es de 56.3%
Interpretando “porSIS”: % de personas que tiene SIS MEDIA: En promedio en las provincias el % de personas que tiene SIS es de 29.6% MEDIANA: Donde hasta el 50% de las provincias el % de personas que tiene SIS es de 27.3%
boxplot((seguros[2:3]),horizontal=T, main = "SEGUROS", col = rainbow(2, alpha=0.2), border = rainbow(2, v=0.6), outcol= "orange", pch = 20, cex = 1, las = 1,
frame = F, ylim = c(0,100), xlab= "porcentaje" ) #Interpretacion: vemos valores atipicos en notseguros. Asimismo, es la caja donde hay menos variabilidad.
DATA % de pobreza a nivel de PROVINCIAS La data construida a partir de los datos de la “Plataforma digital georreferenciada Sayhuite” (variable numerica) http://www.sayhuite.gob.pe/sayhuite/sayhuite.php
pobreza= read.xlsx(link1,
sheet=7,
skipEmptyRows = T,
skipEmptyCols = T)
names(pobreza)= c("Ubigeo","PROVINCIA", "ppobreza")
pobreza$Ubigeo= NULL
pobreza$ppobreza=as.numeric(pobreza$ppobreza)
str(pobreza)
## 'data.frame': 195 obs. of 2 variables:
## $ PROVINCIA: chr "Chachapoyas" "Bagua" "Bongará" "Condorcanqui" ...
## $ ppobreza : num 48 53.8 47.9 76.3 60.9 39.1 49.7 38.5 55.9 72.5 ...
head(pobreza)
summary(pobreza)
## PROVINCIA ppobreza
## Length:195 Min. :15.20
## Class :character 1st Qu.:38.80
## Mode :character Median :58.60
## Mean :55.65
## 3rd Qu.:72.25
## Max. :89.20
Interpretando “ppobreza”: % de pobreza MEDIA: En promedio en las provincias el % de pobreza de 55.65% MEDIANA: Donde hasta el 50% de las provincias el % de pobreza es de 58.6%
DATA= merge(tneumonia, tfinalsalud, by= "PROVINCIA")
DATA1=merge(DATA, nseguroinfan, by= "PROVINCIA")
DATA2= merge(DATA1,vcontrol, by= "PROVINCIA")
DATA3= merge(DATA2,provinciasIDE , by="PROVINCIA")
DATA4= merge(DATA3,IDH , by= "PROVINCIA")
DATA5= merge(DATA4, seguros, by= "PROVINCIA")
final= merge(DATA5, pobreza, by= "PROVINCIA")
#para poner los paises en el indice
row.names(final)= final$PROVINCIA
final$PROVINCIA =NULL
str(final)
## 'data.frame': 149 obs. of 31 variables:
## $ numcasos : num 224 27 26 8 21 166 18 22 4 3 ...
## $ totalninos : num 9848 7461 3355 913 5990 ...
## $ tnumcasos : num 22.75 3.62 7.75 8.76 3.51 ...
## $ isalud : num 1926 1915 656 152 1388 ...
## $ teda : num 258 132.2 94.2 128.1 179.3 ...
## $ tdesnutricion : num 325 634 482 363 511 ...
## $ tmuertes : num 3.35 3.89 10.43 9.86 4.67 ...
## $ tisalud : num 196 257 196 167 232 ...
## $ noseguroinfan : num 13.3 12.2 9.7 49.7 17.2 15.9 23.4 17.7 10.6 24.9 ...
## $ urbano : num 60810 19345 14460 2528 18453 ...
## $ rural : num 35254 44447 12897 5467 37030 ...
## $ costa : Factor w/ 2 levels "NO","SI": 1 1 1 1 1 1 1 1 1 1 ...
## $ sierra : Factor w/ 2 levels "NO","SI": 2 2 2 2 2 2 2 2 2 2 ...
## $ selva : Factor w/ 2 levels "NO","SI": 1 1 1 1 1 1 1 1 1 1 ...
## $ capital : Factor w/ 2 levels "NO","SI": 2 1 1 1 1 1 1 1 1 1 ...
## $ region : Factor w/ 3 levels "costa","sierra",..: 2 2 2 2 2 2 2 2 2 2 ...
## $ 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 ...
## $ notseguros : num 69.5 48.1 44.1 64.6 42.7 46.9 52.1 49.2 45.9 55.8 ...
## $ porSIS : num 10 48.1 50 25.7 50.9 43.3 33.7 44.1 44.7 35.3 ...
## $ ppobreza : num 38.5 88 84.1 55.9 68.8 68.9 87.6 70.1 73.6 72.5 ...
head(final)
library(ggplot2)
ggplot(final, aes(x=capital, y=tnumcasos, fill=capital)) +
geom_boxplot(alpha=0.3,outlier.colour = "blue") +
labs(x="Capital", y="Tasa de neumonia por cada mil niños(as) <5 años") + # titulo ejes y leyenda
scale_x_discrete(labels=c("SI","NO")) + # etiquetas del eje x
theme(legend.position="none") +
scale_fill_brewer(palette="RdBu")+
coord_flip() +
geom_point(stat= "summary", fun.y=mean, shape=16, size=4, color="red")
Interpretacion: Las provincias que son capital presentan una menor variabilidad que las provincias que no son capital. Asimismo, la caja de capital se presentan valores atipicos. Ademas, las provincias que son capital tienen en promedio una menor tasa de neumonia por cada mil niños(as) <5 años a comparacion de las provincias que no son capital. Es decir, que las provincias que no son capital tienen una mayor tasa de neumonia en promedio.
library(ggplot2)
ggplot(final, aes(x=region, y=tnumcasos, fill=region)) +
geom_boxplot(alpha=0.3,outlier.colour = "blue") +
labs(x="Region", y="Tasa de neumonia por cada mil niños(as) <5 años", fill= "R") + # titulo ejes y leyenda
scale_x_discrete(labels=c("COSTA","SIERRA","SELVA" )) + # etiquetas del eje x
guides(fill=FALSE) +
coord_flip() +
geom_point(stat= "summary", fun.y=mean, shape=16, size=4, color="red")
Interpretacion:
En promedio las provincias de la selva presentan una tasa de neumonia mayor a comparacion de las provicias que son costa y sierra. Asimismo, vemos que en la caja de selva hay una mayor variabilidad a diferencia de las otras 2 cajas que son costa y sierra.
VD= Tasa de neumonia por cada mil niños menores de 5 años (v. numérica) VI= Tasa de salud niños (v. numérica)
cor.test(final$tnumcasos, final$tisalud)
##
## Pearson's product-moment correlation
##
## data: final$tnumcasos and final$tisalud
## t = 1.2461, df = 147, p-value = 0.2147
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.0595377 0.2587865
## sample estimates:
## cor
## 0.1022411
Interpretacion: El P-VALUE es MAYOR a 0.05, entonces NO existe asociación entre las variables
VD= Tasa de prevalencia de casos de niños menores de 5 años (v. numerica) VI= Numero de niños sin ningun tipo de seguro (v. numerica)
cor.test(final$tnumcasos, final$noseguroinfan)
##
## Pearson's product-moment correlation
##
## data: final$tnumcasos and final$noseguroinfan
## t = 1.2261, df = 147, p-value = 0.2221
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.06117521 0.25725240
## sample estimates:
## cor
## 0.1006145
Interpretacion: El P-VALUE es MAYOR a 0.05, entonces NO hay asociación entre las variables.
VD= Tasa de prevalencia de casos de niños menores de 5 años (v. numerica) VI= Indice de densidad estatal (v. numerica)
cor.test(final$tnumcasos, final$IDE)
##
## Pearson's product-moment correlation
##
## data: final$tnumcasos and final$IDE
## t = 0.36046, df = 147, p-value = 0.719
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.1317120 0.1896112
## sample estimates:
## cor
## 0.02971732
Interpretacion: El P-VALUE es MAYOR a 0.05, entonces NO hay asociación entre las variables.
VD= Tasa de prevalencia de casos de niños menores de 5 años (v. numerica) VI= Indice de desarrollo humano (v. numerica)
cor.test(final$tnumcasos, final$IDH)
##
## Pearson's product-moment correlation
##
## data: final$tnumcasos and final$IDH
## t = 2.2739, df = 147, p-value = 0.02442
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.02425696 0.33520196
## sample estimates:
## cor
## 0.1843379
Interpretacion: El P-VALUE es MENOR a 0.05, entonces SÍ hay asociación entre las variables Indice de desarrollo humano y Tasa de neumonia
VD= Tasa de prevalencia de casos de niños menores de 5 años (v. numerica) VI= Indice de desarrollo humano (v. numerica)
modelo1=lm(tnumcasos~IDH,data=final)
summary(modelo1)
##
## Call:
## lm(formula = tnumcasos ~ IDH, data = final)
##
## Residuals:
## Min 1Q Median 3Q Max
## -8.287 -3.958 -1.591 1.852 53.188
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.216 2.120 1.045 0.2977
## IDH 15.790 6.944 2.274 0.0244 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 6.957 on 147 degrees of freedom
## Multiple R-squared: 0.03398, Adjusted R-squared: 0.02741
## F-statistic: 5.171 on 1 and 147 DF, p-value: 0.02442
Interpretacion: El P-VALUE es MENOR a 0.05, entonces SÍ hay relación entre las variables y que esta es estadisticamente significativa. Interpretacion de la pendiente: si es que una provincia gana 1 punto en desarrollo humano, la tasa de neumonia por cada mil niños menores de 5 años aumenta en 15 casos en promedio. La DIRECCION del efecto es POSITIVA, es decir, cuando aumenta el IDH y aumenta la tasa de neumonia
Vemos la relación en un gráfico: Lo log para que el modelo se comporte de manera lineal
library("ggpubr")
## Loading required package: magrittr
ggscatter(final, x = "IDH", y = "tnumcasos",
add = "reg.line", conf.int = TRUE,
cor.coef = TRUE, cor.method = "pearson",
xlab = "Tasa de neumonia por cada mil niños(as) <5 años", ylab = "Indice de desarrollo humano", xscale= "log10", yscale= "log10")
## Warning: Transformation introduced infinite values in continuous y-axis
## Warning: Transformation introduced infinite values in continuous y-axis
## Warning: Transformation introduced infinite values in continuous y-axis
## Warning: Removed 5 rows containing non-finite values (stat_smooth).
## Warning: Removed 5 rows containing non-finite values (stat_cor).
Interpretacion: R de Pearson: Es una relacion debil positiva.
VD= Tasa de prevalencia de casos de niños menores de 5 años (v. numerica) VI= Porcentaje de personas con seguro SIS (v. numerica)
cor.test(final$tnumcasos, final$porSIS)
##
## Pearson's product-moment correlation
##
## data: final$tnumcasos and final$porSIS
## t = -1.0843, df = 147, p-value = 0.28
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.24634485 0.07276894
## sample estimates:
## cor
## -0.08907329
Interpretacion: El P-VALUE es MAYOR a 0.05, entonces NO hay asociación entre las variables.
VD= Tasa de prevalencia de casos de niños menores de 5 años (v. numerica) VI= Porcentaje de personas sin seguro (v. numerica)
cor.test(final$tnumcasos, final$notseguros)
##
## Pearson's product-moment correlation
##
## data: final$tnumcasos and final$notseguros
## t = 0.29757, df = 147, p-value = 0.7664
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.1368036 0.1846077
## sample estimates:
## cor
## 0.0245361
Interpretacion: El P-VALUE es MAYOR a 0.05, entonces NO hay asociación entre las variables.
VD= Tasa de prevalencia de casos de niños menores de 5 años (v. numerica) VI= Porcentaje de pobreza (v. numerica)
cor.test(final$tnumcasos, final$ppobreza)
##
## Pearson's product-moment correlation
##
## data: final$tnumcasos and final$ppobreza
## t = -2.1115, df = 147, p-value = 0.03642
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.32344499 -0.01107385
## sample estimates:
## cor
## -0.1715683
Interpretacion: El P-VALUE es MENOR a 0.05, entonces SÍ hay asociación entre las variables porcentaje de pobreza y Tasa de neumonia
VD= Tasa de prevalencia de casos de niños menores de 5 años (v. numerica) VI= Porcentaje de pobreza (v. numerica)
modelo1=lm(tnumcasos~ppobreza,data=final)
summary(modelo1)
##
## Call:
## lm(formula = tnumcasos ~ ppobreza, data = final)
##
## Residuals:
## Min 1Q Median 3Q Max
## -8.628 -3.885 -1.661 1.773 52.734
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 10.03498 1.60902 6.237 4.5e-09 ***
## ppobreza -0.05730 0.02714 -2.111 0.0364 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 6.974 on 147 degrees of freedom
## Multiple R-squared: 0.02944, Adjusted R-squared: 0.02283
## F-statistic: 4.458 on 1 and 147 DF, p-value: 0.03642
Interpretacion: El P-VALUE es MENOR a 0.05, entonces SÍ hay relación de causalidad entre las variables y que esta es estadisticamente significativa. Interpretacion de la pendiente: si es que una provincia pierde 1% en pobreza, la tasa de neumonia por cada mil niños menores de 5 años aumenta en 0 casos en promedio. La DIRECCION del efecto es NEGATIVA, es decir, cuando disminuye la pobreza, la tasa de neumonia aumenta.
Vemos la relación en un gráfico: Lo log para que el modelo se comporte de manera lineal
library("ggpubr")
ggscatter(final, x = "ppobreza", y = "tnumcasos",
add = "reg.line", conf.int = TRUE,
cor.coef = TRUE, cor.method = "pearson",
xlab = "Tasa de neumonia por cada mil niños(as) <5 años", ylab = "Porcentaje de pobreza", xscale= "log10", yscale= "log10")
## Warning: Transformation introduced infinite values in continuous y-axis
## Warning: Transformation introduced infinite values in continuous y-axis
## Warning: Transformation introduced infinite values in continuous y-axis
## Warning: Removed 5 rows containing non-finite values (stat_smooth).
## Warning: Removed 5 rows containing non-finite values (stat_cor).
Interpretacion: R de Pearson: Es una relacion debil inversa
VD= Tasa de prevalencia de casos de niños menores de 5 años (v. numerica) VI= Poblacion urbana (v. numerica)
cor.test(final$tnumcasos, final$urbano)
##
## Pearson's product-moment correlation
##
## data: final$tnumcasos and final$urbano
## t = 1.5278, df = 147, p-value = 0.1287
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.03650834 0.28019251
## sample estimates:
## cor
## 0.1250256
Interpretacion: El P-VALUE es MAYOR a 0.05, entonces NO hay asociación entre las variables.
VD= Tasa de prevalencia de casos de niños menores de 5 años (v. numerica) VI= Poblacion rural (v. numerica)
cor.test(final$tnumcasos, final$rural)
##
## Pearson's product-moment correlation
##
## data: final$tnumcasos and final$rural
## t = 0.60013, df = 147, p-value = 0.5493
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.1122553 0.2085789
## sample estimates:
## cor
## 0.04943699
Interpretacion: El P-VALUE es MAYOR a 0.05, entonces NO hay asociacion entre las variables.
VD= Tasa de prevalencia de casos de niños menores de 5 años (v. numerica) VI= Numero de habitantes (v. numerica)
cor.test(final$tnumcasos, final$habitantes)
##
## Pearson's product-moment correlation
##
## data: final$tnumcasos and final$habitantes
## t = 1.5577, df = 147, p-value = 0.1215
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.03406918 0.28244144
## sample estimates:
## cor
## 0.1274289
Interpretacion: El P-VALUE es MAYOR a 0.05, entonces NO hay asociacion entre las variables.
VD= Tasa de prevalencia de casos de niños menores de 5 años (v. numerica) VI= Costa (v. categorica dicotomica)
t.test(final$tnumcasos~final$costa,var.equal = T)
##
## Two Sample t-test
##
## data: final$tnumcasos by final$costa
## t = 1.1257, df = 147, p-value = 0.2621
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -1.195922 4.361646
## sample estimates:
## mean in group NO mean in group SI
## 7.198901 5.616039
Interpretacion: El P-VALUE es MAYOR a 0.05, entonces NO hay asociación entre las variables.
VD= Tasa de prevalencia de casos de niños menores de 5 años (v. numerica) VI= Sierra (v. categorica dicotomica)
t.test(final$tnumcasos~final$sierra,var.equal = T)
##
## Two Sample t-test
##
## data: final$tnumcasos by final$sierra
## t = 2.4889, df = 147, p-value = 0.01393
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## 0.5863226 5.1063628
## sample estimates:
## mean in group NO mean in group SI
## 8.444504 5.598161
Interpretacion: El P-VALUE es MENOR a 0.05, por lo tanto podemos concluir que la diferencia de medias entre las provincias que son de la sierra y las provincias que no son de la sierra son estadisticamente significativas. Es decir, las provincias que son sierra en promedio tienen una tasa menor de neumonia a diferencia de las provincias que no son de la sierra.
VD= Tasa de prevalencia de casos de niños menores de 5 años (v. numerica) VI= Selva (v. categorica dicotomica)
t.test(final$tnumcasos~final$selva,var.equal = T)
##
## Two Sample t-test
##
## data: final$tnumcasos by final$selva
## t = -4.2167, df = 147, p-value = 4.314e-05
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -8.082767 -2.924138
## sample estimates:
## mean in group NO mean in group SI
## 5.603136 11.106589
Interpretacion: El P-VALUE es MENOR a 0.05, por lo tanto podemos concluir que la diferencia de medias entre las provincias que son de la selva y las provincias que no son de la selva son estadisticamente significativas. Es decir, las provincias que son selva en promedio tienen una tasa mayor de neumonia a diferencia de las provincias que no son de la selva.
VD= Tasa de prevalencia de casos de niños menores de 5 años (v. numerica) VI= Capital (v. categorica dicotomica)
t.test(final$tnumcasos~final$capital,var.equal = T)
##
## Two Sample t-test
##
## data: final$tnumcasos by final$capital
## t = -3.884, df = 147, p-value = 0.0001549
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -8.957767 -2.916136
## sample estimates:
## mean in group NO mean in group SI
## 5.942515 11.879467
Interpretacion: El P-VALUE es MENOR a 0.05, por lo tanto podemos concluir que la diferencia de medias entre las provincias que son de la costa y las provincias que no son de la costa son estadisticamente significativas. Es decir, las provincias que son costa en promedio tienen una tasa mayor de neumonia a diferencia de las provincias que no son de la costa.
Vamos ahora a hacer analisis factorial de los componentes del Indice de Densidad Estatal “IDE”, el Indice de Desarrollo Humano “IDH” y la Tasa de salud de niños <5 años por mil habitantes “tfinalsalud”. Aquí queremos ver cómo se juntan las variables y crear puntajes alternativos de las variables que componen cada indice. ## Analisis de IDE e IDH
final_s= as.data.frame(scale(final[,-c(1:19, 23, 24, 25, 29:31)])) #creamos subset de puntuaciones estandarizadas de las variables de IDE e IDH
head(final_s)
library(psych)
##
## Attaching package: 'psych'
## The following objects are masked from 'package:ggplot2':
##
## %+%, alpha
pearson= cor(final_s)
pearson
## medicos asistenciasecu saneamiento secucompleta
## medicos 1.0000000 0.4196964 0.6735922 0.5957711
## asistenciasecu 0.4196964 1.0000000 0.4145312 0.8007907
## saneamiento 0.6735922 0.4145312 1.0000000 0.6088538
## secucompleta 0.5957711 0.8007907 0.6088538 1.0000000
## educatiempo 0.7364577 0.6831000 0.6991449 0.8670539
## percapitaf 0.7518571 0.5467186 0.7751378 0.7400428
## educatiempo percapitaf
## medicos 0.7364577 0.7518571
## asistenciasecu 0.6831000 0.5467186
## saneamiento 0.6991449 0.7751378
## secucompleta 0.8670539 0.7400428
## educatiempo 1.0000000 0.8983882
## percapitaf 0.8983882 1.0000000
cor.plot(pearson,
numbers=T,
upper= FALSE,
main="correlacion",
show.legend = "FALSE")
Interpretacion: Las que estan en azul son las variables que mas se correlacionan y que probablemente pertenecen a una dimension.
library(ggplot2)
library(ggcorrplot)
ggcorrplot(pearson, method = 'circle', type = 'lower', lab = TRUE) +
ggtitle("Correlograma") +
theme_minimal() +
theme(legend.position="none")
[Ojito: es el mismo grafico pero mas bonito] El coeficiente de correlación es un valor numérico definido en el rango [-1, 1]. Un coeficiente de correlación igual a -1 indica total anti-correlación entre las variables, mientras que un coeficiente de correlación igual a 1 indica correlación total entre las variables. Por supuesto, un valor igual a 0 indica que no existe correlación alguna entre las variables. A partir de la matriz de correlación podemos tener idea de dichas correlaciones, pero un correlograma nos permitirá percibir mucho mejor estas relaciones Interpretacion: los valores cercanos a 1 tendrán color rojo, mientras que los valores cercanos a -1 tendrán color azul.
KMO(final_s)
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = final_s)
## Overall MSA = 0.84
## MSA for each item =
## medicos asistenciasecu saneamiento secucompleta educatiempo
## 0.94 0.84 0.89 0.81 0.80
## percapitaf
## 0.82
Aqui esperamos que le kmo no baje por variable de 0.7 y me dice cuan apropiado es juntar mis variables y va de 0 a 1, donde 1 hay mas correspondencia entre las varaibles y 0 hay menos. Lo que esperamos es que el valor del KMO sea alto. Resultado: En nuestra caso, el MSA es 0.84 (cercano a 1), lo cual significa que es apropiado juntar mis variables.
fa.parallel(pearson, fm="pa", fa="fa", main = "Scree Plot",n.obs = nrow(final_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 = 2 and the number of components = NA
Interpretación:R studio me indica que debería de formar 2 indices para todas mis variables puestas a prueba.
final_sF <-fa(final_s,
nfactors=2,
rotate="varimax") # lo que se cambia es la data y el numero de factores
loadings(final_sF)
##
## Loadings:
## MR1 MR2
## medicos 0.760 0.286
## asistenciasecu 0.246 0.813
## saneamiento 0.765 0.278
## secucompleta 0.471 0.841
## educatiempo 0.724 0.625
## percapitaf 0.857 0.413
##
## MR1 MR2
## SS loadings 2.703 2.088
## Proportion Var 0.451 0.348
## Cumulative Var 0.451 0.799
Interpretando el Cumulative Var –> 0.79: que tanto he podido recuperar de toda la variabilidad del sistema. Este sistema tenia 6 variables. Las dos dimensiones representan el 79% de las variables que ha podido recuperar.
sort(final_sF$communalities)
## medicos saneamiento asistenciasecu percapitaf educatiempo
## 0.6586911 0.6624824 0.7213456 0.9046589 0.9152866
## secucompleta
## 0.9289995
Una comunalidad es la medida en que un elemento se correlaciona con todos los demás elementos. Las comunalidades más altas son mejores. Si las comunalidades para una variable en particular son bajas (entre 0.0-0.4), entonces esa variable puede tener dificultades para cargar significativamente en cualquier factor. En este casos todas las variables aportan.
sort(final_sF$uniqueness)
## secucompleta educatiempo percapitaf asistenciasecu saneamiento
## 0.07100390 0.08471298 0.09533948 0.27865227 0.33751711
## medicos
## 0.34131009
Tenga en cuenta que cuanto mayor sea la “singularidad”, menor será la relevancia de la variable en el modelo factorial. En este caso ninguna variable es singular y no sobrepasa el 1.
sort(final_sF$complexity)
## asistenciasecu saneamiento medicos percapitaf secucompleta
## 1.180897 1.260441 1.277386 1.440819 1.572228
## educatiempo
## 1.958150
En este caso podemos ver que la complejidad de las variables que no se a podido reducir en una dimension y que podria compartir con otra dimension es educatiempo.
fa.diagram(final_sF) # grafico de los factores, de los conceptos
Interpretación: vemos en el grafico que se formulan dos conceptos entre todas las variables.
scores=as.data.frame(final_sF$scores)#MR1=indice estatal, MR2=educacion, me dice que provincia esta mejor que el otro.
names(scores)=c("IEFA","EDUFA") # el score se crea cuando se hace el FactorAnalisis
head(scores)
Primer acercamiento: La provincia de Abancay tiene un indice estatal mejor que la provincia de Ambo. La provincia de Andahuaylas tiene un indice de educacion mejor que la provincia de Ambo
final=merge(final,scores,by=0)
head(final)
row.names(final)=final$Row.names #El merge desconfigura el indice y lo añade como una nueva columna. Podemos corregir eso:
final$Row.names=NULL
head(final)
plot(final[,c(32,33)]) #ME MUESTRA LOS PUNTOS DE ACUERDO A LAS PUNTACIONES STANDARIZADAS de las puntuaciones EDUFA y IEFA
library(ggplot2)
base=ggplot(final,aes(x=IEFA,y=EDUFA, color= region))
base + geom_point() + geom_text(aes(label = row.names(final)))# cambio los nombres, es una decoracion
Aqui vemos a todas las provincias del Peru DE ACUERDO A LAS PUNTACIONES STANDARIZADAS de las puntuaciones EDUFA y IEFA categorizadas por region
library(ggplot2) #Utilizamos ggplot2 para añadir los nombres de nuestros casos
base=ggplot(final,aes(x=IEFA,y=EDUFA, color= region))
base + geom_point() + geom_text(aes(label = ifelse(IEFA >0 & EDUFA >0,row.names(final),"")))
# Aqui vemos las provincias que tienen mayores puntuaciones de IEFA y EDUFA mayores de 0
base=ggplot(final,aes(x=IEFA,y=EDUFA, color= region))
base + geom_point() + geom_text(aes(label = row.names(final))) + xlim(0, 4) + ylim(0, 4) #aqui limitando los ejes
## Warning: Removed 105 rows containing missing values (geom_point).
## Warning: Removed 105 rows containing missing values (geom_text).
library(ggrepel) #hace que los textos se vean mejor
base=ggplot(final,aes(x=IEFA,y=EDUFA, color= region))
base + geom_point() + geom_text_repel(aes(label = row.names(final))) + xlim(0, 4) + ylim(0, 4)
## Warning: Removed 105 rows containing missing values (geom_point).
## Warning: Removed 105 rows containing missing values (geom_text_repel).
Interpretacion: las provincias con un mejor Indice del Estado y mejor Indice de Educacion son los observados.
tfinalsalud_s= as.data.frame(scale(final[,-c(1:5, 8:33)]))
head(tfinalsalud_s)
library(psych)
pearson= cor(tfinalsalud_s)
pearson
## tdesnutricion tmuertes
## tdesnutricion 1.0000000 0.4458157
## tmuertes 0.4458157 1.0000000
cor.plot(pearson,
numbers=T,
upper= FALSE,
main="correlacion",
show.legend = "FALSE")
KMO(tfinalsalud_s)
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = tfinalsalud_s)
## Overall MSA = 0.5
## MSA for each item =
## tdesnutricion tmuertes
## 0.5 0.5
Aqui esperamos que le kmo no baje por variable de 0.7 y me dice cuan apropiado es juntar mis variables y va de 0 a 1, donde 1 hay mas correspondencia entre las varaibles y 0 hay menos. Lo que esperamos es que el valor del KMO sea alto. Resultado: En nuestra caso, el MSA es 0.5 (esta a la mitad de 1), lo cual significa que es apropiado juntar mis variables.
fa.parallel(pearson, fm="pa", fa="fa", main = "Scree Plot",n.obs = nrow(tfinalsalud_s)) # Interpretación:R studio me indica que debería de formar 1 indice para todas mis variables puestas a prueba.
## Parallel analysis suggests that the number of factors = 1 and the number of components = NA
tfinalsalud_sF <-fa(tfinalsalud_s,
nfactors=1,
rotate="varimax") # lo que se cambia es la data y el numero de factores
loadings(tfinalsalud_sF)
##
## Loadings:
## MR1
## tdesnutricion 0.668
## tmuertes 0.668
##
## MR1
## SS loadings 0.892
## Proportion Var 0.446
sort(tfinalsalud_sF$communalities)
## tdesnutricion tmuertes
## 0.4458157 0.4458157
Una comunalidad es la medida en que un elemento se correlaciona con todos los demás elementos. Las comunalidades más altas son mejores. Si las comunalidades para una variable en particular son bajas (entre 0.0-0.4), entonces esa variable puede tener dificultades para cargar significativamente en cualquier factor. En este casos todas las variables aportan ya que superan el 0.4
sort(tfinalsalud_sF$uniquenesses)
## tdesnutricion tmuertes
## 0.5541843 0.5541843
Tenga en cuenta que cuanto mayor sea la “singularidad”, menor será la relevancia de la variable en el modelo factorial. En este caso ninguna variable es singular y no sobrepasa el 1.
sort(tfinalsalud_sF$complexity)
## tdesnutricion tmuertes
## 1 1
Efectivamente las complejidad de las variables se a podido reducir a una dimension.
fa.diagram(tfinalsalud_sF) # grafico de los factores, de los conceptos
scores=as.data.frame(tfinalsalud_sF$scores) # Me dice que provincia esta mejor
names(scores)=c("SALUDFA")
head(scores)
Primer acercamiento: La provincia de Abancay tiene un indice de salud que esta debajo de la provincia de Acobamba.
final=merge(final,scores,by=0)
head(final)
row.names(final)=final$Row.names #El merge desconfigura el indice y lo añade como una nueva columna. Podemos corregir eso:
final$Row.names=NULL
head(final)
Lo que hace es ubicar en un plano a los casos de acuerdo a cuan cercanos son. Lo que veremos seran muchos puntos y la cercania significa cuanto se parecen. Y la lejania cuan distintos son. Aquí vamos a ubicar en el plano las provincias de acuerdo a cuan cercanos son. Es una ayuda visual. Si son cercanos es que se parecen las provincias y, si son lejanos, significará que no son parecidos entre ellas.
El primer paso para calcular el mapa de similitudes es tener la informacion sobre las distancias entre los casos. Calculamos las distancias entre nuestros casos. Solo consideramos a los componentes de nuestros indices y tambien las variables que no son numericas. Porque, solo se trabaja con numericas.
final_d =dist(final[-c(1,2,4, 8,12:18, 24, 32:34)])
Creamos el mapa de las dimensiones:
final_map <- cmdscale(final_d,eig=TRUE, k=2) # k sugiere el numero de dimensiones a dibujar --> consejo utilizar siempre en 2 dimensiones xq asi es mas facil la interpretacion, con la funcion cmdscale calculamos las posiciones de nuestros casos
final_map$GOF # mientras mas cerca a 1 mejor. El GOF es un indicador que nos dice que tan adecuado a sido juntar esas dimensiones o variables. Esto ira de 0 a 1, pero mientras mas cercano a 1 es mas adecuado y a la vez es lo que esperamos.
## [1] 0.9999999 0.9999999
Interpretación: esta super bien. A cada una de mis distancias que conseguido 0.99, 0.99 de ajuste bastante bien a pesar de haber sido reducido a 2 dimensiones
#Rapidamente podemos ver la posición de los puntos creados:
titulo="Mapa de Similitudes entre provincias"
x <- final_map$points[,1] # el punto 1 y el 2 no cambian se queda asi
y <- final_map$points[,2]
plot(x, y, main=titulo)
plot(x, y, xlab="Dimensión 1", ylab="Dimensión 2", main=titulo,
type="n") # 'n' evita que se pongan los puntos.
# etiquetas y colores de los puntos
text(x, y,labels = rownames(final_map$points),cex=1)
final_map_DF=as.data.frame(final_map$points) #También podríamos guardar nuestras dimensiones en un data frame:
#Poniendo colores
plot(x,y, xlab = "Dimension 1", ylab = "Dimension 2",main=titulo, type="n")
#etiquetas y colores de los puntos
columnForLabels=rownames(final_map$points)
colorForLabels= final$region
paleta=c('yellow', 'brown', "green")
text(x,y, labels = columnForLabels, cex=0.5, col=paleta[colorForLabels])
legend("bottomright",legend = levels(colorForLabels), fill=paleta,title = "¿de que provincia son?")
Interpretacion: La mayoria de las provincias de la costa se parecen porque estan cercanas. Asimismo, las provincias de la selva tambien se parecen porque estan cercanas.
final_map_DF=as.data.frame(final_map$points)
Donde a cada provincia lo pone en categorias. Calculamos la distancia entre los grupos que dependen de las caracteristicas de los casos: OJO, estoy utilizando el final_d.
Le estamos pidiendo que genere 3 grupos o centroides para ver cuál es el resultado según costa, sierra y selva
set.seed=3
final_clus=kmeans(final_d,centers = 3)
final_clus$cluster #solo se quienes se van con quien, no sé las caracteristicas porque las junto
## Abancay Acobamba Acomayo
## 1 1 1
## Aija Ambo Andahuaylas
## 1 1 1
## Angaraes Anta Antabamba
## 1 1 1
## Antonio Raymondi Arequipa Ascope
## 1 2 1
## Atalaya Ayabaca Aymaraes
## 1 1 1
## Bagua Barranca Bellavista
## 1 1 1
## Bolognesi Cajabamba Cajamarca
## 1 1 1
## Cajatambo Calca Canas
## 1 1 1
## Canchis Candarave Cangallo
## 1 1 1
## Canta Carabaya Carhuaz
## 1 1 1
## Casma Castilla Castrovirreyna
## 1 1 1
## Caylloma Chachapoyas Chanchamayo
## 1 1 1
## Chiclayo Chincha Chincheros
## 2 1 1
## Chota Chucuito Chumbivilcas
## 1 1 1
## Chupaca Churcampa Condesuyos
## 1 1 1
## Condorcanqui Contralmirante Villar Coronel Portillo
## 1 1 1
## Corongo Cotabambas Cusco
## 1 1 2
## Cutervo Dos de Mayo El Collao
## 1 1 1
## El Dorado Espinar Gran Chimú
## 1 1 1
## Grau Huacaybamba Hualgayoc
## 1 1 1
## Huallaga Huamalies Huamanga
## 1 1 1
## Huancabamba Huancavelica Huancayo
## 1 1 2
## Huanta Huaral Huaraz
## 1 1 1
## Huari Huarmey Huaura
## 1 1 1
## Huaylas Ica Ilo
## 1 1 1
## Islay Jauja Jorge Basadre
## 1 1 1
## La Mar Lamas Lambayeque
## 1 1 1
## Lampa Lauricocha Leoncio Prado
## 1 1 1
## Lima Loreto Lucanas
## 3 1 1
## Luya Mariscal Nieto Maynas
## 1 1 2
## Melgar Moho Moyobamba
## 1 1 1
## Nazca Ocros Otuzco
## 1 1 1
## Oxapampa Pacasmayo Pachitea
## 1 1 1
## Padre Abad Paita Pallasca
## 1 1 1
## Palpa Parinacochas Paruro
## 1 1 1
## Pasco Pataz Paucar del Sara Sara
## 1 1 1
## Paucartambo Picota Pisco
## 1 1 1
## Piura Pomabamba Puerto Inca
## 2 1 1
## Puno Quispicanchi Recuay
## 1 1 1
## Requena Rioja San Ignacio
## 1 1 1
## San Marcos San Miguel San Pablo
## 1 1 1
## Sandia Santa Santa Cruz
## 1 2 1
## Santiago de Chuco Sechura Sihuas
## 1 1 1
## Sucre Sullana Tacna
## 1 1 1
## Talara Tambopata Tarata
## 1 1 1
## Tarma Tayacaja Tocache
## 1 1 1
## Trujillo Tumbes Ucayali
## 2 1 1
## Urubamba Utcubamba Yarowilca
## 1 1 1
## Yauli Yauyos Yungay
## 1 1 1
## Yunguyo Zarumilla
## 1 1
table(final_clus$cluster) #esto no tiene un significado en orden
##
## 1 2 3
## 140 8 1
Interpretacion: Veremos que provincias están incluidas y cuáles excluidas.
Creamos un mapa
library(rgdal)
## Loading required package: sp
## rgdal: version: 1.4-4, (SVN revision 833)
## Geospatial Data Abstraction Library extensions to R successfully loaded
## Loaded GDAL runtime: GDAL 2.1.3, released 2017/20/01
## Path to GDAL shared files: /usr/share/gdal/2.1
## GDAL binary built with GEOS: TRUE
## Loaded PROJ.4 runtime: Rel. 4.9.2, 08 September 2015, [PJ_VERSION: 492]
## Path to PROJ.4 shared files: (autodetected)
## Linking to sp version: 1.3-1
folderMap='mapa'
fileName='provincias_Peru.shp'
fileToRead=file.path(folderMap,fileName)
library(rgdal)
peruMap <- readOGR(fileToRead,stringsAsFactors=FALSE)
## OGR data source with driver: ESRI Shapefile
## Source: "/cloud/project/mapa/provincias_Peru.shp", layer: "provincias_Peru"
## with 196 features
## It has 36 fields
## Integer64 fields read as strings: pob pob_ur pob_h pob_m
plot(peruMap, border='grey')
peruMap$NOMBPROV= c("Chepen", "Julcan", "Otuzco", "Pacasmayo", "Trujillo", "Ascope", "Bolivar", "Pataz", "Sanchez Carrion", "Contralmirante Villar", "Tumbes", "Zarumilla", "Grau", "Chincheros", "Cotabambas", "Aymaraes", "Antabamba", "Andahuaylas", "Abancay", "Viru", "Gran Chimu", "Santiago de Chuco", "Tocache", "Tambopata", "Manu", "Tahuamanu", "San Miguel", "Yarowilca", "Cajabamba", "Celendin", "Cajamarca", "Cutervo", "Santa Cruz", "Chota", "Contumaza", "Jaen", "San Ignacio", "Tacna", "Jorge Basadre", "Candarave", "Tarata", "Hualgayoc", "Carhuaz", "Carlos Fermin Fitzcarrald", "Asuncion", "Bolognesi", "Aija", "Antonio Raymondi", "Huaraz", "Lambayeque", "Ferrenafe", "Chiclayo", "Lauricocha", "San Marcos", "Casma", "Corongo", "Paucar del Sara Sara", "Luya", "Condorcanqui", "Utcubamba", "Rodriguez de Mendoza", "Chachapoyas", "Bongara", "Bagua", "Churcampa", "Castrovirreyna", "Tayacaja", "Huaytara", "Huancavelica", "Angaraes", "Acobamba", "Victor Fajardo", "Yauyos", "Huarmey", "Huari", "Mariscal Luzuriaga", "Huaylas", "Pallasca", "Ocros", "Recuay", "Pomabamba", "Sihuas", "Santa", "Huamalies", "Huacaybamba", "Dos de Mayo", "Ambo", "Huanuco", "Huamanga", "Daniel A. Carrion", "Oxapampa", "Pasco", "Sucre", "Moyobamba", "Bellavista", "El Dorado", "Huallaga","Lamas", "Mariscal Caceres", "Picota", "Rioja", "San Martin", "Huanca Sancos", "Cangallo", "La Mar", "Huanta", "Parinacochas", "Lucanas", "Barranca", "Cajatambo", "Lima", "Huaral", "Huarochiri", "Canta", "Canete", "San Antonio de Putina", "San Roman", "Sandia", "Yunguyo", "Huaura", "Oyon", "Espinar", "La Convencion", "Calca", "Canas", "Canchis", "Chumbivilcas", "Cusco", "Acomayo", "Anta", "Moho", "Melgar", "Chincha", "Nazca", "Ica", "Carabaya", "Azangaro", "Puno", "Lampa", "Huancane", "El Collao", "Chucuito", "Alto Amazonas", "Chupaca", "Yauli", "Junin", "Jauja", "Tarma", "Satipo", "Huancayo", "Chanchamayo", "Concepcion", "Vilcas Huaman", "Arequipa", "Camana", "Caraveli", "Castilla", "Caylloma", "Condesuyos", "Islay", "La Union", "Urubamba", "Quispicanchi", "Paucartambo", "Paruro", "San Pablo", "Purus", "Padre Abad", "Atalaya", "Coronel Portillo", "Puerto Inca", "Yungay", "Pachitea", "Palpa", "Maranon", "Leoncio Prado", "Sechura", "Putumayo", "Ilo", "General Sanchez Cerro", "Mariscal Nieto", "Maynas", "Loreto", "Pisco", "Requena", "Mariscal Ramon Castilla", "Datem del Maranon", "Ucayali", "Ayabaca", "Huancabamba", "Piura", "Sullana", "Talara", "Morropon", "Paita", "Callao")
provinciaClus=as.data.frame(final_clus$cluster)
provinciaClus
names(provinciaClus)='cluster'
provinciaClus$NAME=row.names(provinciaClus)
names(provinciaClus)= c("cluster","NOMBPROV")
str(provinciaClus)
## 'data.frame': 149 obs. of 2 variables:
## $ cluster : int 1 1 1 1 1 1 1 1 1 1 ...
## $ NOMBPROV: chr "Abancay" "Acobamba" "Acomayo" "Aija" ...
head(provinciaClus)
Unimos nuestro objeto con el mapa del Perú:
peruMap_total=merge(peruMap,provinciaClus, by= "NOMBPROV")
# colores
myColors=rainbow(3)
plot(peruMap,col='grey',border=NA)
plot(peruMap_total,col=myColors[peruMap_total$cluster],main='Grupos',border=NA,add=T)
library(leaflet)
#newMaps!
c1=peruMap_total[!is.na(peruMap_total$cluster) & peruMap_total$cluster==1,]
c2=peruMap_total[!is.na(peruMap_total$cluster) & peruMap_total$cluster==2,]
c3=peruMap_total[!is.na(peruMap_total$cluster) & peruMap_total$cluster==3,]
title="Clusters"
# base Layer
base= leaflet() %>% addProviderTiles("CartoDB.Positron")
layer1= base %>%
addPolygons(data=c1,color='blue',fillOpacity = 1,stroke = F,
group = "1")
layer_12= layer1%>%addPolygons(data=c2,color="red",fillOpacity = 1,stroke = F,
group = "2")
layer_123= layer_12%>%addPolygons(data=c3,color="green",fillOpacity = 1,stroke = F,
group = "3")
layer_123%>% addLayersControl(
overlayGroups = c("1", "2","3"),
options = layersControlOptions(collapsed = FALSE))