A set of functions implementing weighted empirical adaptive variance estimation (WEAVE) as introduced by Lumley and Heagerty (1999). This is implemented as a special case of the general class of kernel-based heteroscedasticity and autocorrelation consistent (HAC) covariance matrix estimators as introduced by Andrews (1991), using a special choice of weights.

weave(x, order.by = NULL, prewhite = FALSE, C = NULL,
  method = c("truncate", "smooth"), acf = isoacf, adjust = FALSE,
  diagnostics = FALSE, sandwich = TRUE, tol = 1e-7, data = list(), ...)

weightsLumley(x, order.by = NULL, C = NULL,
  method = c("truncate", "smooth"), acf = isoacf, tol = 1e-7, data = list(), ...)



a fitted model object.


Either a vector z or a formula with a single explanatory variable like ~ z. The observations in the model are ordered by the size of z. If set to NULL (the default) the observations are assumed to be ordered (e.g., a time series).


logical or integer. Should the estimating functions be prewhitened? If TRUE or greater than 0 a VAR model of order as.integer(prewhite) is fitted via ar with method "ols" and demean = FALSE.


numeric. The cutoff constant C is by default 4 for method "truncate" and 1 for method "smooth".


a character specifying the method used, see details.


a function that computes the autocorrelation function of a vector, by default isoacf is used.


logical. Should a finite sample adjustment be made? This amounts to multiplication with \(n/(n-k)\) where \(n\) is the number of observations and \(k\) the number of estimated parameters.


logical. Should additional model diagnostics be returned? See vcovHAC for details.


logical. Should the sandwich estimator be computed? If set to FALSE only the middle matrix is returned.


numeric. Weights that exceed tol are used for computing the covariance matrix, all other weights are treated as 0.


an optional data frame containing the variables in the order.by model. By default the variables are taken from the environment which the function is called from.


currently not used.


weave is a convenience interface to vcovHAC using weightsLumley: first a weights function is defined and then vcovHAC is called.

Both weighting methods are based on some estimate of the autocorrelation function \(\rho\) (as computed by acf) of the residuals of the model x. The weights for the "truncate" method are

$$I\{n \rho^2 > C\}$$

and the weights for the "smooth" method are

$$\min\{1, C n \rho^2\}$$

where n is the number of observations in the model an C is the truncation constant C.

Further details can be found in Lumley & Heagerty (1999).


weave returns the same type of object as vcovHAC

which is typically just the covariance matrix.

weightsLumley returns a vector of weights.


Lumley T & Heagerty P (1999). “Weighted Empirical Adaptive Variance Estimators for Correlated Data Regression.” Journal of the Royal Statistical Society B, 61, 459--477.


x <- sin(1:100)
y <- 1 + x + rnorm(100)
fm <- lm(y ~ x)
#>             (Intercept)           x
#> (Intercept)  0.01003614 -0.00138173
#> x           -0.00138173  0.02010650
#>              (Intercept)            x
#> (Intercept) 1.024461e-02 2.591723e-05
#> x           2.591723e-05 2.037982e-02