estimatr icon indicating copy to clipboard operation
estimatr copied to clipboard

Add Waldtests as supported external method

Open acoppock opened this issue 6 years ago • 2 comments

lmtest::waldtest() runs with lm_robust fits, but worringly, gives different answers from lm fits

library(fabricatr)
library(randomizr)
library(estimatr)
library(sandwich)
library(lmtest)

dat <- 
  fabricate(
    N = 1000,
    X1 = rnorm(N),
    X2 = rnorm(N),
    Z = complete_ra(N),
    Y = Z + X1 + X2
  )

fit_1 <- lm_robust(Y ~ Z + X1 + X2, data = dat)
fit_2 <- lm_robust(Y ~ Z + X1 + X2 + Z*X1 + Z*X2, data = dat)

waldtest(fit_1, fit_2, test = "F")

fit_3 <- lm(Y ~ Z + X1 + X2, data = dat)
fit_4 <- lm(Y ~ Z + X1 + X2 + Z*X1 + Z*X2, data = dat)

# doesn't match
waldtest(fit_3, fit_4, test = "F", vcov = vcovHC(fit_4, type = "HC2"))
# this either
waldtest(fit_3, fit_4, test = "F")

acoppock avatar Apr 11 '18 20:04 acoppock

Whoopsie, forgot an error term (thanks @nfultz !):

dat <- 
  fabricate(
    N = 1000,
    X1 = rnorm(N),
    X2 = rnorm(N),
    Z = complete_ra(N),
    Y = Z + X1 + X2 + rnorm(N)
  )

fit_1 <- lm_robust(Y ~ Z + X1 + X2, data = dat)
fit_2 <- lm_robust(Y ~ Z + X1 + X2 + Z*X1 + Z*X2, data = dat)

waldtest(fit_1, fit_2, test = "F")

fit_3 <- lm(Y ~ Z + X1 + X2, data = dat)
fit_4 <- lm(Y ~ Z + X1 + X2 + Z*X1 + Z*X2, data = dat)

# works great!
waldtest(fit_3, fit_4, test = "F", vcov = vcovHC(fit_4, type = "HC2"))

acoppock avatar Apr 11 '18 20:04 acoppock

We can redeem this issue, see the title change

lukesonnet avatar Apr 11 '18 21:04 lukesonnet