Bookmark and Share

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


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

Re: st: Mixed ordered probit (Stata 13) varying intercept when there is no intercept


From   Lucas <[email protected]>
To   [email protected]
Subject   Re: st: Mixed ordered probit (Stata 13) varying intercept when there is no intercept
Date   Fri, 19 Jul 2013 23:53:36 -0700

Dear stata staff,

Thanks for your response.  It is helpful, but I am not sure I have
been completely clear about the implication, as I see it, of what
seems like an innocuous parameterization isse.  I think the issue is
innocuous, in the single-level case.  But, it seems consequential once
you move to the multi-level case.

Here's the challenge as I see it.  Assume my equation is:

1) Y=b1j*boy+b2j*girl+b3j*boy*Z1j+b4j*Z1j*girl + b5*X+ . . .

In the mixed model for interval-level variables, b1j and b2j (and b3j
and b4j) are freely estimated; that is, each context is allowed to
have a b1j and a b2j and the b1j-b2j difference in context j is
independent of the b1k-b2k difference in context k=j+1.  In other
words, the b1j-b2j difference is not constrained across contexts
(admitting that some multilevel estimation algorithms estimate only
variances, these *imply* context-specific estimates of b1j and b2j
(else no predicted values could be calculated)).

However, if I use -meoprobit- with the current stata parameterization
(which estimates thresholds and fixes b2j (i.e., the constant for the
omitted category) at zero, it seems that stata therefore fixes b2j at
zero *for* *every* *context*.  This means that the b1j-b2 gap is
constrained to equal the b1j for every context.

This seems a very different model from that in equation 1 above, and
it is unclear whether one can even recover estimates of b2j (because
thresholds are *also* fixed across contexts).

I know in the single-level case how one parameterizes the ordered
probit or ordered logit model (fixing 1 cutpoint, or fixing the
constant at zero, fixing the sum of the cutpoints, and so on) is
irrelevant.  But, in the multilevel case, it seems consequential.

This, of course, leads me to wonder the following:

1)Is my understanding of the implication of the -meoprobit-
parameterization accurate?

2)If so, can I do anything in the -meoprobit- command to change the
parameterization?

3)Barring that, might stata 13.1 upgrade the mixed-ordered commands to
allow users to set the parameterization as either level-1 constant
fixed at zero, one level-1 threshold fixed at zero (ideally, allowing
the user to decide which threshold to fix), or level-1 thresholds sum
to some number?

I tried estimating a single-level ordered probit model to obtain
threshold estimates and then tried fixing one threshold at a value,
but my rudimentary bootstrap effort failed.

Thanks for your response to my original question.  I appreciate any
response to the above you might have.

Take care.
Sam

