Skip to content
0

The State of Global Internet Usage: An Analytical Report

This map illustrates the percentages of global populations that used the Internet in the last three months of 2020.

Introduction

Objectives

This report presents the state of internet accessibility across the world by answering these specific questions:

ㅤ 1. What are the top five (5) countries with the highest internet use (by population share)? How many people had internet access in those countries in 2019?
ㅤ 2. What are the top five (5) countries with the highest internet use for each of the following regions: Africa Eastern and Southern, Africa Western and Central, Latin America & Caribbean, East Asia & Pacific, South Asia, North America, and European Union? How do we describe these regions' internet usage over time?
ㅤ 3. What are the top five (5) countries with the most internet users?
ㅤ 4. What is the correlation between internet usage (population share) and broadband subscriptions for 2019?

Data Used

The following tables were used in the analyses, which are part of The World Bank's World Development Indicators (WDI).

Acknowledgments: Max Roser, Hannah Ritchie, and Esteban Ortiz-Ospina (2015) - "Internet." OurWorldInData.org.

## ---------- Pre-installed Packages and Datasets

# Load pre-installed, required packages
suppressPackageStartupMessages(library(tidyverse)) 
suppressPackageStartupMessages(library(dplyr)) 
suppressPackageStartupMessages(library(ggplot2))

# Read the datasets from the CSV files
internet <- read_csv('data/internet.csv', show_col_types = FALSE)
people <- read_csv('data/people.csv', show_col_types = FALSE)
broadband <- read_csv('data/broadband.csv', show_col_types = FALSE)
Internet
VariableDescription
EntityName of the country, region, or group
CodeUnique id for the country (null for other entities)
YearYear from 1990 to 2019
Internet_UsageShare of the entity's population who have used the internet in the last three months
# View the 'internet' dataset
head(internet)
tail(internet)
People
VariableDescription
EntityName of the country, region, or group
CodeUnique id for the country (null for other entities)
YearYear from 1990 to 2020
UsersNumber of people who have used the internet in the last three months for that country, region, or group
# View the 'people' dataset
head(people)
tail(people)
Broadband
VariableDescription
EntityName of the country, region, or group
CodeUnique id for the country (null for other entities)
YearYear from 1998 to 2020
Broadband_SubscriptionsNumber of fixed subscriptions to high-speed internet at downstream speeds >= 256 kbit/s for that country, region, or group
# View the 'broadband' dataset
head(broadband)
tail(broadband)
# Create a function for plotting time series in ggplot
plot_series <- function(
    data = NULL,
    x = NULL,
    xlabs = "",
    y = NULL,
    ylabs = "",
    group = NULL,
    title = "",
    title.s = 10,
    by = 10,
    colors = NULL
) {
    p <- data %>%
        ggplot(aes(x = !!sym(x), 
                   y = !!sym(y),
                   group = !!sym(group))) + 
        	geom_line(aes(color = !!sym(group)),
                    	  linewidth = 0.65) +
        	geom_point(aes(color = !!sym(group)), 
                           size = 0) +
        	theme(legend.position = "top",
                  legend.justification = -0.12,
                  legend.direction = "horizontal",
                  legend.key.size = unit(0, 'pt'),
                  legend.text = element_text(margin = margin(r = 5, unit = "pt"),
                                             color = "#65707C"),
                  legend.title = element_blank(),
                  legend.key = element_blank(),
                  axis.title = element_text(color = "#65707C",
                                            face = "bold"),
                  axis.text = element_text(color = "#65707C"),
                  axis.line = element_line(colour = "grey",
                                           linewidth = 0.5),
                  panel.grid.major = element_line(color = "grey",
                                                  linetype = "dashed",
                                                  linewidth = 0.25),
                  panel.background = element_blank(),
                  plot.title = element_text(color = "#65707C",
                                            hjust = 0.5,
                                            size = title.s,
                                            face = "bold")
                 ) +
        	labs(x = paste0("\n",xlabs), y = paste0(ylabs,"\n")) +
        	ggtitle(paste0("\n",title,"\n")) +
        	scale_x_continuous(expand = c(0.02, 0),
    						   limits = c(min(data[x]), 2019), 
    						   breaks = seq(min(data[x]), 2019, by = 4)
            ) +
        	scale_y_continuous(expand = c(0, 0),
    						   limits = c(min(data[y]), max(data[y])+4), 
    						   breaks = seq(min(data[y]), max(data[y]+4), by = by)
            ) +
            guides(color = guide_legend(
                       override.aes = list(
                				 shape = 15,
                				 size = 4,
                                 linetype = "blank"
                       )
                   )
            )
    
    if (!is.null(colors)) {
        p <- p + scale_color_manual(values = colors)    
    }

    print(p)
}

# Create a function for plotting bar graphs in ggplot
plot_bar <- function(
    data = NULL,
    group = "",
    xlabs = "",
    num = "",
    ylabs = "",
    title = "",
    title.s = 10
) {
    ggplot(data, aes(y = fct_reorder(!!sym(group), !!sym(num)), x = !!sym(num))) + 
    geom_col(fill = "#6568A0") +
	geom_text(aes(label = comma_format()(!!sym(num)), y = !!sym(group), x = !!sym(num)),
              hjust = -0.1,
              size = 3.0
    ) +
	theme_minimal() +
	theme(panel.grid.major = element_blank(),
          panel.grid.minor = element_blank(),
          plot.title = element_text(face = "bold", size = title.s)
    ) +
    labs(x = paste0("\n",xlabs), y = paste0(ylabs,"\n")) +
    ggtitle(paste0("\n",title,"\n")) +
	scale_x_continuous(labels = scales::label_number(scale_cut = cut_short_scale()),
                       expand = expansion(mult = c(0.05, 0.30))
    )
}

1 hidden cell

Results and Discussion

Countries with the Highest Internet Usage by Population Share

Based on the most recent 2019 data, four of the top five countries with the highest internet usage by population share are located in the Middle East. These countries are Bahrain, Qatar, Kuwait, and the United Arab Emirates (UAE).

# Used for percentage values
suppressMessages(library(scales)) # required library

# Top 5 countries with the highest internet usage by population share
top_five_internet_use <- internet %>%
    group_by(Entity) %>% 
	filter(Year == 2019) %>%
    arrange(desc(Internet_Usage)) %>%
    ungroup() %>%
    top_n(5, Internet_Usage) %>%
	mutate(Internet_Usage = label_percent(accuracy = 0.01)(Internet_Usage/100)) %>%
	select(c("Entity", "Internet_Usage")) %>%
	rename(Country = Entity)

top_five_internet_use

# Subset data for plot
plotData_top_five_internet_use <- internet %>% filter(Entity %in% top_five_internet_use$Country)

# Plot time series
plot_series(
    data = plotData_top_five_internet_use,
    x = "Year",
    xlabs = "Year",
    y = "Internet_Usage",
    ylabs = "Internet Usage (%)",
    group = "Entity",
    title = "Internet Usage Trends in Top Countries, 2019",
    title.s = 12,
    colors = c("#443A83", "#31688E", "#21918D", "#35B779", "#8FD744")
)