I have a problem that I had initially thought would be straightforward (but
then, what is?).  For a Monte Carlo-type simulation study, I want to be
able to to generate sets of pseudorandom numbers having correlations equal
to (or differing only randomly from) a target correlation matrix that I
specify up front, based on postulated relationships among variables.  This
is very easy to do using the classic method of Kaiser & Dickman (1962), as
long as the target correlation matrix is positive definite (PD) (ie, has
all positive eigenvalues).  If not, the algorithm (programmed in Matlab)
returns complex numbers, which are not satisfactory for my purposes.

So, for a non-PD target correlation matrix, I decided to find the PD matrix
that is "closest" to the target matrix in some sense.  Somewhere in the
past I had gotten the idea that, for a correlation matrix to be PD, all of
the pairwise correlations must be internally consistent with respect to all
of their partial correlations.  So I wrote another function that
iteratively and minimally adjusts all correlations until each is within the
possible range predicted by all possible partial correlations.  To my
surprise, the resulting matrix is still not positive definite, which means
that my idea about positive-definiteness (definity?) is wrong.  Or at least
that this kind of internal consistency is necessary but not sufficient.

So my question is: in what way should I be adjusting pairwise correlations
so as to find the PD matrix that is "closest" to the target?  After a
reasonably thorough literature search and perusal of texts on linear
algebra and related topics, I've failed to find any literature relevant to
this problem.  Any suggests on how to proceed, or citations that I've missed?

Thanks.
Rich Strauss


========================
Dr Richard E Strauss            
Biological Sciences              
Texas Tech University           
Lubbock TX 79409-3131

Email: [EMAIL PROTECTED]
Phone: 806-742-2719
Fax: 806-742-2963                             
========================

Reply via email to