Global Internet Usage Trend Analysis
Global Internet Usage Trend Analysis
Objectives
This report presents the state of internet accessibility across the world by answering these specific questions:
- 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?
- 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?
- What are the top five (5) countries with the most internet users?
- What is the correlation between internet usage (population share) and broadband subscriptions for 2019?
## ---------- Pre-installed Packages and Datasets
# Load required libraries
suppressMessages(library(tidyverse))
library(dplyr)
library(ggplot2)
# Read the datasets from the CSV files
internet <- read_csv("/kaggle/input/the-data-setlist/internet.csv", show_col_types = FALSE)
people <- read_csv("/kaggle/input/the-data-setlist/people.csv", show_col_types = FALSE)
broadband <- read_csv("/kaggle/input/the-data-setlist/broadband.csv", show_col_types = FALSE)
# View the 'internet' dataset
head(internet)
tail(internet)
| Entity | Code | Year | Internet_Usage |
|---|---|---|---|
| <chr> | <chr> | <dbl> | <dbl> |
| Afghanistan | AFG | 1990 | 0 |
| Afghanistan | AFG | 1991 | 0 |
| Afghanistan | AFG | 1992 | 0 |
| Afghanistan | AFG | 1993 | 0 |
| Afghanistan | AFG | 1994 | 0 |
| Afghanistan | AFG | 1995 | 0 |
| Entity | Code | Year | Internet_Usage |
|---|---|---|---|
| <chr> | <chr> | <dbl> | <dbl> |
| Zimbabwe | ZWE | 2012 | 12.00000 |
| Zimbabwe | ZWE | 2013 | 15.50000 |
| Zimbabwe | ZWE | 2014 | 16.36474 |
| Zimbabwe | ZWE | 2015 | 22.74282 |
| Zimbabwe | ZWE | 2016 | 23.11999 |
| Zimbabwe | ZWE | 2017 | 27.05549 |
# View the 'people' dataset
head(people)
tail(people)
| Entity | Code | Year | Users |
|---|---|---|---|
| <chr> | <chr> | <dbl> | <dbl> |
| Afghanistan | AFG | 1990 | 0 |
| Afghanistan | AFG | 1991 | 0 |
| Afghanistan | AFG | 1992 | 0 |
| Afghanistan | AFG | 1993 | 0 |
| Afghanistan | AFG | 1994 | 0 |
| Afghanistan | AFG | 1995 | 0 |
| Entity | Code | Year | Users |
|---|---|---|---|
| <chr> | <chr> | <dbl> | <dbl> |
| Zimbabwe | ZWE | 2015 | 3219232 |
| Zimbabwe | ZWE | 2016 | 3341464 |
| Zimbabwe | ZWE | 2017 | 3599269 |
| Zimbabwe | ZWE | 2018 | 3763048 |
| Zimbabwe | ZWE | 2019 | 3854006 |
| Zimbabwe | ZWE | 2020 | 4591211 |
# View the 'broadband' dataset
head(broadband)
tail(broadband)
| Entity | Code | Year | Broadband_Subscriptions |
|---|---|---|---|
| <chr> | <chr> | <dbl> | <dbl> |
| Afghanistan | AFG | 2004 | 0.000808843 |
| Afghanistan | AFG | 2005 | 0.000857557 |
| Afghanistan | AFG | 2006 | 0.001891571 |
| Afghanistan | AFG | 2007 | 0.001844982 |
| Afghanistan | AFG | 2008 | 0.001803604 |
| Afghanistan | AFG | 2009 | 0.003521770 |
| Entity | Code | Year | Broadband_Subscriptions |
|---|---|---|---|
| <chr> | <chr> | <dbl> | <dbl> |
| Zimbabwe | ZWE | 2015 | 1.187053 |
| Zimbabwe | ZWE | 2016 | 1.217633 |
| Zimbabwe | ZWE | 2017 | 1.315694 |
| Zimbabwe | ZWE | 2018 | 1.406322 |
| Zimbabwe | ZWE | 2019 | 1.395818 |
| Zimbabwe | ZWE | 2020 | 1.368916 |
# 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
) {
# Plot
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") +
#coord_flip() +
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))
)
}
Results and Discussion
Countries with the Highest Internet Use 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 use 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")
)
| Country | Internet_Usage |
|---|---|
| <chr> | <chr> |
| Bahrain | 99.70% |
| Qatar | 99.65% |
| Kuwait | 99.54% |
| United Arab Emirates | 99.15% |
| Denmark | 98.05% |

