causalpie: An R Package for easily creating and visualizing causal pies
causalpie is an R package for creating tidy sufficient-component
causal models. Create and analyze sufficient causes and plot them easily
You can install the development version of
causalpie from GitHub with:
# install.packages("devtools") devtools::install_github("malcolmbarrett/causalpie")
Sufficient causes and causal pies
The sufficient-component cause model (SCC), proposed by Kenneth Rothman in 1976, is a framework for understanding how events occur. Rothman, an epidemiologist, conceived of SCC to understand the causes of diseases.
Let’s consider an example about disease D. There may be many paths to a person developing D. We know that A, B, and E all cause D, but we don’t always need to have all three for D to occur. In SCC, A, B, and E are referred to as components. The components may combine in a multitude of ways to cause D. In fact, any of these combination will result in D:
- A = 0, B = 1
- A = 0, E = 1
- B = 1, E = 1
These different combinations are called sufficient causes, because they are sufficient to cause D. Any components that appear in all sufficient causes are called necessary causes.
causalpie, you define causes using
causify. Each sufficient cause
is grouped by the
sc() function, which takes named values (e.g. E =
1). By tradition, a component
U is added to each sufficient cause to
represent unknown components. This can be turned off by setting
add_u = FALSE.
library(causalpie) #> Loading required package: ggplot2 causes <- causify(sc(A = 0, B = 1), sc(A = 0, E = 1), sc(B = 1, E = 1)) causes #> # A tibble: 9 x 5 #> component value label frac cause #> <chr> <chr> <chr> <dbl> <chr> #> 1 A 0 A = 0 0.25 Sufficient Cause 1 #> 2 B 1 B = 1 0.25 Sufficient Cause 1 #> 3 U1 ? U1 0.5 Sufficient Cause 1 #> 4 A 0 A = 0 0.25 Sufficient Cause 2 #> 5 E 1 E = 1 0.25 Sufficient Cause 2 #> 6 U2 ? U2 0.5 Sufficient Cause 2 #> 7 B 1 B = 1 0.25 Sufficient Cause 3 #> 8 E 1 E = 1 0.25 Sufficient Cause 3 #> 9 U3 ? U3 0.5 Sufficient Cause 3
You can plot the sufficient causes as pies in
causal_pie(), which highlights unique components, or
causal_pie_necessary(), which highlights necessary causes.
Because both objects are ggplots, you can change themes, scales, and so on.
causify(sc(A = 1, B = 0), sc(A = 1, E = 1, C = 0)) %>% causal_pie_necessary() + theme_causal_pie() + scale_fill_manual(values = c("#56B4E9", "#E69F00"))