Introducción

En este informe se desarrollará y evaluará un modelo kNN que se basa en aprendizaje supervisado, sobre una base de datos de más de 180 países, con el objetivo de que el modelo pueda decidir si cada país es Desarrollado o En desarrollo.

Estas clasificaciones se deciden según datos económicos e indicadores de las sociedades:

  • Desarrollados: Son aquellos que han alcanzado un Producto Interno Bruto (PIB) per cápita alto y a nivel general, presentan indicadores de desarrollo altos. Estos países presentan no sólo un promedio beneficioso entre los ingresos de sus habitantes, sino también un alto nivel de calidad de vida medido en infraestructura pública, acceso a servicios de salud, educación, transporte, estabilidad política, paz social, entre otros factores.
  • En Desarrollo: Se caracterizan por tener una economía basada en componentes agrarios y con menor industrialización. Su nivel de vida no es necesariamente malo pero es inferior al de los países desarrollados, su PIB per cápita es reducido, presentan altas tasas de delincuencia y desempleo, nivel de educación medio e inestabilidad política, entre otros.

Este tipo de modelos se caracterizan por tener una secuencia lógica que permite determinar un hecho a partir de datos previamente conocidos y estudiados para generar una clasificación. Un ejemplo de esto puede ser la identificación de frutas, cada una tiene ciertas características que pueden ser medidas, y ser cuantificadas y cualificadas, de manera que permitan evaluar y determinar qué tipo de fruta es. En este caso al igual que la analogía anterior, se tendrá una base de datos con “características” definidas como variables cuantitativas, que describen factores de los diferentes países que se encuentran en ella.

Siguiendo con el modelo kNN y entrando un poco más en su funcionamiento, se basará en un entrenamiento a partir de datos indexados por medio de variables, que determinarán una categorización. Esto permitirá que el modelo sea capaz de analizar nuevos datos con las mismas variables para otorgarle una categoría a cada cosa que se quiera determinar. Con la letra k se define la cantidad de vecinos (datos cercanos) que tomará el modelo para ser entrenado.

Procedimiento

Para iniciar con el proceso, se cargaron los datos de la base suministrada que como fue comentado anteriormente contiene datos de más de 180 países recopilados desde el 2010 hasta el 2018. En este caso particular para el modelo que se realizará, se tendrán en cuenta únicamente los datos correspondientes al año 2014. Por lo que posterior a la carga de la base, se realizó el filtrado de una nueva base con los datos de este año.

La depuración prosiguió seleccionando únicamente 7 de las 22 variables disponibles en la base de datos, a parte de la categorización de cada país STATUS y sus respectivos nombres COUNTRY, estas variables fueron las siguientes:

Descripción de variables

  • Life.expectancy
  • Adult.mortality
  • Infant.deaths
  • GDP
  • Population
  • Schooling
  • Homicides

Posteriormente, los nombres de las variables se cambiaron para facilitar el manejo de las mismas en lo que respecta con el modelo y la identificación de las mismas. De esta manera, quedaron así:

  • EV (Esperanza de vida)
  • MA (Mortalidad en adultos)
  • MI (Mortalidad infantil)
  • PIB (Producto Interno Bruto)
  • P (Población)
  • ESC (Escolaridad)
  • HOM (Homicidios)

Adicionalmente las variables STATUS y COUNTRY, fueron cambiadas a ESTADO y País respectivamente.

Estas variables fueron seleccionadas debido a que representan diferentes aspectos generales que se utilizan como indicadores demográficos y económicos para medir la calidad de vida de los habitantes de un lugar, lo que es por definición el nivel de desarrollo de un país.

  • Esperanza de vida: Según el Banco Mundial, la esperanza de vida hace referencia a la cantidad de años que viviría un recién nacido si los patrones de mortalidad vigentes al momento de su nacimiento no cambian a lo largo de la vida del infante. En otras palabras, se trata de ver el número de personas de diferentes edades que mueren ese año, y proporcionar un panorama general de las “características de mortalidad” de la población para ese periodo.

  • Mortalidad en adultos: Se utiliza para medir el número de defunciones de personas en edad adulta durante un año en un país. Este indicador demográfico resulta muy útil en el estudio de la calidad de vida de las personas dado que tiene en cuenta las muertes por causas naturales, accidentes, homicidios, fenómenos climáticos, etc. que se pueden presentar en la población.

  • Mortalidad infantil: La mortalidad infantil es un término usado para describir la muerte de un bebé que ocurre entre el nacimiento y el primer año de edad. Si el bebé muere antes de los 28 días, la muerte también se puede clasificar como mortalidad neonatal; esta tasa tiene como objetivo ver la cantidad de muertes por 1.000 nacimientos vivos, es un factor importante ya que muchos factores que contribuyen a las muertes de los bebés también afectan la salud de la población en general.

  • PIB: De acuerdo con el Boletín de Estudios Económicos Vol. 65, el PIB como concepto estadístico trata de medir la cantidad de bienes y servicios finales (destinados al consumo final o a la acumulación) que son objeto de transacción en el mercado, en un período de tiempo determinado (mes, trimestre,año…).

  • Población: La población hace referencia al número de personas que habitan en un área determinada. Este dato contribuye a conocer la cantidad de personas que viven en un país, así como también, a conocer los cambios que se presentan en dicha población y en compañía de variables de mortalidad y natalidad, permite conocer las edades promedio, población económicamente activa, crecimiento o decrecimiento del número de residentes del lugar.

  • Escolaridad: Según la estadística entre mayor sea la escolaridad de las personas en un país, permitirá que estos mismos tengan mayor probabilidad de aumentar los salarios, favorecer la movilidad social, reducir la desigualdad, entre otras cosas.