Top Countries’ Number of Internet Users, 2019
Among these countries, the United Arab Emirates (UAE) had the highest number of internet users in 2019.
# Number of internet users in 2019 of the countries with the highest internet use by population share
top_five_internet_users_2019 <- people %>%
filter(Entity %in% top_five_internet_use$Country, Year == 2019) %>%
arrange(desc(Users)) %>%
mutate(Users = comma_format()(Users)) %>%
select(c("Entity", "Users")) %>%
rename(Country = Entity, Number_of_Internet_Users = Users)
# Subset data for plot
barData_top_five_internet_users_2019 <- people %>%
filter(Entity %in% top_five_internet_users_2019$Country, Year == 2019) %>%
arrange(desc(Users)) %>%
select(c("Entity", "Users"))
# Plot bar graph
plot_bar(
data = barData_top_five_internet_users_2019, #NULL,
group = "Entity",
xlabs = "Number of Internet Users",
num = "Users",
ylabs ="",
title = "Top Countries by Number of Internet Users, 2019",
title.s = 12
)

Regional Leaders in Internet Usage
The countries with the highest internet usage by population share in their respective regions are Seychelles (Africa Eastern and Southern), Cape Verde (Africa Western and Central), Aruba (Latin America & Caribbean), South Korea (East Asia & Pacific), Maldives (South Asia), Bermuda (North America), and Luxembourg (European Union).
Notably, these countries are generally not the largest in terms of land area when compared to others.
Note: The 2017 data was used for this comparison because it was the most recent year with the most available country data.
# The 'region' destination (7 Regions as defined in the World Bank Development Indicators) was used for Latin America & Caribbean, East Asia & Pacific, South Asia, and North America.
code_region <- distinct(data.frame( Code = (internet %>% filter(Code != 'null'))$Code,
Region = countrycode((internet %>% filter(Code != 'null'))$Code,
'wb', 'region')), Code, .keep_all = TRUE) %>%
filter(Code != 'OWID_WRL') %>%
mutate(Region = ifelse(Code == 'OWID_KOS', 'Europe & Central Asia', Region))
# The 'region23' destination (23 Regions as used to be in the World Bank Development Indicators) was used for Africa Eastern and Southern and Africa Western and Central.
code_region23 <- distinct(data.frame(Code = (internet %>% filter(Code != 'null'))$Code,
Region = countrycode((internet %>% filter(Code != 'null'))$Code,
'wb', 'region23')), Code, .keep_all = TRUE) %>%
filter(Code != 'OWID_WRL') %>%
mutate(Region = ifelse(Code == 'OWID_KOS', 'Southern Europe', Region))
# Join 'Code' from 'internet' to 'code_region' and 'code_region23' tables to identify a country's region
internet_with_region <- merge(internet, code_region, by = 'Code', all = TRUE)
internet_with_region23 <- merge(internet, code_region23, by = 'Code', all = TRUE)
# The country Kosovo was not matched**, so its regions(https://data.worldbank.org/country/XK) was inputted manually.
# The row with a Code = 'OWID_WRL' for World was excluded in the analysis.
# Since EU codes are incompatible, a different coding approach was used.
Warning message:
“Some values were not matched unambiguously: OWID_KOS, OWID_WRL
”
Warning message:
“Some values were not matched unambiguously: OWID_KOS, OWID_WRL
”
2.2.1. Africa Eastern and Southern
# Africa Eastern and Southern
top_five_internet_use_aes <- internet_with_region23 %>%
group_by(Entity) %>%
filter(Year == 2017, Region %in% c('Eastern Africa', 'Southern Africa')) %>%
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)
| Country | Internet_Usage |
|---|---|
| Seychelles | 58.77% |
| South Africa | 56.17% |
| Djibouti | 55.68% |
| Mauritius | 55.40% |
| Botswana | 41.41% |
# Subset data for plot
plotData_top_five_aes <- internet %>% filter(Entity %in% top_five_internet_use_aes$Country)
# Plot time series
plot_series(
data = plotData_top_five_aes,
x = "Year",
xlabs = "\nYear",
y = "Internet_Usage",
ylabs = "Internet Usage (%)\n",
group = "Entity",
title = "Internet Usage Trends in Top East and South African Countries, 2017",
title.s = 12,
by = 5,
colors = c("#443A83", "#31688E", "#21918D", "#35B779", "#8FD744")
)

