Hi
Thanks for the reply. I will try what you suggested. I have included
a good portion of the propramme so illustrate what I am trying to do.
The error occurs here:
- while `k' <= `x' {
- tempvar y`k'var1q
- ge `y`k'var1q' = `y`k'iqq' * `2' `if'
INVALID SYNTAX
local k = `k' + 1
}
but it works fine if I remove the bit where I inlcude the
heteroscedasticity bit.
noisily oprobit `*' `if' [`weight'`exp']
scalar `catnum'=e(k_cat)
scalar `degreef'=e(df_m)
scalar `obs' = e(N)
predict `scoreqq' `if', xb
ge `scor_uqq' = `scoreqq'
replace `scor_uqq' =. if `1'==.
ge `scor_nqq' = `scor_uqq'
replace `scor_nqq' = `scor_uqq' - _b[`2'] if `2'==1
replace `scor_uqq' = `scor_nqq' + _b[`2'] if `2'==0
ge `diffqq1' = normprob(_b[_cut1]-`scor_uqq') - normprob(_b[_cut1]-
`scor_nqq') if `1'~=.
su `diffqq1' `if'
scalar `diff1' = r(mean)
scalar `check' = `diff1'
su `1' `if'
scalar `depmin' = r(min)
scalar `depmax' = r(max)
ge `wj' = ( _b[_cut1] - `scoreqq' ) `if'
ge `PHIwj' = normprob(`wj') `if'
ge `phiwj' = (1/sqrt(2*_pi)) * exp( (`wj'^2)/-2 ) `if'
ge `eqq'=( -1 * `phiwj' ) / (`PHIwj') if `1'==`depmin' & `ifexp'
ge `e2qq'=( -1 * `wj' * `phiwj' ) / ( `PHIwj' ) if `1'==`depmin' &
`ifexp'
ge `e3qq'=( -1 * (`wj'^2) * `phiwj' ) / ( `PHIwj' ) if
`1'==`depmin' & `ifexp'
ge `e4qq'=( -1 * (`wj'^3) * `phiwj' ) / ( `PHIwj' ) if
`1'==`depmin' & `ifexp'
su `1' if `1'>`depmin' & `ifexp'
local j = r(min) /* set j to 2nd lowest value of dep
var */
local x = 2
while `j' <= `depmax' {
local xless1 = `x'-1
drop `diffqq1'
if `j' < `depmax' {
ge `diffqq1' = ( normprob(_b[_cut`x']-`scor_uqq') -
normprob(_b[_cut`x']-`scor_nqq') ) /*
*/ - ( normprob(_b[_cut`xless1']-`scor_uqq') -
normprob(_b[_cut`xless1']-`scor_nqq') ) /*
*/ if `1'~=.
}
else {
ge `diffqq1' = normprob(`scor_uqq'-_b[_cut`xless1']) -
normprob(`scor_nqq'-_b[_cut`xless1']) if `1'~=.
}
su `diffqq1' `if'
local diff`x' = r(mean)
scalar `check' = `check' + `diff`x''
rename `wj' `wj_1'
rename `phiwj' `phiwj_1'
rename `PHIwj' `PHIwj_1'
if `j'~=`depmax' {
ge `wj' = ( _b[_cut`x'] - `scoreqq' ) `if'
ge `phiwj' = (1/sqrt(2*_pi)) * exp( (`wj'^2)/-2 ) `if'
ge `PHIwj' = normprob(`wj') `if'
}
else {
ge `wj' = 0
ge `phiwj' = 0
ge `PHIwj' = 1
}
replace `eqq'=( `phiwj_1' - `phiwj' ) / ( `PHIwj' - `PHIwj_1' ) if
`1'==`j' & `ifexp'
replace `e2qq'=( (`wj_1' * `phiwj_1') - (`wj' * `phiwj') ) /*
*/ / ( `PHIwj' - `PHIwj_1' ) if `1'==`j' & `ifexp'
replace `e3qq'=( ((`wj_1'^2) * `phiwj_1') - ((`wj'^2) * `phiwj') )
/*
*/ / ( `PHIwj' - `PHIwj_1' ) if `1'==`j' & `ifexp'
replace `e4qq'=( ((`wj_1'^3) * `phiwj_1') - ((`wj'^3) * `phiwj') )
/*
*/ / ( `PHIwj' - `PHIwj_1' ) if `1'==`j' & `ifexp'
if `j'~=`depmax' {
tempvar y`x'iqq
ge `y`x'iqq' = 0 `if'
replace `y`x'iqq'=( `phiwj' ) / ( `PHIwj' - `PHIwj_1' ) if `1'==`j'
& `ifexp'
}
if `x'~=2 {
replace `y`xless1'iqq'=( -1 * `phiwj_1' ) / ( `PHIwj' - `PHIwj_1' )
/*
*/ if `1'==`j' & `ifexp'
}
su `1' if `1'>`j' & `ifexp'
local j = r(min) /* replace j with next value of dep var */
local x=`x'+1
drop `wj_1' `phiwj_1' `PHIwj_1'
}
replace `e3qq' = `e3qq' + (2 * `eqq') `if'
replace `e4qq' = `e4qq' + (3 * `e2qq') `if'
local x=`xless1' /* set x to the number of cuts
*/
local onecut=( `x' == 1 ) /* onecut=1 if only one cut
*/
ge `regdepqq'=1 `if'
ge `escscq'=`eqq' * `scoreqq' * `scoreqq' `if'
ge `esc3qq'=`escscq' * `scoreqq' `if'
ge `esc4qq'=`esc3qq' * `scoreqq' `if'
ge `e2scscq'=`e2qq' * `scoreqq' * `scoreqq' `if'
local n=2
local lastvar=0
while "``n''" ~= "" & `lastvar' ~= 1 {
local m=`n'-1
tempvar evar`m'qq
ge `evar`m'qq' = `eqq' * ``n'' `if'
local n = `n'+1
local lastvar = ( "``n''" == "if" )
}
local k=2
while "``k''" ~= "" {
local kless1 = `k' - 1
tempvar e2var`kless1'q
ge `e2var`kless1'q' = `e2qq' * ``k'' `if'
if "`heteroscedasticity'" ~= "" { parse "`heteroscedasticity'",
parse(" ")
tempvar hetvar
local namevar "`1'"
foreach var of varlist `varlist' {
if "`var'"=="``k''" {ge `hetvar'=`e2var`kless1'q'' `if'}
}
local k = `k'+1
}
local k=2
while `k' <= `x' {
tempvar y`k'var1q
ge `y`k'var1q' = `y`k'iqq' * `2' `if'
local k = `k' + 1
}
local k=2
while `k' <= `x' {
local pless1 = -1
local p=3
while "``p''" ~= "" {
local pless1 = `p' - 1
tempvar y`k'var`pless1'q
ge `y`k'var`pless1'q' = `y`k'iqq' * ``p'' `if'
local p = `p'+1
}
local k = `k' + 1
} /* separate loops so keep order of
vars */
local k=2
while `k' <= `x' {
tempvar y`k'scscq
ge `y`k'scscq' = `y`k'iqq' * `scoreqq' * `scoreqq' `if'
local k = `k'+1
}
}
local yxiqqs=""
if `onecut' ~= 1 {
local yxiqqs=" `y2iqq'-`y`x'iqq' "
}
if "`heteroscedasticity'" ~= "" {
quietly regress `regdepqq' `evar1qq'-`evar`m'qq' `hetvar' `yxiqqs'
`if' [`weight' `exp'], noconstant
if e(N) ~= `obs' { display "ERROR " e(N) "observations, when should
be " `obs' }
display in text "Heteroscedasticity w.r.t. `namevar'" _col(48) "{c
|}" %11.7f as result e(r2)*e(N) %18.7f chi2tail(1,e(r2)*e(N))
}
display as text "{hline 47}" _col(48) "{c BT}" "{hline 31}"
end
_______________________________________________
Miss Maureen Paul
Department of Economics
University of Warwick
Coventry CV4 7AL
UK
Phone: +44 (0)2476528418
Email: [email protected]
Web page: http://www.warwick.ac.uk/~ecrha/
*
* 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/