3 votos

Entropía de la distribución de estados, índice de complejidad y turbulencia para secuencias de longitud variable

Tengo un conjunto de datos con distintas longitudes de secuencia y quiero calcular una medida descriptiva para él. La causa principal de las diferentes longitudes es que algunos casos están censurados a la derecha, y se tratan adecuadamente al definir la secuencia mediante el right="DEL" en el argumento de TraMineR seqdef .

Mis preguntas son:

  1. La entropía de la distribución de estados calculada por seqstatd con la opción with.missing=FALSE , weighted=FALSE y norm=TRUE ¿se ve afectado por la variación de la longitud?

  2. La turbulencia de la secuencia calculada por seqST ¿se ve afectado por la variación de la longitud?

  3. El índice de complejidad calculado con seqici() con la opción with.missing=FALSE ¿se ve afectado por las diferentes longitudes de las secuencias?

3voto

Thomas Bartelmess Puntos 151

Hay diferentes maneras de tratar las secuencias de diferente longitud.

En TraMineR al establecer right="DEL" en seqdef las posiciones que faltan después del último estado válido se establecen como void y serán ignorados por todas las funciones, incluso cuando se utilicen con with.missing=TRUE .

Con right=NA se consideran valores perdidos hasta la longitud de la secuencia más larga. En ese caso, el efecto de with.missing=TRUE es convertir el estado NA en un estado explícito adicional del alfabeto. Los resultados corresponden a lo que obtendríamos llenando las secuencias con un símbolo designado que se añadiría al alfabeto.

Por lo tanto, suponiendo que no hay ningún elemento que falte antes del último estado válido en cada secuencia, las entropías transversales y longitudinales no normalizadas serán las mismas tanto si with.missing se establece como TRUE o FALSE . Sin embargo, los valores normalizados cambiarán, ya que el ajuste with.missing=TRUE aumenta el tamaño del alfabeto en una unidad.

Para ilustrarlo, consideremos cuatro secuencias de longitud variable y las mismas secuencias llenas de m fichas para que tengan la misma longitud.

library(TraMineR)

x1 <- "a-b-b-c"
x2 <- "a-a-b-b-b-b-c-c"
x3 <- "a-b"
x4 <- "a-a-b-b-c-c"

y1 <- "a-b-b-c-m-m-m-m"
y2 <- "a-a-b-b-b-b-c-c"
y3 <- "a-b-m-m-m-m-m-m"
y4 <- "a-a-b-b-c-c-m-m"

seqt    <- seqdef(c(x1,x2,x3,x4), right="DEL")
seqt.na <- seqdef(c(x1,x2,x3,x4), right=NA)
seqt.mm <- seqdef(c(y1,y2,y3,y4), right="DEL")

Ahora consideramos cinco posibilidades. Las distribuciones transversales pueden representarse con

par(mfrow=c(2,3))
seqdplot(seqt, with.missing=F, withlegend=F)
seqdplot(seqt.na, with.missing=F, withlegend=F)
seqdplot(seqt, with.missing=T, withlegend=F)
seqdplot(seqt.na, with.missing=T, withlegend=F)
seqdplot(seqt.mm, with.missing=T, withlegend=F)
seqlegend(seqtmm)

y las entropías transversales para cada situación se obtienen como

te <- seqstatd(seqt, with.missing=F)$Entropy
    te.na <- seqstatd(seqt.na, with.missing=F)$Entropy
te.T <- seqstatd(seqt, with.missing=T)$Entropy
    te.na.T <- seqstatd(seqt.na, with.missing=T)$Entropy
te.mm <- seqstatd(seqt.mm)$Entropy
te.tab <- data.frame(te, te.na, te.T, te.na.T, te.mm)
round(te.tab, 3)

##       te te.na  te.T te.na.T te.mm
## [1] 0.000 0.000 0.000   0.000 0.000
## [2] 0.631 0.631 0.500   0.500 0.500
## [3] 0.000 0.000 0.000   0.406 0.406
## [4] 0.579 0.579 0.459   0.750 0.750
## [5] 0.631 0.631 0.500   0.750 0.750
## [6] 0.631 0.631 0.500   0.750 0.750
## [7] 0.000 0.000 0.000   0.406 0.406
## [8] 0.000 0.000 0.000   0.406 0.406

Observamos que con with.missing=FALSE la entropía calculada es la misma sea cual sea el valor de la right (2 primeras columnas). Para with.missing=TRUE Los resultados difieren. La diferencia entre te.T y las dos primeras columnas se deben al factor de normalización, es decir, la entropía del alfabeto que tiene un token más (el token que falta) cuando ponemos with.missing=TRUE .

Resultados similares son válidos para las entropías longitudinales devueltas por el seqient Función TraMineR.

La entropía longitudinal depende sólo de la distribución, no de la longitud de la secuencia. Por ejemplo, las primeras secuencias de remolque tienen la misma distribución longitudinal y obtenemos:

seqient(seqt)[1:2]

## [1] 0.9463946 0.9463946

La turbulencia depende de la longitud de la secuencia. La Turbulencia es definida por Elzinga (C. Elzinga y A. Liefbroer, 2007) como el logaritmo (en base 2) del producto entre el número de subsecuencias del DSS (secuencia de estados sucesivos distintos) y la inversa de la varianza normalizada del tiempo transcurrido en los estados presentes en la secuencia. Esta varianza normalizada posterior se obtiene dividiendo la varianza por la máxima varianza posible, y es este máximo el que depende de la longitud de la secuencia.

seqST(seqt)[1:2]

## [1] 3.00000 4.79518

Asimismo, el índice de complejidad también depende de la longitud de la secuencia. Este índice se define (A. Gabadinho et al., 2011) como la media geométrica entre la entropía normalizada y la longitud del DSS normalizada por la longitud de la secuencia. Así, la longitud de la secuencia afecta al índice a través de esta última normalización.

seqici(seqt)[1:2]

## [1] 0.7943109 0.5199985

Los valores devueltos por seqient y seqici cambiará ligeramente cuando se utilice con el with.missing=TRUE debido a su efecto sobre el factor de normalización de la entropía.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X