Africa Western and Central
# Africa Western and Central
top_five_internet_use_awc <- internet_with_region23 %>%
group_by(Entity) %>%
filter(Year == 2017, Region %in% c('Western Africa', 'Middle Africa')) %>%
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_awc
# Subset data for plot
plotData_top_five_awc <- internet %>% filter(Entity %in% top_five_internet_use_awc$Country)
# Plot time series
plot_series(
data = plotData_top_five_awc,
x = "Year",
xlabs = "Year",
y = "Internet_Usage",
ylabs = "Internet Usage (%)",
group = "Entity",
title = "Internet Usage Trends in Top West and Central African Countries, 2017",
title.s = 12,
by = 5,
colors = c("#443A83", "#31688E", "#21918D", "#35B779", "#8FD744")
)
| Country | Internet_Usage |
|---|---|
| <chr> | <chr> |
| Cape Verde | 57.16% |
| Gabon | 50.32% |
| Cote d'Ivoire | 43.84% |
| Ghana | 37.88% |
| Sao Tome and Principe | 29.93% |

Latin America & Caribbean
# Latin America & Caribbean
top_five_internet_use_lac <- internet_with_region %>%
distinct(Internet_Usage, .keep_all = TRUE) %>%
group_by(Entity) %>%
filter(Year == 2017, Region == 'Latin America & Caribbean') %>%
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_lac
# Subset data for plot
plotData_top_five_lac <- internet %>% filter(Entity %in% top_five_internet_use_lac$Country)
# Plot time series
plot_series(
data = plotData_top_five_lac,
x = "Year",
xlabs = "Year",
y = "Internet_Usage",
ylabs = "Internet Usage (%)",
group = "Entity",
title = "Internet Usage Trends in Top Latin American and Caribbean Countries, 2017",
title.s = 12,
by = 10,
colors = c("#443A83", "#31688E", "#21918D", "#35B779", "#8FD744")
)
| Country | Internet_Usage |
|---|---|
| <chr> | <chr> |
| Aruba | 97.17% |
| Chile | 82.33% |
| Barbados | 81.76% |
| Cayman Islands | 81.07% |
| Saint Kitts and Nevis | 80.71% |

East Asia & Pacific
# East Asia & Pacific
top_five_internet_use_eap <- internet_with_region %>%
distinct(Internet_Usage, .keep_all = TRUE) %>%
group_by(Entity) %>%
filter(Year == 2017, Region == 'East Asia & Pacific') %>%
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_eap
# Subset data for plot
plotData_top_five_eap <- internet %>% filter(Entity %in% top_five_internet_use_eap$Country)
# Plot time series
plot_series(
data = plotData_top_five_eap,
x = "Year",
xlabs = "Year",
y = "Internet_Usage",
ylabs = "Internet Usage (%)",
group = "Entity",
title = "Internet Usage Trends in Top East Asian and Pacific Countries, 2017",
title.s = 12,
by = 10,
colors = c("#443A83", "#31688E", "#21918D", "#35B779", "#8FD744")
)
| Country | Internet_Usage |
|---|---|
| <chr> | <chr> |
| South Korea | 95.07% |
| Brunei | 94.87% |
| Japan | 91.73% |
| New Zealand | 90.81% |
| Hong Kong | 89.42% |

