使用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
相关产品推荐
相关产品推荐

