Как добавить линию регрессии в график энтропии TraMineR? - PullRequest
0 голосов
/ 12 февраля 2019

Я хотел бы знать, реализовано ли каким-либо образом добавление линии линейной регрессии к графику энтропии TraMineR.

Пример:

library(TraMineR)
data(biofam)
set.seed(10)
biofam <- biofam[sample(nrow(biofam),300),]
biofam.lab <- c("Parent", "Left", "Married", "Left+Marr",
                "Child", "Left+Child", "Left+Marr+Child", "Divorced")
biofam.seq <- seqdef(biofam, 10:25, labels=biofam.lab)

seqplot(biofam.seq, type="Ht")

Я хочукак то так:

enter image description here

Я знаю, что могу вычислить энтропию с помощью seqient()

biofam$ient <- seqient(biofam.seq, with.missing=TRUE)

Но так как данныев широком формате, я не уверен, как получить данные, чтобы я мог сделать abline(lm(y ~ x)) подход.

> head(biofam[c(1, 10:12, 28)])
     idhous ... a15 a16 a17   ... Entropy
1234     NA   ... 0   0   0 ... 0.3010904
1515  86261   ... 0   0   0 ... 0.3154649
276   17561   ... 0   0   0 ... 0.4012026
1212  69021   ... 0   0   0 ... 0.5517478
153   11391   ... 0   0   0 ... 0.2559298
1164  66641   ... 0   0   0 ... 0.4178207

Также seqplot(), кажется, не обеспечивает числовой вектор / матрицу, такую ​​как plot():

p <- plot(sin, -pi, 2*pi, sub="ordinary plot")
s <- seqplot(biofam.seq, type="Ht")

> str(p)
List of 2
 $ x: num [1:101] -3.14 -3.05 -2.95 -2.86 -2.76 ...
 $ y: num [1:101] -1.22e-16 -9.41e-02 -1.87e-01 -2.79e-01 -3.68e-01 ...

> str(s)
 NULL

1 Ответ

0 голосов
/ 14 февраля 2019

Энтропия поперечного сечения, представленная seqHtplot или seqplot(..., type="Ht"), сохраняется в элементе $Entropy объекта, возвращаемого seqstatd.Значение в каждый момент времени является энтропией распределения состояния поперечного сечения в этот момент времени.Таким образом, существует одно значение на каждый момент времени.

Это отличается от продольной энтропии, возвращаемой seqient.Здесь есть одно значение для каждой последовательности.Значение является энтропией распределения состояний в последовательности.

Итак, чтобы построить линию регрессии, вам просто нужно извлечь энтропию поперечного сечения, используя seqstatd, определить переменную времени и использовать эти переменныев abline(lm()):

stat.bf <- seqstatd(biofam.seq)
ent <- stat.bf$Entropy
time <- 1:length(ent)

seqplot(biofam.seq, type = "Ht")
abline(lm(ent ~ time), col = "red", lty = 2)

enter image description here

...