计算距银河空间中心的多维距离

时间:2016-04-15 09:42:45

标签: r pca

我有一个名为mydf的数据矩阵,其中包含5个样本的银河空间中的10个主要成分(10个维度)。我想找到使用所有PC的样本的质心(重力中心)以及来自该质心的每个样本的距离。我们怎样才能在R?中做到这一点?

   mydf<-  structure(list(Sample = c("1", "2", "4", "5", "6"), PCA.1 = c(0.00338, 
    -0.020373, -0.019842, -0.019161, -0.019594), PCA.2 = c(0.00047, 
    -0.010116, -0.011532, -0.011582, -0.013245), PCA.3 = c(-0.008787, 
    0.001412, 0.003751, 0.00371, 0.004242), PCA.4 = c(0.011242, 0.000882, 
    -0.003662, -0.002206, -0.002449), PCA.5 = c(0.055873, -0.022664, 
    -0.014058, -0.024757, -0.020033), PCA.6 = c(-0.001511, 0.006226, 
    -0.005417, 0.000522, -0.003114), PCA.7 = c(-0.056734, -0.007418, 
    -0.01043, -0.006961, -0.006006), PCA.8 = c(0.005189, 0.008031, 
    -0.002979, 0.000743, 0.006276), PCA.9 = c(0.008169, -0.000265, 
    0.010893, 0.003233, 0.007316), PCA.10 = c(-0.000461, -0.003893, 
    0.008549, 0.005556, -0.001499)), .Names = c("Sample", "PCA.1", 
    "PCA.2", "PCA.3", "PCA.4", "PCA.5", "PCA.6", "PCA.7", "PCA.8", 
    "PCA.9", "PCA.10"), row.names = c(NA, 5L), class = "data.frame")

例如,这是这5个样本的PCA图(显然是2D),我需要首先使用所有10个维度找到质心。然后需要计算每个样本距离一个质心的距离。

enter image description here

1 个答案:

答案 0 :(得分:1)

我不认为难以证明,对于那些由这5个向量给出的十维点的等权重质量,一个点的平方距离总和最小化为:

> centroid = colMeans(mydf[-1])

> centroid
     PCA.1      PCA.2      PCA.3      PCA.4      PCA.5      PCA.6      PCA.7      PCA.8      PCA.9     PCA.10 
-0.0151180 -0.0092010  0.0008656  0.0007614 -0.0051278 -0.0006588 -0.0175098  0.0034520  0.0058692  0.0016504 

然后距离将是:

 > rowSums( sweep(mydf[-1], 2, centroid, "-")^2 )
           1            2            3            4            5 
0.0059118459 0.0005748535 0.0003223413 0.0005664300 0.0004386126 

用于绘制前两个&#34;维度中的值&#34;我会改用它:

with(mydf, plot(PCA.2  ~    PCA.1 ))
points( x= -0.0151180, y= -0.0092010, col='red', pch=24)