|
[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]
RE: st: Test of ordered probit vs ordinary probits
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/