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

Aligning two set of points into a same reference point, centroid

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

让我的两组是

一个

x     y
1     3
4     2
7     8
3     5

B

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]))

现在我想对齐(coinside)m1m2 并获得关于共同点的所有聚类点 对齐的质心。怎么做。

提前致谢。

通常你会使用 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 中有上千个关于聚类的参考资料

晚会有点晚了,但是:

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

  • 如果你的组在不同的变量中,你可以使用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)