Tuesday, October 21, 2025

Some Papua New Guinea information doodles


I wrote a evaluation final week of Battle, reform, growth and bust: an financial historical past of Papua New Guinea since independence by Stephen Howes and others. The evaluation was revealed within the Devpolicy Weblog at The Australian Nationwide College’s Improvement Coverage Centre within the Crawford College of Public Coverage. My publish at present is teasing out just a few data-related points I thought of and explored whereas studying the ebook and writing that evaluation.

What’s ‘actual’?

First, think about this chart of actual gross home product (GDP) per particular person, which differs a bit from the one I included in my evaluation:

In reality, it’s nearer to a chart utilized by PNG’s Treasurer Ian Ling-Stuckey when he launched the ebook at College of PNG on 20 August. The Treasurer selected to make use of shopper worth index (CPI) moderately than the GDP deflator to make costs comparable over time. His rationale was to focus on adjustments in dwelling requirements for abnormal Papua New Guineans. He additionally dropped the total GDP sequence, to deal with non-resources GDP, for a similar purpose. These are each cheap selections. Their mixed influence is to make tremendously seen the decline in common dwelling requirements over the independence interval, from round 11,000 kina per particular person in 2024 costs 50 years in the past, to eight,500 at present throughout the “sluggish bust” interval recognized within the ebook in query.

That’s proper, the financial well-being of the typical Papua New Guinean, measured by way of what they will purchase with their ‘share’ of the nation’s GDP, is greater than 20% decrease at present than it was at independence 50 years in the past.

Right here is the chart I really included within the ebook evaluation, which is basically the identical as Determine 1.2 within the ebook aside from some small aesthetic enhancements. It makes use of the GDP deflator, and it’s noticeable that there was much less inflation by this measure (and therefore GDP per particular person appears to have elevated over the interval, moderately than declined considerably).

For the selection of CPI versus GDP deflator, it’s all concerning the basket of products used to make up the value index—what the typical family consumes, or what’s produced within the nation. In an earlier 2022 work, Howes explicitly urged utilizing CPI as a deflator when keen on how a lot customers can purchase with their notional share of GDP, and the GDP deflator when trying to examine the worth of what’s produced within the nation. For a normal dialogue of financial well-being in Papua New Guinea which is what the Treasurer needed in August, I agree with the usage of CPI. In my evaluation I went with the GDP deflator as a substitute, solely as a result of that meant I used to be successfully replicating a chart from the ebook; I didn’t need to go too far into my very own evaluation.

The difficulty of GDP or non-resource GDP is an fascinating one, and is extensively mentioned within the ebook. I selected to incorporate them each as a result of the divergence, notably throughout the newest “bust” interval, is of significance in its personal proper. Financial exercise that’s not directly brought on by assets remains to be included in non-resource GDP (for instance, authorities exercise funded with taxes; and worth added in home industries that staff from the useful resource business buy items and providers from). Howes et al would have used Gross Nationwide Earnings or some variant of it if they might however it isn’t accessible.

Some other dialogue factors associated to this chart are just a few finer factors of chart sharpening: my resolution to make use of gray background rectangles moderately than vertical strains (that are extra cluttering, for my part) to differentiate the 4 phases; the place to incorporate the label annotations of every part; and the usage of colored direct labels on the 2 time sequence as a substitute of a extra typical (however extra effort for the reader) legend.

One of many nice issues about this ebook is that each one the financial time-series information behind it has been revealed, and is saved updated by ANU, because the PNG Financial Database.

Information availability is a serious downside for Papua New Guinea. Before everything within the issues is its existence within the first place; I’ve already famous that we don’t have a Gross Nationwide Earnings measure, and different severe gaps embody a family revenue and expenditure survey that could possibly be used to measure poverty and meals safety, and a labour power survey for understanding employment. Efforts are underneath means to enhance all this. However even when it exists it may be exhausting to seek out, much more so for historic information. The ANU’s PNG Financial Database is a superb public-spirited response to this facet of the issue, drawing collectively what financial time sequence can be found into one spot.

Observe that the ‘about’ data is a bit outdated for this database; information is now extra updated than is claimed (for instance, inhabitants goes as much as 2024, however the ‘about’ solely claims it goes as much as 2021).

Anyway, the existence of this database, which will be accessed as a Tableau interactive instrument or downloaded in bulk as a CSV, is what makes it potential for us to re-create charts just like the above, utilizing the identical information because the ebook. Right here’s the R code for drawing the primary of the 2 GDP charts above. The code for the second chart is omitted right here however will be discovered on GitHub.

library(tidyverse)
library(spcstyle)
library(scales)
library(ggtext)
library(RColorBrewer)
library(rsdmx)

