The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

Getting Started with climatehealth

What is climatehealth?

The climatehealth package provides R functions for calculating climate–health indicators following the statistical framework developed under the SOSCHI (Standards for Official Statistics on Climate–Health Interactions) project. It covers indicators for six climate-health topic areas:

Topic Lead
Temperature-related health effects ONS
Health effects of wildfires ONS
Mental health (suicides and heat) ONS
Water-borne diseases (diarrhoea) AIMS
Health effects of air pollution AIMS
Vector-borne diseases (malaria) RIPS/AIMS

Each topic has a dedicated analysis function that takes a data file path and column mappings, fits the appropriate statistical models, and returns results and optional plots.


Installation

From CRAN

install.packages("climatehealth")

From GitHub (latest development version)

install.packages("remotes")
remotes::install_github("onssoschi/climatehealth")

Optional dependencies

Two indicators (malaria and diarrhoea) depend on INLA and terra respectively, which are not on CRAN and must be installed separately if needed:

climatehealth::install_INLA()
climatehealth::install_terra()

Once installed, load the package:

library(climatehealth)

Package workflow

All six indicator functions follow the same pattern:

  1. Provide a path to your input CSV.
  2. Map your column names to the function’s expected arguments (or use the defaults if your data already matches them).
  3. Choose optional extras: covariates, meta-analysis, output saving.
  4. Inspect the returned list for model results, plots, and summary tables.
your_data.csv  -->  indicator_do_analysis()  -->  results list
                                              -->  figures (optional)
                                              -->  CSV outputs (optional)

Your first analysis: temperature and mortality

temp_mortality_do_analysis() estimates the association between ambient temperature and mortality using a distributed lag non-linear model (DLNM).

res <- climatehealth::temp_mortality_do_analysis(
  data_path        = "path/to/your/data.csv",
  date_col         = "date",
  region_col       = "region",
  temperature_col  = "tmean",
  health_outcome_col = "deaths",
  population_col   = "population",
  meta_analysis    = FALSE,
  save_fig         = FALSE,
  save_csv         = FALSE
)

The returned object res is a named list. Common fields include:

res$data_raw          # the input data as loaded
res$analysis_results  # model coefficients and confidence intervals
res$meta_results      # pooled estimates (when meta_analysis = TRUE)

Adding covariates

Pass extra column names via independent_cols (continuous exposures) and control_cols (factors such as day-of-week or public holidays):

res <- climatehealth::temp_mortality_do_analysis(
  data_path          = "path/to/your/data.csv",
  date_col           = "date",
  region_col         = "region",
  temperature_col    = "tmean",
  health_outcome_col = "deaths",
  population_col     = "population",
  independent_cols   = c("humidity", "ozone"),
  control_cols       = c("dow", "holiday_flag"),
  meta_analysis      = FALSE,
  save_fig           = FALSE,
  save_csv           = FALSE
)

Pooling across regions with meta-analysis

Set meta_analysis = TRUE to pool region-level estimates into a single national estimate:

res <- climatehealth::temp_mortality_do_analysis(
  data_path          = "path/to/your/data.csv",
  date_col           = "date",
  region_col         = "region",
  temperature_col    = "tmean",
  health_outcome_col = "deaths",
  population_col     = "population",
  country            = "National",
  meta_analysis      = TRUE,
  save_fig           = FALSE,
  save_csv           = FALSE
)

The six indicators

Air pollution

air_pollution_do_analysis() estimates attributable mortality burden from PM2.5 exposure. By default it expects columns named date, region, pm25, deaths, population, humidity, precipitation, tmax, and wind_speed.

res <- climatehealth::air_pollution_do_analysis(
  data_path       = "path/to/your/data.csv",
  save_outputs    = FALSE,
  run_descriptive = TRUE,
  run_power       = TRUE
)

Compare against multiple PM2.5 reference thresholds in a single run:

res <- climatehealth::air_pollution_do_analysis(
  data_path         = "path/to/your/data.csv",
  reference_standards = list(
    list(value = 15, name = "WHO"),
    list(value = 25, name = "National")
  ),
  save_outputs = FALSE,
  run_power    = TRUE
)

Wildfires

wildfire_do_analysis() estimates the health impact of wildfire smoke exposure.

res <- climatehealth::wildfire_do_analysis(
  data_path          = "path/to/your/data.csv",
  date_col           = "date",
  region_col         = "region",
  exposure_col       = "pm25_fire",
  health_outcome_col = "respiratory_admissions",
  population_col     = "population",
  meta_analysis      = FALSE,
  save_fig           = FALSE,
  save_csv           = FALSE
)

