Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.

# Re: Re: Re: Re: st: 'margin' and marg. effects of second-order polynomials

 From Tirthankar Chakravarty To statalist@hsphsun2.harvard.edu Subject Re: Re: Re: Re: st: 'margin' and marg. effects of second-order polynomials Date Thu, 30 Dec 2010 03:13:30 -0800

standard normal density.

T

On Thu, Dec 30, 2010 at 3:09 AM, Tirthankar Chakravarty
<tirthankar.chakravarty@gmail.com> wrote:
> Justina,
>
> While the following sentence at <http://www.stata.com/stata11/margins.html>:
>
> "[...] Because of Stata 11’s new factor-variable features, we can get
> average partial and marginal effects for age even when age enters as a
> polynomial:"
>
> confirms what I have said above, it is sometimes a good exercise to
> check these yourself. I show below how you might do this for a probit
> model with higher-order terms (in principle, the extension to ordered
> probit is the same because of the parallel lines assumption). Recall
> that the formula for the change in probability of success is (_not_ as
> you write):
>
> d(P(y=1))/dx = \phi(x'b)(b_1+2*b_{12}*x_1)
>
> where x is the entire vector of covariates, and x_1 is the covariate
> of interest (for which the second-order term is also included in the
> linear index, hence the form of the marginal effect), b_1 is the
> coefficient on the main term and b_{12} is the coefficient on the
> polynomial term. Note that this is for each individual observation.
> From these, computing the so-called average marginal effects is easy.
> Here is the code:
>
> ************************************************
> clear*
> clear mata
> sysuse auto, clear
> g mpgsq = mpg^2
>
> mata
> // probit log-likelihood
> void fnProbitLL(todo,b,crit,g,H)
> {
>        external vY,mX
>        crit= vY'*log(normal(mX*b'))+(1:-vY)'*log(1:-normal(mX*b'))
> }
>
> // create data
> vY = st_data(., ("foreign"))
> cons=J(rows(vY),1,1)
> mX = st_data(., ("mpg", "price", "mpgsq")), cons
> stata("qui: logit foreign mpg price  mpgsq ")
> init = st_matrix("e(b)")
>
> // optimize
> S=optimize_init()
> optimize_init_valueid(S, "log-likelihood")
> optimize_init_which(S, "max")
> optimize_init_evaluatortype(S,"d0")
> optimize_init_evaluator(S, &fnProbitLL())
> optimize_init_params(S, init)
> optimize_init_technique(S, "nr")
> optimize_init_trace_value(S, "on")
> optimize_init_trace_params(S, "on")
> optimize(S)
>
> // retrieve results
> vB = optimize_result_params(S)
> mVarCovar = optimize_result_V_oim(S)
>
> // construct marginal effects (Ai & Norton, EL, 2003)
> dB12 = vB[1, 3]  // coeff. on 2nd-order term
> dB1 = vB[1, 1]  // coeff. on main term
> // vector of individual marginal effects
> vPE = normalden(mX*vB'):*(dB1:+2*dB12:*mX[.,1])
> // average partial effect
> printf("The average marginal effect of age= %g.\n", colsum(vPE)/rows(vPE))
> end
>
> // probit foreign c.mpg##c.mpg price
> probit foreign mpg c.mpg#c.mpg price
> margins, dydx(mpg)
> ************************************************
>
> And you see that the marginal effects computed directly from the
> formula coincides exactly with what Stata gives you using -margins-.
>
> The standard reference for this sort of thing is Ai & Norton,
> "Interaction terms in logit and probit models", Economics Letters,
> 80(1), 2003, and the accompanying Stata Journal article, which can be
> found here:
> http://www.stata-journal.com/article.html?article=st0063
>
> T
>
>
>
> On Thu, Dec 30, 2010 at 1:08 AM, Justina Fischer <JFischer@diw.de> wrote:
>> thanks for these insights ans sorry for bothering you a last time:
>>
>> estimating
>>
>> logistic outcome treatment##group c.age##c.age
>>
>> what marginal effect does
>>
>> margins, dydx(age)
>>
>> estimate ? is it dy/dx = a + 2bx ?
>>
>> Justina
>
>
>
> --
> To every ω-consistent recursive class κ of formulae there correspond
> recursive class signs r, such that neither v Gen r nor Neg(v Gen r)
> belongs to Flg(κ) (where v is the free variable of r).
>

--
To every ω-consistent recursive class κ of formulae there correspond
recursive class signs r, such that neither v Gen r nor Neg(v Gen r)
belongs to Flg(κ) (where v is the free variable of r).

*
*   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/