Statalist


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

st: AW: marginal effects and standard errors in count regressions


From   "Martin Weiss" <[email protected]>
To   <[email protected]>
Subject   st: AW: marginal effects and standard errors in count regressions
Date   Mon, 16 Feb 2009 17:13:36 +0100

<> 


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/



© Copyright 1996–2024 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index