On Fri, Jul 19, 2013 at 12:53 PM, Rafal Raciborski, StataCorp
<[email protected]> wrote:
> Sam <[email protected]> has some questions about the -meoprobit-
> command:
>
>> How do I specify a varying intercept in the -meoprobit- model when the
>> model does not have an intercept?
>
>> How do I specify a level-2 explanatory covariate for variance in that
>> intercept in the -meoprobit- model when the model does not have an
>> intercept?
>
> In Stata's implementation of ordered outcomes models, the effect of the
> constant term in the fixed-effects equation is absorbed into the cutpoints.
> Therefore, there is no -noconstant- option for the fixed-effects equation.
> This is explained in the following FAQ:
>
> Why is there no constant term reported in ologit and oprobit?
> http://www.stata.com/support/faqs/statistics/ordered-logistic-and-probit-models/
>
> Essentially, from the model, we cannot identify all the cutpoints and the
> constant. Introducing a constant equal to c, would result in the same model
> with the constant added to all the cutpoints, for example:
>
> . sysuse auto, clear
> (1978 Automobile Data)
>
> . oprobit rep mpg disp turn, nolog
>
> Ordered probit regression                         Number of obs   =         69
>                                                   LR chi2(3)      =      19.65
>                                                   Prob > chi2     =     0.0002
> Log likelihood = -83.865955                       Pseudo R2       =     0.1049
>
> ------------------------------------------------------------------------------
>        rep78 |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
> -------------+----------------------------------------------------------------
>          mpg |   .0206013   .0374653     0.55   0.582    -.0528293    .0940318
> displacement |   .0002449   .0026009     0.09   0.925    -.0048528    .0053426
>         turn |  -.1231891   .0555626    -2.22   0.027    -.2320897   -.0142885
> -------------+----------------------------------------------------------------
>        /cut1 |  -6.562678   2.523843                     -11.50932   -1.616037
>        /cut2 |  -5.677153    2.49473                     -10.56674   -.7875718
>        /cut3 |   -4.19813   2.444281                     -8.988833    .5925736
>        /cut4 |  -3.215816   2.437516                     -7.993258    1.561627
> ------------------------------------------------------------------------------
>
> . generate one = 1
>
> . constraint 1  _b[one] = 5
>
> . oprobit rep mpg disp turn one, constraint(1) nolog collinear
>
> Ordered probit regression                         Number of obs   =         69
>                                                   Wald chi2(3)    =      18.66
> Log likelihood = -83.865955                       Prob > chi2     =     0.0003
>
>  ( 1)  [rep78]one = 5
> ------------------------------------------------------------------------------
>        rep78 |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
> -------------+----------------------------------------------------------------
>          mpg |   .0206013   .0374653     0.55   0.582    -.0528293    .0940318
> displacement |   .0002449   .0026009     0.09   0.925    -.0048528    .0053426
>         turn |  -.1231891   .0555626    -2.22   0.027    -.2320897   -.0142885
>          one |          5  (constrained)
> -------------+----------------------------------------------------------------
>        /cut1 |  -1.562678   2.523843                      -6.50932    3.383963
>        /cut2 |  -.6771535    2.49473                     -5.566735    4.212428
>        /cut3 |   .8018702   2.444281                     -3.988833    5.592574
>        /cut4 |   1.784184   2.437516                     -2.993258    6.561627
> ------------------------------------------------------------------------------
>
> Therefore, if we want to introduce the equivalent to different 'constants'
> for boys and girls, we just need to include a dummy variable for one
> of the two groups; the coefficient for this dummy will tell us how
> much this group is shifted with respect to the other, for example:
>
>   clear
>   use http://www.stata-press.com/data/r13/childweight
>   gen weightcat = int(weight/4)
>
>   oprobit weightcat girl c.age c.age#c.age
>
> Notice that if we try to include both dummies, boy and girl, one of
> them will be dropped for the same reason that the model does not have
> a constant.
>
> If we fit a two-level model, the option -noconstant- is valid at the second
> level. For example, in the model
>
>   oprobit y girl || school:
>
> The 'constant' at the school level models a random shift in the cutpoints
> from their overall values.  If, in addition, we want to introduce a different
> random slope for boys and girls at the school level, we just include the two
> dummies at the school level, with the option -noconstant-, as in the following
> artificial example:
>
>   clear
>   set seed 13597
>   webuse childweight
>   egen v = group(id)
>   gen school =int(v)
>   gen sch_eff = rnormal()
>   bysort school: replace sch_eff = sch_eff[1]
>   replace weight = weight + sch_eff
>   gen weightcat = int(weight/5)
>   gen boy = 1-girl
>
>   meoprobit weightcat girl c.age c.age#c.age || school: boy girl, nocons
>
> Sam may have a look at the "Heteroskedastic random effects" section of the
> -mixed- entry of the Multilevel Mixed-Effects Reference Manual for more
> examples.  The manual is available on-line at
> http://www.stata-press.com/manuals/multilevel-mixed-effects-reference-manual.
>
> -- Isabel                       -- Rafal
> [email protected]              [email protected]
>
> *
> *   For searches and help try:
> *   http://www.stata.com/help.cgi?search
> *   http://www.stata.com/support/faqs/resources/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/faqs/resources/statalist-faq/
*   http://www.ats.ucla.edu/stat/stata/


© Copyright 1996–2018 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index