Сюжет Последовательности событий / кластеризация последовательностей событий
Возможно, это очень скучный вопрос, но я изучил его и не смог найти ответ.
Я хочу изобразить свои последовательности событий так же, как мы строим последовательности состояний, используя seqIplot
, seqfplot
, seqdplot
а также seqmtplot
, seqplot
в общем.
когда я пытаюсь это сделать, я получаю сообщение:
Error: data is not a sequence object, use seqdef function to create one
Приводит меня к мысли, что эти функции относятся только к последовательности состояний.
В разделе 10 руководства пользователя они приводят только примеры графиков подпоследовательностей. Но это не совсем то же самое.
1) Есть ли способ генерировать упомянутые графики для последовательностей событий? в каких состояниях будут переходы.
Также, когда я пытаюсь вычислить матрицу расстояний, я получаю похожую ошибку:
Error: [!] data is not a state sequence object, use 'seqdef' function to create one
2) Разве невозможно вычислить матрицы расстояний, а затем применить методы кластеризации к последовательностям событий?
Спасибо!
2 ответа
Вы правы. seqplot
Семейство функций предназначено только для последовательностей состояний.
Чтобы отобразить последовательности событий как последовательности состояний, сначала необходимо преобразовать их в последовательности состояний.
Предполагая, что ваши последовательности событий представлены в формате TSE (форма события с вертикальной меткой времени) в качестве actcal.tse
файл примера предоставлен TraMineR
, вы можете преобразовать их в последовательности состояний, используя TSE_to_STS
компаньона TraMineRextras
пакет.
Для трансформации вы должны указать, в каком состоянии вы находитесь после каждого события. Вы делаете это путем создания матрицы преобразования с seqe2stm
функция. Каждая ячейка этой матрицы должна давать новое состояние, которое возникает, когда происходит событие столбца (имя столбца), когда мы находимся в соответствующем состоянии строки (имя строки).
Для иллюстрации приведу пример со страницы справки TSE_to_STS
data(actcal.tse)
events <- c("PartTime", "NoActivity", "FullTime", "LowPartTime")
## States defined by last occurred event (forgetting all previous events).
stm <- seqe2stm(events, dropList=list("PartTime"=events[-1],
NoActivity=events[-2], FullTime=events[-3],
LowPartTime=events[-4]))
mysts <- TSE_to_STS(actcal.tse[1:100,], id=1, timestamp=2, event=3,
stm=stm, tmin=1, tmax=12, firstState="None")
Когда у вас есть последовательности состояний в форме STS, вы можете создать объект последовательности состояний и построить их.
my.seq <- seqdef(mysts)
seqdplot(my.seq)
Кроме того, вы можете создать параллельный координатный график вашей последовательности событий, используя seqpcplot
функция. На странице справки этой функции есть множество примеров. Подробнее о сюжете см.
Bürgin, R. & Ritschard, G. (2014), "Оформленный параллельный координатный график для категориальных продольных данных", Американский статистик. Том 68(2), с. 98-103. дои
Надеюсь это поможет.
Что касается кластеризации последовательностей событий, вы можете использовать seqedist
функция компаньона TraMineRextras
пакет.
data(actcal.tse)
actcal.seqe <- seqecreate(actcal.tse[1:200,])[1:6,]
## We have 8 different event in this dataset
idcost <- rep(1, 8)
dd <- seqedist(actcal.seqe, idcost=idcost, vparam=.1)
Для объяснения на расстоянии, вы можете посмотреть на бумаге
Ritschard, G., Bürgin, R. & Studer, M. (2013), "Исследовательское изучение истории жизненных событий", In McArdle, JJ & Ritschard, G. (eds) Современные проблемы исследования исследовательского интеллектуального анализа данных в поведенческих науках. Серия: Количественная методология, с. 221-253. Нью-Йорк: Рутледж. Препринт