tests/testthat/test-robust-2SLS.R

if (require(MASS)){
  
  Kmenta1 <- Kmenta
  Kmenta1[20, "Q"] <- 95 # corrupted data
  deqr1 <- ivreg(Q ~ P + D | D + F + A, data=Kmenta1, method="MM") 
  stg1 <- rlm(P ~ D + F + A, data=Kmenta1, method="MM")
  Kmenta1$P.hat <- fitted(stg1)
  stg2 <- rlm(Q ~ P.hat + D, data=Kmenta1, method="MM")
  
  test_that("robust 2SLS coefficients are computed correctly", {
    expect_equal(coef(deqr1), coef(stg2), check.attributes=FALSE)
  })
  
  test_that("hatvalues are computed correctly for robust 2SLS, stage 2",{
    hats <- c(hatvalues(lm(residuals(stg2) ~ model.matrix(stg2) - 1, weights=stg2$w)), 0)
    names(hats)[20] <- "1941"
    expect_equal(hats, hatvalues(deqr1))
  })
  
  test_that("hatvalues are computed correctly for robust 2SLS, stage 1",{
    expect_equal(hatvalues(stg1), hatvalues(deqr1, type="stage1"))
  })
  
}

Try the ivreg package in your browser

Any scripts or data that you put into this service are public.

ivreg documentation built on April 3, 2025, 9:34 p.m.