delicatessen.estimating_equations.pharmacokinetics.ee_loglogistic_ed
- ee_loglogistic_ed(theta, dose, delta, lower, upper, ed50, steepness)
Estimating equation for the \(\delta\)-effective dose with the 4 parameter log-logistic model. The estimating equation is
\[\sum_{i=1}^n \left\{ \theta_z + \frac{\theta_m - \theta_z}{1 + (\theta_d / \theta_{50})^{\theta_s}} - \theta_m(1-\delta) - \theta_z \delta \right\} = 0\]where \(\theta_d\) is the \(ED(\delta)\), and the other \(\theta\) are from a log-logistic model. For proper uncertainty estimation, this estimating equation should be stacked with the log-logistic model.
- Parameters
theta (int, float) – Theta value corresponding to the ED(delta).
dose (ndarray, list, vector) – 1-dimensional vector of n dose values, used to construct correct shape for output (not used in the estimating function).
delta (float) – The effective dose level of interest, ED(delta).
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.
ed50 (float) – Estimated parameter for the ED50 from the PL.
steepness (float) – Estimated parameter for the steepness from the PL.
- 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_loglogisticshould be done similar to the following>>> from delicatessen import MEstimator >>> from delicatessen.data import load_inderjit >>> from delicatessen.estimating_equations import ee_loglogistic, ee_loglogistic_ed
For demonstration, we use dose-response data from Inderjit et al. (2002), which can be loaded from
delicatessendirectly.>>> d = load_inderjit() # Loading array of data >>> resp_data = d[:, 0] # Response data >>> dose_data = d[:, 1] # Dose 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=8for illustrative purposes. Defining psi, or the stacked estimating equations>>> def psi(theta): >>> lower = 0 >>> pl_model = ee_loglogistic(theta=[lower, ]+list(theta), dose=dose_data, response=resp_data) >>> ed_25 = ee_loglogistic_ed(theta[3], dose=dose_data, delta=0.25, >>> lower=lower, upper=theta[0], >>> ed50=theta[1], steepness=theta[2]) >>> 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.max(resp_data)+np.min(resp_data)) / 2, >>> (np.max(resp_data)+np.min(resp_data)) / 2, >>> (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] # upper limit >>> estr.theta[1] # ED(50) >>> estr.theta[2] # steepness >>> 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.