R 基于加权聚类包的多通道序列分析

R 基于加权聚类包的多通道序列分析,r,cluster-analysis,sequences,traminer,R,Cluster Analysis,Sequences,Traminer,我想应用WeightedCluster软件包中提供的功能来分析我通过TraMineR获得的多通道序列。我正在尝试这样做,但由于多通道序列是由每个通道单独组成的列表,我在函数中遇到了错误,如seqtreedisplay(),以及所有需要序列对象的函数 这是一个例子: fullsequences <- list( work_sequence2 = work_sequence[which(rownames(work_sequence) %in% commonid),], educ_seq

我想应用
WeightedCluster
软件包中提供的功能来分析我通过
TraMineR
获得的多通道序列。我正在尝试这样做,但由于多通道序列是由每个通道单独组成的列表,我在函数中遇到了错误,如
seqtreedisplay()
,以及所有需要
序列对象的函数

这是一个例子:

fullsequences <- list(
  work_sequence2 = work_sequence[which(rownames(work_sequence) %in% commonid),],
  educ_sequence2 = educ_sequence[which(rownames(educ_sequence) %in% commonid),],
  part_sequence2 = part_sequence[which(rownames(part_sequence) %in% commonid),],
  kid_sequence2 = kid_sequence[which(rownames(kid_sequence) %in% commonid),]
)  # a total of 926 with complete sequences on all channels

multidist <- seqdistmc(
          channels = fullsequences,
          method = "OM", 
          norm = FALSE, 
          sm = list("TRATE","TRATE","TRATE","TRATE"), 
          with.missing=FALSE, 
          full.matrix=TRUE, 
          link="sum")  

clusterward <- hclust(as.dist(multidist), method = "ward")  

seqtreedisplay(as.seqtree(clusterward, ncluster = 5,
           seqdata = fullsequences , diss = multidist))

Error in seqlegend(seqdata, fontsize = legend.fontsize, title = "Legend",  : 
  data is not a sequence object, use seqdef function to create one

fullsequencesas.seqtree
函数(来自
WeightedCluster
)需要类
stslist
(由
TraMineR
seqdef
函数生成)的对象作为
seqdata
参数。在您的例子中,
fullsequences
是此类对象的列表(并行序列列表),它本身不属于类
stslist
。这会导致错误

即使您能够定义并行序列树,问题是
seqtreedisplay
不知道如何绘制并行序列。这意味着您必须为状态序列列表定义一个plot函数,并使用更通用的
disstreedisplay
函数而不是
seqtreedisplay
,将plot函数作为
imagefunc
参数传递

总而言之,有两个问题。首先,您需要一些相当于
as.seqtree
as.disstree
,用于非stslist对象的层次聚类。其次,您需要一个并行序列的plot函数。第一个问题纯粹是技术问题,应该很容易解决。第二个更具概念性