2014-11-29 2 views
3

Я пытаюсь найти последовательности, чтобы найти наиболее распространенные подстроки (I.E. подпоследовательности, где все события смежны). В руководстве пользователя говорится о следующих инструментах поиска подпоследовательности:Поиск наиболее распространенных подстрок в подпоследовательности

«Идея подпоследовательности является расширением понятия подстроки и подробно описана для экземпляра в Elzinga (2008). Хотя подстрока последовательности обязательно состоящее из смежных символов , это требование ослабляется с понятием подпоследовательности. Таким образом, если x = abac, λ (пустая строка ), u = b, v = bac и w = bc относятся к набору подпоследовательностей x , а только λ, u = b и v = bac являются подстроками x "

Есть ли способ отключить эту релаксацию и посмотреть только на подстроки? Это специально используется команда seqefsub. Я не могу найти ничего об этом в руководстве TraMineR, поэтому любая помощь по этому поводу оценивается! Большое спасибо, Andrew

ответ

3

Хотя TraMineR не имеет специальной функции для подстрок, вы можете получить подстрочные результаты, играя с ограничениями по времени.

Например, при установке maxGap=1 в аргументе ограничения seqefsub вы получаете частые подпоследовательности, сформированные с событиями, происходящими в течение двух последовательных временных точек. Ниже я проиллюстрирую данные с доставкой данных actcal с номером TraMineR.

library(TraMineR) 
data(mvad) 
data(actcal) 
## creating a state sequence object 
actcal.seq <- seqdef(actcal,13:24, 
    labels=c("> 36 hours", "19 to 36 hours", "< 19 hours", "no work")) 
## transforming into an event sequence object 
actcal.seqe <- seqecreate(actcal.seq, tevent="state") 

## frequent subsequences without constraints 
fsubs <- seqefsub(actcal.seqe, pMinSupport=.01) 

library(TraMineRextras) 
fsubsn <- seqentrans(fsubs) 
## displaying only subsequences with at least 2 events 
fsubsn[fsubsn$data$nevent>1] 

## Now with the maxGap=1 constraint 
cstr <- seqeconstraint(maxGap=1) 
fsstr <- seqefsub(actcal.seqe, pMinSupport=.01, constraint=cstr) 
fsstrn <- seqentrans(fsstr) 
fsstrn[fsstrn$data$nevent>1] 

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

id event timestamp 
1 A  1 
1 C  2 
1 B  3 
2 C  1 
2 B  2 
3 A  1 
3 B  2 
... 

Надеется, что это помогает

Смежные вопросы