#---------------download information, arrange palette---------------

# Learn within the ANU's PNG financial database. Obtain from 
# https://pngeconomic.devpolicy.org/
pnged <- read_csv("PNG financial database.csv")

# era_cols <- brewer.pal(6, "Set1")[1:4]
era_cols <- c("grey10", "white", "grey10", "white")
gdp_cols <- brewer.pal(7, "Set1")[c(5,7)]


#-------------------------CPI so we see costs dealing with consumers---------

 # ratio of CPI to non-resource GDP deflator
 cpi_def <- pnged |> 
   filter(Variable%in% c("Non-resource GDP deflator", "CPI deflator")) |> 
   choose(Variable, 12 months, Quantity) |> 
   unfold(Variable, Quantity) |> 
   # rebase to a set 12 months:
   mutate(throughout(`CPI deflator`:`Non-resource GDP deflator`, 
                 operate(x){x / x[Year == 1990]})) |> 
   mutate(ratio = `CPI deflator` / `Non-resource GDP deflator`) 
 
 # from 1990 to 2022, CPI has elevated about 40% greater than the GDP deflator
 # so if you wish to see the dwelling requirements of PNGans, there's a case to make use of
 # the CPI as a substitute
 
 # draw plot:
pnged |> 
   filter(Variable %in% c("Non-resource GDP (present costs, new sequence)", 
                          "GDP (present costs, new sequence)", "Inhabitants")) |> 
   choose(Variable, 12 months, Quantity) |> 
   unfold(Variable, Quantity) |> 
   mutate(nr_gdp_pp = `Non-resource GDP (present costs, new sequence)` / Inhabitants * 1e6,
          gdp_pp = `GDP (present costs, new sequence)` / Inhabitants * 1e6 ) |> 
   choose(12 months, nr_gdp_pp, gdp_pp) |> 
   collect(variable, worth, -12 months) |> 
   drop_na() |>
   left_join(cpi_def, by = "12 months") |> 
   mutate(worth = worth  / `CPI deflator` * filter(cpi_def, 12 months == 2024)$`CPI deflator`) |> 
   ggplot(aes(x = 12 months, y = worth, color = variable)) +
   annotate("rect", xmin = 1975, xmax = 1988.5, ymin = -Inf, ymax = Inf, fill = era_cols[1], alpha = 0.1) +
   annotate("rect", xmin = 1988.5, xmax = 2003.5, ymin = -Inf, ymax = Inf, fill = era_cols[2], alpha = 0.1) +
   annotate("rect", xmin = 2003.5, xmax = 2013.5, ymin = -Inf, ymax = Inf, fill = era_cols[3], alpha = 0.1) +
   annotate("rect", xmin = 2013.5, xmax = 2022.5, ymin = -Inf, ymax = Inf, fill = era_cols[4], alpha = 0.1) +
   geom_line(linewidth = 2) +
  # choice, can uncomment this and also you get some extent exhibiting every remark. 
  # It's useful to see the precise level, however provides muddle.
  #   geom_point(color = "white") +
   annotate("textual content", label = c("'Battle'", "'Reform'", "'Increase'", "'Bust'"), y = 14100, 
            x = c(1981.5, 1996, 2009, 2018), hjust = 0.5, fontface = 4, alpha = 0.8) +
   annotate("textual content", color = gdp_cols, x = 2020, y = c(10200, 7600), 
            label = c("All GDP", "Non-resources GDP")) +
   scale_colour_manual(values = gdp_cols) +
   scale_y_continuous(label = comma, breaks = 6:14 * 1000) +
   labs(y = "Kina (2024 costs, primarily based on CPI deflator)",
        x = "",
        title = "Actual gross home product per particular person in Papua New Guinea",
        subtitle = "Annotated with the durations utilized in Battle, reform, growth and bust: an financial historical past of Papua New Guinea since independence",
        caption = "Supply: ANU's PNG Financial Database, https://pngeconomic.devpolicy.org/")  +
   theme(legend.place ="none",
         plot.subtitle = element_markdown())

Inhabitants

