[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]

From |
"Steve Stillman" <stillman@motu.org.nz> |

To |
<statalist@hsphsun2.harvard.edu> |

Subject |
RE: st: marginal effects for user defined programs |

Date |
Wed, 5 Oct 2005 13:53:17 +1300 |

Hi May (and other statalisters). I have a general question on this. What would the mypredict program look like if we want to generalise and have be able to get the marginal effects for the predicted probability of every outcome? I gather we would need to pass the number of outcomes through to mypredict and then loop through the appropriate predicted probability formulas. I thought you might be able to provide insight into how best to do this (and how to show predict that you have different possible predicted probabilities). Cheers, Steve -----Original Message----- From: owner-statalist@hsphsun2.harvard.edu [mailto:owner-statalist@hsphsun2.harvard.edu]On Behalf Of May Boggess Sent: Wednesday, October 05, 2005 12:25 PM To: statalist@hsphsun2.harvard.edu Subject: Re: st: marginal effects for user defined programs On Tuesday morning Paul asked about calculating marginal effects after user written estimation commands. Paul has made a good start by storing the estimation results and the name of his predict command. This is important since -mfx- uses predict: > > program define myreoprob, eclass > reoprob wagecat inc female, i(id) > estimates local cmd="myreoprob" > estimates local predict="mypredict" > end > I have made one slight change to Paul's program: I have changed the single quotes to double quotes. Now we need to define the program -predict- will call: cap program drop mypredict program define mypredict syntax newvarlist [in] [if], [x] tempvar touse xb mark `touse' _predict double `xb' gen double `varlist'= norm([_cut1]_b[_cons]-`xb') if `touse' end With these two programs defined we can use -mfx- after -reoprob-: clear use http://www.stata-press.com/data/r7/auto keep rep mpg for turn drop if rep<3 replace rep=rep-3 rename turn id rename for female rename mpg inc rename rep wagecat myreoprob wagecat inc female, i(id) mfx compute Now, given that taking the derivates and differences is not too tricky in the instance, I'm going to do that just so I can verify I have done this correctly. clear use http://www.stata-press.com/data/r7/auto keep rep mpg for turn drop if rep<3 replace rep=rep-3 rename turn id rename for female rename mpg inc rename rep wagecat reoprob wagecat inc female, i(id) sum inc local minc=r(mean) sum female local mfemale=r(mean) local xb (_b[inc]*`minc'+_b[female]*`mfemale') display " p = " norm([_cut1]_b[_cons]-`xb') display "dpdinc: " normd([_cut1]_b[_cons]-`xb')*(-_b[inc]) local xb1 (_b[inc]*`minc'+_b[female]*1) local xb0 (_b[inc]*`minc'+_b[female]*0) local p1 norm([_cut1]_b[_cons]-`xb1') local p0 norm([_cut1]_b[_cons]-`xb0') display "dpdfemale: " `p1'-`p0' The marginal effects I calculated here "by hand" should agree with those give by -mfx-. Of course, -mfx- has the advantage of being able to also give the standard errors. In version 9, one can use -nlcom- instead of -display- in my "by hand" method to get the standard errors. -- May mmb@stata.com * * For searches and help try: * http://www.stata.com/support/faqs/res/findit.html * http://www.stata.com/support/statalist/faq * http://www.ats.ucla.edu/stat/stata/ * * For searches and help try: * http://www.stata.com/support/faqs/res/findit.html * http://www.stata.com/support/statalist/faq * http://www.ats.ucla.edu/stat/stata/

**Follow-Ups**:**Re: st: marginal effects for user defined programs***From:*May Boggess <mboggess@stata.com>

- Prev by Date:
**Re: st: marginal effects for user defined programs** - Next by Date:
**st: RE: RE: Leave one out** - Previous by thread:
**Re: st: marginal effects for user defined programs** - Next by thread:
**Re: st: marginal effects for user defined programs** - Index(es):

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