Preámbulo

En conjunto de datos presentados contienen las estimaciones actuales (reloj de población en vivo),datos históricos y cifras proyectadas de países del mundo y territorios dependientes. Estos datos están basados en las últimas estimaciones de la División de Población de las Naciones Unidas para el 2022.

La base de datos utlizada se la puede descargar desde el siguiente “enlace”.

Datos

Se descarga la base de datos, se la carga y se analiza los 7 primeros elementos para tener una idea general de los mismos.

data <- read.csv("Data/world_population.csv")
head(data,7)
##         Country.Other Population..2020. Yearly.Change Net.Change
## 1         Afghanistan          38928346          2.33     886592
## 2             Albania           2877797         -0.11      -3120
## 3             Algeria          43851044          1.85     797990
## 4              Angola          32866272          3.27    1040977
## 5 Antigua and Barbuda             97929          0.84        811
## 6           Argentina          45195774          0.93     415097
## 7             Armenia           2963243          0.19       5512
##   Density..P.Km². Land.Area..Km². Migrants..net. Fert..Rate Med..Age
## 1               60           652860         -62920        4.6       18
## 2              105            27400         -14000        1.6       36
## 3               18          2381740         -10000        3.1       29
## 4               26          1246700           6413        5.6       17
## 5              223              440              0        2.0       34
## 6               17          2736690           4800        2.3       32
## 7              104            28470          -4998        1.8       35
##   Urban.Pop.. World.Share
## 1          25        0.50
## 2          63        0.04
## 3          73        0.56
## 4          67        0.42
## 5          26        0.00
## 6          93        0.58
## 7          63        0.04

Se cambian los nombres de las variables.

nombres <- c("Pais/Dependencia","Poblacion 2020","Variacion Anual (%)","Variacion anual (neto)","Densidad (P/Km²)","Área terrestre (Km²)","Migrantes (neto)","Tasa de fertilidad","Edad Media","Poblacion Urbana (%)","Representatividad (%)")
names(data) <- nombres
names(data)
##  [1] "Pais/Dependencia"       "Poblacion 2020"         "Variacion Anual (%)"   
##  [4] "Variacion anual (neto)" "Densidad (P/Km²)"       "Área terrestre (Km²)"  
##  [7] "Migrantes (neto)"       "Tasa de fertilidad"     "Edad Media"            
## [10] "Poblacion Urbana (%)"   "Representatividad (%)"

Limpieza de los datos

Analicemos el tipo de datos que contiene contiene nuestra base de datos.

str(data)
## 'data.frame':    201 obs. of  11 variables:
##  $ Pais/Dependencia      : chr  "Afghanistan" "Albania" "Algeria" "Angola" ...
##  $ Poblacion 2020        : int  38928346 2877797 43851044 32866272 97929 45195774 2963243 106766 25499884 9006398 ...
##  $ Variacion Anual (%)   : num  2.33 -0.11 1.85 3.27 0.84 0.93 0.19 0.43 1.18 0.57 ...
##  $ Variacion anual (neto): int  886592 -3120 797990 1040977 811 415097 5512 452 296686 51296 ...
##  $ Densidad (P/Km²)      : int  60 105 18 26 223 17 104 593 3 109 ...
##  $ Área terrestre (Km²)  : int  652860 27400 2381740 1246700 440 2736690 28470 180 7682300 82409 ...
##  $ Migrantes (neto)      : int  -62920 -14000 -10000 6413 0 4800 -4998 201 158246 65000 ...
##  $ Tasa de fertilidad    : num  4.6 1.6 3.1 5.6 2 2.3 1.8 1.9 1.8 1.5 ...
##  $ Edad Media            : int  18 36 29 17 34 32 35 41 38 43 ...
##  $ Poblacion Urbana (%)  : num  25 63 73 67 26 93 63 44 86 57 ...
##  $ Representatividad (%) : num  0.5 0.04 0.56 0.42 0 0.58 0.04 0 0.33 0.12 ...
## Se tienen 201 observaciones y 11 variables

Valores Perdidos

Se identifican los valores perdidos por variable y se representa graficamente.

missmap(data)

Al no encontrarse valores perdidos se analizan los valores “NA”.

sum(is.na(data))
## [1] 7
sum(is.na(data$`Poblacion Urbana (%)`))
## [1] 7

Existen 7 “NA”’s en la base de datos y de acuedo al analisis anterior se encuentran en la variable “Poblacion Urbana(%)”, ahora se analizaran los paises que contienen valores “NA”.