South Asia
# South Asia
top_five_internet_use_sa <- internet_with_region %>%
distinct(Internet_Usage, .keep_all = TRUE) %>%
group_by(Entity) %>%
filter(Year == 2017, Region == 'South Asia') %>%
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_sa
# Subset data for plot
plotData_top_five_sa <- internet %>% filter(Entity %in% top_five_internet_use_sa$Country)
# Plot time series
plot_series(
data = plotData_top_five_sa,
x = "Year",
xlabs = "Year",
y = "Internet_Usage",
ylabs = "Internet Usage (%)",
group = "Entity",
title = "Internet Usage Trends in Top South Asian Countries, 2017",
title.s = 12,
by = 5,
colors = c("#443A83", "#31688E", "#21918D", "#35B779", "#8FD744")
)
| Country | Internet_Usage |
|---|---|
| <chr> | <chr> |
| Maldives | 63.19% |
| Sri Lanka | 34.11% |
| Nepal | 21.40% |
| Pakistan | 17.11% |
| Afghanistan | 11.45% |

North America
# North America
top_three_internet_use_na <- internet_with_region %>%
distinct(Internet_Usage, .keep_all = TRUE) %>%
group_by(Entity) %>%
filter(Year == 2017, Region == 'North America') %>%
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_three_internet_use_na
# Subset data for plot
plotData_top_three_na <- internet %>% filter(Entity %in% top_three_internet_use_na$Country)
# Plot time series
plot_series(
data = plotData_top_three_na,
x = "Year",
xlabs = "Year",
y = "Internet_Usage",
ylabs = "Internet Usage (%)",
group = "Entity",
title = "Internet Usage Trends in Top North American Countries, 2017",
title.s = 12,
by = 10,
colors = c("#443A83", "#21918D", "#8FD744")
)
| Country | Internet_Usage |
|---|---|
| <chr> | <chr> |
| Bermuda | 98.37% |
| Canada | 92.70% |
| United States | 87.27% |

European Union
# EU country codes
EUCodes <- data.frame(
Code = c('AUT', 'BEL', 'BGR', 'HRV', 'CYP', 'CZE', 'DNK', 'EST', 'FIN', 'FRA', 'DEU', 'GRC', 'HUN', 'IRL', 'ITA', 'LVA', 'LTU', 'LUX', 'MLT', 'NLD', 'POL', 'PRT', 'ROU', 'SVK', 'SVN', 'ESP', 'SWE'),
Region = replicate(27, 'European Union')
)
# https://www23.statcan.gc.ca/imdb/p3VD.pl?Function=getVD&TVD=141329
# This list was used for the country codes. As of writing, there are only twenty-seven (27) members (https://european-union.europa.eu/principles-countries-history/country-profiles_en), which means that United Kingdom was excluded from after formally leaving in 2020 (https://www.ema.europa.eu/en/about-us/history-ema/brexit-united-kingdoms-withdrawal-european-union).
# Join 'Code' from the internet and EUCodes tables to identify a country's region
internet_eu <- merge(internet, EUCodes, by = 'Code', all = TRUE) %>%
filter(Region == 'European Union')
# European Union
top_five_internet_use_eu <- internet_eu %>%
distinct(Internet_Usage, .keep_all = TRUE) %>%
group_by(Entity) %>%
filter(Year == 2017, Region == 'European Union') %>%
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_eu
# Subset data for plot
plotData_top_five_eu <- internet %>% filter(Entity %in% top_five_internet_use_eu$Country)
# Plot time series
plot_series(
data = plotData_top_five_eu,
x = "Year",
xlabs = "Year",
y = "Internet_Usage",
ylabs = "Internet Usage (%)",
group = "Entity",
title = "Internet Usage Trends in Top European Union Countries, 2017",
title.s = 12,
by = 10,
colors = c("#443A83", "#31688E", "#21918D", "#35B779", "#8FD744")
)
| Country | Internet_Usage |
|---|---|
| <chr> | <chr> |
| Luxembourg | 97.36% |
| Denmark | 97.10% |
| Netherlands | 93.20% |
| Sweden | 93.01% |
| Estonia | 88.10% |

