[R] Matrix Inversion

Peter Dalgaard P.Dalgaard at biostat.ku.dk
Wed Dec 12 12:22:18 CET 2007


Wang Chengbin wrote:
> I got the following error:
>
> a = read.csv("mat.csv")
> b = as.matrix(a)
> tb = t(b)
> bb = tb %*% b
> dim(bb)
> ibb = solve(bb)
> bb %*% ibb
>
>   
>> ibb = solve(bb)
>>     
> Error in solve.default(bb) :
>   system is computationally singular: reciprocal condition number =
> 1.77573e-19
>   
> Are there any ways to find more information about why it is singular?
>
> Thanks.
>   
Yes. Since the matrix is positive semidefinite by construction, I'd
probably go for chol(bb, pivot=TRUE), then the first "rank" elements of
"pivot" gives you a maximal subset of linearly independent columns, and
you can proceed by something like lm(b[,-subset]~b[,subset]) to see what
the linear dependencies are.

(Other approaches could be eigen() and svd().)

-- 
   O__  ---- Peter Dalgaard             Øster Farimagsgade 5, Entr.B
  c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph. K
 (*) \(*) -- University of Copenhagen   Denmark          Ph:  (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)                  FAX: (+45) 35327907



More information about the R-help mailing list