Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.

# Re: st: cmp and condition numbers

 From "David Roodman (droodman@cgdev.org)" To "statalist@hsphsun2.harvard.edu" Subject Re: st: cmp and condition numbers Date Fri, 4 May 2012 11:45:09 +0000

```Philip the two issues you raise may be unrelated.

cmp is not designed for true simultaneous systems, by which I mean ones in the matrix of coefficients of the dependent variables in each other's equations is not triangular.

As for the condition number, there is more than one way to compute this. For each equation, cmp applies Mata's built-in cond() function to the correlation matrix of the non-constant regressors, taking cond()'s defaults. This amounts to computing the product of the maximum eigenvalues of the correlation matrix and its inverse. I think I got this formulation from Greene, but I can't check today because I am travelling.

--David

---------------
From	  "Bromiley, Philip" <bromiley@uci.edu>
To	  "statalist@hsphsun2.harvard.edu" <statalist@hsphsun2.harvard.edu>
Subject	  st: cmp and condition numbers
Date	  Mon, 30 Apr 2012 23:30:28 +0000
I'm trying to estimate a simultaneous system with three continuous and one discrete variable using cmp.  I have been unable to get it to estimate properly - lots of not concave and backed up messages and then it crashes saying it has hit a discontinuous or flat region.

Cmp warns me that I have an ill-conditioned regressor matrix and reports high condition numbers for each of the equations (40 to 1000).  However, when I run the equation with regress, I don't get high VIF's, and get a much lower condition number.

Would someone know the reason for such a discrepancy?  Any suggestions would be welcome.

Phil

Here is a simple example to illustrate the condition number difference.

webuse laborsup, clear

cmp setup
replace fem_inc = fem_inc - 10
cmp (kids = fem_inc male_educ)     (fem_work = male_educ),        ind(\$cmp_cont \$cmp_cont)
*to increase the correlation among the x's, I add a random number to all of them
g x1=rnormal() * 100
g fem_inc1=fem_inc + x1
g male_educ1=male_educ + x1
g fem_work1=fem_work + x1

cmp (kids = fem_inc1 male_educ1)      (fem_work1 = male_educ1),        ind(\$cmp_cont \$cmp_cont)

reg kids  fem_inc1 male_educ1
estat vif
cndnmb3  fem_inc1 male_educ1

reg kids  fem_inc male_educ
estat vif
cndnmb3   fem_inc male_educ

Philip Bromiley
Dean's Professor of Strategic Management
University of California, Irvine
Irvine, CA  92697-3125
(949) 824-6657

*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/
```