<>
Note there is no need to resort to scanned versions of SJ papers published
more than 3 years ago...
http://www.stata-journal.com/sjpdf.html?articlenum=st0063
HTH
Martin
-----Ursprüngliche Nachricht-----
Von: [email protected]
[mailto:[email protected]] Im Auftrag von
[email protected]
Gesendet: Montag, 16. Februar 2009 17:09
An: [email protected]
Betreff: st: marginal effects and standard errors in count regressions
Dear listers, I think I had a problem with my email, so I'm trying again (if
I am posting this message twice I appologize).
I got some great help here a while back with computing marginal effects for
a count regression with x1 and x1^2 terms using the "poisson" command (I
expect a nonlinear effect of x1).
Now, I'm having difficulty with computing the standard errors of the
marginal effect and the resulting Z-statistics. Ultimately, I need to be
able to compute the effects of interaction and squared terms (and Z-stats
for significance) as in Norton, Wang, and Ai(see
http://www.unc.edu/%7Eenorton/NortonWangAi.pdf). First, I'm trying to
reproduce the results for an individual term (not intereacted or raised to a
power).
I'm not sure if I've miss-coded the below (or perhaps I miss-calculated a
derivative), or if there are some assumptions/shortcuts underlying -mfx-,
-margeff-, -nlcom-, and -predictnl- commands (perhaps with regard to the
delta method) that lead to inconsistencies, particularly for the standard
errors. I do realize that -mfx- cacluates marginal effects at the mean,
whereas -margeff- by default calculates the mean marginal effect. Thanks in
advance for any insights you can provide!
Jason Franken
Code follows:
* Example (note: south & smsa are binary dummies):
sysuse nlsw88, clear
g g2=grade^2
poisson wage grade g2 tenure hours south smsa, r
mfx
margeff, dummies(south smsa) replace* Attempt to reproduce -mfx- &
-margeff- results for marginal effect & standard errors for tenure:
poisson wage grade g2 tenure hours south smsa, r
matrix V = get(VCE)
egen grade_bar = mean(grade)
egen g2_bar = mean(g2)
egen tenure_bar = mean(tenure)
egen hours_bar = mean(hours)
egen south_bar = mean(south)
egen smsa_bar = mean(smsa)
gen south1 = 1
gen smsa1 = 1
gen eBXbar = exp(_b[grade]*grade_bar + _b[g2]*g2_bar +
_b[tenure]*tenure_bar + _b[hours]*hours_bar + _b[south]*south_bar +
_b[smsa]*smsa_bar + _b[_cons])
gen eBXbar1 = exp(_b[grade]*grade_bar + _b[g2]*g2_bar +
_b[tenure]*tenure_bar + _b[hours]*hours_bar + _b[south]*south1 +
_b[smsa]*smsa1 + _b[_cons])
gen eBX = exp(_b[grade]*grade + _b[g2]*g2 + _b[tenure]*tenure +
_b[hours]*hours + _b[south]*south + _b[smsa]*smsa + _b[_cons])*REPRODUCE THE
-mfx- RESULT:
*Marginal effect is derivative of E[y|x] w.r.t tenure:
gen mf_tenureAtMean = _b[tenure]*eBXbar
gen mf_tenureAtMean1 = _b[tenure]*eBXbar1
*Standard error of marginal effect is (G×V×G')^0.5, where G is the
derivative of E[y|x] w.r.t tenure:
gen G_tenure_bar = eBXbar + (_b[tenure]*eBXbar*eBXbar)
matrix list V
gen SE_tenureAtMean = (G_tenure_bar*(5.496e-06)*G_tenure_bar)^0.5
sum mf_tenureAtMean SE_tenureAtMean
*THE ABOVE ARE "IN THE BALLPARK" BUT NOT EXACTLY THE -mfx-
RESULT.*ANOTHER OPTION IS TO USE -nlcom- AND -predictnl- COMMANDS - THESE
ALSO DO NOT REPRODUCE -mfx-.
nlcom (mf_tenureAtMean_nlcom: _b[tenure]*eBXbar)
predictnl mf_tenureAtMean_predictnl = _b[tenure]*eBXbar,
se(SE_tenureAtMean_predictnl)
sum mf_tenureAtMean_predictnl SE_tenureAtMean_predictnl*REPRODUCE THE
-margeff- RESULT:
*Marginal effect is derivative of E[y|x] w.r.t tenure:
gen mf_tenure = _b[tenure]*eBX
*Standard error of marginal effect is (G×V×G')^0.5, where G is the
derivative of E[y|x] w.r.t tenure:
gen G_tenure = eBX + (_b[tenure]*eBX*eBX)
egen MeanG_tenure = mean(G_tenure)
gen MeanSE_tenure = (MeanG_tenure*(5.496e-06)*MeanG_tenure)^0.5
gen SE_tenure = (G_tenure*(5.496e-06)*G_tenure)^0.5
sum mf_tenure SE_tenure MeanSE_tenure
*THE ABOVE EXACTLY REPRODUCES THE MARGINAL EFFECT (BUT NOT ITS STANDARD
ERROR) FOR THE -margeff- COMMAND. *AGAIN, WE CAN TRY THE -predictnl- COMMAND
- HERE, THE MARGINAL EFFECT (BUT NOT ITS STANDARD ERROR) IS IDENTICAL TO THE
-margeff- RESULT.
predictnl mf_tenure_predictnl = _b[tenure]*eBX, se(SE_tenure_predictnl)
sum mf_tenure_predictnl SE_tenure_predictnl
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/