将两组点对齐到同一参考点,质心

时间:2015-01-01 07:48:02

标签: r cluster-computing

我有两组2d点(x,y坐标)。如何将这两组点对齐到同一参考点(质心)?

让我的两套

A

x     y
1     3
4     2
7     8
3     5

x     y
9     5
14    7
17    3
30    25

质心是指:它是所有坐标方向上所有点的平均位置。

任何人都可以建议我如何使用R。

提前致谢。

稍后添加:

data1<-data.frame(x=c(1,4,7,3), y=c(3,2,8,5))
data2<-data.frame(x=c(9,14,17,30), y=c(5,7,3,25))

群集的质心是:

m1=c(mean(data1[,1]),mean(data1[,2]))
m2=c(mean(data2[,1]),mean(data2[,2]))

现在我想对齐(coinide)m1m2并获得与公共关系相关的所有聚类点 对齐的质心。怎么做。

提前致谢。

2 个答案:

答案 0 :(得分:1)

有点迟到了,但是:

  • 对齐原点的技术术语是居中

  • 如果您的群组使用不同的变量,则可以使用scale

    data1<-data.frame(x=c(1,4,7,3), y=c(3,2,8,5))
    data2<-data.frame(x=c(9,14,17,30), y=c(5,7,3,25))
    
    scale (data1, center = TRUE, scale = FALSE)
    scale (data2, center = TRUE, scale = FALSE)
    
  • 如果这些群组位于同一数据框内,ave可以提供帮助(另请参阅aggregate

    data1$group <- "A"        
    data2$group <- "B"
    data <- rbind (data1, data2)
    
    data$x <- data$x - ave (data$x, data$group)
    data$y <- data$y - ave (data$y, data$group)
    

答案 1 :(得分:-1)

通常你会用kmeans做这样的事情。通常你会尝试确定最佳的簇数,但在你的情况下,如果你假设只是一个全局均值,因此一个簇就是这样的:

#Two datasets
data1<-data.frame(x=c(1,4,7,3), y=c(3,2,8,5))
data2<-data.frame(x=c(9,14,17,30), y=c(5,7,3,25))

#combine datasets into one data frame
comb.data<-rbind(data1,data2)

#find the center of the data by assuming there is only one
fit<-kmeans(comb.data, centers=1)

#print out coordinates of center:
fit$centers

您也可以使用带有上述代码的群集包绘制它,并添加:

library(cluster)
clusplot(comb.data, fit$cluster, color=T)

更多信息可以在http://www.statmethods.net/advstats/cluster.html找到,但是根据您的兴趣是生物学,化学计量学等,还有一千个参与R的聚类参考。