Назначение типа для xyplot - PullRequest
0 голосов
/ 09 мая 2018

Полный новичок в 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]

Затем я выполняю неметрическую MDS, используя функцию Smacof:

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")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...