Data: This report is based off of the OECD Creditor Reporting System data, accessed via the bulk download files on 6/18/2024.
Filters: I have looked at a subset of the CRS as follows:
Country Programmable Aid (excluding items listed in CPA definition)
Rows with commitments data
Low income and lower middle income countries only
Herfindahl-Hirschman Index (HHI): For a given recipient, the sum of squared shares of aid from each donor
HHI via sum across countries…
How to interpret: How concentrated by donor are all CPA commitments to low income countries? Here we calculate HHI for low income countries (as a group). For each donor we add up all the CPA commitments they made to low income countries in a given year, and then calculating HHI.
#Total
#plotTS(yr, "hhi","HHI","HHI for low and lower middle income countries, 2005-2022")
#HHI based on totals of for each income group
income_hhi_totals <- yr_income#%>%
#bind_rows(yr)%>%
#mutate(Income=ifelse(is.na(Income),"Total",Income))
plotTS(income_hhi_totals, "hhi","HHI","HHI for low and lower middle income countries (Total), 2005-2022", GROUP="Income")
Median HHI across countries…
How to interpret: For a typical low income country, what is the HHI? Here we calculate the HHI for each country and take a simple median across countries in each income group.
#HHI averages across countries in each income group
income_hhi_avg <- yr_recipient%>%
group_by(Year, Income)%>%
summarise(hhi_median = median(hhi))
plotTS(income_hhi_avg, "hhi_median","HHI","Median HHI across low and lower middle income countries, 2005-2022", GROUP="Income")
HHI via sum across countries…
How to interpret: How concentrated by donor are all CPA commitments to countries in Sub-Saharan Africa? Here we calculate HHI for each region as a group. For each donor we add up all the CPA commitments they made to each region in a given year, and then calculating HHI.
#Total
#plotTS(yr, "hhi","HHI","HHI for low and lower middle income countries, 2005-2022")
#HHI based on totals of each Region
region_hhi_totals <- yr_region%>%
bind_rows(yr)%>%
mutate(Region=ifelse(is.na(Region),"Total",Region))
plotTS(region_hhi_totals, "hhi","HHI","HHI for low and lower middle income countries (Total), 2005-2022", FACET="Region")
Median HHI across countries…
How to interpret: For a typical country in sub-saharan africa, what is the HHI? Here we calculate the HHI for each country and take a simple median across countries in each region.
#HHI averages across countries in each income group
region_hhi_avg <- yr_recipient%>%
group_by(Year, Region)%>%
summarise(hhi_median = median(hhi))
plotTS(region_hhi_avg, "hhi_median","HHI","Median HHI across low and lower middle income countries, 2005-2022", FACET="Region")
#By Country
licplotdf <- yr_recipient%>%
filter(Income %in% c("Low income"))%>%
addSummaryCol("median","hhi")
plotTS(licplotdf, "hhi","HHI","HHI for low income countries, 2005-2022", FACET="RecipientName", FACET_SORT = "Slope", FACET_CONST="median")
lmicplotdf <- yr_recipient%>%
filter(Income %in% c("Lower middle income"))%>%
addSummaryCol("median","hhi")
plotTS(lmicplotdf, "hhi","HHI","HHI for lower middle income countries, 2005-2022", FACET="RecipientName", FACET_SORT = "Slope", FACET_CONST="median")
# #https://stackoverflow.com/questions/57580848/get-trendline-slope-of-multiple-time-series-by-group
# hhi_slopes <- hhi%>%
# group_by(Income)%>%
# mutate(rownum = row_number())%>%
# summarise(HHI_Slope = lm(HHI ~ rownum)$coefficients['rownum'])
Single country example, before (2006) and after (2022):
HHI via sum across countries…
How to interpret: How concentrated by channel are all CPA commitments to low income countries? Here we calculate HHI for low income countries (as a group). For each channel we add up all the CPA commitments they made to low income countries in a given year, and then calculating HHI.
#Total
#plotTS(yr, "hhi","HHI","HHI for low and lower middle income countries, 2005-2022")
#HHI based on totals of for each income group
income_hhi_totals <- yr_ch_income#%>%
#bind_rows(yr_ch)%>%
#mutate(Income=ifelse(is.na(Income),"Total",Income))
plotTS(income_hhi_totals, "hhi","HHI","HHI for low and lower middle income countries (Total), 2005-2022", GROUP="Income")
Median HHI across countries…
How to interpret: For a typical low income country, what is the HHI? Here we calculate the HHI for each country and take a simple median across countries in each income group.
#HHI averages across countries in each income group
income_hhi_avg <- yr_ch_recipient%>%
group_by(Year, Income)%>%
summarise(hhi_median = median(hhi))
plotTS(income_hhi_avg, "hhi_median","HHI","Median HHI across low and lower middle income countries, 2005-2022", GROUP="Income")
HHI via sum across countries…
How to interpret: How concentrated by channels are all CPA commitments to countries in Sub-Saharan Africa? Here we calculate HHI for each region as a group. For each donor we add up all the CPA commitments they made to each region in a given year, and then calculating HHI.
#Total
#plotTS(yr, "hhi","HHI","HHI for low and lower middle income countries, 2005-2022")
#HHI based on totals of each Region
region_hhi_totals <- yr_ch_region#%>%
#bind_rows(yr_ch)%>%
#mutate(Region=ifelse(is.na(Region),"Total",Region))
plotTS(region_hhi_totals, "hhi","HHI","HHI for low and lower middle income countries (Total), 2005-2022", FACET="Region")
Median HHI across countries…
How to interpret: For a typical country in sub-saharan africa, what is the HHI? Here we calculate the HHI for each country and take a simple median across countries in each region.
#HHI averages across countries in each income group
region_hhi_avg <- yr_ch_recipient%>%
group_by(Year, Region)%>%
summarise(hhi_median = median(hhi))
plotTS(region_hhi_avg, "hhi_median","HHI","Median HHI across low and lower middle income countries, 2005-2022", FACET="Region")
#By Country
licplotdf <- yr_ch_recipient%>%
filter(Income %in% c("Low income"))%>%
addSummaryCol("median","hhi")
plotTS(licplotdf, "hhi","HHI","HHI for low income countries, 2005-2022", FACET="RecipientName", FACET_SORT = "Slope", FACET_CONST="median")
lmicplotdf <- yr_ch_recipient%>%
filter(Income %in% c("Lower middle income"))%>%
addSummaryCol("median","hhi")
plotTS(lmicplotdf, "hhi","HHI","HHI for lower middle income countries, 2005-2022", FACET="RecipientName", FACET_SORT = "Slope", FACET_CONST="median")
# #https://stackoverflow.com/questions/57580848/get-trendline-slope-of-multiple-time-series-by-group
# hhi_slopes <- hhi%>%
# group_by(Income)%>%
# mutate(rownum = row_number())%>%
# summarise(HHI_Slope = lm(HHI ~ rownum)$coefficients['rownum'])