Mental health (suicides and heat)

suicides_heat_do_analysis() models the association between temperature and suicide counts.

res <- climatehealth::suicides_heat_do_analysis(
  data_path          = "path/to/your/data.csv",
  date_col           = "date",
  region_col         = "region",
  temperature_col    = "tmean",
  health_outcome_col = "suicides",
  population_col     = "population",
  meta_analysis      = FALSE,
  save_fig           = FALSE,
  save_csv           = FALSE
)

Water-borne diseases (diarrhoea)

diarrhea_do_analysis() estimates climate-driven diarrhoea burden.

res <- climatehealth::diarrhea_do_analysis(
  data_path          = "path/to/your/data.csv",
  date_col           = "date",
  region_col         = "region",
  temperature_col    = "tmean",
  health_outcome_col = "diarrhea_cases",
  population_col     = "population",
  meta_analysis      = FALSE,
  save_fig           = FALSE,
  save_csv           = FALSE
)

Vector-borne diseases (malaria)

malaria_do_analysis() requires the INLA package (see Installation above).

res <- climatehealth::malaria_do_analysis(
  data_path          = "path/to/your/data.csv",
  date_col           = "date",
  region_col         = "region",
  temperature_col    = "tmean",
  health_outcome_col = "malaria_cases",
  population_col     = "population",
  meta_analysis      = FALSE,
  save_fig           = FALSE,
  save_csv           = FALSE
)

Descriptive statistics

Before running an indicator analysis, use run_descriptive_stats() to explore your data: distributions, correlations, missing values, outliers, and seasonal patterns.

df <- read.csv("path/to/your/data.csv")

desc <- climatehealth::run_descriptive_stats(
  data               = df,
  output_path        = "path/to/output/folder",
  aggregation_column = "region",
  dependent_col      = "deaths",
  independent_cols   = c("tmean", "humidity", "rainfall"),
  plot_corr_matrix   = TRUE,
  plot_dist          = TRUE,
  plot_na_counts     = TRUE,
  plot_scatter       = TRUE,
  plot_box           = TRUE,
  create_base_dir    = TRUE
)

Add units for cleaner plot labels, and enable time-series and rate calculations:

desc <- climatehealth::run_descriptive_stats(
  data               = df,
  output_path        = "path/to/output/folder",
  aggregation_column = "region",
  population_col     = "population",
  dependent_col      = "deaths",
  independent_cols   = c("tmean", "humidity", "rainfall"),
  units = c(
    deaths    = "count",
    tmean     = "C",
    humidity  = "%",
    rainfall  = "mm"
  ),
  timeseries_col     = "date",
  plot_corr_matrix   = TRUE,
  plot_dist          = TRUE,
  plot_ma            = TRUE,
  ma_days            = 30,
  plot_seasonal      = TRUE,
  plot_regional      = TRUE,
  plot_total         = TRUE,
  detect_outliers    = TRUE,
  calculate_rate     = TRUE,
  create_base_dir    = TRUE
)

The returned list includes paths to all generated plots:

desc$run_output_path      # folder where all outputs were saved
desc$region_output_paths  # per-region output sub-folders

Saving outputs

Every indicator function accepts save_fig and save_csv arguments (or save_outputs for air pollution). Set these to TRUE and supply output_folder_path to write results to disk. The function creates a timestamped sub-folder automatically.

res <- climatehealth::temp_mortality_do_analysis(
  data_path          = "path/to/your/data.csv",
  date_col           = "date",
  region_col         = "region",
  temperature_col    = "tmean",
  health_outcome_col = "deaths",
  population_col     = "population",
  meta_analysis      = TRUE,
  save_fig           = TRUE,
  save_csv           = TRUE,
  output_folder_path = "path/to/output/folder"
)

Error handling

The package uses structured conditions. You can catch them with tryCatch:

result <- tryCatch(
  climatehealth::temp_mortality_do_analysis(
    data_path          = "path/to/your/data.csv",
    date_col           = "wrong_column_name",
    health_outcome_col = "deaths",
    population_col     = "population"
  ),
  climate_error = function(e) {
    message("climatehealth error: ", conditionMessage(e))
    NULL
  }
)

Use is_climate_error() to test whether a caught condition came from this package:

climatehealth::is_climate_error(e)

Next steps

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.