Package: tonymisc
Many of the methods and functions I have written about on this blog are available in my CRAN-contributed package tonymisc. As of its latest release (1.0.2), the tonymisc package contains methods that extend memisc's mtable() command to work with the following object types:
- gls() objects from package nlme.
- ivreg() objects from package AER.
- plm() and pgmm() objects from package plm.
The package also allows for mtable() output of robust standard errors, probit and logit marginal effects and IV-regression objects created using the 2SLS command iv() within the tonymisc package.
- mfx_me() coerces glm objects (probit or logit link) to interface conveniently with the mtable() command to report marginal effects.
- robust() coerces lm objects to interface conveniently mtable() to specify heteroskedasticity-consistent standard errors. This command also allows the user to keep or drop variables from the mtable() output.
- iv() performs two-stage least squares regression and returns an object that conveniently allows the user to access first stage results and tests for relevance, both for single-endogenous regressor models (first stage F-test) and multiple-endogenous regressor models (test that the minimum canonical correlation is not zero, Anderson 2003).
Finally, the tonymisc library has several summary()-like commands available in the tonymisc library that report output to the screen for marginal effects, robust standard errors and IV models.
- mfx() reports Stata-like marginal effects to the screen when applied to a glm()-fit probit or logit model.
- summaryR() reports summary output for a lm()-fit model, but with robust standard errors (user-specified correction).
- sum_iv() reports select summary output (first stage, second stage, F-test, CC-test) to the screen for an iv()-fit model.
Leave a comment on this page if you have questions or suggestions for this package.
Hi Tony,
ReplyDeleteI found your blog and tonymisc, looking for a way to do 2SLS with 2 endogenous variables.
Unlike systemfit(), ivreg(), and so on, I intuitively understand iv()'s handling, and how to get the output that I want. I am really grateful that you provided the function (and the whole package). Thanks!
What I noticed is that, if I have a structural equation with two endogenous variables on the RHS, then if I use sum_iv(fit, first=TRUE) to report the 1st stage results, I only get the 1st stage for the second endogenous variable (which ever I put in as "second_endog" in iv(...,first_endog+second_endog~...)). Also residuals(fit$first) only returns the residuals for second_endog.
Seems to me that the loop in iv() that does the multiple first stages in the endog>1 case, overwrites previous cycles so that only the information on the last variable remains?!
I also noticed that iv() can't handle log-models (workaround: do "x<-log(x)" for all variables that you need). The reasons seems to be the naming of the hat-variables: iv() just adds ".hat", so if log(x) is an endogenous variable, iv() produces a variable name log(x).hat, which R doesn't like.
I'd like to solve these issues myself and post you the results, but I'm afraid that I would be more guessing than knowing what I do, and the result would be at least messy...
Best,
Christopher
Hey,
ReplyDeleteI found your video very useful. I just want to thank you.
from Seoul, Korea..
Seongmin