TraMineR seqdplot: состояние заказа по общей частоте - PullRequest
1 голос
/ 30 сентября 2019

Я хотел бы отобразить график распределения состояний (полученный с seqdplot), упорядоченный по частоте состояний. Например, с набором данных mvad :

library(TraMineR)
data(mvad)

mvad.labels <- c("employment", "further education", "higher education", "joblessness", "school", "training")
mvad.scode <- c("EM", "FE", "HE", "JL", "SC", "TR")
mvad.seq <- seqdef(mvad, 17:86, states = mvad.scode,labels = mvad.labels, xtstep = 6)

seqdplot(mvad.seq, border = NA, title = "State distribution plot")

State distribution plot

Я бы хотел, чтобы состояния отображались в порядкеих общая частота (например, с наиболее частым состоянием внизу графика и наименее частым вверху или в любом указанном порядке). Это возможно с помощью функции seqdplot? Или вы, ребята, знаете другие альтернативы? (Ggplot2 ..)

1 Ответ

0 голосов
/ 30 сентября 2019

Графики TraMineR сохраняют порядок состояний объекта последовательности состояний. Чтобы изменить порядок, вы должны определить новый объект последовательности состояний с требуемым порядком состояний.

Вы получаете частоты состояний с помощью seqmeant. Как только вы определили порядок, вы навязываете его, явно определяя алфавит в seqdef. Вы также должны отсортировать соответственно короткие и длинные метки, а также цвета состояний.

Вот как это можно сделать

## Get state freq with seqmeant
mt <- seqmeant(mvad.seq)
## order of frequencies
ord <- order(mt, decreasing = TRUE)

## Sorted alphabet
alph.s <- rownames(mt)[ord]
## we need also to sort accordingly labels and colors
mvad.labels.s <- mvad.labels[ord]
mvad.scode.s <- mvad.scode[ord]
cpal.s <- cpal(mvad.seq)[ord]

## Define sequence object with sorted states
mvad.seq.s <- seqdef(mvad.seq, alphabet = alph.s, states = mvad.scode.s,
                   labels = mvad.labels.s, cpal = cpal.s, xtstep = 6)

seqdplot(mvad.seq.s, border = NA, main = "State distribution plot")

enter image description here

...