Re: [R] (part III) computationally singular

From: Christian Hennig <chrish_at_stats.ucl.ac.uk>
Date: Tue 09 Aug 2005 - 03:31:56 EST

Sorry, our emails crossed...

On Mon, 8 Aug 2005, Weiwei Shi wrote:

> I think the problem might be caused two variables are very correlated.
> Should I check the cov matrix and try to delete some?

In this case, taking principal components should do the job. Variable deletion may help as well - I am not extremely against it, it depends on your whole project and aim, but I would not start with that before I found out if there are more "proper" possibilities.

> But i am just not quite sure of your reply. Could you detail it with some
steps?

Look up all std.devs of the variables.
If the ratio between the largest one and the smallest one is more than, let's say, 1e5, consider that as "not healthy". Multiply the variables with the smallest std.devs with constants so that the ratio between largest and smallest std.dev is not more than 1e3, say (I am not sure about the exact size of these numbers... try something...). Look if the problem vanishes after such rescaling.

Don't ask me the same about the second email - I don't have the time to explain that in detail.

Sorry,
Christian

>
> thanks,
>
> weiwei
>
> On 8/8/05, Christian Hennig <chrish@stats.ucl.ac.uk> wrote:
> > Once I had a situation where the reason was that the variables were
> > scaled to extremely different magnitudes. 1e-25 is a *very* small number
> > but still there is some probability that it may help to look up standard
> > deviations and to multiply the
> > variable with the smallest st.dev. with 1e20 or something.
> >
> > Best,
> > Christian
> >
> > On Mon, 8 Aug 2005, Weiwei Shi wrote:
> >
> > > Hi,
> > > I have a dataset which has around 138 variables and 30,000 cases. I am
> > > trying to calculate a mahalanobis distance matrix for them and my
> > > procedure is like this:
> > >
> > > Suppose my data is stored in mymatrix
> > > > S<-cov(mymatrix) # this is fine
> > > > D<-sapply(1:nrow(mymatrix), function(i) mahalanobis(mymatrix, mymatrix[i,], S))
> > > Error in solve.default(cov, ...) : system is computationally singular:
> > > reciprocal condition number = 1.09501e-25
> > >
> > > I understand the error message but I don't know how to trace down
> > > which variables caused this so that I can "sacrifice" them if there
> > > are not a lot. Again, not sure if it is due to some variables and not
> > > sure if dropping variables is a good idea either.
> > >
> > > Thanks for help,
> > >
> > > weiwei
> > >
> > >
> > > --
> > > Weiwei Shi, Ph.D
> > >
> > > "Did you always know?"
> > > "No, I did not. But I believed..."
> > > ---Matrix III
> > >
> > > ______________________________________________
> > > R-help@stat.math.ethz.ch mailing list
> > > https://stat.ethz.ch/mailman/listinfo/r-help
> > > PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
> > >
> >
> > *** NEW ADDRESS! ***
> > Christian Hennig
> > University College London, Department of Statistical Science
> > Gower St., London WC1E 6BT, phone +44 207 679 1698
> > chrish@stats.ucl.ac.uk, www.homepages.ucl.ac.uk/~ucakche
> >
>
>
> --
> Weiwei Shi, Ph.D
>
> "Did you always know?"
> "No, I did not. But I believed..."
> ---Matrix III
>


R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Tue Aug 09 03:35:50 2005

This archive was generated by hypermail 2.1.8 : Sun 23 Oct 2005 - 15:09:55 EST