Preparación de datos

Este bloque llama a las liberías necesarias.

Este bloque importa varios csv, y cambia los valores de “gii_mundo$Economy.ISO3” con códigos ISO3 de países, los pase a ISO2.

ips_mundo=read.csv("ips_mundo.csv")
gii_mundo=read.csv("gii_2024.csv")
pop_paises=read.csv("pop_paises.csv")
gii_mundo$Economy.ISO3 <- countrycode(gii_mundo$Economy.ISO3,
origin="iso3c", destination="iso2c")
head(gii_mundo)
head(ips_mundo)
head(pop_paises)

Este bloque cambia el nombre de varios atributos para hacerlos más interpretables. Además, cambia a numéricas algunas variables de texto.

names(gii_mundo)[names(gii_mundo)=="Economy.Name"]="Pais"
names(gii_mundo)[names(gii_mundo)=="ICT.access"]="Acceso a las TIC"
names(gii_mundo)[names(gii_mundo)=="ICT.use"]="Uso de las TIC"
names(gii_mundo)[names(gii_mundo)=="Economy.ISO3"]="Pais_ISO2"
names(pop_paises)[names(pop_paises)=="iso2"]="Pais_ISO2"
gii_mundo$"Acceso a las TIC"=as.numeric(gii_mundo$"Acceso a las TIC")
## Warning: NAs introduced by coercion
gii_mundo$"Uso de las TIC"=as.numeric(gii_mundo$"Uso de las TIC")
## Warning: NAs introduced by coercion
head(gii_mundo)

Este bloque crea una tabla que fusiona los atributos de las otras tablas en una sola, para más comodidad. Además, elimina las filas con datos faltantes en las variables que nos interesa analizar.

tot_mundo=gii_mundo %>%
  inner_join(ips_mundo, by=c("Pais_ISO2"="Pais"))
tot_mundo$Media=rowMeans(
  tot_mundo[, c("Acceso a las TIC", "Uso de las TIC")], 
  na.rm=TRUE)
tot_mundo=tot_mundo %>%
  left_join(pop_paises, by="Pais_ISO2")
tot_mundo=tot_mundo %>%
  filter(!is.nan(Media), 
         Cantidad > 0)
head(tot_mundo)

Análisis de los datos

Teniendo ya todos los datos importantes organizados en una tabla, vamos a empezar a realizar análisis sobre las variables y entre ellas. Empezando por este bloque, que muestra los 5 países con más direcciones IP asignadas

top_5 <- tot_mundo %>%
  arrange(desc(Cantidad)) %>%
  head(5)

ggplot(top_5, aes(x = reorder(Pais, desc(Cantidad)), y = Cantidad)) +
  geom_bar(stat = "identity", fill = "blue") +
  labs(title = "5 países con más direcciones IP",
       x= '', y = "Direcciones IP") +theme_minimal()

Este bloque crea un mapa Choropleth que representa la cantidad de direcciones IP de cada país. La mayoría de los mapas expresarán los colores según el logaritmo de los valores originales, para que se note mejor la diferencia entre países.

Desafortunadamente, Francia no aparece correctamente en ninguno de los mapas, aunque posea datos en la tabla, sospechamos que es por la computación de sus territorios de ultramar.

world=ne_countries(scale="medium", returnclass="sf")
world_data=world %>%
  left_join(tot_mundo, by=c("iso_a2"="Pais_ISO2"))

ggplot(data=world_data) +
  geom_sf(aes(fill=log(Cantidad)), color="white", linewidth=0.1)+  
  scale_fill_viridis_c(option="plasma", name="   Cantidad, \nlogaritmizada") +
  labs(title="Cantidad de direcciones IP por país")+theme_void()

Podemos ver cómo países muy extensos, (EE.UU, Canadá, Rusia…) y países muy poblados (China, Alemania, Brasil…) tienden a tener más direcciones IP, para cubrir las necesidades de mucha población o abarcar más superficie de conectividad.


Este bloque hace lo mismo, pero mide la cantidad de IPs por habitante de cada país, logaritmizado.

world=ne_countries(scale="medium", returnclass="sf")
world_data=world %>%
  left_join(tot_mundo, by=c("iso_a2"="Pais_ISO2"))

ggplot(data=world_data) +
  geom_sf(aes(fill=log(Cantidad/poblacion)), color="white", linewidth=0.1)+  
  scale_fill_viridis_c(option="plasma", name="      Ratio, \nlogaritmizado") +
  labs(title="Cantidad de direcciones IP por habitante")+theme_void()

Hay países, como los nórdicos, que han cambiado de color a mejor, ya que tienen un modesto número de direcciones IP pero satisfacen de sobra las necesidades de la población. Sin embargo, otros países, como India, han empeorado, ya que aunque tuvieran una decente cantidad de IPs, su población es excepcionalmente grande.


