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.turner@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]]