Probably the most basic nationwide statistic is at all times inhabitants, and sadly for PNG there’s greater than ordinary uncertainty about how many individuals reside within the nation. A census in PNG—with its geographical, linguistic, cultural, political and safety challenges—is likely one of the more durable workouts in official statistics assortment wherever on the planet. The important thing information concerning inhabitants estimates there are:

  • Beginning and demise registration has inadequate protection to estimate demise charges. As an alternative these need to be estimated by survey or census questions comparable to “lady X on this family, has she given delivery up to now 12 months; and if that’s the case is the kid nonetheless alive?”, which might then be matched with mannequin life tables.
  • The 2024 Census, delayed from 2021 due to Covid and minimize all the way down to a minimalist six questions per family (which don’t embody questions like the instance above, however do embody not less than intercourse and age), is because of report quickly.
  • The 2011 Census (the report of which is right here) has been criticised and its inhabitants estimates are regarded by many (for instance, within the Battle, reform, growth and bust ebook) as unfit to be used.
  • The 2000 Census is also known as “the final credible inhabitants estimate” or in comparable phrases. The inhabitants estimates within the ANU PNG Financial Database take the 2000 Census inhabitants as a reference level and assume a gradual progress price from that time on.
  • An train by the nationwide statistics workplace and WorldPop in 2023 revealed an estimated inhabitants for 2021 (as at early September 2025 the outcomes have been on the official PNG statistics web site). A statistical studying mannequin was skilled on satellite tv for pc imagery with a malaria survey to supply the “floor reality” inhabitants. The end result (11.7m in 2021) was excessive by present requirements, however not out of the potential vary.
  • Varied modelled estimates exist, drawing on some or all the above (plus earlier censuses) in differing methods.

The state of play with regard to PNG’s inhabitants estimates is represented within the following chart:

On the time of writing (early September 2025), the Census and WorldPop level estimates are the official statistics on the PNG Nationwide Statistics Workplace web site. The UN Inhabitants Projections, that are re-disseminated by way of the Pacific Group’s Pacific Information Hub, and the inhabitants estimates within the ANU PNG Financial Database, are proven as clean strains.

The expansion between 2011 and 2021 implied by accepting each the 2011 Census and 2021 WorldPop estimates is implausibly fast (4.9% per 12 months). Nonetheless, there isn’t any means of figuring out if the 2011 determine is an undercount, the 2021 an overestimate, or each.

The ANU’s estimate—which in the end return to modelling efforts by Bourke and Allen in 2021—are in all probability a bit of low, some extent made by the Treasurer when he launched the ebook. However once more, not out of the believable vary.

Naturally, all this uncertainty feeds by means of to different statistics: the denominator for GDP per capita, enrolment charges, and so on.; and the development of sampling frames and survey weights for inhabitants surveys.

For bettering this, loads depends upon getting dependable Census information.

Right here’s the code for creating that inhabitants estimates graphic:

#--------------population, comparability of knowledge sources--------------
pop_anu <- pnged |> 
  filter(Variable %in% c("Inhabitants")) |> 
  choose(12 months, inhabitants = Quantity)

pop_pdh <- readSDMX("https://stats-sdmx-disseminate.pacificdata.org/relaxation/information/SPC,DF_POP_PROJ,3.0/A.PG.MIDYEARPOPEST._T._T?startPeriod=1975&endPeriod=2025&dimensionAtObservation=AllDimensions") |> 
  as_tibble() |> 
  choose(12 months = TIME_PERIOD,
         `UN methodology` = obsValue) |> 
  mutate(12 months = as.numeric(12 months))

# sources:
# https://png-data.sprep.org/system/recordsdata/2011percent20Censuspercent20Nationalpercent20Report.pdf
# https://www.nso.gov.pg/statistics/inhabitants/ (for WorldPop, accessed 6/9/2025)
specifics <- tribble(~12 months, ~variable, ~worth,
                      2021, "WorldPop methodology", 11781779,
                      2011, "Census methodology", 7254442 + 20882, # together with each residents and non-citizens
                      2000, "Census methodology", 5171548 + 19235,
                      1990, "Census methodology", 3582333 + 25621,
                      1980, "Census methodology", 2978057 + 32670) |> 
  # make WorldPop seem first within the legend, higher visually:
  mutate(variable = fct_relevel(variable, "WorldPop methodology"))

# Draw plot
pop_anu |> 
  choose(12 months = 12 months, `ANU methodology` = inhabitants) |> 
  full_join(pop_pdh, by = "12 months") |> 
  collect(variable, worth, -12 months) |> 
  # make UN seem first in legend, higher visually:
  mutate(variable = fct_relevel(variable, "UN methodology")) |> 
  ggplot(aes(x = 12 months, y = worth, color = variable)) +
  geom_line(information = filter(specifics, grepl("Census", variable)), color = "grey50", linetype = 2) +
  geom_line() +
  geom_point(information = specifics, aes(color = NULL, form = variable), dimension = 3) +
  scale_shape_manual(values = c("Census methodology" = 19, "WorldPop methodology" = 15)) +
  scale_y_continuous(label = comma) +
  labs(form = "Single-year", color = "Multi-year",
       x = "", y = "",
      title = "Completely different estimates of Papua New Guinea's inhabitants",
    subtitle = "Independence to 2025",
  caption = "Supply: PNG Nationwide Statistics Workplace (for WorldPop); 2011 Nationwide Census Report; ANU PNG financial database; Pacific Information Hub.stat")

