library(tidyverse)
library(readr)
library(ggplot2)
library(caret)
base=read.csv("C:\\Users\\sarar\\Downloads\\WHO.csv")
View(base)
#filtramos año 2013
base2=filter(base,Year=="2013")
View(base2)
#se seleccionan las variables
base3=base2[,c(3,4,5,6,7,14,18,22,23)]
View(base3)
#se nombran las columnas
nombres=c("Año","estatus","Esperanza de vida","Mortalidad adulta", "Mortalidad infantil","Gasto total", "Poblacion","Escolaridad","Homicidios")
colnames(base3) <- nombres
#se eliminan espacios en blanco
base3 <- na.omit(base3)
Este informe tiene como objetivo mostrar los resultados de un modelo Knn de aprendizaje supervisado de la base de datos “WHO”, utilizando únicamente los datos del año 2013. Este modelo busca clasificar los países según su estatus, entre desarrollados o en vía de desarrollo, para esto, se utilizaron siete variables como input, las cuales son atributos que hacen que un país sea desarrollado o esté en vía de desarrollo, y una variable como output “estatus”, todas estas sirviendo para entrenar al modelo.
El aprendizaje supervisado se centra en utilizar una variable principal como objetivo y otras variables que se utilizan como predictoras para el modelo, comprendiendo que lo que buscamos es que nuestro modelo aprenda a predecir las salidas correctas, mientras evalúa los cambios en las variables predictoras para luego llegar a una salida final y correcta.
De acuerdo con lo anterior, la variable objetivo del modelo es “estatus” y las variables elegidas como predictoras son:
Esta variable fue elegida debido a que en los países desarrollados la esperanza de vida es más larga a diferencia de los países en vía de desarrollo. Según un informe hecho por la organización mundial de la salud (OMS), la esperanza de vida al nacer en los países en vía de desarrollo es de 62.7 años, siendo 18.1 años menor que en los países desarrollados que es igual a 80.8 años, esto se debe a los sistemas de salud deficientes de los países en vía de desarrollo.
Existen diferentes aspectos que afectan la tasa de mortalidad de los países, entre estos están los niveles socioeconómicos, el desarrollo de los servicios médicos, el control de epidemias, la calidad de alimentación, entre otros, los cuales, en los países desarrollados son de mejor calidad, ofreciendo a su población un alto nivel de vida. Por tal motivo, los países desarrollados cuentan con tasas de mortalidad estabilizadas en niveles medios-bajos, mientras que en los países subdesarrollados las tasas de mortalidad se sitúan en niveles más altos.
Una de las características principales de los países desarrollados es la calidad de las asistencias sanitarias en el momento de los partos, y las mejores condiciones de alimentación de los recién nacidos, permitiendo que la tasa de mortalidad infantil en los países desarrollados se encuentre estabilizada, a diferencia de la de los países en vía de desarrollo.
El estatus de un país desarrollado depende de varios factores, entre estos, un alto ingreso per cápita en comparación con los países en vía de desarrollo, teniendo en cuenta lo anterior, existe una relación importante entre salud y crecimiento económico, es decir, un mayor crecimiento facilita una mayor inversión en salud y un mejoramiento del estado de salud, contribuye a elevar la capacidad productiva del país.
Como ya se ha mencionado, un país desarrollado es aquel que posee altos niveles de calidad de vida, es decir, provee a sus habitantes, entre otras cosas una buena educación y acceso a la educación superior, por lo que en los países desarrollados existe una tasa alta de escolaridad, en cambio en los países en vía de desarrollo o subdesarrollados una gran parte de la población adulta no cuenta con formación superior y existe un alto nivel de deserción escolar en la educación secundaria, debido a otros problemas ya sean económicos, sociales o demás.
Por otro lado, la educación juega un papel importante en el crecimiento económico de un país, la mejora de la salud y el fomento de la igualdad de oportunidades; una fuerza laboral educada puede generar ideas innovadoras, impulsar la investigación y el desarrollo, y mejorar la productividad en todos los sectores económicos. Esto contribuye al crecimiento económico sostenible y al estatus de un país en el ámbito global.
El crecimiento de la población es esencial para el desarrollo económico de un país ya que el ser humano representa el agente de producción y de consumidor final de los bienes y servicios que la sociedad produce, lo que quiere decir que una población grande puede significar un mercado interno más grande, lo que puede impulsar la economía y el crecimiento de un país, de acuerdo con esto, es importante resaltar que un incremento demográfico mesurado y controlado puede aportar de forma beneficiosa a la economía de un país, mientras que una situación de sobrepoblación ejerce una influencia netamente negativa sobre el crecimiento económico.
La incidencia de homicidios es más alta en los países subdesarrollados debido a una combinación de factores complejos. La desigualdad social y económica, junto con la pobreza y la exclusión, desempeñan un papel importante. La brecha entre ricos y pobres genera tensiones sociales y resentimiento, mientras que la falta de oportunidades y acceso a recursos básicos puede llevar a la frustración y la desesperación, aumentando así la incidencia de la violencia y por tal motivo se tuvo en cuenta esta variable.
De las estadísticas descriptivas se puede sacar mejor información acerca de las variables y su relación con el estatus de los países, por tal motivo, se separó la base de datos entre los paises desarrollados y en via de desarrollo para calcular la media, los máximos y minimos de cada variable en cada categoria.
#Estadisticas descriptivas.
baseED=base2[,c(1,3,4,5,6,7,14,18,22,23)]
View(baseED)
nombres=c("pais", "Año","estatus","Esperanza de vida","Mortalidad adulta", "Mortalidad infantil","Gasto total", "Poblacion","Escolaridad","Homicidios")
colnames(baseED) <- nombres
baseED <- na.omit(baseED)
View(baseED)
#Paises en via de desarrollo
baseED1= filter(baseED, baseED$estatus == "Developing")
View(baseED1)
#Esperanza de vida
mean(baseED1$`Esperanza de vida`)
## [1] 68.2483
max(baseED1$`Esperanza de vida`)
## [1] 79.234
min(baseED1$`Esperanza de vida`)
## [1] 49.371
#mortalidad adulta
mean(baseED1$`Mortalidad adulta`)
## [1] 196.5938
max(baseED1$`Mortalidad adulta`)
## [1] 466.7
min(baseED1$`Mortalidad adulta`)
## [1] 59.26
#mortalidad infantil
mean(baseED1$`Mortalidad infantil`)
## [1] 4.293274
max(baseED1$`Mortalidad infantil`)
## [1] 13.9
min(baseED1$`Mortalidad infantil`)
## [1] 0.45
#gasto total
mean(baseED1$`Gasto total`)
## [1] 452.7036
max(baseED1$`Gasto total`)
## [1] 2013
min(baseED1$`Gasto total`)
## [1] 2.01
#Poblacion
mean(baseED1$Poblacion)
## [1] 48397965
max(baseED1$Poblacion)
## [1] 1357380000
min(baseED1$Poblacion)
## [1] 89949
#Escolaridad
mean(baseED1$Escolaridad)
## [1] 7.016814
max(baseED1$Escolaridad)
## [1] 12.6
min(baseED1$Escolaridad)
## [1] 1.4
#homicidios
mean(baseED1$Homicidios)
## [1] 10.86664
max(baseED1$Homicidios)
## [1] 80.79
min(baseED1$Homicidios)
## [1] 0.79
#Paises desarrollados
baseED2= filter(baseED, baseED$estatus == "Developed")
View(baseED2)
#Esperanza de vida
mean(baseED2$`Esperanza de vida`)
## [1] 80.00439
max(baseED2$`Esperanza de vida`)
## [1] 83.33195
min(baseED2$`Esperanza de vida`)
## [1] 73.91463
#mortalidad adulta
mean(baseED2$`Mortalidad adulta`)
## [1] 81.82
max(baseED2$`Mortalidad adulta`)
## [1] 178.8
min(baseED2$`Mortalidad adulta`)
## [1] 53.06
#mortalidad infantil
mean(baseED2$`Mortalidad infantil`)
## [1] 0.4712821
max(baseED2$`Mortalidad infantil`)
## [1] 1.55
min(baseED2$`Mortalidad infantil`)
## [1] 0.24
#gasto total
mean(baseED2$`Gasto total`)
## [1] 374.1838
max(baseED2$`Gasto total`)
## [1] 2013
min(baseED2$`Gasto total`)
## [1] 7.51
#Poblacion
mean(baseED2$Poblacion)
## [1] 28542498
max(baseED2$Poblacion)
## [1] 315993715
min(baseED2$Poblacion)
## [1] 323764
#Escolaridad
mean(baseED2$Escolaridad)
## [1] 11.7641
max(baseED2$Escolaridad)
## [1] 14
min(baseED2$Escolaridad)
## [1] 7.7
#homicidios
mean(baseED2$Homicidios)
## [1] 1.725128
max(baseED2$Homicidios)
## [1] 6.53
min(baseED2$Homicidios)
## [1] 0.28
Como se puede observar, la esperanza de vida en los países desarrollados es más alta que en los países en vía de desarrollo por 11.8 años, corroborando la información antes suministrada.
El porcentaje de morir entre los 15 y 60 años por cada mil habitantes, es más grande en los países en vía de desarrollo por un poco más del doble que en los países desarrollados. El promedio de la mortalidad en adultos para los países en vía de desarrollo es de 197 fallecimientos por cada 1,000 adultos, mientras que en los países desarrollados es igual a 81.8 fallecimientos por cada mil adultos, esta diferencia puede deberse a que los países desarrollados suelen tener sistemas de atención médica más avanzada.
El número de muertes de niños menores de 5 años por cada mil nacidos vivos es mucho más alto en los países en vía de desarrollo alcanzando el 13.9, en cambio en los países desarrollados el máximo es 1.5.
El máximo gasto total en salud por parte del gobierno es el mismo en ambas categorías, con un valor de 2013 dólares, sin embargo, es importante tener en cuenta que hay diferencias significativas en los valores mínimos y en la distribución del dinero en salud por parte del gobierno, ya que como se observa en los países desarrollados el gasto en salud es más estrecho con un valor mínimo más alto a diferencia de los países en vía de desarrollo.
Observando los resultados, en los países en vía de desarrollo el tamaño promedio de la población es aproximadamente 4900 millones de habitantes, mientras que los países desarrollados tienen un promedio de alrededor de 290 millones de habitantes, por lo tanto se puede deducir que el tamaño de la población influye negativamente a la hora del desarrollo de un país, y eso se puede deber a que los países con poblaciones más grandes enfrentan desafíos adicionales para satisfacer las necesidades básicas de sus habitantes.
Como se puede observar, el nivel promedio en la educación en los países en vía de desarrollo es alrededor de 7 años, mientras que en los países desarrollados es alrededor de 12 años, lo que quiere decir que la diferencia en el nivel promedio de educación entre ambas categorías es aproximadamente 5 años, mostrando que las personas en los países desarrollados tienen un nivel educativo más alto a comparación de las personas en los países en vía de desarrollo.
Se observa una diferencia significativa en las tasas de homicidios promedio entre los países desarrollados y en vía de desarrollo, en este caso los países desarrollados presentan una tasa promedio considerablemente más baja, a diferencia de los países en vía de desarrollo que tiene un promedio de 10.86 homicidios por cada 100.000 habitantes, lo que significa que en promedio, alrededor de 10 personas de cada 100000 son victimos de homicidios, mientras que en los países desarrollados se muestra un promedio de 1.72 homicidios por cada 100.000 habitantes, lo que indica que por cada 100.000 habitantes 1.7 personas son víctimas de homicidios, estos valores reflejan un mayor grado de seguridad en los países desarrollados.
#se divide la base de datos entre entrenamiento y prueba.
set.seed(28)
indxEntrena <- createDataPartition(y = base3$estatus, p = 0.80, list = FALSE)
SP_entrena <- base3[indxEntrena,]
SP_test <- base3[-indxEntrena,]
Para empezar, se asigna una semilla para garantizar que los resultados basados en números aleatorios sean consistentes y reproducibles en cada ejecución del código. Luego se define que el 80% de los datos se van a utilizar para el entrenamiento del modelo y el otro 20% restante para evaluar el rendimiento en datos no vistos durante el entrenamiento. Básicamente este paso permite separar los datos en porciones para entrenar y evaluar el modelo.
Se procede a realizar el entrenamiento de los datos, especificando que la variable objetivo es “estatus”, y el método es el de los vecinos más cercanos, además indicamos que queremos que evalúe 20 valores diferentes para “k” con su respectivo valor de exactitud.
set.seed(28)
SP_knnEntrenado <- train(estatus ~ .,
data = SP_entrena,
method = "knn",
tuneLength = 20
)
SP_knnEntrenado
## k-Nearest Neighbors
##
## 123 samples
## 8 predictor
## 2 classes: 'Developed', 'Developing'
##
## No pre-processing
## Resampling: Bootstrapped (25 reps)
## Summary of sample sizes: 123, 123, 123, 123, 123, 123, ...
## Resampling results across tuning parameters:
##
## k Accuracy Kappa
## 5 0.6948247 0.13320786
## 7 0.6892716 0.08760120
## 9 0.6902196 0.05190120
## 11 0.6911109 0.01745293
## 13 0.6704765 -0.04257689
## 15 0.6938613 -0.01818487
## 17 0.6974788 -0.03584724
## 19 0.7094809 -0.01455602
## 21 0.7039257 -0.03665314
## 23 0.7126274 -0.03212274
## 25 0.7084834 -0.04512120
## 27 0.7172649 -0.02686599
## 29 0.7212888 -0.01586150
## 31 0.7222181 -0.01425741
## 33 0.7214181 -0.01087509
## 35 0.7231757 -0.01040225
## 37 0.7271142 -0.01180418
## 39 0.7279142 -0.01309859
## 41 0.7271450 -0.01379310
## 43 0.7263757 -0.01445946
##
## Accuracy was used to select the optimal model using the largest value.
## The final value used for the model was k = 39.
Como se puede apreciar, el valor óptimo de k para este modelo es k=39 con el valor de exactitud más alto 72.6%, el cual se puede observar también en el siguiente gráfico.
plot(SP_knnEntrenado)
#prueba del modelo
SP_knnPrediccion <- predict(SP_knnEntrenado, newdata = SP_test )
Ahora que tenemos el modelo entrenado, se realiza la predicción, tomando como argumento los datos de entrenamiento y probando el modelo con los datos de prueba. Básicamente en esta parte se realizan las predicciones utilizando el modelo entrenado con el algoritmo de 39 vecinos más cercanos en los datos de prueba.
#probabilidad de ser de una u otra clase
prob_knnPrediccion <- predict(SP_knnEntrenado, newdata = SP_test, type = "prob")
prob_knnPrediccion
## Developed Developing
## 1 0.2564103 0.7435897
## 2 0.3333333 0.6666667
## 3 0.2051282 0.7948718
## 4 0.2051282 0.7948718
## 5 0.3076923 0.6923077
## 6 0.1794872 0.8205128
## 7 0.2051282 0.7948718
## 8 0.3333333 0.6666667
## 9 0.2820513 0.7179487
## 10 0.2564103 0.7435897
## 11 0.2820513 0.7179487
## 12 0.2051282 0.7948718
## 13 0.3333333 0.6666667
## 14 0.2820513 0.7179487
## 15 0.3333333 0.6666667
## 16 0.2307692 0.7692308
## 17 0.3333333 0.6666667
## 18 0.3333333 0.6666667
## 19 0.1794872 0.8205128
## 20 0.2051282 0.7948718
## 21 0.3333333 0.6666667
## 22 0.2820513 0.7179487
## 23 0.2564103 0.7435897
## 24 0.3076923 0.6923077
## 25 0.2307692 0.7692308
## 26 0.2051282 0.7948718
## 27 0.1794872 0.8205128
## 28 0.2307692 0.7692308
## 29 0.2564103 0.7435897
Luego de realizar la predicción del estatus de cada país, hallamos las probabilidades de los resultados, es decir, la probabilidad de que un país pertenezca a la clasificación de desarrollado o en desarrollo, el modelo elige la clase que tenga más del 50% de probabilidad. Por ejemplo, en la primera fila, la probabilidad de pertenecer a la clase “Desarrollado” es del 25.64% y la probabilidad de pertenecer a la clase “en desarrollo” es del 74.36%. Se podría inferir que el modelo tiende a asignar una probabilidad más alta a la clase “en desarrollo” en la mayoría de las muestras o en palabras más sencillas, quiere decir que en la muestra la mayoría de los países están en desarrollo.
Finalmente se realizó la matriz de confusión y las medidas de precisión a partir de las predicciones del modelo y las etiquetas reales de los datos de prueba. Lo que permite evaluar el rendimiento y la calidad de las predicciones del modelo. Estas medidas son útiles para comprender el desempeño del modelo en términos de clasificaciones correctas e incorrectas, y ayudan a evaluar su capacidad para predecir con precisión las clases de los datos de prueba.
#matriz de confusion y mediciones de presición
confusionMatrix(SP_knnPrediccion, as.factor(SP_test$estatus))
## Confusion Matrix and Statistics
##
## Reference
## Prediction Developed Developing
## Developed 0 0
## Developing 7 22
##
## Accuracy : 0.7586
## 95% CI : (0.5646, 0.897)
## No Information Rate : 0.7586
## P-Value [Acc > NIR] : 0.59966
##
## Kappa : 0
##
## Mcnemar's Test P-Value : 0.02334
##
## Sensitivity : 0.0000
## Specificity : 1.0000
## Pos Pred Value : NaN
## Neg Pred Value : 0.7586
## Prevalence : 0.2414
## Detection Rate : 0.0000
## Detection Prevalence : 0.0000
## Balanced Accuracy : 0.5000
##
## 'Positive' Class : Developed
##
En ésta matriz podemos observar la precisión o exactitud, la sensibilidad y la especificidad del modelo.
De los 29 países de los que se predijo su estatus, el modelo predijo que 29 paises están en desarrollo, y ningún país es desarrollado, cuando realmente son 22 en desarrollo y 7 desarrollados.
La exactitud del modelo es del 75.86%, lo que quiere decir que ese porcentaje fué lo que acertó en las predicciones realizadas en el modelo, sin embargo, el modelo no realizó predicciones en “desarollado” y el porcentaje exactitud solo se basa en “en desarrollo”.
La sensibilidad indica la capacidad del modelo para identificar correctamente las muestras de la clasificación “desarrollado”, y ésta es del 0%. Esto quiere decir que el modelo no logró identificar ninguna muestra de la clasificación “desarrollado” de manera precisa.
La especificidad del modelo es del 100%, lo que indica que el modelo identificó correctamente todas las muestras de la clase “en desarrollo”, nuevamente excluyendo la clasificación “desarrollado”.
A pesar de que la precisión del modelo fue buena con un 75.86% este modelo presenta grandes limitaciones para predecir de manera efectiva la clasificación “Desarrollado”, de lo anterior se puede inferir que las variables presentan información suficiente para diferenciar el estatus de los países, pero que lo que afectó a nuestro modelo a la hora de predecir a los países desarrollados, fue que dentro de la base de datos la cantidad de países desarrollados era mucho menor a comparación de los países en desarrollo, donde se refleja un sesgo en los datos y no se tiene una cantidad significativa de datos en la clasificación “desarrollado”. Incluso esta muestra no superó el desempeño que se hubiera esperado en una muestra elegida al azar para el modelo, lo que quiere decir que el modelo no tiene sensibilidad respecto a la clasificación “desarrollado”.
Se podría decir que el modelo con las muestras, no podrían generar confiabilidad a la hora de tomar decisiones respecto a los países, es decir no se podría confiar en que clasifique si los países son desarrollados o subdesarrollados porque ni siquiera tiene sensibilidad sobre la clasificación “desarrollado”.
Por otro lado, de acuerdo con la información obtenida por el modelo y las estadísticas descriptivas, podemos afirmar que las variables elegidas si presentan relevancia para clasificar el estado de desarrollo de un país.
https://www.telam.com.ar/notas/201904/346965-la-esperanza-de-vida-en-lospaises-pobres-es-181-anos-menor-que-en-los-ricos-segun-la-oms.html#:~:text=La%20esperanza%20de%20vida%20al,69%2C8%20a%C3%B1os%20y%20una
http://ficus.pntic.mec.es/ibus0001/poblacion/Mortalidad.html