Internet Usage by Region
- North America and the European Union lead the seven regions with the highest share of internet users and have demonstrated immensely rapid increases in usage over time, based on the graph.
- Latin America & Caribbean and East Asia & Pacific rank third and fourth, respectively, with their internet usage remaining relatively stable.
- South Asia, Africa Western and Central, and *Africa Eastern and Southern** had the lowest internet usage and experienced the slowest growth in accessibility during the period.
Note: The data used for Africa Western and Central is from 2015, while the data for all other regions is from 2017.
# Top five countries per region
highlights <- rbind(
top_five_internet_use_aes %>% mutate(Region="Africa Eastern and Southern"),
top_five_internet_use_awc %>% mutate(Region="Africa Western and Central"),
top_five_internet_use_lac %>% mutate(Region="Latin America & Caribbean"),
top_five_internet_use_eap %>% mutate(Region="East Asia & Pacific"),
top_five_internet_use_sa %>% mutate(Region="South Asia"),
top_three_internet_use_na %>% mutate(Region="North America"),
top_five_internet_use_eu %>% mutate(Region="European Union")
)
# Top country per region
top_countries <- highlights %>%
group_by(Region) %>%
top_n(1, Internet_Usage)
# Internet usages of regions of interest
internet_regionsOfInterest <- rbind(
internet_with_region %>%
filter(Region %in% c('Latin America & Caribbean',
'East Asia & Pacific',
'South Asia',
'North America')),
internet_with_region23 %>%
filter(Region %in% c('Eastern Africa',
'Southern Africa',
'Western Africa',
'Middle Africa')) %>%
mutate(Region = ifelse(Region %in% c('Eastern Africa','Southern Africa'),
'Africa Eastern and Southern', 'Africa Western and Central')),
internet_eu
)
# Most recent data for the 'Africa Western and Central' region
most_recent_awc <- internet %>%
filter(Year == 2015, Entity == 'Africa Western and Central')
# Seven regions' internet usages in 2017
internetUsage_regions <- internet %>%
filter(Year == 2017, Entity %in% internet_regionsOfInterest$Region) %>%
bind_rows(most_recent_awc) %>%
mutate(Internet_Usage = label_percent(accuracy = 0.01)(Internet_Usage/100)) %>%
select(c("Entity", "Internet_Usage")) %>%
rename (Region = Entity) %>%
arrange(desc(Internet_Usage))
internetUsage_regions
# Subset data for plot
plotData_region_internet <- internet %>% filter(Entity %in% internet_regionsOfInterest$Region)
# Plot time series
plot_series(
data = plotData_region_internet,
x = "Year",
xlabs = "Year",
y = "Internet_Usage",
ylabs = "Internet Usage (in %)",
group = "Entity",
title = "Internet Usage Trends in Seven Global Regions",
title.s = 13,
by = 10,
colors = c("#472D7B", "#3B528B", "#2C728E", "#21918D", "#28AE80", "#72D077", "#ACDC35")
)
| Region | Internet_Usage |
|---|---|
| <chr> | <chr> |
| North America | 87.83% |
| European Union | 78.68% |
| <span style=white-space:pre-wrap>Latin America & Caribbean </span> | 62.47% |
| <span style=white-space:pre-wrap>East Asia & Pacific </span> | 54.93% |
| South Asia | 29.50% |
| Africa Western and Central | 25.57% |
| Africa Eastern and Southern | 21.28% |

