inmap: github.com/spatialmodel/inmap/epi

package epi

import "github.com/spatialmodel/inmap/epi"

Package epi holds a collection of functions for calculating the health impacts of air pollution.

This example calculates mortalities caused by ambient PM2.5 concentrations.

Code:

var (
// I represents currently observed deaths per 100,000
// people in this region.
I   = 800.0

// p represents number of people in different locations
// in the region.
p   = []float64{100000, 80000, 700000, 90000}

// z represents PM2.5 concentrations in μg/m³ in locations
// corresponding to p.
z   = []float64{12, 26, 11, 2, 9}
)

// This is how we can calculate total deaths caused by air pollution
// using a regional underlying incidence rate.
io := IoRegional(p, z, NasariACS, I/100000)
var totalDeaths float64
for i, pi := range p {
totalDeaths += Outcome(pi, z[i], io, NasariACS)
}
fmt.Printf("total deaths using regional underlying incidence: %.0f\n", totalDeaths)

// This is how we can calculate additional deaths caused by doubling
// air pollution:
var doubleDeaths float64
for i, pi := range p {
doubleDeaths += Outcome(pi, z[i]*2, io, NasariACS) - Outcome(pi, z[i], io, NasariACS)
}
fmt.Printf("additional deaths caused by doubling air pollution: %.0f\n", doubleDeaths)

// This is how we can calculate lives saved by halving air pollution:
var halfDeaths float64
for i, pi := range p {
halfDeaths += Outcome(pi, z[i]/2, io, NasariACS) - Outcome(pi, z[i], io, NasariACS)
}
fmt.Printf("lives saved by halving air pollution: %.0f\n", -1*halfDeaths)

// Sometimes it is not practical to calculate regional underlying
// incidence. This is how we can calculate total deaths caused by air pollution
// using a location-specific underlying incidence rate.
totalDeaths = 0
for i, pi := range p {
totalDeaths += Outcome(pi, z[i], Io(z[i], NasariACS, I/100000), NasariACS)
}
fmt.Printf("total deaths using local underlying incidence: %.0f\n", totalDeaths)

// This is how we can calculate additional deaths caused by doubling
// air pollution using a local underlying incidence rate:
doubleDeaths = 0
for i, pi := range p {
io := Io(z[i], NasariACS, I/100000)
doubleDeaths += Outcome(pi, z[i]*2, io, NasariACS) - Outcome(pi, z[i], io, NasariACS)
}
fmt.Printf("additional deaths caused by doubling air pollution (local underlying incidence): %.0f\n", doubleDeaths)

Output:

total deaths using regional underlying incidence: 672
additional deaths caused by doubling air pollution: 403
lives saved by halving air pollution: 389
total deaths using local underlying incidence: 665
additional deaths caused by doubling air pollution (local underlying incidence): 401

Variables ¶

var Krewski2009 = Cox{
Beta:      0.005826890812,
Threshold: 5,
Label:     "Krewski2009",
}

Krewski2009 is a Cox proportional-hazards model from the study:

Krewski, D., Jerrett, M., Burnett, R. T., Ma, R., Hughes, E., Shi, Y., … Thun, M. J. (2009). Extended Follow-Up and Spatial Analysis of the American Cancer Society Study Linking Particulate Air Pollution and Mortality. Retrieved from http://www.ncbi.nlm.nih.gov/pubmed/19627030

This function is from Table 11 of the study and does not account for ecologic covariates.

var Krewski2009Ecologic = Cox{
Beta:      0.007510747249,
Threshold: 5,
Label:     "Krewski2009Ecologic",
}

Krewski2009Ecologic is a Cox proportional-hazards model from the study:

Krewski, D., Jerrett, M., Burnett, R. T., Ma, R., Hughes, E., Shi, Y., … Thun, M. J. (2009). Extended Follow-Up and Spatial Analysis of the American Cancer Society Study Linking Particulate Air Pollution and Mortality. Retrieved from http://www.ncbi.nlm.nih.gov/pubmed/19627030

