Estimate and Standard Error of a Nonlinear Function of Estimated Regression Coefficients
deltaMethod is a generic function that uses the delta method to get a
standard error for a nonlinear function of a vector of random variables
with known or estimated covariance matrix.
deltaMethod(object, ...) ## S3 method for class 'default': deltaMethod(object, g, vcov., func=g, ...) ## S3 method for class 'lm': deltaMethod(object, g, vcov.=vcov, parameterNames=names(coef(object)), ...) ## S3 method for class 'nls': deltaMethod(object, g, vcov.=vcov, ...) ## S3 method for class 'multinom': deltaMethod(object, g, vcov. = vcov, parameterNames = if (is.matrix(coef(object))) colnames(coef(object)) else names(coef(object)), ...) ## S3 method for class 'polr': deltaMethod(object, g, vcov.=vcov, ...) ## S3 method for class 'survreg': deltaMethod(object, g, vcov. = vcov, parameterNames = names(coef(object)), ...) ## S3 method for class 'coxph': deltaMethod(object, g, vcov. = vcov, parameterNames = names(coef(object)), ...) ## S3 method for class 'mer': deltaMethod(object, g, vcov. = vcov, parameterNames = names(fixef(object)), ...) ## S3 method for class 'lme': deltaMethod(object, g, vcov. = vcov, parameterNames = names(fixef(object)), ...) ## S3 method for class 'lmList': deltaMethod(object, g, ...)
- For the default method,
objectis a vector of
pnamed elements, so
names(object)returns a list of
pcharacter strings that are the names of the elements of
object. For the other
- A quoted string that is the function of the parameter estimates to be evaluated; see the details below.
- The (estimated) covariance matrix of the coefficient estimates. For the default method, this argument is required. For all other methods, this argument must either provide the estimated covariance matrix or a function that when applied to
- A quoted string used to annotate output. The default of
func = gis usually appropriate.
- A character vector of length
pthat gives the names of the parameters in the same order as they appear in the vector of estimates. This argument will be useful if some of the names in the vector of estimates include special charact
- Additional arguments; not currently used.
Suppose $x$ is a random vector of length $p$ that is at least approximately
normally distributed with mean $\beta$ and estimated covariance matrix
$C$. Then any function $g(\beta)$ of $\beta$, is estimated by
$g(x)$, which is in large samples normally distributed with mean $g(\beta)$
and estimated variance $h'Ch$, where $h$ is the first derivative of
$g(\beta)$ with respect to $\beta$ evaluated at $x$. This function
returns both $g(x)$ and its standard error, the square root of the estimated
The default method requires that you provide $x$ in the argument
object, $C$ in the argument
vcov., and a text expression
g that when evaluated gives the function $g$. The
names(object) must return the names of the elements of
that are used in the expression
the delta method is often applied to functions of regression parameter
estimates, the argument
object may be the name of a regression
object from which the the estimates and their estimated variance matrix can
be extracted. In most regression models, estimates are returned by the
coef(object) and the variance matrix from
You can provide an alternative function for computing the sample variance
matrix, for example to use a sandwich estimator.
For mixed models using
nlme, the coefficient estimates
are returned by the
fixef function, while for
nlsList coefficient estimates are returned by
coef as a matrix. Methods for these models are provided to get the
correct estimates and variance matrix.
g must be a quoted character string
that gives the function of interest. For example, if you set
m2 <- lm(Y ~ X1 + X2 + X1:X2), then
deltaMethod(m2,"X1/X2") applies the
delta method to the ratio of the coefficient estimates for
X2. The argument
g can consist of constants and names
associated with the elements of the vector of coefficient estimates.
In some cases the names may include characters including such as the colon
: used in interactions, or mathematical symbols like
- signs that would confuse the
function that computes numerical derivatives, and for this case you can replace
the names of the estimates with the
parameterNames argument. For
example, the ratio of the
X2 main effect to the interaction term could be computed using
deltaMethod(m2, "b1*b3", parameterNames=c("b0", "b1", "b2", "b3")).
multinom objects, the
coef function returns a matrix of
coefficients, with each row giving the estimates for comparisons of one category
to the baseline. The
deltaMethod function applies the delta method to
each row of this matrix. Similarly, for
objects, the delta method is computed for each element of the list of
For nonlinear regression objects of type nls, the call
returns the estimated
coefficient vectors with names corresponding to parameter names.
m2 <- nls(y ~ theta/(1 + gamma * x), start = list(theta=2, gamma=3)) will
have parameters named
In many other familiar regression methods, such as lm and glm, the names of
the coefficient estimates are the corresponding variable names, not
For mixed-effects models fit with
nlmer from the
lme4 package or
nlme from the
only fixed-effect coefficients are considered.
For regression models for which methods are not provided, you can extract
the named vector of coefficient estimates and and estimate of its covariance
matrix and then apply the default
Earlier versions of
deltaMethod included an argument
parameterPrefix that implemented the same functionality as the
parameterNames argument, but it caused several unintended bugs that
were not easily fixed without the change in syntax.
- A data.frame with two components
Estimatefor the estimate,
SEfor its standard error. The value of
gis given as a row label.
Fox, J. (2008) Applied Regression Analysis and Generalized Linear Models, Second Edition. Sage. Fox, J. and Weisberg, S. (2011) An R Companion to Applied Regression, Second Edition, Sage. S. Weisberg (2005) Applied Linear Regression, Third Edition, Wiley, Section 6.1.2.
First derivatives of
g are computed using symbolic differentiation
by the function
m1 <- lm(time ~ t1 + t2, data = Transact) deltaMethod(m1, "b1/b2", parameterNames= paste("b", 0:2, sep="")) deltaMethod(m1, "t1/t2") # use names of preds. rather than coefs. deltaMethod(m1, "t1/t2", vcov=hccm) # use hccm function to est. vars. # to get the SE of 1/intercept, rename coefficients deltaMethod(m1, "1/b0", parameterNames= paste("b", 0:2, sep="")) # The next example calls the default method by extracting the # vector of estimates and covariance matrix explicitly deltaMethod(coef(m1), "t1/t2", vcov.=vcov(m1))