我想TraMineR::seqdist()
从包含缺失的数据(即包含间隙的序列)中对具有最佳匹配的序列进行聚类。
library(TraMineR)
data(ex1)
sum(is.na(ex1))
# [1] 38
sq <- seqdef(ex1[1:13])
sq
# Sequence
# s1 *-*-*-A-A-A-A-A-A-A-A-A-A
# s2 D-D-D-B-B-B-B-B-B-B
# s3 *-D-D-D-D-D-D-D-D-D-D
# s4 A-A-*-*-B-B-B-B-D-D
# s5 A-*-A-A-A-A-*-A-A-A
# s6 *-*-*-C-C-C-C-C-C-C
# s7 *-*-*-*-*-*-*-*-*-*-*-*-*
sm <- seqsubm(sq, method='TRATE')
round(sm,digits=3)
# A-> B-> C-> D->
# A-> 0 2.000 2 2.000
# B-> 2 0.000 2 1.823
# C-> 2 2.000 0 2.000
# D-> 2 1.823 2 0.000
当我跑seqdist()
dist.om <- seqdist(sq, method="OM", indel=1, sm=sm)
我正在接收
Error: 'with.missing' must be TRUE when 'seqdata' or 'refseq' contains missing values
但是当我设置选项时with.missing=TRUE
,我收到了
[>] including missing values as an additional state
[>] 7 sequences with 5 distinct states
[>] checking 'sm' (one value for each state, triangle inequality)
Error: [!] size of substitution cost matrix must be 5x5
那么,当数据包含缺失(即序列包含间隙)时,我们如何使用正确方式seqdist()
的输出来计算序列之间的差异?seqsubm()
注意:我不太确定这是否有意义。到目前为止,我只是排除了缺失的观察结果,但由于我的数据,我因此失去了很多观察结果。因此,有必要知道是否有这样的选择。