mpl.nlreg {nlreg} | R Documentation |
Maximum Adjusted Profile Likelihood Estimates for a ‘nlreg’ Object
Description
Calculates the maximum adjusted profile likelihood estimates of the variance parameters for a nonlinear heteroscedastic model.
Usage
## S3 method for class 'nlreg'
mpl(fitted, offset = NULL, stats = c("sk", "fr"),
control = list(x.tol = 1e-6, rel.tol = 1e-6, step.min = 1/2048,
maxit = 100), trace = FALSE, ... )
Arguments
fitted |
a |
offset |
a numerical vector whose elements are named after the variance
parameters appearing in the nonlinear model. These will be fixed
to the values specified in |
stats |
character value indicating which correction term to use.
Admissible values are |
control |
a list of iteration and algorithmic constants. See the Details section below for their definition. |
trace |
logical flag. If |
... |
absorbs any additional argument. |
Details
The mpl.nlreg
routine returns nearly unbiased estimates of the
variance parameters of a nonlinear heteroscedastic regression model
by maximizing the corresponding adjusted profile likelihood
(Barndorff-Nielsen, 1983). More precisely, it implements two
approximations derived from the theories developed respectively by
Skovgaard (1996) and Fraser, Reid and Wu (1999). The
core algorithm alternates
minimization of minus the adjusted profile log likelihood with
respect to the variance parameters, and minimization of minus the
profile log likelihood with respect to the regression coefficients.
The first step is omitted if the offset
argument is used in
which case mpl.nlreg
returns the constrained maximum
likelihood estimates of the regression coefficients. The
quasi-Newton optimizer optim
is used in both
steps. Starting values are retrieved from the nlreg
object
passed through the fitted
argument.
The algorithm iterates until convergence or until the maximum number
of iterations is reached. The stopping rule considers the relative
difference between successive estimates of the variance parameters
and the relative increment of the adjusted profile log likelihood.
These are governed by the parameters x.tol
and
rel.tol
/step.min
, respectively.
If the offset
argument is used, the relative difference
between successive estimates of the regression coefficients and the
relative increment of the profile log likelihood are considered
instead. If convergence has been reached, the results are saved in
an object of class mpl
. The output can be examined by
print
and summary
.
Components can be extracted using coef
and
param
.
The theory is outlined in Brazzale (2000, Sections 3.1 and 3.2.3). Details of the implementation are given in Brazzale (2000, Section 6.3.1).
Value
an object of class mpl
which inherits from nlreg
.
See mpl.object
for details.
Side Effects
If trace = TRUE
and offset = NULL
, the iteration number
and the corresponding adjusted profile log likelihood are printed.
Note
The argument control
which controls the convergence criteria
plays an important role. Fine-tuning of this argument helps
surrounding a well-known problem in nonlinear regression, that is,
convergence failure in cases where the likelihood and/or the adjusted
profile likelihood are very flat.
References
Barndorff-Nielsen, O. E. (1983) On a formula for the distribution of the maximum likelihood estimator. Biometrika, 70, 343–365.
Brazzale, A. R. (2000) Practical Small-Sample Parametric Inference. Ph.D. Thesis N. 2230, Department of Mathematics, Swiss Federal Institute of Technology Lausanne.
Fraser, D.A.S., Reid, N. and Wu, J. (1999). A simple general formula for tail probabilities for frequentist and Bayesian inference. Biometrika, 86, 249–264.
Skovgaard, I. (1996) An explicit large-deviation approximation to one-parameter tests. Bernoulli, 2, 145–165.
See Also
mpl
, mpl.object
,
nlreg.object
, optim
Examples
data(metsulfuron)
metsulfuron.nl <-
nlreg( formula = log(area) ~ log( b1+(b2-b1) / (1+(dose/b4)^b3) ),
weights = ~ ( 1+dose^exp(g) )^2, data = metsulfuron, hoa = TRUE,
start = c(b1 = 138, b2 = 2470, b3 = 2, b4 = 0.07, g = log(0.3)) )
##
## MMPLE of the variance parameters
##
metsulfuron.mpl <- mpl( metsulfuron.nl, trace = TRUE )
summary( metsulfuron.mpl, corr = FALSE )
##
## constrained MLEs of the regression coefficients
##
metsulfuron.mpl <- mpl( metsulfuron.nl, offset = metsulfuron.nl$varPar,
trace = TRUE )
summary( metsulfuron.mpl, corr = FALSE )