# 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