Poverty headcount ratio at $6.85 a day (2017 PPP) (% of population)

Source: worldbank.org, 03.09.2025

Year: 2023

Flag Country Value Value change, % Rank
Argentina Argentina 16.4 +18% 20
Armenia Armenia 56.9 +2.15% 3
Bolivia Bolivia 16.5 -10.8% 19
Brazil Brazil 23.4 -7.51% 15
Colombia Colombia 37.6 -6.47% 8
Costa Rica Costa Rica 15.3 -10.5% 21
Dominican Republic Dominican Republic 16.9 -16.3% 18
Ecuador Ecuador 30.8 -0.324% 10
Georgia Georgia 49.1 -13.3% 5
Guatemala Guatemala 47.3 +5.58% 6
Honduras Honduras 53.3 -2.2% 4
Indonesia Indonesia 69.6 -0.996% 1
Iran Iran 36.1 -7.44% 9
Iraq Iraq 28 -12.5% 13
Panama Panama 19.8 -2.46% 17
Peru Peru 38.3 +1.32% 7
Philippines Philippines 58.7 -5.78% 2
Paraguay Paraguay 23.2 -11.8% 16
Palestinian Territories Palestinian Territories 28.6 +3.25% 12
El Salvador El Salvador 29.9 -8.56% 11
Thailand Thailand 10.1 -21.7% 22
Uruguay Uruguay 6.6 +4.76% 23
United States United States 2 -9.09% 24
Uzbekistan Uzbekistan 24.6 -24.1% 14

The poverty headcount ratio at $6.85 a day (2017 PPP) is a crucial indicator that reflects the percentage of a country's population living on less than this daily income, adjusted for purchasing power parity (PPP) to account for cost of living variations between countries. This threshold was established to update poverty measurement, aiming to offer a clearer picture of the economic struggles faced by global populations. Understanding this statistic is essential as it serves as a benchmark for poverty eradication policies and economic development strategies.

As of 2023, the median poverty headcount ratio stands at 21.25%, indicating that approximately one out of five individuals in the assessed populations lives below this threshold. This figure reflects ongoing challenges in tackling poverty on a global scale despite numerous efforts. The distribution of poverty is not uniform across regions; for instance, Indonesia has a dramatic poverty headcount of 61.8%, while countries like Panama and Costa Rica show significantly lower rates of 12.9% and 12.7%, respectively. This stark contrast highlights the varying economic conditions and effectiveness of social safety nets in different regions.

The top five areas marked by a high poverty headcount include Indonesia, Ecuador, Panama, and Costa Rica. Indonesia's figure, at 61.8%, is particularly alarming and reveals systemic issues such as lack of access to quality education, healthcare, and employment opportunities. In comparison, although Ecuador shows a significant poverty ratio at 29.6%, it still diverges sharply from the levels exhibited by higher-performing nations like Panama and Costa Rica, which maintain over ten-point lower rates. This variation showcases the influence of national policies, economic structures, and social developments. Countries with robust social programs, economic stability, and inclusive growth strategies tend to exhibit lower poverty rates.

The bottom five areas, while appearing as a more diverse set, do not serve as a viable comparison since they overlap with the top data sets. Costa Rica and Panama's relatively low poverty headcount indicators signify the effectiveness of the socio-economic policies that have been in place. However, it is concerning that despite their lower figures, the comparison with Ecuador and Indonesia shows that geographic and cultural considerations can heavily influence poverty dynamics.

The trend of global poverty values from 1981 to 2022 showcases a general decline in poverty rates over the decades. Notable is the drop from 68.6% in 1981 to 44.9% in 2022. This gradual decrease suggests progress towards global poverty reduction goals, aligning with numerous international efforts such as the Sustainable Development Goals (SDGs). However, there are fluctuations, such as the uptick to 47.2% in 2020, likely linked to economic disturbances caused by the COVID-19 pandemic. This highlights the vulnerability of populations living on the edge, reliant on everyday income, and how external factors can abruptly reverse progress in poverty alleviation.

Several factors affect the poverty headcount ratio, including economic growth, education access, healthcare availability, and social protection mechanisms. Countries that prioritize education tend to empower their populations, helping to break the cycle of poverty. Improved healthcare systems, particularly crucial in preventing economic shocks due to ill-health, also play a significant role. Additionally, social safety nets, such as unemployment benefits, child allowances, and pensions, can shield vulnerable populations during economic downturns and contribute to lower poverty headcount ratios.

Addressing poverty effectively requires implementing targeted strategies. Policies should focus on inclusive economic growth that provides job opportunities, particularly in underserved communities. Enhancing access to quality education and vocational training equips individuals with skills necessary for modern job markets. Furthermore, expanding social safety nets and improving healthcare accessibility can protect vulnerable populations against poverty. Collaborations between governments, NGOs, and private sectors are vital in designing comprehensive approaches that cater to a country's specific social and economic context.

Nonetheless, there are inherent flaws in relying solely on the poverty headcount ratio as an indicator. While it offers an overview of economic distress, it does not capture the depth of poverty; individuals living just below the threshold may be just as vulnerable as those living far below it. This metric also does not address the nuances of regional disparities within countries or the living conditions of those categorized as poor. Therefore, while this statistic is valuable, it should be integrated with other indicators, such as Multidimensional Poverty Index (MPI) or income inequality measurements, to gain insights into the socio-economic environment.

