我计算了任意两对〜1200人之间的相似性/相异性,范围为0-1。
我想在X-Y平面上想象这些关系。是否有任何软件工具可以采用这些关系,并使人们彼此接近并且彼此相近并且远离每个具有高度相异性的人?
答案 0 :(得分:2)
您需要使用Multidimensional Scaling。目标是确定数据的转换,以表示2维中线性距离的相似性的相对差异。您将需要使用经典或基于指标的缩放。
以下是R:
的示例
代码相当简单。该magick全部在cmdscale
,并使用vegdist
为cmdscale
创建距离矩阵。然后,您可以使用R或将数据导出到其他位置以进行可视化。
## load libraries
library(ggplot2) # for charting
library(vegan) # for jaccard
## simulate some data - 1200 rows, 5 features/cols/fields
features <- matrix(abs(rnorm(1200*5)),ncol=5)
rownames(features) <- paste("P", seq(1:1200), sep="")
## calculate jaccard distances
d <- vegdist(features, method = "jaccard")
## Multidimensional Scaling
fit <- cmdscale(d,eig=TRUE, k=2)
# prepare the data for plotting
mds <- data.frame(
x = fit$points[,1],
y = fit$points[,2],
name = rownames(features))
# plot
ggplot(mds, aes(x=x,y=y,label=color=name)) + geom_text(size=1)
## bonus visualization! - a dendrogram
fit <- hclust(d, method="ward")
plot(fit)