Форматирование данных для последовательности событий в TraMineR - PullRequest
1 голос
/ 30 апреля 2019

Я хотел бы изучить относительную турбулентность текста в серии текстовых композиций, используя функцию seqST() пакета TraMineR. В моем фрейме данных каждая строка (N = 65) имеет один столбец, содержащий полный текст композиции. Чтобы рассчитать турбулентность каждой композиции, я считаю, что мне сначала нужно (а) использовать функцию seqdef() в моих данных для определения объекта последовательности, а затем (б) ввести этот объект последовательности в функцию турбулентности, seqST(). Однако я не уверен, как правильно отформатировать мои данные для первого шага. Большинство примеров, которые я могу найти, это разумные исследования жизненного цикла, в которых данные отформатированы в виде одного столбца на элемент последовательности.

Вопросы:

1) Чтобы создать объект последовательности, мне нужно сначала отформатировать данные так, чтобы каждый столбец содержал одно слово композиции (а не полную композицию)? Если да, то есть ли какие-либо предложения относительно самых простых способов сделать это?

2) Есть ли основания полагать, что этот подход а) не будет работать с композициями переменной длины и / или б) композициями, превышающими определенную длину?

3) Текстовые композиции, интуитивно, могут быть более изменчивыми, чем большинство значений состояния жизненного цикла (т. Е. Словари могут быть довольно большими). Имеет ли TraMineR ограничение на число возможных значений состояния, которое он может надежно учитывать при получении значений турбулентности, энтропии и т. Д .?

Спасибо; Любое руководство приветствуется.

1 Ответ

1 голос
/ 02 мая 2019

Ниже я проиллюстрирую, как поступить, используя первые два предложения каждого из трех текстов данных вашего примера. Я предполагал, что предложения разделяются точкой, но не обрабатывал запятые. Таким образом, вы можете сначала удалить запятые. Кроме того, в приведенном ниже коде я использую tolower, чтобы игнорировать заглавные буквы. Мы просто используем функцию seqdecomp TraMineR, чтобы преобразовать ваш текст в форму таблицы, а затем вводим таблицу в seqdef.

text = c(
  "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat",
  "Tristique nulla aliquet enim tortor at auctor urna nunc Magna fermentum iaculis eu non diam phasellus vestibulum",
  "Quam adipiscing vitae proin sagittis nisl rhoncus mattis rhoncus Facilisi morbi tempus iaculis urna id"
)

library(TraMineR)
d.text <- seqdecomp(tolower(text), sep=" ")
s.text <- seqdef(d.text)

entr <- seqient(s.text)
cplx <- seqici(s.text) 
turb <- seqST(s.text)

data.frame(entr,cplx,turb)

##       Entropy         C Turbulence
## [1] 0.8528759 0.9235128   35.98833
## [2] 0.6919821 0.8318546   17.00000
## [3] 0.6388399 0.7992746   14.80735

Здесь мы вычислили продольную энтропию, индекс сложности и турбулентность.

Нет никаких известных ограничений на размер алфавита для вычисления вышеупомянутых индексов, за исключением того, что это может увеличить время вычисления. Слишком большие алфавиты становятся проблемой, по существу, для графического представления последовательностей из-за трудности поиска контрастных цветов.

Известный недостаток турбулентности состоит в том, что, в отличие от индекса сложности, он игнорирует состояния, отсутствующие в последовательности. Более того, вычисление турбулентности может занимать гораздо больше времени. Поэтому мы рекомендуем использовать индекс сложности.

...