Este bloque muestra en el mismo mapa el valor medio del índice global de la innovación (GII) para cada país. Como es un índice del 1 al 100, no es necesario logaritmizarlo.

world=ne_countries(scale="medium", returnclass="sf")
world_data=world %>%
  left_join(tot_mundo, by=c("iso_a2"="Pais_ISO2"))

ggplot(data=world_data) +
  geom_sf(aes(fill=Media), color="white", linewidth=0.1) +  
  scale_fill_viridis_c(option="plasma", name="Índice") +
  labs(title="Índice de desarrollo tecnológico por país")+theme_void()

Es fácil observar que los países “del primer mundo” suelen tener valores más altos, sobretodo en Europa y Norteamérica.


El bloque de abajo crea un gráfico de dispersión donde relaciona la cantidad de IPs de un país con su índice de innovación tecnológica, con línea de tendencia cuadrática y intervalo de confianza.

ggplot(tot_mundo, aes(x=log(Cantidad), y=Media)) +
  geom_point(color="blue", alpha=0.75, size=3) +  
  geom_smooth(method="lm", formula=y~poly(x, 2), color="red")

Puede verse algo de tendencia entre las variables, pero nada muy significante. Vamos a ver, sin embargo, si la población de un país está relacionado con su número de direcciones IP.

ggplot(tot_mundo, aes(x=log(poblacion), y=log(Cantidad))) +
  geom_point(color="blue", alpha=0.75, size=3) +  
  geom_smooth(method="lm", formula=y~poly(x, 2), color="red")

Vemos que los datos tienden a seguir una conducta específica, donde la cantidad de direcciones IP y la población guardan algo de relación. Sabiendo esto, igual es más conveniente usar un ratio de direcciones IP por persona que las totales, para compararlas con el índice de innovación.

El bloque de abajo crea un gráfico de dispersión donde relaciona la cantidad de IPs por ciudadano con el índice de innovación tecnológica del país, con línea de tendencia cuadrática y intervalo de confianza.

ggplot(tot_mundo, aes(x=log(Cantidad/poblacion), y=Media)) +
  geom_point(color="blue", alpha=0.75, size=3) +  
  geom_smooth(method="lm", formula=y~poly(x, 2), color="red")

Al hacer el nuevo gráfico de dispersión, vemos bien cómo la línea de tendencia representa bien la distribución de los datos, donde el índice converge más lentamente hacia 100 cuantas más direcciones IP por persona tiene un país. El caso es que es posible que hayan países con mayor cantidad de direcciones debido a su tamaño y gran población.

Un ejemplo hipotético puede ser Rusia y España. Seguramente Rusia tenga similares o más direcciones IP, pero España tiene mucha menos población, lo que significa que hay muchas más direcciones IP por ciudadano.

Aquí he hecho un test de correlación de Spearman entre la cantidad de direcciones IP y su índice de desarrollo tecnológico. Lo del exact es para prevenir un warning.

res_ip=cor.test(tot_mundo$Cantidad, tot_mundo$Media, method="spearman", exact=FALSE)
res_ip
## 
##  Spearman's rank correlation rho
## 
## data:  tot_mundo$Cantidad and tot_mundo$Media
## S = 169321, p-value = 4.751e-10
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
##      rho 
## 0.515538

El coeficiente de correlación es exactamente de 0.52 y el p-valor es básicamente 0, lo que indica algo de correlación entre los atributos. Sin embargo, tampoco es muy notable, y como hemos visto en el gráfico de dispersión que la cantidad de direcciones IP por persona es mejor indicador que la cantidad total, vamos a probar teniendo eso en cuenta.

res_ip_pob=cor.test(tot_mundo$Cantidad/tot_mundo$poblacion, tot_mundo$Media, method="spearman", exact=FALSE)
res_ip_pob
## 
##  Spearman's rank correlation rho
## 
## data:  tot_mundo$Cantidad/tot_mundo$poblacion and tot_mundo$Media
## S = 63520, p-value < 2.2e-16
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
##       rho 
## 0.8182558

Podemos observar que existe mucha más correlación teniendo eso en cuenta, un 0.82 con un 0 de p-valor, con lo cual descartamos la hipótesis nula y aceptamos la alternativa, que afirma que existe correlación entre las variables.

Conclusiones

La relación entre la cantidad de direcciones IP de un país con su calificación según el Índice de innovación tecnológica es orientativa pero no potente. Sin embargo, si tenemos en cuenta la población de los países, es posible observar que hay mucha mayor relación entre dicho índice con la cantidad de direcciones IP per cápita que tiene un país, la cual es una forma de interpretar el acceso a las tecnologías de informática y comunicación.