Una vez realizado esto, se omitieron los datos faltantes, ya que estos perjudican el funcionamiento del modelo. Finalizado esto, se tiene la base preparada para ajustar los datos y realizar el modelo. A continuación se muestra la base:

Modelo

De la base anteriormente mostrada se cuenta con 178 países con sus respectivos datos seleccionados, pero de esta se debe recolectar una parte para lo que será el entrenamiento del modelo. Esta fue llamada indxEntrena que consta del 25% de los datos, que se traducen en 44 países.

Una vez hecho esto, fueron separados los datos en dos bases nuevas, una para entrenar y otra para testear el modelo, estas fueron:

  • B_entrena conformada por la base indxEntrena menos el nombre de los países, ya que el modelo únicamente admitirá valores cuantitativos y categóricos.
  • B_test conformada por los demás datos que no se encuentran en indxEntrena, es decir el 75% restante de la base de datos depurada.

De cada una de ellas, se extraerán bases de los inputs y outputs para el modelo. En donde los inputs serán los datos de las variables menos la categorización del estado del país, y los outputs únicamente la categorización. En el modelo estarán todas estas bases, menos el output del test debido a que con este se verificará la veracidad de los resultados del modelo. La función knn tiene la siguiente estructura:

\[ knn(train = entrena/input, cl = entrena/output, test = test/input, k = n ) \] Este modelo será corrido bajo la libreria Class la cual proporciona esta función knn().

Inicialmente la k tendrá un valor de 3 vecinos, y se calculará el porcentaje de precisión que ha tenido el modelo, con la función mean(), comparándolos con el output del test.

## [1] 0.75

Como se observa, el valor obtenido ha sido de 0.75. Este valor indica que el modelo realizado, utilizando una k de 3 vecinos, tiene una precisión de 75% para predecir la categoría de cada dato.

Adicionalmente, se generará una tabla matriz de confusión en la que se podrá ver de manera mucho más clara que valores de los predichos por el modelo están bien acertados con la realidad.

##                  B_test_output
## B_test_output_kNN Developed Developing
##        Developed          2          3
##        Developing         8         31

Al ver y analizar esta tabla, es evidente que algo anda mal con el modelo, no tiene la suficiente precisión respecto con lo que indicaba el mean. Es mucho más visible que en este caso, está malinterpretando los datos clasificando el 80% de los Desarrollados como En desarrollo.

Hasta este punto, esta falla podría explicarse porque no se tomaron los suficientes k para el modelo, ya que dependiendo de la cantidad de vecinos que se recopilen para el modelo, así mismo tenderá a cambiar los resultados del este. Sin embargo, será necesario recopilar los porcentajes de exactitud que tienen otros valores de k, de manera que pueda ser visualizado de manera gráfica, así:

De esta manera, se puede observar que el punto máximo de precisión para el modelo es alcanzado cuando el valor de k es mayor que 9, resultando en 0,7727, es decir un 77,27%. No parece existir un valor mucho más allá debido a que la base para este modelo solo cuenta con 44 datos.

Modelo con libreria Caret

Siguiendo con el mismo modelo kNN, se podrá realizar el mismo desde otra librería llamada Caret. Esta tiene muchas más funciones y es capaz de resumir las líneas de código arrojando el k óptimo, junto con demás datos que se procederán a analizar posteriormente.

Ahora el modelo de predicción y entrenamiento, correrá bajo la función train() y se evaluarán un total de 20 diferentes valores de k arrojando el más conveniente para el modelo.

## k-Nearest Neighbors 
## 
## 134 samples
##   7 predictor
##   2 classes: 'Developed', 'Developing' 
## 
## No pre-processing
## Resampling: Bootstrapped (25 reps) 
## Summary of sample sizes: 134, 134, 134, 134, 134, 134, ... 
## Resampling results across tuning parameters:
## 
##   k   Accuracy   Kappa        
##    5  0.6890574   0.0277953066
##    7  0.6999449   0.0340614512
##    9  0.6967530   0.0063562845
##   11  0.7209416   0.0339809650
##   13  0.7214576   0.0264053272
##   15  0.7211052  -0.0041161900
##   17  0.7217134  -0.0241480377
##   19  0.7275036  -0.0196785635
##   21  0.7369377  -0.0185173653
##   23  0.7401006  -0.0138697630
##   25  0.7426369  -0.0124444663
##   27  0.7475897  -0.0044213739
##   29  0.7526030   0.0016282242
##   31  0.7526853   0.0008924128
##   33  0.7579749   0.0077384539
##   35  0.7548767  -0.0070275292
##   37  0.7572202  -0.0030645161
##   39  0.7564929  -0.0043574817
##   41  0.7595636   0.0045161290
##   43  0.7588363   0.0000000000
## 
## Accuracy was used to select the optimal model using the largest value.
## The final value used for the model was k = 41.

