Hi all, For computational reasons, I need to estimate an 18x18 polychoric correlation matrix two variables at a time (rather than trying to estimate them all simultaneously using ML). The resulting polychoric correlation matrix I am getting is non-positive definite, which is problematic because I'm using this matrix later on as if it were a legitimately estimated correlation matrix (in order to fit an SEM model). I could add to the diagonal I suppose until it becomes positive definite. Does anyone have any other ideas on how to deal with this problem, and what the strengths and weaknesses of different approaches are? Thanks in advance, Matt -- Matthew C Keller Asst. Professor of Psychology University of Colorado at Boulder www.matthewckeller.com
Dear Matt, See the pd argument to the hetcor() function in the polycor package. hetcor() makes use of nearcor() in the sfsmisc package to ensure that a matrix of pairwise polychoric, polyserial, and Pearson correlations is positive-definite. I hope this helps, John ------------------------------ John Fox, Professor Department of Sociology McMaster University Hamilton, Ontario, Canada web: socserv.mcmaster.ca/jfox> -----Original Message----- > From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org]On> Behalf Of Matthew Keller > Sent: March-11-09 6:20 PM > To: r-help at r-project.org > Subject: [R] non-positive definite matrix remedies? > > Hi all, > > For computational reasons, I need to estimate an 18x18 polychoric > correlation matrix two variables at a time (rather than trying to > estimate them all simultaneously using ML). The resulting polychoric > correlation matrix I am getting is non-positive definite, which is > problematic because I'm using this matrix later on as if it were a > legitimately estimated correlation matrix (in order to fit an SEM > model). I could add to the diagonal I suppose until it becomes > positive definite. Does anyone have any other ideas on how to deal > with this problem, and what the strengths and weaknesses of different > approaches are? > > Thanks in advance, > > Matt > > > -- > Matthew C Keller > Asst. Professor of Psychology > University of Colorado at Boulder > www.matthewckeller.com > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guidehttp://www.R-project.org/posting-guide.html> and provide commented, minimal, self-contained, reproducible code.
That's an interesting problem. My first thought was to choose the closest positive definite matrix to the given matrix, say in the least squares sense. However, the 2x2 diagonal matrix with diagonal (1,0) makes it clear that there isn't a closest pd symmetric matrix. Perhaps multiple imputation would work: impute a complete data matrix X, compute polycor(X), and repeat. Will the average of these positive definite matrices be positive definite???? I think it would if you were computing pearson correlations, but I am not sure about the polychoric case. albyn On Wed, Mar 11, 2009 at 04:20:27PM -0600, Matthew Keller wrote:> Hi all, > > For computational reasons, I need to estimate an 18x18 polychoric > correlation matrix two variables at a time (rather than trying to > estimate them all simultaneously using ML). The resulting polychoric > correlation matrix I am getting is non-positive definite, which is > problematic because I'm using this matrix later on as if it were a > legitimately estimated correlation matrix (in order to fit an SEM > model). I could add to the diagonal I suppose until it becomes > positive definite. Does anyone have any other ideas on how to deal > with this problem, and what the strengths and weaknesses of different > approaches are? > > Thanks in advance, > > Matt > > > -- > Matthew C Keller > Asst. Professor of Psychology > University of Colorado at Boulder > www.matthewckeller.com > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >