Bookmark and Share

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


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: st: cmp and condition numbers


From   "David Roodman ([email protected])" <[email protected]>
To   "[email protected]" <[email protected]>
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" <[email protected]>
To	  "[email protected]" <[email protected]>
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
Merage School of Business
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/


© Copyright 1996–2018 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index