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函数。第一个问题纯粹是技术问题,应该很容易解决。第二个更具概念性