我想应用WeightedCluster
包中的可用功能来分析我通过TraMineR
获得的多渠道序列。我这样做,但由于多通道序列是由每个通道分开组成的列表,我在seqtreedisplay()
等函数和所有需要sequence object
的函数中都会出错。
这是一个例子:
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
是否有方法在多通道类型对象(序列列表)上使用WeightedCluster
包的功能。我特别感兴趣的是使用 Partition Around Medioids 算法和初始病房集群(函数wcKMedioids()
)。如果不可能,哪个是R
中群集多渠道的最佳替代方案?
非常感谢提前!
答案 0 :(得分:2)
as.seqtree
函数(来自WeightedCluster
)需要一个类stslist
的对象(由TraMineR
seqdef
函数生成)为{{1}参数。在您的情况下,seqdata
是此类对象的列表(并行序列列表),它本身不是类fullsequences
。这会导致错误。
即使您能够定义并行序列树,问题仍然是stslist
不知道如何绘制并行序列。这意味着您必须为状态序列列表定义绘图函数,并使用更通用的seqtreedisplay
函数而不是disstreedisplay
,将绘图函数作为seqtreedisplay
参数传递。< / p>
总结一下,有两个问题。首先,您需要一些imagefunc
等效的as.disstree
,它们可用于非stslist对象的层次聚类。其次,您需要并行序列的绘图功能。第一个问题纯粹是技术问题,应该很容易解决。第二个是概念性的。