Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • DIfference between -overid- and -estat overid- after ivregress

    I am running -ivregress 2sls- with -vce(cluster clustervar) option.

    If I run -estat overid, forcenonrobust-, I get
    Code:
    Tests of overidentifying restrictions:
    
      Sargan chi2(1)         =  5.80552  (p = 0.0160)
      Basmann chi2(1)        =  5.80559  (p = 0.0160)
    However, if I run -overid, vceopt(cluster(clustervar))-, I get
    Code:
    Overidentification test: 2-step-GMM-based (LM version)
      Test statistic robust to heteroskedasticity and clustering on state_code
    j=    0.69  Chi-sq(  1) p-value=0.4061
    The p-values are pretty different after the two overid tests. How to interpret these? And is overid, vceopt(,) more appropriate to use?


    *Note 1: To replicate, you may need -ssc install overid- and -ssc install ranktest-
    *Note 2: I have used dummy data to generate this, these are not my actual results.

  • #2
    Could anyone help with this pls?

    Comment


    • #3
      I guess I'll give it a shot. It looks to me like these two tests have different assumptions about the variance/covariance matrix. The docs say that, in the first case, you force the system to estimate Sargan and Basmann chi2 statistics, even though you used robust standard errors in the original regression. In the second case you only see one chi2 statistic. I'm not sure why you would want to use the forcenonrobust option as it seems like the default behavior would be more appropriate generally, but if you do, you need a very good and well thought out reason. In any case, I would expect you to use the forcenonrobust option only after estimating an iv regression with robust standard errors like this:

      Code:
      ivregress 2sls y x1 [...], vce(robust)
      But again, it seems like you should usually follow that line without any options most of the time. Just estat overid.

      In the second test, you specify the vce(cluster) covariance structure in both commands. I think this should be equivalent to the default behavior without any options (you already specify vce(culster) in the ivregress), but in any case it should be appropriate for that model.

      Essentially, vce(robust) and vce(cluster(clustervar)) are different model specifications and these two specifications have different assumptions. Since you use the clustered option in the regression, you should assume clustered standard errors in the post estimation test. I don't see why you would want the forcenonrobust option at all.

      Comment

      Working...
      X