Извлечение одного репрезентативного графика последовательности из seqrep с использованием группы в TraMineR

Я пытаюсь воспроизвести графики, сделанные seqrep, используя параметр group= в TraMineR, потому что я хочу иметь файл изображения с репрезентативными последовательностями для каждой группы для использования в презентации. Кажется, я упускаю важную часть своего синтаксиса, поскольку подмножество объекта последовательности дает очень разные результаты по сравнению со встроенной опцией group в TraMineR. Как вы можете видеть на рисунках ниже, репрезентативные последовательности, идентифицированные seqrep, сильно различаются. Знаете ли вы, какая часть отсутствует или неверна в моем синтаксисе?

library(TraMineR)
library(WeightedCluster)

data(mvad)
mvad.alphabet <- c("employment", "FE", "HE", "joblessness", "school",
                   "training")
mvad.labels <- c("Employment", "Further Education", "Higher Education",
                 "Joblessness", "School", "Training")
mvad.scodes <- c("EM", "FE", "HE", "JL", "SC", "TR")

## Define sequence objects
mvad.seq <- seqdef(mvad[, 17:86], alphabet = mvad.alphabet, 
                   states = mvad.scodes, labels = mvad.labels, 
                   weights = mvad$weight, xtstep = 6)

## Defining cost matrices for OM - custom and transition based
subm.trate <- seqsubm(mvad.seq, method="TRATE")

## Computing dissimilarity matrices
mvad.ham <- seqdist(mvad.seq, method="HAM", sm=subm.trate)

## Clustering OM dissimilarities
wardCluster <- hclust(as.dist(mvad.ham), method = "ward",
                      members = mvad$weight)
clust4 <- cutree(wardCluster, k = 4)

## Plotting representative sequences
seqrplot(mvad.seq, criterion="dist", group=clust4, dist.matrix=mvad.ham, 
         withlegend=FALSE, border=NA, weighted=TRUE, stats=FALSE)
seqrplot(mvad.seq[clust4==2,], criterion="dist", dist.matrix=mvad.ham, 
         withlegend=FALSE, border=NA, weighted=TRUE, stats=FALSE)

Четыре группы репрезентативных последовательностей: см. вторую группу Четыре группы репрезентативных последовательностей Вторая группа репрезентативных последовательностей Вторая группа репрезентативных последовательностей


person non-numeric_argument    schedule 21.04.2015    source источник


Ответы (1)


При подмножении объекта последовательности состояний вы должны соответствующим образом подмножить матрицу несходства

seqrplot(mvad.seq[clust4==2,], criterion="dist", 
         dist.matrix=mvad.ham[clust4==2, clust4==2], 
         withlegend=FALSE, border=NA, weighted=TRUE, stats=FALSE)

Падая, чтобы сделать это, seqrep использовал бы неправильные расстояния для определения репрезентативных последовательностей.

person Gilbert    schedule 21.04.2015
comment
Большое спасибо за ваш ответ! На самом деле, я пробовал этот подход до того, как спросил его здесь. Затем это не сработало, но ваш ответ побудил меня еще раз взглянуть: сначала это не сработало, поскольку я использовал seqdist(..., full.matrix=FALSE) для своего исходного большого набора данных и всегда получал ошибку incorrect number of dimensions. Я думал, что это неважно, поэтому не включил в свой пример кода. Интересно, как seqrplot(..., group=clust4) обходит это с половинной матрицей расстояний? - person non-numeric_argument; 22.04.2015
comment
Почему-то я не могу получить действительно стабильные результаты с моим большим набором данных (матрица различий ~ 1 ГБ). В некоторых случаях графики, сделанные с помощью параметра group или с использованием подмножеств, как в вашем ответе, равны. Однако некоторые другие графики, особенно крупных скоплений, все же отличаются. Может ли быть проблема с подмножеством матриц больших расстояний? - person non-numeric_argument; 23.04.2015
comment
Возможно, это следствие случайной сортировки связей при сортировке последовательностей по выбранному критерию (в вашем случае "dist"). Попробуйте управлять, установив seed. - person Gilbert; 02.05.2015
comment
Спасибо за ваше предложение! Я пробовал set.seed(), но это не решило разницу между графиками. Я предполагаю, что это как-то связано с весами, поскольку разные графики, использующие подмножества, такие как dist.matrix=mvad.ham[clust4==2, clust4==2] вместо опции group=, включали больше последовательностей и по-прежнему имели меньшее покрытие, хотя взвешенное n всегда равно. Что меня действительно озадачивает: только половина сюжетов отличается, а с другой половиной все в порядке. Это затрагивает самые большие группы и некоторые из более мелких групп. - person non-numeric_argument; 19.05.2015