Aprovizionarea cu energie a insulei Pacificului de @ellis2013nz

URMĂREȘTE-NE
16,065FaniÎmi place
1,142CititoriConectați-vă

Având în vedere că conflictul din Iran provoacă perturbări la nivel mondial pe piețele energetice, am atât un interes profesional, cât și un interes personal în furnizarea de energie în insulele Pacificului, ceea ce m-a condus la această postare pe blog. Aici mă uit la doar două aspecte ale energiei: generarea de electricitate și gătitul casnic. Nimic de lux aici, doar accesând câteva date și desenând câteva diagrame.

Generare de energie electrică

Aici este sursă de electricitate pentru țările insulare din Pacific, plus Australia și Noua Zeelandă, colectate de Our World In Data din datele Energy Institute care provin în cele din urmă din estimări guvernamentale:

Există o poveste destul de evidentă aici: cea mai mare parte a Pacificului este foarte dependentă de „petrol” (sub formă de motorină) pentru generarea majorității electricității sale. Există câțiva pași mici către sursele regenerabile care au loc în ultimii ani, dar vulnerabilitatea la un șoc de preț sau de disponibilitate pentru motorină este destul de evidentă.

Iată codul pentru producerea acestuia, folosind valorosul owidapi Pachetul R pentru a accesa API-ul Our World in Data.

#---------------Set up-----------------
library(owidapi)
library(tidyverse)
library(countrycode)
library(WDI)
library(jsonlite)
library(janitor)
library(httr2)


pic_codes <- 
  c(
    "ASM", "COK", "FSM", "FJI", "PYF", "GUM", "KIR", "MHL", "NRU", "NCL",
    "NIU", "MNP", "PLW", "PNG", "PCN", "WSM", "SLB", "TKL", "TON", "TUV",
    "VUT", "WLF", "AUS", "NZL"
  )
stopifnot(length(pic_codes) == 24)

# visual check we've got the right country codes for the Pacific:
countrycode::countrycode(pic_codes, origin = "iso3c", destination = "country.name.en")

#=======================electricity source===================

palette <- c(
  coal = "brown",
  gas = "magenta",
  oil = "red",
  kerosene = "red",
  electricity = "purple",
  solar = "yellow",
  wind = "steelblue",
  hydro = "darkblue",
  bioenergy = "lightgreen",
  charcoal = "grey",
  biomass = "darkgreen",
  'other renewables' = "darkgreen"
)

#-------------------electricity mix-----------------
elec_mix <- owid_get(
  chart_id = "share-elec-by-source",
  entities  = pic_codes
)

elec_data <- elec_mix |> 
   rename(country = entity_name) |> 
   select(-entity_id) |> 
   gather(variable, value, -country, -year) |>
   filter(value != 0) |> 
   filter(year > 2001) |> 
   mutate(variable = gsub("_share_of_electricity__pct", "", variable, fixed = TRUE),
          variable =gsub("_", " ", variable),
          variable =gsub(" excluding bioenergy", "", variable),
          variable = fct_drop(variable)) |> 
   mutate(variable = fct_relevel(variable, c("bioenergy", "hydro", "other renewables"), after = Inf)) |> 
   mutate(country = fct_relevel(country, c("Australia", "New Zealand"), after = Inf)) |> 
  group_by(country) |> 
  mutate(prop_pc= sum(value(variable %in% c("oil", "gas") & year == max(year))) 
         / sum(value(year == max(year)))) |> 
  ungroup() |> 
  mutate(country = fct_reorder(country, prop_pc))

# Draw chart
elec_data |> 
  ggplot(aes(x = year, y = value, fill = variable)) +
 facet_wrap(~country, ncol = 5) +
  geom_col() +
  scale_fill_manual(values = palette) +
  scale_y_continuous(label = percent_format(scale = 1)) +
   labs(y = "Percentage of electricity",
        fill = "Source:",
        title = "Share of electricity by source",
        subtitle = "Countries shown in increasing order of vulnerability of electricity to a petrochemicals price or availability crisis.",
        x = "",
        caption = "Source: Ember (2026); Energy Institute - Statistical Review of World Energy (2025). Data processed by Our World In Data.") +
   theme(axis.text.x = element_text(angle = 45, hjust = 1))

Combustibil pentru gătit

