Statalist


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

RE: st: Test of ordered probit vs ordinary probits


From   Richard Williams <[email protected]>
To   [email protected], <[email protected]>
Subject   RE: st: Test of ordered probit vs ordinary probits
Date   Wed, 31 Oct 2007 18:16:29 -0400

At 02:43 PM 10/31/2007, Schaffer, Mark E wrote:
Thanks for all this.  My motivation for asking, though, was partly to
see if I understood the FAQ and how these estimations work.  Put another
way, I suspect that the end of Bill's FAQ should be changed from

"with the constraint that the cofficients, but not the INTERCEPTS, are
equal."

to

"with the constraints that the cofficients, but not the INTERCEPTS, are
equal, and that /cut1 < /cut2."
A lot of output follows - so the executive summary is that (a) your rephrasing of Bill's statement is unnecessary because the equality constraint on the coefficients implies the constraint you state for the cut points, and (b) your test is right, but you need a better data set than auto to illustrate it.

(a) If the coefficients are equal, I believe the relationship you specify for the cutpoints has to follow. The way you are collapsing the ordinal var, the cutpoint has to get higher and higher with each of the different collapses if you force the coefficients to stay the same. Slightly tweaking your original example,

. test [probit34]turn=[probit45]turn, accum coef

( 1) [probit12]turn - [probit23]turn = 0
( 2) [probit23]turn - [probit34]turn = 0
( 3) [probit34]turn - [probit45]turn = 0

chi2( 3) = 14.82
Prob > chi2 = 0.0020


Constrained coefficients

------------------------------------------------------------------------------
| Robust
| Coef. Std. Err. z P>|z| [95% Conf. Interval]
-------------+----------------------------------------------------------------
probit12 |
turn | -.0848508 .0191134 -4.44 0.000 -.1223123 -.0473893
_cons | 5.147589 .786685 6.54 0.000 3.605715 6.689463
-------------+----------------------------------------------------------------
probit23 |
turn | -.0848508 .0191134 -4.44 0.000 -.1223123 -.0473893
_cons | 4.611418 .7877609 5.85 0.000 3.067435 6.155401
-------------+----------------------------------------------------------------
probit34 |
turn | -.0848508 .0191134 -4.44 0.000 -.1223123 -.0473893
_cons | 3.105473 .778709 3.99 0.000 1.579232 4.631715
-------------+----------------------------------------------------------------
probit45 |
turn | -.0848508 .0191134 -4.44 0.000 -.1223123 -.0473893
_cons | 2.057018 .7939805 2.59 0.010 .5008449 3.613191
------------------------------------------------------------------------------

Note the decreasing magnitude of the intercepts (which would correspond to increasing cutpoints in an oprobit).

(b) Also, I think part of the problem with your original example is that auto is a crummy data set for ordinal regression; the data are way too thin with the first few categories. This example works much better:

use "http://www.indiana.edu/~jslsoc/stata/spex_data/ordwarm2.dta";, clear
drop if warm==.
gen warm_12=warm>1
gen warm_23=warm>2
gen warm_34=warm>3
qui probit warm_12 yr89
est store probit12
qui probit warm_23 yr89
est store probit23
qui probit warm_34 yr89
est store probit34
suest probit12 probit23 probit34
test [probit12]yr89=[probit23]yr89
test [probit23]yr89=[probit34]yr89, accum coef
omodel probit warm yr89

Here is the output from the last few commands.

. test [probit23]yr89=[probit34]yr89, accum coef

( 1) [probit12]yr89 - [probit23]yr89 = 0
( 2) [probit23]yr89 - [probit34]yr89 = 0

chi2( 2) = 13.15
Prob > chi2 = 0.0014


Constrained coefficients

------------------------------------------------------------------------------
| Robust
| Coef. Std. Err. z P>|z| [95% Conf. Interval]
-------------+----------------------------------------------------------------
probit12 |
yr89 | .363189 .045948 7.90 0.000 .2731326 .4532454
_cons | .9988136 .037007 26.99 0.000 .9262812 1.071346
-------------+----------------------------------------------------------------
probit23 |
yr89 | .363189 .045948 7.90 0.000 .2731326 .4532454
_cons | -.0067555 .0321153 -0.21 0.833 -.0697003 .0561892
-------------+----------------------------------------------------------------
probit34 |
yr89 | .363189 .045948 7.90 0.000 .2731326 .4532454
_cons | -1.063885 .0365802 -29.08 0.000 -1.135581 -.9921892
------------------------------------------------------------------------------

. omodel probit warm yr89

Iteration 0: log likelihood = -2995.7704
Iteration 1: log likelihood = -2964.0161
Iteration 2: log likelihood = -2964.0136

Ordered probit estimates Number of obs = 2293
LR chi2(1) = 63.51
Prob > chi2 = 0.0000
Log likelihood = -2964.0136 Pseudo R2 = 0.0106

------------------------------------------------------------------------------
warm | Coef. Std. Err. z P>|z| [95% Conf. Interval]
-------------+----------------------------------------------------------------
yr89 | .3646929 .045823 7.96 0.000 .2748813 .4545044
-------------+----------------------------------------------------------------
_cut1 | -1.002802 .0370072 (Ancillary parameters)
_cut2 | .0070519 .0321106
_cut3 | 1.067839 .0366947
------------------------------------------------------------------------------

Approximate likelihood-ratio test of equality of coefficients
across response categories:
chi2(2) = 13.49
Prob > chi2 = 0.0012


So, you see, you get almost the exact same test stat (13.15 versus 13.49) and almost the exact same coefficients. I think the reason they are not exactly equal is because you are doing a Wald test while omodel does an approximate LR test.

For good measure, doing this with a Wald test in gologit2,

. quietly gologit2 warm yr89, link (p) store(unconstrained)

. quietly test [#1]yr89 = [#2]yr89

. test [#2]yr89 = [#3]yr89, accum coef

( 1) [1SD]yr89 - [2D]yr89 = 0
( 2) [2D]yr89 - [3A]yr89 = 0

chi2( 2) = 13.16
Prob > chi2 = 0.0014


Constrained coefficients

------------------------------------------------------------------------------
| Coef. Std. Err. z P>|z| [95% Conf. Interval]
-------------+----------------------------------------------------------------
1SD |
yr89 | .3631891 .045938 7.91 0.000 .2731523 .4532259
_cons | .9988135 .0369989 27.00 0.000 .926297 1.07133
-------------+----------------------------------------------------------------
2D |
yr89 | .3631891 .045938 7.91 0.000 .2731523 .4532259
_cons | -.0067556 .0321083 -0.21 0.833 -.0696866 .0561755
-------------+----------------------------------------------------------------
3A |
yr89 | .3631891 .045938 7.91 0.000 .2731523 .4532259
_cons | -1.063885 .0365722 -29.09 0.000 -1.135565 -.9922048
------------------------------------------------------------------------------

i.e. you get virtually identical results with gologit2 that you get by running all the probits separately.

The corresponding gologit2 LR test is

. quietly gologit2 warm yr89, link (p) pl store(constrained)

. lrtest unconstrained constrained

Likelihood-ratio test LR chi2(2) = 13.45
(Assumption: constrained nested in unconstrained) Prob > chi2 = 0.0012

The 13.45 is virtually identical to omodel's 13.49.

Hope this is semi-clear!

-------------------------------------------
Richard Williams, Notre Dame Dept of Sociology
OFFICE: (574)631-6668, (574)631-6463
HOME: (574)289-5227
EMAIL: [email protected]
WWW: http://www.nd.edu/~rwilliam

*
* 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–2024 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index