Como se puede observar resultante del modelo, este arrojará la exactitud de 20 valores de k diferentes y resaltará el más efectivo de ellos. En este caso se refiere al 41.

Y en adición se pueden graficar dichos valores de k (#Neighbors) respecto a su precisión (Accuracy), de la siguiente manera:

Para finalizar, se procederá con el testeo del modelo con la función predict() y ser anexada a la función confusionMatrix() donde se calculará la exactitud del modelo, y además arrojará el reporte de las mediciones.

## Confusion Matrix and Statistics
## 
##             Reference
## Prediction   Developed Developing
##   Developed          0          0
##   Developing        10         34
##                                           
##                Accuracy : 0.7727          
##                  95% CI : (0.6216, 0.8853)
##     No Information Rate : 0.7727          
##     P-Value [Acc > NIR] : 0.583734        
##                                           
##                   Kappa : 0               
##                                           
##  Mcnemar's Test P-Value : 0.004427        
##                                           
##             Sensitivity : 0.0000          
##             Specificity : 1.0000          
##          Pos Pred Value :    NaN          
##          Neg Pred Value : 0.7727          
##              Prevalence : 0.2273          
##          Detection Rate : 0.0000          
##    Detection Prevalence : 0.0000          
##       Balanced Accuracy : 0.5000          
##                                           
##        'Positive' Class : Developed       
## 

Aquí es valiosa la información referente a la exactitud del modelo, la sensitividad y la especificidad.

  • Sensitividad: Tomará la proporción de aciertos en los datos positivos verdaderos en cuanto a la matriz de confusión se refiere, en este caso el porcentaje de países desarrollados que verdaderamente el modelo predijó que serán desarrollados. Este es de 0% debido a que el modelo no tomó ningún dato con la cualidad que le confería para esta categoría.

  • Especificidad: Tomará la proporción de aciertos en los datos negativos verdaderos en la matriz de confusión, en este caso el porcentaje de países en desarrollo que verdaderamente tomó el modelo como en desarrollo. El resultado de este es del 100% ya que tomo todos los datos en desarrollado como lo que verdaremante son.

Conclusiones

A partir de los datos obtenidos y el previo análisis realizado para los modelos desarrollados, se observa que ambos modelos (el desarrollado con la librería class y el de la librería caret) arrojaron el valor óptimo de k, donde los modelos tienen la mayor precisión, pero al momento de acomodar estos k en los respectivos modelos y correrlo, estos no funcionaron de la manera que se esperaba, y se infiere que esto es debido a diversos factores:

  • Las variables tomadas pudieron afectar la precisión de los modelos, de tal manera que existe la posibilidad de que si se hubieran tomado otras de las que estaban presente en la base de datos, quizá estos hubiera funcionado mejor.

  • El número de k tomados pudieron no haber sido los suficientes para que los modelos pudieran entrenarse de manera adecuada y haber arrojado una proporción de predicción efectiva mucho más alta.

  • Las versiones de las librerías también son factores que pueden alterar el desarrollo de los modelos. Una librería mucho más actualizada puede cubrir con parches los errores de sus versiones previas, al igual que el momento donde esta se ejecute podría hacer variar los resultados.

  • El número de datos para entrenar los modelos pudo haber sido crucial para el entrenamiento de estos. Tal vez al entregarle mayor cantidad de datos puedan ser capaces de tomar mejores predicciones.

Bibliografía

Coll, F. (2020, March 1). País en desarrollo - Qué es, definición y concepto | 2023. Economipedia. Retrieved May 22, 2023, from https://economipedia.com/definiciones/pais-en-desarrollo.html

Fantom, N. (2013, November 25). ¿Qué significa en realidad “esperanza de vida al nacer”? World Bank Blogs. Retrieved May 22, 2023, from https://blogs.worldbank.org/es/opendata/qu-significa-en-realidad-esperanza-de-vida-al-nacer

Ivette, A. (2020, January 12). Tasa de mortalidad - Qué es, definición y concepto | 2023. Economipedia. Retrieved May 22, 2023, from https://economipedia.com/definiciones/tasa-de-mortalidad.html

Vol. 77 Núm. 233 (2022): Haciendo realidad la revolución ASG | Boletín de Estudios Económicos. (2023, March 20). Boletín de Estudios Económicos. Retrieved May 22, 2023, from https://bee.revistas.deusto.es/issue/view/279

Westreicher, G. (n.d.). Población - Qué es, definición y concepto | 2023. Economipedia. Retrieved May 22, 2023, from https://economipedia.com/definiciones/poblacion.html

Westreicher, G. (2019, September 14). País desarrollado - Qué es, definición y concepto | 2023. Economipedia. Retrieved May 22, 2023, from https://economipedia.com/definiciones/pais-desarrollado.html