data$`Pais/Dependencia`[is.na(data$`Poblacion Urbana (%)`)]
## [1] "Guadeloupe"  "Hong Kong"   "Kuwait"      "Macao"       "Puerto Rico"
## [6] "Singapore"   "Venezuela"

Ahora se procederá a corregir los “NA” con datos externos(los datos se encuentran en “Banco Mundial”)

data$`Poblacion Urbana (%)` [72] <- 98  # Guadeloupe"
data$`Poblacion Urbana (%)` [80] <- 100 # Hong Kong
data$`Poblacion Urbana (%)` [96] <- 100  # Kuwait
data$`Poblacion Urbana (%)` [106] <- 100  # Macao
data$`Poblacion Urbana (%)` [145] <- 94 # Puerto Rico
data$`Poblacion Urbana (%)` [159] <- 100  # Singapore
data$`Poblacion Urbana (%)` [196] <- 88  # Venezuela

Se cambiará el tipo de datos de algunas variables.

data$`Poblacion 2020` <- as.numeric(data$`Poblacion 2020`)
data$`Variacion anual (neto)` <- as.numeric(data$`Variacion anual (neto)`)
data$`Densidad (P/Km²)` <- as.numeric(data$`Densidad (P/Km²)`)
data$`Área terrestre (Km²)` <- as.numeric(data$`Área terrestre (Km²)`)
data$`Migrantes (neto)` <- as.numeric(data$`Migrantes (neto)`)
data$`Edad Media` <- as.numeric(data$`Edad Media`)

Ahora se prestará mas atención a la variable “Densidad (P/Km^2)”, y se creará una etiqueta de acuerdo al siguiente criterio:

Clasificación P/km^2
Alta \(100 \leq x\)
Media \(50\leq x <100\)
Baja \(25\leq x<50\)
Muy baja \(x<25\)
Clasificacion <- ifelse(data$`Densidad (P/Km²)`<25,"Muy baja",ifelse(data$`Densidad (P/Km²)`<50,"Baja",ifelse(data$`Densidad (P/Km²)`<100,"Media","Alta")))

Esta nueva variable se adjuntará a la base de datos original, y se la tratará como un factor.

data <- data %>% mutate(Clasificacion)
data$Clasificacion <- factor(data$Clasificacion,order=TRUE, levels = c("Muy baja","Baja","Media","Alta"))
summary(data)
##  Pais/Dependencia   Poblacion 2020      Variacion Anual (%)
##  Length:201         Min.   :9.793e+04   Min.   :-2.47      
##  Class :character   1st Qu.:1.886e+06   1st Qu.: 0.42      
##  Mode  :character   Median :8.655e+06   Median : 1.08      
##                     Mean   :3.878e+07   Mean   : 1.20      
##                     3rd Qu.:2.769e+07   3rd Qu.: 1.96      
##                     Max.   :1.439e+09   Max.   : 3.84      
##  Variacion anual (neto) Densidad (P/Km²)  Área terrestre (Km²)
##  Min.   : -383840       Min.   :    2.0   Min.   :      30    
##  1st Qu.:    4103       1st Qu.:   34.0   1st Qu.:   21640    
##  Median :   60403       Median :   89.0   Median :  108560    
##  Mean   :  404623       Mean   :  361.7   Mean   :  645090    
##  3rd Qu.:  360204       3rd Qu.:  228.0   3rd Qu.:  498800    
##  Max.   :13586631       Max.   :21645.0   Max.   :16376870    
##  Migrantes (neto)    Tasa de fertilidad   Edad Media    Poblacion Urbana (%)
##  Min.   :-653249.0   Min.   :1.100      Min.   :15.00   Min.   : 13.00      
##  1st Qu.: -10047.0   1st Qu.:1.700      1st Qu.:22.00   1st Qu.: 43.00      
##  Median :   -960.0   Median :2.300      Median :30.00   Median : 63.00      
##  Mean   :     -5.4   Mean   :2.692      Mean   :30.62   Mean   : 60.94      
##  3rd Qu.:   9741.0   3rd Qu.:3.600      3rd Qu.:39.00   3rd Qu.: 80.00      
##  Max.   : 954806.0   Max.   :7.000      Max.   :48.00   Max.   :100.00      
##  Representatividad (%)  Clasificacion
##  Min.   : 0.0000       Muy baja:36   
##  1st Qu.: 0.0200       Baja    :29   
##  Median : 0.1100       Media   :43   
##  Mean   : 0.4975       Alta    :93   
##  3rd Qu.: 0.3600                     
##  Max.   :18.4700

