Doing a Wald Test in R

One way to test whether the coefficients on a group of regressors are all equal to zero is to do a Wald test comparing the fit of the larger model (with all regressors) against the fit of the smaller model (where the regressors with zero coefficients have been omitted).

Let’s generate data on the dependent variable:

set.seed(500)
y <- ts(rnorm(500))

And three regressors:

x1 <- ts(rnorm(500))
x2 <- ts(rnorm(500))
x3 <- ts(rnorm(500))

The model is \[y_{t} = \beta_{0} + \beta_{1} x_{1t} + \beta_{2} x_{2t} + \beta_{3t} x_{3t} + \varepsilon_{t}\] and the hypothesis of interest is \[H_{0}: \beta_{2} = \beta_{3} = 0.\]

Estimate the unrestricted and restricted models:

library(tstools)
fit.unrestricted <- tsreg(y, ts.intersect(x1, x2, x3))
fit.restricted <- tsreg(y, x1)

Do the Wald test:

library(lmtest)
waldtest(fit.unrestricted, fit.restricted)

The output is

Wald test

Model 1: lhs ~ rhs
Model 2: lhs ~ rhs
  Res.Df Df      F Pr(>F)
1    496                 
2    498 -2 0.8449 0.4302

As expected (given that we generated the regressors to be independent of \(y\)) the p-value is 0.43, so we don’t reject \(H_{0}\).

If there is a concern about heteroskedasticity or serial correlation, you can set the vcov parameter to be a function to use to extract the covariance matrix, for instance the NeweyWest function in the sandwich package:

library(sandwich)
waldtest(fit.unrestricted, fit.restricted, vcov=NeweyWest)

Because we know there is no issue with heteroskedasticity or serial correlation in the residuals of our regression, we don’t expect the correction to have much effect in this example, and it doesn’t:

Wald test

Model 1: lhs ~ rhs
Model 2: lhs ~ rhs
  Res.Df Df      F Pr(>F)
1    496                 
2    498 -2 0.8539 0.4264

⤺ Back to the List of Computing Posts