Countries with the most internet users
Based on the World Population Review, all of these countries are among the top ten most populous nations, with four of them also ranking in the top five (excluding Brazil).
# Top five countries with the most internet users
top_five_internet_users <- people %>%
group_by(Entity) %>%
filter(Year == max(Year), Code != 'null', Entity != 'World') %>%
arrange(desc(Users)) %>%
ungroup() %>%
top_n(5, Users) %>%
select(c("Entity", "Users"))
# Plot bar graph
plot_bar(
data = top_five_internet_users,
group = "Entity",
xlabs = "Number of Internet Users",
num = "Users",
ylabs = "",
title = "Top Five Countries by Number of Internet Users",
title.s = 13
)

Relationship between internet usage and broadband subscriptions for 2019
- The correlational analysis revealed a moderately high positive correlation $(r = 0.56)$ between internet usage and broadband subscriptions in 2019, which is statistically significant at a 0.01 level $(p = 4.914e^{-07})$, allowing us to reject the null hypothesis of no correlation.
- We are at least 99% confident that the true correlation coefficient $(ρ)$ lies within the range of 0.3730 to 0.7018.
- This positive relationship is also visually apparent in the scatter plot below.
# Join 'internet' and 'broadband' tables
internet_and_broadband_2019 <- internet %>%
inner_join(broadband, by = c("Entity", "Code", "Year")) %>%
filter(Year == 2019)
# Perform a Pearson correlation test
pearson_corr <- data.frame(
Correlation_Coefficient = cor.test(internet_and_broadband_2019$Internet_Usage,
internet_and_broadband_2019$Broadband_Subscriptions,
method = "pearson")$estimate,
P=cor.test(internet_and_broadband_2019$Internet_Usage,
internet_and_broadband_2019$Broadband_Subscriptions,
method = "pearson")$p.value,
CI_Lower=(cor.test(internet_and_broadband_2019$Internet_Usage,
internet_and_broadband_2019$Broadband_Subscriptions,
method = "pearson")$conf.int)[1],
CI_Upper=(cor.test(internet_and_broadband_2019$Internet_Usage,
internet_and_broadband_2019$Broadband_Subscriptions,
method = "pearson")$conf.int)[2]
)
rownames(pearson_corr) <- "Value"
print(pearson_corr)
# Plot scatter points
scatter_for_corr <- ggplot(internet_and_broadband_2019, aes(x = Internet_Usage, y = Broadband_Subscriptions)) +
geom_point(color = "#8486B3", size = 2.5) +
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 = 12,
face = "bold")
) +
labs(x = '\nInternet Usage (%)', y = 'Broadband Subscriptions\n') +
ggtitle("\nInternet Usage vs. Broadband Subscriptions, 2019\n") +
scale_x_continuous(expand = c(0.00, 0),
limits = c(0, 110),
breaks = seq(0, 100, by = 20)) +
scale_y_continuous(expand = c(0.00, 0),
limits = c(0, 50),
breaks = seq(0, 50, by = 5))
scatter_for_corr
Correlation_Coefficient P CI_Lower CI_Upper
Value 0.5590077 4.913904e-07 0.3730323 0.7017988

Conclusions
Based on the data and results of the analyses, the following conclusions can be drawn about the global state of internet accessibility:
- The highest internet usage by population share worldwide is concentrated in several Middle Eastern countries.
- Western regions experienced a significantly quicker growth in internet accessibility compared to their eastern counterparts.
- The countries with the highest internet usage within a region are not necessarily those with the largest land areas.
- Conversely, the most populous countries tend to have the greatest total number of internet users.
- In 2019, countries with a higher percentage of internet users in their population also had a corresponding increase in fixed broadband subscriptions (at downstream speeds of 256 kbit/s or more).
