Jason Franken <[email protected]>:
There are not marginal effects for both x1 and x1squared; there is
only a marginal effect for x1, since you cannot vary x1 without also
varying x1squared. I think you want something like this:
sysuse nlsw88, clear
g g2=grade^2
unab x: tenure hours south smsa
poisson wage grade g2 `x', r
predict double hat
g double mf=hat*(_b[grade]+2*_b[g2]*grade)
egen double amfx=mean(mf), by(grade)
la var amfx "Mean Marginal Effect"
bys grade: replace amfx=. if _n>1
drop hat mf
foreach v of local x {
ren `v' was`v'
su was`v' if e(sample), meanonly
g double `v'=r(mean)
}
predict double hat
foreach v of local x {
drop `v'
ren was`v' `v'
}
g double mfxa=hat*(_b[grade]+2*_b[g2]*grade)
bys grade (amfx): replace mfxa=. if _n>1
drop hat
la var mfxa "Marginal Effect at Mean"
line mfxa amfx grade
On Tue, Feb 3, 2009 at 1:54 PM, <[email protected]> wrote:
> I'm running a count regression with x1 and x1^2 terms using the "poisson" command (I expect a nonlinear effect of x1), and want to compute marginal effects.
>
...
> *FOLLOWING SHOULD GIVE TRUE MARGINAL EFFECT FOR "x1" ...
> *for the average of marginal effects for all observations (like "margeff"):
> gen mf_x1 = (_b[x1]+(2*_b[x1squared]*x1))*eBX
> sum mf_x1
> *for the marginal effect at mean values of other explanatory variables (like "mfx"):
> gen mf_rpMEAN = (_b[x1]+(2*_b[x1squared]*x1bar))*eBXbar
> list mf_rpMEAN
>
> *FOLLOWING SHOULD GIVE TRUE MARGINAL EFFECT FOR "x1squared".
> *for the average of marginal effects for all observations (like "margeff"):
> gen mf_x1squared = (2*_b[x1squared]*eBX) + (((_b[x1]+(2*_b[x1squared]*x1))^2)*eBX)
> sum mf_x1squared
> *for the marginal effect at mean values of other explanatory variables (like "mfx"):
> gen mf_x1squaredMEAN = (2*_b[x1squared]*eBXbar) + (((_b[x1]+(2*_b[x1squared]*x1bar))^2)*eBXbar)
> list mf_x1squaredMEAN
*
* 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/