如何防止 TraMineR 状态分布图 (seqdplot) 删除缺失状态

How to prevent TraMineR state distribution plot (seqdplot) from removing missing states

我正在分析一些序列数据,希望能够在我的所有序列图中看到缺失的状态。但是,我注意到 TraMineR 的状态分布图函数 seqdplot 会自动删除缺失的序列状态。我在下面包含了一个可重现的例子。如您所见,缺失数据在序列索引图 seqIplot 的图和图例中可见。但是,它会自动从状态分布图中删除 seqdplot.


如何阻止 seqdplot 删除这些缺失值?


创建和格式化数据

# Import required libraries
library(TraMineR)
library(tidyverse)

# Set seed for reproducibility
set.seed(123)

# Read in TraMineR sample data
data(mvad)

# For loop which generates missing data within the sequences
for (col in 17:86) {
  mvad[sample(1:nrow(mvad),(round(nrow(mvad)*0.1))),col] <- NA
}

# Create sequence object
mvad.seq <- seqdef(mvad[, 17:86])

序列索引图(缺失数据可见)

# Create sequence index plot
seqIplot(mvad.seq, sortv = "from.start", with.legend = "right")


状态分布图(删除缺失数据)

# Create state distribution plot
seqdplot(mvad.seq, sortv = "from.start", with.legend = "right")

要显示缺失值,只需使用参数 with.missing=TRUE

seqdplot(mvad.seq, sortv = "from.start", with.legend = "right",
         with.missing=TRUE, border=NA)

默认情况下,seqdef 将右边的缺失设置为空白,即,它假定序列在最后一个有效状态结束。如果您还想将(显示)正确的缺失视为缺失标记,请在 seqdef 命令中设置 right=NA(默认情况下为 right="DEL"):

mvad.seq <- seqdef(mvad[, 17:86], right=NA)