Thanks all. I will "get real" and try to reduce the size of covariance matrix.
Taka On Fri, Nov 1, 2013 at 8:01 AM, Rolf Turner <r.tur...@auckland.ac.nz> wrote: > On 10/31/13 23:14, Takatsugu Kobayashi wrote: > >> Hi RUsers, >> >> I am struggling to come up with an efficient vectorized way to convert >> 20Kx20K covariance matrix to a Euclidian distance matrix as a surrogate >> for >> dissimilarity matrix. Hopefully I can apply multidimensional scaling for >> mapping these 20K points (commercial products). >> >> I understand that Distance(ij) = sigma(i) + sigma(j) - 2cov(ij). Without >> replying on a slow loop, I appreciate if anyone can help me out with a >> better idea - guess lapply? >> > > As S. Ellison has pointed out, you probably want sigma^2 rather than sigma. > > My suspicion is that with a 20K x 20K covariance matrix: > > * nothing will work > > * even if it did, the results would be meaningless numerical noise. > > I.e. Get real. > > That being said, for a *reasonable* size of covariance matrix, the > following might > do what you want: > > DM <- outer(diag(CM),diag(CM),"+") - 2*CM > > where "CM" is the covariance matrix. And then you might want to do > > DM <- sqrt(DM) > > to get back to the original units (as S. Ellison indicated). > > cheers, > > Rolf Turner > [[alternative HTML version deleted]] ______________________________________________ R-help@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.