
ssdtools is an R package to fit and plot SpeciesSensitivity Distributions (SSD).
SSDs are cumulative probability distributions which are fitted totoxicity concentrations for different species as described by Posthumaet al. (2001). The ssdtools package uses Maximum Likelihood to fitdistributions such as the log-normal, log-logistic, log-Gumbel (alsoknown as the inverse Weibull), gamma, Weibull and log-normal log-normalmixture. Multiple distributions can be averaged using Akaike InformationCriteria. Confidence intervals on hazard concentrations and proportionsare produced by bootstrapping.
ssdtools can handle censored data with two limitations.It is currently only possible to model average when the distributionshave the same number of parameters and confidence intervals can only beestimated using non-parametric (as opposed to parametric)bootstrapping.
The dependencyssddataprovides example data sets for several chemicals including Boron. TheECOTOX Knowledgebase is anothersource of toxicity concentrations for over 12,000 chemicals.
library(ssdtools)ssddata::ccme_boron#> # A tibble: 28 × 5#> Chemical Species Conc Group Units#> <chr> <chr> <dbl> <fct> <chr>#> 1 Boron Oncorhynchus mykiss 2.1 Fish mg/L#> 2 Boron Ictalurus punctatus 2.4 Fish mg/L#> 3 Boron Micropterus salmoides 4.1 Fish mg/L#> 4 Boron Brachydanio rerio 10 Fish mg/L#> 5 Boron Carassius auratus 15.6 Fish mg/L#> 6 Boron Pimephales promelas 18.3 Fish mg/L#> 7 Boron Daphnia magna 6 Invertebrate mg/L#> 8 Boron Opercularia bimarginata 10 Invertebrate mg/L#> 9 Boron Ceriodaphnia dubia 13.4 Invertebrate mg/L#> 10 Boron Entosiphon sulcatum 15 Invertebrate mg/L#> # ℹ 18 more rowsThe six default distributions are fit usingssd_fit_dists()
fits<-ssd_fit_dists(ssddata::ccme_boron)and can be quickly plotted usingautoplot
autoplot(fits)
The goodness of fit can be assessed usingssd_gof
ssd_gof(fits,wt =TRUE)#> # A tibble: 6 × 14#> dist npars nobs log_lik aic aicc delta wt bic ad ks cvm#> <chr> <int> <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>#> 1 gamma 2 28 -117. 238. 238. 0.005 0.357 240. 0.440 0.117 0.0554#> 2 lgumbel 2 28 -120. 244. 245. 6.56 0.013 247. 0.829 0.158 0.134#> 3 llogis 2 28 -119. 241. 241. 3.39 0.066 244. 0.487 0.0994 0.0595#> 4 lnorm 2 28 -118. 239. 240. 1.40 0.177 242. 0.507 0.107 0.0703#> 5 lnorm_l… 5 28 -115. 240. 243. 4.98 0.03 247. 0.320 0.116 0.0414#> 6 weibull 2 28 -117. 238. 238. 0 0.357 240. 0.434 0.117 0.0542#> # ℹ 2 more variables: at_bound <lgl>, computable <lgl>and the model-averaged 5% hazard concentration estimated (withbootstrapping to get confidence intervals) usingssd_hc.
withr::with_seed(99, { hc5<-ssd_hc(fits,ci =TRUE)})print(hc5)#> # A tibble: 1 × 15#> dist proportion est se lcl ucl wt level est_method ci_method#> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr> <chr>#> 1 average 0.05 1.26 0.782 0.407 3.29 1 0.95 multi weighted_sa…#> # ℹ 5 more variables: boot_method <chr>, nboot <dbl>, pboot <dbl>,#> # dists <list>, samples <list>Model-averaged predictions complete with confidence intervals canalso be estimated by parametric bootstrapping using thestats genericpredict.
boron_pred<-predict(fits,ci =TRUE)The predictions can be plotted together with the original data usingssd_plot.
library(ggplot2)theme_set(theme_bw())ssd_plot(ssddata::ccme_boron, boron_pred,shape ="Group",color ="Group",label ="Species",xlab ="Concentration (mg/L)",ribbon =TRUE)+expand_limits(x =3000)+scale_colour_ssd()
Get started with ssdtools athttps://bcgov.github.io/ssdtools/articles/ssdtools.html.
A shiny app to allow non-R users to interface with ssdtools isavailable athttps://github.com/bcgov/shinyssdtools.
For the latest changes to the development version see theNEWS file.
For recent developments in SSD modeling including a review ofexisting software see:
Fox, D.R., et al. 2021. Recent Developments in SpeciesSensitivity Distribution Modeling. Environ Toxicol Chem 40(2): 293–308.https://doi.org/10.1002/etc.4925.
To cite package 'ssdtools' in publications use: Thorley J, Fisher R, Fox D, Schwarz C (2025). "ssdtools v2: An R package to fit Species Sensitivity Distributions." _Journal of Open Source Software_, *10*(105), 7492. doi:10.21105/joss.07492 <https://doi.org/10.21105/joss.07492>.A BibTeX entry for LaTeX users is @Article{, title = {ssdtools v2: An R package to fit Species Sensitivity Distributions}, author = {Joe Thorley and Rebecca Fisher and David Fox and Carl Schwarz}, year = {2025}, journal = {Journal of Open Source Software}, volume = {10}, number = {105}, pages = {7492}, doi = {10.21105/joss.07492}, }To install the latest release version fromCRAN.
install.packages("ssdtools")The website for the release version is athttps://bcgov.github.io/ssdtools/.
To install the development version fromGitHub
# install.packages("remotes")remotes::install_github("bcgov/ssdtools")or fromr-universe.
install.packages("ssdtools",repos =c("https://bcgov.r-universe.dev","https://cloud.r-project.org"))The website for the development version is athttps://bcgov.github.io/ssdtools/dev/.
To report bugs/issues/feature requests, please file anissue.
If you would like to contribute to the package, please see ourCONTRIBUTINGguidelines.
Please note that the ssdtools project is released with aContributorCode of Conduct. By contributing to this project, you agree to abideby its terms.
Posthuma, L., Suter II, G.W., and Traas, T.P. 2001. SpeciesSensitivity Distributions in Ecotoxicology. CRC Press.
Copyright 2015-2023 Province of British Columbia
Copyright 2021 Environment and Climate Change Canada
Copyright 2023-2025 Australian Government Department of Climate Change,Energy, the Environment and Water
The documentation is released under theCC BY 4.0License
The code is released under theApache License2.0