This function is from Table 11 of the study and does not account for ecologic covariates.

var Lepeule2012 = Cox{
Beta:      0.01310282624,
Threshold: 8,
Label:     "Lepeule2012",
}

Lepeule2012 is a Cox proportional-hazards model from the study:

Lepeule, J., Laden, F., Dockery, D., & Schwartz, J. (2012). Chronic exposure to fine particles and mortality: An extended follow-up of the Harvard six cities study from 1974 to 2009. Environmental Health Perspectives, 120(7), 965–970. http://doi.org/10.1289/ehp.1104660

var NasariACS = Nasari{
Gamma:  0.0478,
Delta:  6.94,
Lambda: 3.37,
F:      func(z float64) float64 { return math.Log(z + 1) },
Label:  "NasariACS",
}

NasariACS is an exposure-response model fit to the American Cancer Society Cancer Prevention II cohort all causes of death from fine particulate matter.

func Io¶Uses

func Io(z float64, hr HRer, I float64) float64

Io returns the underlying incidence rate where the reported incidence rate is I, concentration is z, and hr specifies the hazard ratio as a function of z. When possible, IoRegional should be used instead of this function.

func IoRegional¶Uses

func IoRegional(p, z []float64, hr HRer, I float64) float64

IoRegional returns the underlying regional average incidence rate for a region where the reported incidence rate is I, individual locations within the region have population p and concentration z, and hr specifies the hazard ratio as a function of z, as presented in Equations 2 and 3 of:

Apte JS, Marshall JD, Cohen AJ, Brauer M (2015) Addressing Global Mortality from Ambient PM2.5. Environmental Science and Technology 49(13):8057–8066.

func Outcome¶Uses

func Outcome(p, z, Io float64, hr HRer) float64

Outcome returns the number of incidences occuring in population p when exposed to concentration z given underlying incidence rate Io and hazard relationship hr(z), as presented in Equation 2 of:

Apte JS, Marshall JD, Cohen AJ, Brauer M (2015) Addressing Global Mortality from Ambient PM2.5. Environmental Science and Technology 49(13):8057–8066.

type Cox¶Uses

type Cox struct {
// Beta is the model coefficient
Beta float64

// Threshold is the concentration below which health effects are assumed
// to be zero.
Threshold float64

// Label is the name of the function.
Label string
}

Cox implements a Cox proportional hazards model.

func (Cox) HR¶Uses

func (c Cox) HR(z float64) float64

HR calculates the hazard ratio caused by concentration z.

func (Cox) Name¶Uses

func (c Cox) Name() string

Name returns the label for this function.

type HRer¶Uses

type HRer interface {
HR(z float64) float64
Name() string
}

HRer is an interface for any type that can calculate the hazard ratio caused by concentration z.

type Nasari¶Uses

type Nasari struct {
// Gamma, Delta, and Lambda are parameters fit using linear regression.
Gamma, Delta, Lambda float64

// F is the concentration transformation function.
F   func(z float64) float64

// Label is the name of the function.
Label string
}

Nasari implements a class of simple approximations to the exposure response models described in:

Nasari M, Szyszkowicz M, Chen H, Crouse D, Turner MC, Jerrett M, Pope CA III, Hubbell B, Fann N, Cohen A, Gapstur SM, Diver WR, Forouzanfar MH, Kim S-Y, Olives C, Krewski D, Burnett RT. (2015). A Class of Non-Linear Exposure-Response Models Suitable for Health Impact Assessment Applicable to Large Cohort Studies of Ambient Air Pollution. Air Quality, Atmosphere, and Health: DOI: 10.1007/s11869-016-0398-z.

func (Nasari) HR¶Uses

func (n Nasari) HR(z float64) float64

HR calculates the hazard ratio caused by concentration z.

func (Nasari) Name¶Uses

func (n Nasari) Name() string

Name returns the label for this function.

Package epi imports 2 packages (graph) and is imported by 2 packages. Updated 2018-08-17. Refresh now. Tools for package owners.