[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