Learn R Programming

car (version 3.1-5)

deltaMethod: Estimate and Standard Error of a Nonlinear Function of Estimated Regression Coefficients

Description

deltaMethod 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.

Usage

deltaMethod(object, ...)

# S3 method for default deltaMethod(object, g., vcov., func=g., constants, level=0.95, rhs, singular.ok=FALSE, ..., envir=parent.frame()) # S3 method for lm deltaMethod (object, g., vcov.=vcov(object, complete=FALSE), parameterNames=names(coef(object)), ..., envir=parent.frame()) # S3 method for nls deltaMethod(object, g., vcov.=vcov(object, complete=FALSE), ..., envir=parent.frame()) # S3 method for multinom deltaMethod (object, g., vcov. = vcov(object, complete=FALSE), parameterNames = if (is.matrix(coef(object))) colnames(coef(object)) else names(coef(object)), ..., envir=parent.frame()) # S3 method for polr deltaMethod (object, g., vcov.=vcov(object, complete=FALSE), ..., envir=parent.frame()) # S3 method for survreg deltaMethod (object, g., vcov. = vcov(object, complete=FALSE), parameterNames = names(coef(object)), ..., envir=parent.frame()) # S3 method for coxph deltaMethod (object, g., vcov. = vcov(object, complete=FALSE), parameterNames = names(coef(object)), ..., envir=parent.frame()) # S3 method for mer deltaMethod (object, g., vcov. = vcov(object, complete=FALSE), parameterNames = names(fixef(object)), ..., envir=parent.frame()) # S3 method for merMod deltaMethod (object, g., vcov. = vcov(object, complete=FALSE), parameterNames = names(fixef(object)), ..., envir=parent.frame()) # S3 method for lme deltaMethod (object, g., vcov. = vcov(object, complete=FALSE), parameterNames = names(fixef(object)), ..., envir=parent.frame()) # S3 method for lmList deltaMethod (object, g., ..., envir=parent.frame())

Arguments

Value

An object of class "deltaMethod", inheriting from "data.frame", for which a print method is provided. The object contains columns named Estimate for the estimate, SE for its standard error, and columns for confidence limits and possibly a hypothesis test. The value of g. is given as a row label.

Details

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 variance.

The default method requires that you provide \(x\) in the argument object, \(C\) in the argument vcov., and a text expression in argument g. that when evaluated gives the function \(g\). The call names(object) must return the names of the elements of x that are used in the expression 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 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 vcov(object). You can provide an alternative function for computing the sample variance matrix, for example to use a sandwich estimator.

For mixed models using lme4 or nlme, the coefficient estimates are returned by the fixef function, while for multinom, lmList and nlsList coefficient estimates are returned by coef as a matrix. Methods for these models are provided to get the correct estimates and variance matrix.

The argument 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 X1 and 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 such as the colon : used in interactions, or mathematical symbols like + or - 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")). The name “(Intercept)” used for the intercept in linear and generalized linear models is an exception, and it will be correctly interpreted by deltaMethod. Another option is to use back-ticks to quote nonstandard R names, as in deltaMethod(m2,"X1/`X1:X2`").

For 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 lmList and nlsList objects, the delta method is computed for each element of the list of models fit.

For nonlinear regression objects produced by the nls function, 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 models, such as those produced by lm and glm, the names of the coefficient estimates are the corresponding regressor names, not parameter names.

For mixed-effects models fit with lmer and glmer from the lme4 package or lme and nlme from the nlme package, 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 deltaMethod function.

Note: Earlier versions of deltaMethod included an argument parameterPrefix that implemented the same functionality as the parameterNames argument, but which caused several problems that were not easily fixed without the change in syntax.

References

Fox, J. (2016) Applied Regression Analysis and Generalized Linear Models, Third Edition. Sage.

Fox, J. and Weisberg, S. (2019) An R Companion to Applied Regression, Third Edition, Sage.

Weisberg, S. (2014) Applied Linear Regression, Fourth Edition, Wiley, Section 6.1.2.

See Also

First derivatives of g. are computed using symbolic differentiation by the function D.

Examples

Run this code
m1 <- lm(time ~ t1 + t2, data = Transact) 
deltaMethod(m1, "b1/b2", parameterNames= paste("b", 0:2, sep="")) 
deltaMethod(m1, "t1/t2", rhs=1) # use names of preds. rather than coefs.
deltaMethod(m1, "t1/t2", vcov=hccm) # use hccm function to est. vars.
deltaMethod(m1, "1/(Intercept)")
# The next example invokes the default method by extracting the
# vector of estimates and covariance matrix explicitly
deltaMethod(coef(m1), "t1/t2", vcov.=vcov(m1))
# Mroz example, in carData, logistic regression using 2 predictors
mroz.mod1 <- glm(lfp ~ k5 + age, family=binomial, data=Mroz)
# The S() method in car returns exponentiated logistic regression coefficients by default
S(mroz.mod1)
# Exponentiated coefficient estimates can also be computed one at a time by deltaMethod
deltaMethod(mroz.mod1, "exp(k5)")
# The point estimate is the same as in the S() output but the confidence interval is 
# different because S() simply exponentiated the ends of the confidence interval before 
# exponentiation.
# A more complex case is to get the estimate and standard error for the inverse logit
# of the coefficient estimate.
deltaMethod(mroz.mod1, "exp(b1)/(1 + exp(b1))", parameterNames= paste("b", 0:2, sep=""))
# the parameterNames argument was used to change the name of the coefficient from
# k5 to b1.

Run the code above in your browser using DataLab