delta.method
is a generic function that uses the delta method to get a
first-order approximate
standard error for a nonlinear function of a vector of random variables
with known or estimated covariance matrix.delta.method(object, ...)
## S3 method for class 'default':
delta.method(object,g,var,...)
## S3 method for class 'lm':
delta.method(object, g, var=vcov,parameterPrefix="b",...)
## S3 method for class 'nls':
delta.method(object, g, var=vcov,...)
## S3 method for class 'lmList':
delta.method(object, g, var=vcov,parameterPrefix="b",...)
## S3 method for class 'nlsList':
delta.method(object, g, var=vcov,...)
## S3 method for class 'lme':
delta.method(object, g, var=vcov,parameterPrefix="b",...)
## S3 method for class 'nlme':
delta.method(object, g, var=vcov,...)
## S3 method for class 'multinom':
delta.method(object, g, var=vcov,parameterPrefix="b",...)
## S3 method for class 'polr':
delta.method(object, g, var=vcov,parameterPrefix="b",...)
object
is a named vector of p
elements. This means that the call names(object)
would return a list
of p
character strings that are the names of the elements of
ob
"b"
giving the prefix of the
names of the parameter names used in the argument g
; see details.Estimate
for the estimate, SE
for its standard error.
The value of g
is given as a row label.object
, $C$ in the argument var
, and a text expression
in argument g
that when evaluated gives the function $g$.
Since
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 vector $x$ will be taken from coef(object)
,
and $C$ will be taken from vcov(object)
unless you provide
some other estimate of variance, for example, using a sandwich estimator. Methods
have been provided for many common regression models.
For regression models for which methods are not provided, you must extract
the named vector of coefficient estimates and and estimate of its covariance
matrix and then apply the default delta.method function.
In the argument g
you must provide a quoted character string
that gives the function of interest, for example g="b1/b2"
, where
b1
and b2
are names of two of the coefficient estimates.
For nonlinear regression objects of type nls, the call coef(object)
returns the estimated
coefficient vectors with names corresponding to parameter names.
For example,
m2 <- nls(y~theta/(1+gamma*x), start = list(theta=2,gamma=3))
will
have parameters named c("theta", "gamma")
.
In many other familiar regression methods, such as lm and glm, the names of
the coefficient estimates are the corresponding variable names, not
parameter names. For example, in
m2 <- lm(Y~X1+X2)
, names(coef(m2))
returns
c("(Intercept)","X1","X2")
. For models where the
coefficient names are variable
names, delta.method
will
provide names for the parameter estimates, given by
parameterPrefix
is
left at its default value of D
function used to compute derivatives may
get confused. However, embedded spaces or g
are computed using symbolic differentiation
by the function D
.# cakes is a data frame with response Y, predictors X1 X2
data(cakes,package="alr3")
m1 <- lm(Y~ X2 + I(X2^2), data = cakes) # quadratic polynomial
delta.method(m1, "-b1/(2*b2)") # X2 that maximizes the quadratic
# second order polynomial in two predictors:
m2 <- lm(Y ~ X1 + X2 + I(X1^2) + I(X2^2) + X1:X2, data=cakes)
# Find X1 to maximize Y when X2=350:
delta.method(m2,"(b1+b5*350)/(-2*b3)")
Run the code above in your browser using DataLab