delicatessen.estimating_equations.dose_response.ee_effective_dose_delta
- ee_effective_dose_delta(theta, y, delta, steepness, ed50, lower, upper)
Default stacked estimating equation to pair with the 4 parameter logistic model for estimation of the \(delta\) effective dose. The estimating equation is
\[\sum_{i=1}^n \left\{ \theta_1 + \frac{\theta_4 - \theta_1}{1 + (\theta_5 / \theta_2)^{\theta_3}} - \theta_4(1-\delta) - \theta_1 \delta \right\} = 0\]where \(\theta_5\) is the \(ED(\delta)\), and the other \(\theta\) are from a PL model (1: lower limit, 2: steepness, 3: ED(50), 4: upper limit). For proper uncertainty estimation, this estimating equation should be stacked with the correspond PL model.
- Parameters
theta (int, float) – Theta value corresponding to the ED(alpha).
y (ndarray, list, vector) – 1-dimensional vector of n response values, used to construct correct shape for output.
delta (float) – The effective dose level of interest, ED(alpha).
steepness (float) – Estimated parameter for the steepness from the PL.
ed50 (float) – Estimated parameter for the ED50, or ED(alpha=50), from the PL.
lower (int, float) – Estimated parameter or pre-specified constant for the lower limit. This should be a pre-specified constant for both the 3PL and 2PL.
upper (int, float) – Estimated parameter or pre-specified constant for the lower limit. This should be a pre-specified constant for the 2PL.
- Returns
Returns a 1-by-n NumPy array evaluated for the input theta
- Return type
array
Examples
Construction of a estimating equations for ED25 with
ee_3p_logistic
should be done similar to the following>>> from delicatessen import MEstimator >>> from delicatessen.data import load_inderjit >>> from delicatessen.estimating_equations import ee_2p_logistic, ee_effective_dose_delta
For demonstration, we use dose-response data from Inderjit et al. (2002), which can be loaded from
delicatessen
directly.>>> d = load_inderjit() # Loading array of data >>> dose_data = d[:, 1] # Dose data >>> resp_data = d[:, 0] # Response data
Since there is a natural lower-bound of 0 for root growth, we set
lower=0
. While a natural upper bound does not exist for this example, we setupper=8
for illustrative purposes. Defining psi, or the stacked estimating equations>>> def psi(theta): >>> pl_model = ee_3p_logistic(theta=theta, X=dose_data, y=resp_data, >>> lower=0) >>> ed_25 = ee_effective_dose_delta(theta[3], y=resp_data, delta=0.20, >>> steepness=theta[0], ed50=theta[1], >>> lower=0, upper=theta[2]) >>> # Returning stacked estimating equations >>> return np.vstack((pl_model, >>> ed_25,))
Notice that the estimating equations are stacked in the order of the parameters in
theta
(the first 3 belong to 3PL and the last belong to ED(25)).>>> estr = MEstimator(psi, init=[(np.max(resp_data)+np.min(resp_data)) / 2, >>> (np.max(resp_data)+np.min(resp_data)) / 2, >>> np.max(resp_data), >>> (np.max(resp_data)+np.min(resp_data)) / 2]) >>> estr.estimate(solver='lm')
Inspecting the parameter estimates, variance, and confidence intervals
>>> estr.theta >>> estr.variance >>> estr.confidence_intervals()
Inspecting the parameter estimates
>>> estr.theta[0] # ED(50) >>> estr.theta[1] # steepness >>> estr.theta[2] # upper limit >>> estr.theta[3] # ED(25)
References
Ritz C, Baty F, Streibig JC, & Gerhard D. (2015). Dose-response analysis using R. PloS One, 10(12), e0146021.
An H, Justin TL, Aubrey GB, Marron JS, & Dittmer DP. (2019). dr4pl: A Stable Convergence Algorithm for the 4 Parameter Logistic Model. R J., 11(2), 171.
Inderjit, Streibig JC, & Olofsdotter M. (2002). Joint action of phenolic acid mixtures and its significance in allelopathy research. Physiologia Plantarum, 114(3), 422-428.