OK, deci generarea de energie electrică ar putea fi amenințată de lipsa motorinei. Ce zici de gătitul casnic? Următorul grafic se bazează pe baza de date definitivă a Organizației Mondiale a Sănătății privind energia pentru uz casnic, care modelează (pe baza datelor disponibile din sondajul gospodăriilor) ce gospodării folosesc pentru a găti:

Din nou, vedem o mare dependență de produsele petrochimice, în special de kerosen și gaze naturale lichide. Acesta din urmă a fost promovat ca un combustibil relativ curat și sănătos pentru gătit în comparație cu arderea biomasei (de exemplu, lemn, nuci de cocos etc.).

Țările melaneziene mai mari, cu populații rurale mari, sunt cele cu cea mai mare utilizare încă a biomasei pentru gătit. Majoritatea țărilor insulare din Pacific își fac cea mai mare parte din gătit cu energie derivată din petrol sau gaze (reținând din primul grafic că „electricitate” înseamnă adesea motorină, în cele din urmă).

Iată codul pentru a produce acea diagramă. Am folosit un LLM (uit care) pentru ca codul să acceseze API-ul în sine, dar l-am testat și l-am ajustat pentru a se potrivi cu stilul meu, iar diagrama este, desigur, propriul meu cod.

#--------------------cooking-------------------
# The definitive source is the WHO  WHO Household Energy Database 
# which draws on various household surveys
# See https://www.who.int/data/gho/data/themes/air-pollution/cooking-fuel-and-technology-database-by-fuel-category

# next half dozen lines of code were supplied by Co-pilot and minimally
# tweaked by me for my style
indicator_code <- "PHE_HHAIR_PROP_POP_CATEGORY_FUELS"  # % by fuel type (3)(https://millenniumindicators.un.org/wiki/spaces/SDGeHandbook/pages/35291272/Indicator+7.1.2)
url <- paste0("https://ghoapi.azureedge.net/api/", indicator_code)

resp <- request(url) |> 
  req_headers(`Accept` = "application/json")  |> 
  req_perform()

cooking_data <- fromJSON(resp_body_string(resp), flatten = TRUE)$value |>
  as_tibble() |> 
  clean_names()


pic_cooking_data <-cooking_data |> 
  filter(spatial_dim %in% pic_codes) |> 
  filter(dim1 == "RESIDENCEAREATYPE_TOTL") |> 
  mutate(fuel_type = tolower(gsub("HOUSEHOLDCOOKINGFUEL_FUEL_", "", dim2))) |> 
  mutate(year = as.numeric(time_dimension_value)) |> 
   select(value = numeric_value, 
          iso3_code = spatial_dim,
          value = numeric_value,
          year,
          fuel_type) |> 
  mutate(country = countrycode(iso3_code, origin = "iso3c", destination = "country.name.en"),
         country = gsub("Federated States", "Fed St", country)) |>
  group_by(country) |> 
  mutate(prop_gke = sum(value(fuel_type %in% c("gas", "kerosene", "electricity") & year == max(year))) 
         / sum(value(year == max(year)))) |> 
  ungroup() |> 
  mutate(country = fct_reorder(country, prop_gke))

# Draw chart
pic_cooking_data |> 
  ggplot(aes(y = value, x = year, fill = fuel_type)) +
  facet_wrap(~country, ncol = 5) +
  # the numbers don't add up to 100 always, due to being modelled estimates
  #, not fully MECE, not counting dual fuels, etc. Good practice advice
  # is to not force them to add to 100%
  geom_area() +
  scale_fill_manual(values = palette) +
  scale_y_continuous(label = percent_format(scale = 1)) +
  labs(title = "Household primary fuel used for cooking",
       subtitle = "Estimates are modelled by WHO, and not adding up to 100% is a known limitation.
Countries shown in increasing order of vulnerability of cooking to a petrochemicals price or availability crisis.",
       x = "",
       fill = "Fuel type:",
       y ="Proportion of households",
       caption = "Source: WHO Household Energy Database")

Asta e tot, doar una rapidă azi.

Dominic Botezariu
Dominic Botezariuhttps://www.noobz.ro/
Creator de site și redactor-șef.

Cele mai noi știri

Pe același subiect

LĂSAȚI UN MESAJ

Vă rugăm să introduceți comentariul dvs.!
Introduceți aici numele dvs.