[Traminer-users] Truncating sequences to a varying length

Matthias Studer Matthias.Studer at unige.ch
Mon May 23 09:28:04 CEST 2011


Hi Simon,

I answer in English as other users may be interested by your question. 
There are several ways to truncate sequences to a varying length.

Suppose we are working with the mvad data set and we would like to 
truncate sequence to a random varying length

## Creating the mvad sequence
library(TraMineR)
data(mvad)

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



## Here we generate a random integer to cut the sequences
## The results is a vector of length 712 with integer values ranging 
from 10 to 69
## This should be the length you would like to use to truncate your 
sequences
randomlength <- as.integer(runif(nrow(mvad))*60)+10
head(randomlength)

## On way is to use a "position" matrix, which store, for each cell the 
current position in the sequence
positionindex <- matrix(1:70, nrow=nrow(mvad), ncol=70, byrow=TRUE)

head(positionindex)

## Using this position matrix, we can affect the "void" attribute (i.e. 
end of sequence) to each position
## that are greater than the truncating date
mvad.seq[positionindex > randomlength] <- attr(mvad.seq, "void")

## Checking the results
all.equal(as.numeric(seqlength(mvad.seq)), randomlength)

## Plotting result
seqiplot(mvad.seq)

## Another way would be to use a loop
## This may take much longer to compute
## Personally, I prefer the previous solution

mvad.seq <- seqdef(mvad, 17:86, alphabet = mvad.alphabet, states = 
mvad.scodes,
     labels = mvad.labels, xtstep = 6)

## For each sequence
for(i in 1:length(randomlength)){
     ## for the given position until the end assign the "void" element
     ## We should add one to randomlength to cut after the randomlength
     mvad.seq[i, (randomlength[i]+1):ncol(mvad.seq)] <- attr(mvad.seq, 
"void")
}

seqiplot(mvad.seq)
## Checking the results
all.equal(as.numeric(seqlength(mvad.seq)), randomlength)


Hope this helps.

Matthias Studer






Le 19.05.2011 16:17, Simon PAYE a écrit :
>
> Bonjour chers collègues,
>
> Je fais irruption dans votre liste pour une question qui me travaille 
> depuis quelque temps et qui potentiellement peut intéresser beaucoup 
> d'analystes de séquences avec des durées variées (notamment les 
> carrières).
>
> Je dispose d'une base d'une centaine de carrières d'universitaires 
> codées en STS d'une longueur de 5 à 47 années.
>
> Pour mes analyses, j'ai besoin de les aligner à droite ('external time 
> reference' ou 'calendar time axis'), ou de les aligner à gauche 
> ('internal time reference' ou 'process time axis'). Jusqu'ici, pas de 
> problème, car je peux passer d'un modèle à l'autre en utilisant les 
> options 'left' et 'right' de seqdef.
>
> Tout se complique lorsque je souhaite tronquer les séquences selon une 
> date historique variable selon les individus.
>
> Dans mon cas, c'est l'année d'obtention de la tenure (emploi 
> permanent), que j'ai renseignée dans une variable appelée 
> 'year.tenure'. Si je veux, par exemple, analyser les séquences menant 
> à la tenure en les alignant toutes à droite selon l'année d'obtention 
> de la tenure, comment dois-je procéder ?
>
> Je n'ai pas trouvé de solution dans le 'user's guide', ni dans les 
> autres documents disponibles sur le site de TraMineR.
>
> Merci pour votre réponse et pour tout ce que vous avez fait jusque là,
>
> Simon
>
>
> -- 
> Simon Paye
> Doctorant en sociologie
> Centre de Sociologie des Organisations - Sciences Po Paris
>
> Tel: 0148741267
> ------------------------------------------------------------------------
> -------------------------------------------------------------------------- 
> Tous les courriers électroniques émis depuis la messagerie de Sciences 
> Po doivent respecter des conditions d'usages. Pour les consulter 
> rendez-vous sur 
> http://www.ressources-numeriques.sciences-po.fr/confidentialite_courriel.htm 
>
>
>
> _______________________________________________
> Traminer-users mailing list
> Traminer-users at lists.r-forge.r-project.org
> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/traminer-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/traminer-users/attachments/20110523/da632511/attachment.htm>


More information about the Traminer-users mailing list