doNlme {mixlow} | R Documentation |
Organizes input and calls the nlme
function to obtain parameter
estimates for sigmoidal concentration-response curves. Starting values
for the fixed effects are obtained from the output of the
doNls
function.
doNlme(mixlowData, nlsData, drugs=getDrugs(mixlowData), analysis="single", varFunction= 1, method="ML", verbose=FALSE)
mixlowData |
A list obtained from the output of
prepareData . It contains adjusted concentration-response
data. |
nlsData |
A list obtained from the output of
doNls . It contains parameter estimates for the
concentration-effect curves, which are used as fixed-effects
starting values by the nlme function. |
drugs |
A vector of drug names |
analysis |
An optional character string either “single” or “multiple” where “single” indicates that each drug is to be analyzed separately and “multiple” indicates that all drugs should be analyzed together. The default is “single”. |
varFunction |
An optional numerical vector or list of lists
from the set (1,2,3,4) that specifies the variance function(s)
to be used for each analysis. If analysis is “multiple”,
varFunction can be a vector. If analysis is
“single” it can also be a vector, in which case all drugs
will use the same varFunction vector. Or, if analysis is
“single”, a list can be supplied of length equal to the
number of drugs. Each entry in the list should be a list with named
component varFunction. This allows a different set of varFunctions
to be used with each drug. The default is 1. |
method |
An optional character string. If “REML” the model is fit by maximizing the restricted log-likelihood. If “ML” the log-likelihood is maximized. Default is “ML”. |
verbose |
An optional logical value. If TRUE information
from intermediate steps in the doNlme analysis is printed.
The default is FALSE . |
This function uses output from doNls
as starting values for
fixed effects. It organizes input and sets up calls to the nlme
function in order to estimate parameters of sigmoidal concentration-
response curves.
The variance functions for analysis of single drugs are:
sigma
sigma*E[response]
sigma*E[response]^beta
sigma*(beta1 + E[response])
The variance functions for analysis of multiple drugs are:
sigma
sigma*alpha
, where alpha is drug-dependentsigma*E[response]
sigma*E[response]^beta
, where beta is drug-dependent
E[response]
is used above to designate the expected response in a given
well of a tray. For heteroscedastic errors, varFunction=2 (for single)
and varFunction=3 (for multiple) analysis may be appropriate in many cases.
The simpler error functions could be tried if the nlme
function
does not converge.
See Boik et al., 2008 for details of the model. The parameters estimated by the model are:
E[exp(u) + b_t]
, the expected value of all control wells
across trays, where b is a tray-dependent random variableE[exp(u) + b_t]
that is associated
with the non-zero asymptote.Parameters u, g, and p are in log scale.
Use of analysis=“multiple” for mixtures that contain more than two drugs can sometimes be problematic in that the estimation procedure may not converge or may take a long time to converge. If a mixture contains more than a few drugs, one alternative is to estimate concentration-response curve parameters for each drug/mixture separately (i.e., use analysis=“single”). The disadvantage with this approach is that for analysis of any given drug, control-well data from the trays of other drugs are not used. Control-well responses are then estimated based on only a few (replicate) trays.
Returns a list of class nlmeData
for each analysis with the
following components:
nlmeResults |
A list of results from the doNlme analysis:
|
nlmeGraph |
A list of data used for graphing nlme results:
|
John Boik jcboik@stanford.edu
The model is described in Boik J.C., Newman R.A., Boik R.J. (2008) Quantifying synergism/antagonism using nonlinear mixed-effects modeling: a simulation study. Statistics in Medicine 27(7), 1040-61
# mixlowData data object is obtained using the prepareData function data(mixlowData) # nlsData data object is obtained using the doNls function data(nlsData) drugs = getDrugs(mixlowData) nlmeData = doNlme(mixlowData, nlsData, drugs=drugs, varFunction= c(1,2))