You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用TraMineR构建右删失不等长序列相异矩阵的长度计算问题

关于TraMineR处理右删失序列数据构建相异矩阵的问题

这是我首次在Stack Overflow发帖,此前TraMineR为我提供了重要帮助。我正在处理因右删失导致的不等长序列数据,目前先以“家庭”单维度展开分析(最多10年数据,8种序列状态)。参考Mencarini等人2022年的研究,我希望基于序列的共同最大长度构建相异矩阵。

TraMineR处理右删失数据有两种方式:设为void或missing,再基于序列长度归一化构建相异矩阵。我尝试将缺失状态的插入/替换成本设为0来复现上述研究,但遇到两个问题:

  • 当将缺失设为独立状态时,TraMineR会将序列视为等长(如5年数据+5年缺失会被视为10年序列),无法基于非缺失状态长度进行归一化;
  • 据文档,目前仅支持基于最大序列长度归一化,能否实现基于最小序列长度的归一化?

示例代码

右删失设为void的处理

# Sequence object
seq.fam.test <- seqdef(data[,col_fam], cpal = colspace.fam, labels=longlab.fam, states= shortlab.fam, right="DEL")

# Dissimilarity matrix based on OM
dist.fam.om.t1a <- seqdist(seq.fam.test, method="OM", indel=1, sm= "CONSTANT", with.missing=TRUE, norm="maxlength")

右删失设为missing的处理

# Sequence object
seq.fam.test.miss <- seqdef(data[,col_fam], cpal = colspace.fam, labels=longlab.fam, states= shortlab.fam, right=NA)

# Dissimilarity matrix based on OM. 

# First, setting cost of transforming missing to 0
fam.test.misscost0 <- seqcost(seq.fam.test.miss, method="CONSTANT", miss.cost=0, with.missing=TRUE, miss.cost.fixed=TRUE)

# Then, create diss matrix
dist.fam.om.t3a <- seqdist(seq.fam.test.miss, method="OM", indel=fam.misscost0$indel, sm= fam.misscost0$sm, with.missing=TRUE, norm="maxlength")

内容的提问来源于stack exchange,提问作者kim.m

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 04:51:06