In conclusion, the poverty headcount ratio at $6.85 a day serves as a critical measure of economic deprivation across global populations. While substantial progress has been made in reducing overall poverty levels since the early 1980s, persistent disparities and the impact of global events underscore the ongoing challenges in this arena. The ongoing examination of this indicator, along with complementary metrics, is essential for informing effective poverty alleviation strategies and ensuring the well-being of populations around the world.

                    
# Install missing packages
import sys
import subprocess

def install(package):
subprocess.check_call([sys.executable, "-m", "pip", "install", package])

# Required packages
for package in ['wbdata', 'country_converter']:
try:
__import__(package)
except ImportError:
install(package)

# Import libraries
import wbdata
import country_converter as coco
from datetime import datetime

# Define World Bank indicator code
dataset_code = 'SI.POV.UMIC'

# Download data from World Bank API
data = wbdata.get_dataframe({dataset_code: 'value'},
date=(datetime(1960, 1, 1), datetime.today()),
parse_dates=True,
keep_levels=True).reset_index()

# Extract year
data['year'] = data['date'].dt.year

# Convert country names to ISO codes using country_converter
cc = coco.CountryConverter()
data['iso2c'] = cc.convert(names=data['country'], to='ISO2', not_found=None)
data['iso3c'] = cc.convert(names=data['country'], to='ISO3', not_found=None)

# Filter out rows where ISO codes could not be matched — likely not real countries
data = data[data['iso2c'].notna() & data['iso3c'].notna()]

# Sort for calculation
data = data.sort_values(['iso3c', 'year'])

# Calculate YoY absolute and percent change
data['value_change'] = data.groupby('iso3c')['value'].diff()
data['value_change_percent'] = data.groupby('iso3c')['value'].pct_change() * 100

# Calculate ranks (higher GDP per capita = better rank)
data['rank'] = data.groupby('year')['value'].rank(ascending=False, method='dense')

# Calculate rank change from previous year
data['rank_change'] = data.groupby('iso3c')['rank'].diff()

# Select desired columns
final_df = data[['country', 'iso2c', 'iso3c', 'year', 'value',
'value_change', 'value_change_percent', 'rank', 'rank_change']].copy()

# Optional: Add labels as metadata (could be useful for export or UI)
column_labels = {
'country': 'Country name',
'iso2c': 'ISO 2-letter country code',
'iso3c': 'ISO 3-letter country code',
'year': 'Year',
'value': 'GDP per capita (current US$)',
'value_change': 'Year-over-Year change in value',
'value_change_percent': 'Year-over-Year percent change in value',
'rank': 'Country rank by GDP per capita (higher = richer)',
'rank_change': 'Change in rank from previous year'
}

# Display first few rows
print(final_df.head(10))

# Optional: Save to CSV
#final_df.to_csv("gdp_per_capita_cleaned.csv", index=False)
                    
                
                    
# Check and install required packages
required_packages <- c("WDI", "countrycode", "dplyr")

for (pkg in required_packages) {
  if (!requireNamespace(pkg, quietly = TRUE)) {
    install.packages(pkg)
  }
}

# Load the necessary libraries
library(WDI)
library(dplyr)
library(countrycode)

# Define the dataset code (World Bank indicator code)
dataset_code <- 'SI.POV.UMIC'

# Download data using WDI package
dat <- WDI(indicator = dataset_code)

# Filter only countries using 'is_country' from countrycode
# This uses iso2c to identify whether the entry is a recognized country
dat <- dat %>%
  filter(countrycode(iso2c, origin = 'iso2c', destination = 'country.name', warn = FALSE) %in%
           countrycode::codelist$country.name.en)

# Ensure dataset is ordered by country and year
dat <- dat %>%
  arrange(iso3c, year)

# Rename the dataset_code column to "value" for easier manipulation
dat <- dat %>%
  rename(value = !!dataset_code)

# Calculate year-over-year (YoY) change and percentage change
dat <- dat %>%
  group_by(iso3c) %>%
  mutate(
    value_change = value - lag(value),                              # Absolute change from previous year
    value_change_percent = 100 * (value - lag(value)) / lag(value) # Percent change from previous year
  ) %>%
  ungroup()

# Calculate rank by year (higher value => higher rank)
dat <- dat %>%
  group_by(year) %>%
  mutate(rank = dense_rank(desc(value))) %>% # Rank countries by descending value
  ungroup()

# Calculate rank change (positive = moved up, negative = moved down)
dat <- dat %>%
  group_by(iso3c) %>%
  mutate(rank_change = rank - lag(rank)) %>% # Change in rank compared to previous year
  ungroup()

# Select and reorder final columns
final_data <- dat %>%
  select(
    country,
    iso2c,
    iso3c,
    year,
    value,
    value_change,
    value_change_percent,
    rank,
    rank_change
  )

# Add labels (variable descriptions)
attr(final_data$country, "label") <- "Country name"
attr(final_data$iso2c, "label") <- "ISO 2-letter country code"
attr(final_data$iso3c, "label") <- "ISO 3-letter country code"
attr(final_data$year, "label") <- "Year"
attr(final_data$value, "label") <- "GDP per capita (current US$)"
attr(final_data$value_change, "label") <- "Year-over-Year change in value"
attr(final_data$value_change_percent, "label") <- "Year-over-Year percent change in value"
attr(final_data$rank, "label") <- "Country rank by GDP per capita (higher = richer)"
attr(final_data$rank_change, "label") <- "Change in rank from previous year"

# Print the first few rows of the final dataset
print(head(final_data, 10))