Description
An Automated Way to Estimate EC50 for Stratified Datasets.
Description
Estimates effective concentrations that reduce growth by 50 percent (EC50) in multi-isolate and stratified dose-response experiments. The package wraps model fitting from drc, returns data-frame outputs, and provides helper functions for data checks, model selection, fitted-curve plotting, prediction, diagnostics, and reporting. Information about drc is available in Ritz C, Baty F, Streibig JC, Gerhard D (2015) <doi:10.1371/journal.pone.0146021>.
README.md
ec50estimator: EC50 workflows for multi-isolate dose-response experiments 
ec50estimator helps scientists estimate EC50 from grouped dose-response datasets. It wraps the modelling engine from drc in a workflow that is easier to use for experiments with many isolates, fields, fungicides, years, or other strata.
The package is built around one practical sequence:
- Check whether the dose-response data are fit-ready.
- Fit one model or compare several candidate models.
- Inspect fit quality and failed fits.
- Plot fitted curves with
ggplot2. - Extract predictions, curve coordinates, and manuscript-ready EC50 tables.
Installation
Install the stable release from CRAN.
install.packages("ec50estimator")
Install the development version from GitHub.
pak::pak("AlvesKS/ec50estimator")
Quick Start
library(ec50estimator)
library(drc)
data(multi_isolate)
example_data <- subset(
multi_isolate,
isolate %in% 1:5 & fungicida == "Fungicide A"
)
check_ec50_data(
example_data,
response = "growth",
dose = "dose",
isolate = "isolate",
strata = "field"
)
fit <- ec50_multimodel(
growth ~ dose,
data = example_data,
isolate_col = "isolate",
strata_col = "field",
fct = list(drc::LL.3(), drc::LL.4(), drc::W2.3()),
interval = "delta"
)
best_model(fit)
plot_EC50_curves(fit, models = "best")
report_ec50(fit, models = "best")
fit is still a data frame, so existing workflows that call head(fit) or write the estimates to a file continue to work. It also stores the fitted drc models and metadata needed by helper functions:
curve_data(fit)
fitted_models(fit)
ec50_metadata(fit)
predict_ec50(fit, dose = c(0.001, 0.01, 0.1), models = "best")
plot_residuals(fit, models = "best")
See the pkgdown site for the recommended workflow: https://alvesks.github.io/ec50estimator/.