Employment

I discussed in my ebook evaluation that formal employment is lower than 5% of the overall inhabitants. A extra ordinary measure can be proportion of working age inhabitants, however I’d have needed to get that denominator from elsewhere and didn’t have time. Right here’s the chart I drew for myself to examine that this throwaway remark was justified:

What’s primarily fascinating for me is the very low and declining proportion of the inhabitants in formal employment. Nonetheless, it’s additionally fascinating to notice the info gaps referring to public sector employment; and the correlation of adjustments in complete employment with the “growth” and “bust” durations which might be the driving force of the unique ebook.

That chart was drawn with this code.

pnged |> 
  filter(Variable %in% c("Whole (excluding public service) employment",
                         "Public service employment")) |> 
  left_join(pop_anu, by = "12 months") |>
  mutate(Quantity = Quantity / inhabitants) |>
  mutate(Variable = fct_reorder(str_wrap(Variable, 30), Quantity, .desc = TRUE)) |> 
  ggplot(aes(x = 12 months, y = Quantity, color = Variable)) +
  annotate("rect", xmin = 1975, xmax = 1988.5, ymin = -Inf, ymax = Inf, fill = era_cols[1], alpha = 0.1) +
  annotate("rect", xmin = 1988.5, xmax = 2003.5, ymin = -Inf, ymax = Inf, fill = era_cols[2], alpha = 0.1) +
  annotate("rect", xmin = 2003.5, xmax = 2013.5, ymin = -Inf, ymax = Inf, fill = era_cols[3], alpha = 0.1) +
  annotate("rect", xmin = 2013.5, xmax = 2022.5, ymin = -Inf, ymax = Inf, fill = era_cols[4], alpha = 0.1) +
  geom_line() +
  annotate("textual content", label = c("'Battle'", "'Reform'", "'Increase'", "'Bust'"), y = 0.0585, 
            x = c(1981.5, 1996, 2009, 2018), hjust = 0.5, fontface = 4, alpha = 0.8) +
  scale_y_continuous(label = %, limits = c(0, 0.06)) +
  labs(x = "", y = "Proportion of inhabitants",
        title = "Formal employment in Papua New Guinea",
      subtitle = "As a proportion of the inhabitants (together with kids and aged)")

Vaccination

Lastly, I had observed within the ANU PNG Financial Database information on vaccination, which is referred to within the ebook however shouldn’t be but given a supply within the database documentation. There are too many observations for this to be survey information, so it have to be well being administrative information of some kind. I’d deal with this with nice warning. However the level made within the ebook is probably sound that these vaccination charges are low by world requirements, and never getting in the fitting course:

The code to supply that chart is comparable in sample to all of the code thus far.

pnged |> 
  filter(grepl("Immunization", Variable)) |> 
  ggplot(aes(x = 12 months, y = Quantity, color = Variable)) +
  annotate("rect", xmin = 1975, xmax = 1988.5, ymin = -Inf, ymax = Inf, fill = era_cols[1], alpha = 0.1) +
  annotate("rect", xmin = 1988.5, xmax = 2003.5, ymin = -Inf, ymax = Inf, fill = era_cols[2], alpha = 0.1) +
  annotate("rect", xmin = 2003.5, xmax = 2013.5, ymin = -Inf, ymax = Inf, fill = era_cols[3], alpha = 0.1) +
  annotate("rect", xmin = 2013.5, xmax = 2022.5, ymin = -Inf, ymax = Inf, fill = era_cols[4], alpha = 0.1) +
  geom_line() +
  annotate("textual content", label = c("'Battle'", "'Reform'", "'Increase'", "'Bust'"), y = 85, 
            x = c(1981.5, 1996, 2009, 2018), hjust = 0.5, fontface = 4, alpha = 0.8) +
  scale_y_continuous(label = percent_format(scale = 1)) +
  labs(x = "", y = "", color = "",
       title = "Immunization charges in Papua New Guinea",
      subtitle = "Proportion of youngsters 12-23 months for measles and DPT; one-year previous kids for HepB3. Deal with information with warning.") 

Effectively that’s it for at present. I simply thought I’d pop a few of these issues right into a weblog whereas I’ve been fascinated with them. I’ll actually be coming again to PNG subjects in some unspecified time in the future; and naturally this entire space is a substantial a part of my day job.



Related Articles

Latest Articles