Hello I have this matrix which I am trying to invert. I get a message about reciprocal condition number, what that does mean?> XT_X[,1] [,2] [,3] [,4] [,5] [1,] 3 0 0 2 1 [2,] 0 2 0 1 1 [3,] 0 0 2 1 1 [4,] 2 1 1 4 0 [5,] 1 1 1 0 3> iXT_X <- solve(XT_X)Error in solve.default(XT_X) : system is computationally singular: reciprocal condition number = 1.11022e-17 Thanks Rosario
> -----Original Message----- > From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] > On Behalf Of Rosario Garcia Gil > Sent: Monday, March 28, 2011 7:51 AM > To: r-help at r-project.org > Subject: [R] matrix inverstion > > Hello > > I have this matrix which I am trying to invert. I get a message about > reciprocal condition number, what that does mean? > > > XT_X > [,1] [,2] [,3] [,4] [,5] > [1,] 3 0 0 2 1 > [2,] 0 2 0 1 1 > [3,] 0 0 2 1 1 > [4,] 2 1 1 4 0 > [5,] 1 1 1 0 3 > > iXT_X <- solve(XT_X) > Error in solve.default(XT_X) : > system is computationally singular: reciprocal condition number > 1.11022e-17 > >Well, it means exactly what the message says. Within the precision of your computer, the matrix is singular and has no inverse. If you try the following code you will see that column 1 is perfectly correlated with the remaining columns. summary(lm(XT_X [,1] ~ XT_X[,-1])) Hope this is helpful, Dan Daniel Nordlund Bothell, WA USA
On Mon, Mar 28, 2011 at 04:51:00PM +0200, Rosario Garcia Gil wrote:> Hello > > I have this matrix which I am trying to invert. I get a message about reciprocal condition number, what that does mean? > > > XT_X > [,1] [,2] [,3] [,4] [,5] > [1,] 3 0 0 2 1 > [2,] 0 2 0 1 1 > [3,] 0 0 2 1 1 > [4,] 2 1 1 4 0 > [5,] 1 1 1 0 3 > > iXT_X <- solve(XT_X) > Error in solve.default(XT_X) : > system is computationally singular: reciprocal condition number = 1.11022e-17This matrix is exactly singular. For example, the sum of the first three rows is equal to the sum of the last two. cbind(1, 1, 1, -1, -1) %*% XT_X [,1] [,2] [,3] [,4] [,5] [1,] 0 0 0 0 0 For matrices with small integer entries, a test for singularity may be done using det(). det(XT_X) [1] 8.881784e-15 Since the exact determinant is an integer, it has to be zero and the difference from zero is due to rounding error. Hope this helps. Petr Savicky.