Hallar el porcentaje de los paises respecto a la variable “Clasificacion”:

d1 <- data.frame(Clasificacion=round(prop.table(table(data$Clasificacion))*100,2))
names(d1) <- c("Clasificacion","%")
d1
##   Clasificacion     %
## 1      Muy baja 17.91
## 2          Baja 14.43
## 3         Media 21.39
## 4          Alta 46.27

Visualización de datos

Se buscará hallar la matriz de correlación entre las variables que se guardarán en “d” para analizar la relación que tienen estas variables.

d <- data %>% select(`Variacion Anual (%)`,`Densidad (P/Km²)`,`Tasa de fertilidad`,`Migrantes (neto)`,`Edad Media`,`Poblacion Urbana (%)`)
cor(d)
##                      Variacion Anual (%) Densidad (P/Km²) Tasa de fertilidad
## Variacion Anual (%)          1.000000000    -0.0076456078          0.8238449
## Densidad (P/Km²)            -0.007645608     1.0000000000         -0.1518061
## Tasa de fertilidad           0.823844869    -0.1518061096          1.0000000
## Migrantes (neto)            -0.016139758     0.0001224028         -0.1132827
## Edad Media                  -0.843301198     0.1411086818         -0.8823962
## Poblacion Urbana (%)        -0.368485992     0.1841889556         -0.5047321
##                      Migrantes (neto) Edad Media Poblacion Urbana (%)
## Variacion Anual (%)     -0.0161397582 -0.8433012           -0.3684860
## Densidad (P/Km²)         0.0001224028  0.1411087            0.1841890
## Tasa de fertilidad      -0.1132827369 -0.8823962           -0.5047321
## Migrantes (neto)         1.0000000000  0.1905395            0.2070631
## Edad Media               0.1905394570  1.0000000            0.5581759
## Poblacion Urbana (%)     0.2070630972  0.5581759            1.0000000

Se realizá una gráfica para tener una mejor percepción de la relación entre las variables seleccionadas.

corrplot(cor(d))

Se observa que existe correlación entre la variación anual y la tasa de fertilidad la cual es positiva, y otras dos correlaciones con la edad media negativas respecto a la variación anual y la tasa de fertilidad.

Analicemos la cantidad de paises por clasificacion de acuerdo a la densidad.

ggplot(data,aes(x=Clasificacion))+geom_bar(width=0.5,fill=c("#8ee5ee","#98f5ff","#7ac5cd","#53868b"))+xlab("Clasificación")+ylab("Conteo")+ggtitle("Diagrama de barras variable: Clasificación")+theme_minimal()

De esta gráfica se tiene que la densidad poblacional alta y media son las que tienen mayor representatividad.

hchart(data,"scatter",hcaes(x=`Edad Media` ,y=`Tasa de fertilidad`)) %>% hc_title(text="Gráfico de dispersión de la Edad Media vs Tasa de fertilidad") %>% hc_add_theme(hc_theme_ffx())

En esta gráfica se observa que la Edad Media y la Tasa de fertilidad estan inversamente correlacionadas, que es lo que se vio en el analisis de la gráfica de las correlaciones.

ggplot(data,aes(y=`Migrantes (neto)`/1000,x=`Edad Media`))+geom_point(color=ifelse(data$`Migrantes (neto)`<0,"red","blue"))+ylab("Migrantes")+theme_minimal()+ggtitle("Gráfico de dispersión de la Edad Media vs Migrantes")

Para este gráfico se comparó la Edad media con la cantidad de migrantes (escala 1:1000) de cada país, y como se tenía en el análisis de correlaciones, no existe una correlación muy clara entre ambas variables.

Se puede analizar de manera más dinámica los porcentajes de los paises de acuerdo a la densidad poblacional, en el siguiente gráfico de pastel:

names(d1)
## [1] "Clasificacion" "%"
hchart(d1,"pie",hcaes(x=Clasificacion,y=d1$`%`)) %>% hc_add_theme(hc_theme_ffx())

Aquí queda en evidencia que los paises con una densidad poblacional alta son mayoría.

Conclusiones

  • De acuerdo con el análisis obetenido se sigue que una población joven cuenta con una tasa de fertilidad alta, mientras que una mas mayor cuenta con una tasa de fertilidad baja, obedeciendo a la intuición.

  • De la nueva variable que fue creada se tiene que los paises con densidad poblacional alta y media representan el 60% de los paises del mundo, es decir que de acurdo al criterio obtado existe sobrepoblación.

  • Tambien se puede concluir que la edad no es un tan factor relevante en lo que concierne a la migración.