Skip to content
1 hidden cell
Global Internet Usage Trend Analysis
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
| Variable | Description |
|---|---|
| Entity | Name of the country, region, or group |
| Code | Unique id for the country (null for other entities) |
| Year | Year from 1990 to 2019 |
| Internet_Usage | Share of the entity's population who have used the internet in the last three months |
# View the 'internet' dataset
head(internet)
tail(internet)People
| Variable | Description |
|---|---|
| Entity | Name of the country, region, or group |
| Code | Unique id for the country (null for other entities) |
| Year | Year from 1990 to 2020 |
| Users | Number 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
| Variable | Description |
|---|---|
| Entity | Name of the country, region, or group |
| Code | Unique id for the country (null for other entities) |
| Year | Year from 1998 to 2020 |
| Broadband_Subscriptions | Number 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")
)