将类型分配给xyplot

时间:2018-05-08 21:55:51

标签: r

在R处完成初学者尝试在相似性的95x95矩阵上执行非度量多维缩放,其中8对应于非常相似,1对应于非常不相似。我还有一个额外的列(第96个)表示类型,范围从0到1.

首先我加载数​​据:

dsimilarity <- read.table("d95x95matrix.txt",
                      header = T,
                      row.names = c("Y1", "Y2", "Y3", "Y4", "Y5", "Y6", "Y7", "Y8", "Y9", "Y10", "Y11", "Y12", "Y13", "Y14", "Y15", "Y16", "Y17", "Y18", "Y19", "Y20",
                                    "Y21", "Y22", "Y23", "Y24", "Y25", "Y26", "Y27", "Y28", "Y29", "Y30", "Y31", "Y32", "Y33", "Y34", "Y35", "Y36", "Y37", "Y38", "Y39", "Y40",
                                    "Y41", "Y42", "Y43", "Y44", "Y45", "Y46", "Y47", "Y48", "Y49", "Y50", "Y51", "Y52", "Y53", "Y54", "Y55", "Y56", "Y57", "Y58", "Y59", "Y60",
                                    "Y61", "Y62", "Y63", "Y64", "Y65", "Y66", "Y67", "Y68", "Y69", "Y70", "Y71", "Y72", "Y73", "Y74", "Y75", "Y76", "Y77", "Y78", "Y79", "Y80",
                                    "Y81", "Y82", "Y83", "Y84", "Y85", "Y86", "Y87", "Y88", "Y89", "Y90", "Y91", "Y92", "Y93", "Y94", "Y95"))

我将相似性矩阵转换为不相似矩阵,并排除第96列:

ddissimilarity <- dsimilarity; ddissimilarity[1:95, 1:95] = 8 - ddissimilarity[1:95, 1:95]

然后我使用Smacof函数执行非度量MDS:

ordinal.mds.results <- smacofSym(ddissimilarity[1:95, 1:95], 
        type = c("ordinal"),
        ndim = 2,
        ties = "primary",
        verbose = T )

我创建了一个新的数据框(我正在按照指南进行操作,并不知道这里发生了什么):

mds.config <- as.data.frame(ordinal.mds.results$conf)

到目前为止一切顺利(据我所知)。但是,此时我将尝试使用此代码创建数据的xyplot并获得良好的结果:

xyplot(D2 ~ D1, data = mds.config,
   aspect = 1,
   main = "Figure 1. MDS solution",
   panel = function (x, y) {
     panel.xyplot(x, y, col = "black")
     panel.text(x, y-.03, labels = rownames(mds.config),
                cex = .75)
   },
   xlab = "MDS Axis 1",
   ylab = "MDS Axis 2",
   xlim = c(-1.1, 1.1),
   ylim = c(-1.1, 1.1))

现在我想创建一个在第96列中包含类型的图形,并为两种不同类型的观察指定不同的颜色。但是,不能完全弄清楚如何做到这一点。有没有人对我在哪里出错有任何想法?

xyplot(D2 ~ D1, data = mds.config ~ ddissimilarity[96:96, 96:96],
   aspect = 1,
   main = "Figure 1. MDS solution",
   panel = function (x, y) {
     panel.xyplot(x, y, col = "black")
     panel.text(x, y-.03, labels = rownames(mds.config),
                cex = .75)
   },
   xlab = "MDS Axis 1",
   ylab = "MDS Axis 2",
   xlim = c(-1.1, 1.1),
   ylim = c(-1.1, 1.1),
   group = "Type")

0 个答案:

没有答案