Преобразование данных TSE в STS с помощью TraMineRextras - PullRequest
0 голосов
/ 11 января 2019

У меня есть набор данных, который отформатирован как TSE:

enter image description here

Событие - это код режима входа (1 - экспорт, от 2 до 5 - партенариат, от 6 до 7 - Acq.Mino, 8 - Acq_Majo). Страна не используется.

Я хотел бы преобразовать эту таблицу в объект последовательности, и я понял, что функция TSE_to_STS поможет мне сделать это. Однако, похоже, что результат не такой, как я ожидал.

Я запустил код:

seq.sts<-TSE_to_STS(seq.tse.data,id = 1, timestamp = 2, event = 3, stm =NULL, tmin = 1935,tmax = 2018, firstState = "None").

вывод для компании 7:

> seq.sts[7,]

enter image description here

Моим первым сюрпризом является то, что событие произошло в году n и закодировано в году n + 1 (красным цветом в приведенном выше выводе). Мое второе удивление заключается в том, что в 2013 году и в 2015 году я теряю информацию о второй записи в Таиланде (желтым цветом в приведенном выше выводе). В-третьих, я не понимаю, почему добавляются штаты: почему у нас в 2012 году Acq_Mino.Acq_Majo и не только Acq_Mino?

1 Ответ

0 голосов
/ 12 января 2019

Функция TSE_to_STS предназначена для преобразования последовательностей событий с метками времени в последовательности состояний. Это делается путем определения состояния, в котором мы находимся после того, как событие происходит. При «stm = NULL» состояние после каждого события характеризуется как сочетание текущего состояния и события.

Ваш пример не воспроизводим, потому что:

  1. Нам неизвестна повторная маркировка, которую вы применили к событиям, закодированным от 1 до 8, и
  2. Похоже, что вы смешали аргументы timestamp и event в примере команды TSE_to_STS.

Ниже я приведу воспроизводимый пример (на основе вашего примера, за исключением столбца country, который мы не используем).

library(TraMineRextras)
seq.tse.data <- structure(list(
  ID = c(1L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 
         4L, 4L, 4L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 6L, 6L, 
         6L, 6L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L),
  Year = c(2008L, 2010L, 2012L, 2007L, 2009L, 2010L, 2012L,
           2013L, 1996L, 1997L, 1999L, 2003L, 2006L, 2008L, 
           2012L, 2007L, 2007L, 2008L, 2003L, 2007L, 2007L,
           2009L, 2009L, 2011L, 2014L, 2016L, 2006L, 2009L, 
           2011L, 2013L, 2013L, 2015L, 2015L, 2016L), 
  Event = c(8L, 7L, 8L, 5L, 1L, 8L, 8L, 8L, 3L, 3L, 3L,
            3L, 3L, 8L, 1L, 8L, 8L, 8L, 7L, 8L, 8L, 8L,
            8L, 8L, 8L, 8L, 8L, 8L, 7L, 7L, 6L, 7L, 6L, 
            8L)), 
  class = "data.frame", row.names = c(NA, -34L)
  )
seq.tse.data[seq.tse.data$ID==7,]

#    ID Year Event
# 27  7 2006     8
# 28  7 2009     8
# 29  7 2011     7
# 30  7 2013     7
# 31  7 2013     6
# 32  7 2015     7
# 33  7 2015     6
# 34  7 2016     8

seq.sts <- TSE_to_STS(seq.tse.data,
                 id = 1, timestamp = 2, event = 3, 
                 stm =NULL, tmin = 1990, tmax = 2018,
                 firstState = "None")

Для идентификатора 7 мы получаем:

seq.sts[7,which(names(seq.sts)=="a2005"):which(names(seq.sts)=="a2018")]

#   a2005 a2006 a2007 a2008 a2009 a2010 a2011 a2012 a2013 a2014 a2015 a2016 a2017 a2018
# 7  None  None     8     8     8     8     8   8.7   8.7 8.7.6 8.7.6 8.7.6 8.7.6 8.7.6   

В этом примере для id=7 первое событие (8) происходит в 2006 году. Следовательно, состояние составляет None до 2006 года и впоследствии переключается на 8. В 2011 году происходит событие 7. Итак, в следующем году (2012) мы переходим в состояние «события 8 и 7 уже произошли», которое обозначается как 8.7. Когда 7 происходит снова в 2013 году, оно не меняет состояние, поскольку 7 уже произошло, в то время как событие 6 приводит к состоянию 8.7.6. Последний вступает в силу в следующем году, то есть в 2014 году.

Различные схемы для определения состояния, возникающего после возникновения каждого события, могут быть определены путем предоставления матрицы stm для функции TSE_to_STS. Используйте функцию seqe2stm для определения матрицы stm. (Более подробную информацию смотрите на странице справки этой последней функции.)

...