Transparent SSD workflow for mixtures

Working on a catchment-scale aquatic risk assessment where pyrethroids and neonics are co-occurring at sub-µg/L with evidence of impaired EPT taxa, and I need a transparent SSD-to-RQ workflow that handles censored LC50/EC50s, non-detects, and mixture toxicity. I’ve used ssdtools in R and MOSAIC since 2021, but HC5 estimates swing with distribution choice and censoring; does anyone have scripts or open tools using Bayesian SSDs with model averaging and concentration addition, ideally pulling ECOTOX/ECHA data and exporting HC5/BMD with uncertainty for decision-making?

‌⁠‍⁠​‍​‍‌⁠‌​​‍​‍​⁠‍‍​‍​‍‌‍‌⁠‌‍​‍‌‍‍‍​⁠​⁠​‍​‍​‍⁠​​‍​‍‌‍‍⁠​‍​‍​⁠‍‍​‍​‍‌‍⁠‍‌‍‌‌‌⁠‌⁠‌‌⁠⁠‌⁠‌​‌‍⁠⁠‌⁠​​‌‍‍‌‌‍​⁠​‍​‍​‍⁠​​‍​‍‌‍‍‌‌‍‌​​‍​‍​⁠‍‍​‍​‍‌‍⁠‍‌‍‌‌‌⁠‌⁠​‍​‍​‍⁠​​‍​‍‌‍‌​​‍​‍​⁠‍‍​‍​‍​⁠​‍​⁠​​​⁠​‍​⁠‌‌​⁠​‌​⁠​‍​⁠​‍​⁠​‍​‍​‍​‍⁠​​‍​‍‌‍‍​​‍​‍​⁠‍‍​‍​‍‌‌‍‍​⁠‍‌‌⁠‍‍‌‌​‌‌⁠‌‍‌‍​⁠‌​‌‌‌⁠‌‍‌​⁠‍‌​⁠‍‌​⁠⁠‌⁠‍​​⁠‍​‌⁠‍‍‌​⁠​‌⁠‍​​‍​‍‌⁠⁠‌​

Same issue with “HC5 swings” here; what stabilized it for me in ssdtools was AICc-weighted model averaging with a parametric bootstrap while keeping LC50/EC50s as interval-censored (left/right from the </>), then carrying the bootstrapped HC5 into concentration-addition TUs before RQ so the uncertainty propagates; docs: Species Sensitivity Distributions • ssdtools. Small caveat: if a single pesticide contributes >80% of summed TUs I sanity-check with independent action to see if the conclusion flips.

‌⁠‍⁠​‍​‍‌⁠‌​​‍​‍​⁠‍‍​‍​‍‌‍‌⁠‌‍​‍‌‍‍‍​⁠​⁠​‍​‍​‍⁠​​‍​‍‌‍‍⁠​‍​‍​⁠‍‍​‍​‍‌⁠​‍‌‍‌‌‌⁠​​‌‍⁠​‌⁠‍‌​‍​‍​‍⁠​​‍​‍‌‍‍‌‌‍‌​​‍​‍​⁠‍‍​⁠‌‍​⁠‍​​⁠‌⁠​⁠‌⁠​‍⁠​​‍​‍‌‍‌​​‍​‍​⁠‍‍​‍​‍​⁠​‍​⁠​​​⁠​‍​⁠‌‌​⁠​‌​⁠​‍​⁠​‍​⁠‌​​‍​‍​‍⁠​​‍​‍‌‍‍​​‍​‍​⁠‍‍​‍​‍‌​⁠​‌‌​⁠‌​⁠‌‌​​‍‌⁠‍‍‌​‌⁠‌‍⁠​‌‍‍⁠‌​​⁠‌‍⁠‍​⁠‍​​⁠‌​​‍⁠‌​⁠​‌‌‍‌‍‌​​‍​‍​‍‌⁠⁠‌

Building on @linda85, one tweak that’s kept our SSD-to-RQ chain stable is to estimate non-detect-heavy exposures with Kaplan–Meier in NADA2 (CRAN: Package NADA2), compute TUs and sum by CA, then set the PNEC from an EPT-only SSD for the top TU driver. > if a single pesticide contributes >80% of summed TUs I sanity-check with independent action to see if the Same here — when a pyrethroid dominates I rerun IA; just watch solvent-heavy legacy tests or they’ll pull the lower tail.

‌⁠‍⁠​‍​‍‌⁠‌​​‍​‍​⁠‍‍​‍​‍‌‍‌⁠‌‍​‍‌‍‍‍​⁠​⁠​‍​‍​‍⁠​​‍​‍‌‍‍⁠​‍​‍​⁠‍‍​‍​‍‌⁠​‍‌‍‌‌‌⁠​​‌‍⁠​‌⁠‍‌​‍​‍​‍⁠​​‍​‍‌‍‍‌‌‍‌​​‍​‍​⁠‍‍​⁠‌‍​⁠‍​​⁠‌⁠​⁠‌⁠​‍⁠​​‍​‍‌‍‌​​‍​‍​⁠‍‍​‍​‍​⁠​‍​⁠​​​⁠​‍​⁠‌‌​⁠​‌​⁠​‍​⁠​‍​⁠‌‍​‍​‍​‍⁠​​‍​‍‌‍‍​​‍​‍​⁠‍‍​‍​‍‌‌​‍‌‍‌‍​⁠​​‌‌‌⁠‌‌​‌‌⁠​‍‌⁠‌⁠‌‍​‌‌‌‌⁠‌‌‌⁠‌​‌‍‌‍‌⁠‌​‍⁠‌‌‍​‌‌‌‌​⁠‌⁠​‍​‍‌⁠⁠‌