Stata The Stata listserver
[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]

Re: RE: st: Constraining alpha and theta in slogit


From   rgates@stata.com (Richard Gates)
To   statalist@hsphsun2.harvard.edu
Subject   Re: RE: st: Constraining alpha and theta in slogit
Date   Tue, 15 Nov 2005 08:43:01 -0600

Jun Xu <mystata@hotmail.com> responded to Michael Hout's
<mikehout@berkeley.edu> inquiry about setting constraints in -slogit-.  He
suggested constraining the sum of the phi's to zero.

> For setting the first constraint, it's like
> 
> constrain def 1 
> [phi1_1]_cons+[phi1_2]_cons+[phi1_3]_cons+...+[phi1_j]_cons=0
> 
> and it should work well, but I do find problems with your magnitude 
> constraints. I only have limited working knowledge with slogit, so others or 
> Stata staff might have some suggestions. But I guess one possibility why 
> this does not work is probably slogit in Stata has used the first strategy 
> (impose the first phi to be 1 and last to be zero) that DiPrete's paper 
> mentioned just above the discussion on Goodman's strategy (P.761), and that 
> might cause Goodman's strategy hard to implement?
> 

The phi associated with the base category is always zero.  For a dependent
variable that is an ordered factor we set the last cateogory to be the base and
constrain phi1_1 associated with the first category to be one.  If the
categories are truly ordered then the phi's will be monotonically decreasing
from 1 to zero.  Here I am assuming that the model is of dimension 1.  

Constraining the phi's to sum to zero is an interesting approach, if you would
be kind enough to give me details of the Goodman and DiPrete references I would
like to read them.  Meanwhile, we still can constrain the sum of the phi's to zero
(excluding the one associated with the base category).  We have to turn off the
corner constraints constraining the phi1_1 to 1 and use initialize(random) or
initialize(svd)  Below is a demonstation using the auto2yr data.

. constraint 1 [phi1_1]_cons+[phi1_2]_cons+[phi1_3]_cons+[phi1_4]_cons = 0

. slogit repair foreign mpg price gratio, constraint(1) nocorner init(random) 

Iteration 0:   log likelihood = -199.21095  (not concave)
Iteration 1:   log likelihood = -190.87692  (not concave)
Iteration 2:   log likelihood = -185.76278  (not concave)
Iteration 3:   log likelihood = -181.58171  (not concave)
Iteration 4:   log likelihood = -180.35418  (not concave)
Iteration 5:   log likelihood = -179.47387  (not concave)
Iteration 6:   log likelihood = -179.04793  (not concave)
Iteration 7:   log likelihood = -178.81528  
Iteration 8:   log likelihood = -178.54224  (not concave)
Iteration 9:   log likelihood = -178.42258  (not concave)
Iteration 10:  log likelihood = -178.41219  
Iteration 11:  log likelihood = -178.40734  
Iteration 12:  log likelihood = -178.40732  
Iteration 13:  log likelihood = -178.40732  (not concave)
Iteration 14:  log likelihood = -178.40732  

Stereotype logistic regression                    Number of obs   =        135
                                                  Wald chi2(4)    =       0.00
Log likelihood = -178.40732                       Prob > chi2     =     1.0000

 ( 1)  [phi1_1]_cons + [phi1_2]_cons + [phi1_3]_cons + [phi1_4]_cons = 0
------------------------------------------------------------------------------
      repair |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
     foreign |  -3.919207   2346.913    -0.00   0.999    -4603.784    4595.946
         mpg |  -.0670937    40.1774    -0.00   0.999    -78.81336    78.67917
       price |    .000244   .1460856     0.00   0.999    -.2860786    .2865665
      gratio |   2.752465   1648.241     0.00   0.999     -3227.74    3233.245
-------------+----------------------------------------------------------------
     /phi1_1 |    .668205   400.1371     0.00   0.999     -783.586    784.9224
     /phi1_2 |  -.2599337   155.6544    -0.00   0.999     -305.337    304.8172
     /phi1_3 |  -.4009208   240.0809    -0.00   0.999    -470.9508     470.149
     /phi1_4 |  -.0073505   4.407548    -0.00   0.999    -8.645986    8.631285
     /phi1_5 |          0  (base outcome)
-------------+----------------------------------------------------------------
     /theta1 |    2.96203   5.387697     0.55   0.582    -7.597662    13.52172
     /theta2 |  -1.658354   1.559043    -1.06   0.287    -4.714022    1.397314
     /theta3 |   -1.59848   3.312416    -0.48   0.629    -8.090697    4.893737
     /theta4 |   .8148797   1.604376     0.51   0.612     -2.32964    3.959399
     /theta5 |          0  (base outcome)
------------------------------------------------------------------------------
(repair=Excellent is the base outcome)

It does not seem to fit the data very well.  Note that the default, initialize(const),
does not work here since the phi's wind up constrained to zero. (I need to chew my
cud on that.)  

If there is a need for other constraint options we would certainly consider
adding the functionality to -slogit-.

--Rich
rgates@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/



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