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

st: Re: Ordered probit: how to test normality of the residuals

From   Maarten buis <[email protected]>
To   [email protected]
Subject   st: Re: Ordered probit: how to test normality of the residuals
Date   Tue, 18 Sep 2007 15:34:39 +0100 (BST)

--Kate wrote:
> How can I test the normality of the residuals after the ordered
> probit model? Is there any command to run LM-test FOR NORMALITY?..

Tests for normality are difficult enough when we actually have the
variables that is supposed to be normal. What you are proposing is a
test on a latent (unobserved) variable. I am sure someone has at
sometime invented such a test, but I have severe doubts about the power
of such a test. Always remember that whatever Stata spits out at you is
never going to be any better than whatever you have given Stata to
begin with, and in this case that is ordinal data + some assumptions of
how that data was created. 

Moreover, there are more important assumptions to test, for instance
the linearity of the effect of you explanatory variables. One graph I
like to look at is the graph below. These are pseudo-residuals in the
sense that they use the original scaling of the dependent variable,
which defies the very purpose of -oprobit- (the dependent variable is
ordinal and the scaling is unknown), but if you keep that in mind I
still think that these types of graphs are much more informative about
any problems in your model and what to do about them.

*------------------------ begin example --------------------
sysuse auto, clear
recode rep78 1=2

oprobit rep78 mpg foreign

predict pnosq*
gen yhatnosq = 0
local i = 0
levelsof rep78
foreach l in `r(levels)' {
	replace yhatnosq = yhatnosq + pnosq`i++'*`l'
gen residnosq = rep78 - yhatnosq

gen mpgsq = mpg^2
oprobit rep78 mpg mpgsq foreign
predict psq*
levelsof rep78
gen yhatsq = 0
local i = 0
foreach l in `r(levels)' {
	replace yhatsq = yhatsq + psq`i++'*`l'
gen residsq = rep78 - yhatsq

twoway scatter residnosq mpg ||                 /*
    */ scatter residsq mpg   ||                 /*
    */ lowess residnosq mpg,                    /*
    */ clpattern(shortdash)  ||                 /*
    */ lowess residsq mpg,                      /*
    */ clpattern(longdash)                      /*
    */ yline(0)                                 /* 
    */ ytitle("reisduals")                      /*
    */ title("pseudo-residuals for models with" /*
          */ "and without squared mpg")         /*
    */ legend(order(1 "no square"               /*
                 */ 2 "square"                  /*
                 */ - " " "smoothed"            /*
                 */ 3 "no square"               /*
                 */ 4 "square"))
*------------------------ end example ------------------------
(For more on how to use examples I sent to the Statalist, see )

Hope this helps,

Maarten L. Buis
Department of Social Research Methodology
Vrije Universiteit Amsterdam
Boelelaan 1081
1081 HV Amsterdam
The Netherlands

visiting address:
Buitenveldertselaan 3 (Metropolitan), room Z434

+31 20 5986715

Want ideas for reducing your carbon footprint? Visit Yahoo! For Good
*   For searches and help try:

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