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”.
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 (%)"
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 variablesSe 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 # VenezuelaSe 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
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.
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.