4

我正在尝试使用 TraMineR 一次分析多个序列。我已经查看了 seqdef,但我很难理解在处理多个变量时如何创建 TraMineR 数据集。我想我正在使用类似于 Aassve 等人使用的数据集的东西。(如教程中所述),每波都有关于几个状态的信息(例如,孩子、婚姻、就业)。我所有的变量都是二进制的。这是一个包含三个波(D、W2、W3)和三个变量的数据集示例。

D<-data.frame(ID=c(1:4),A1=c(1,1,1,0),B1=c(0,1,0,1),C1=c(0,0,0,1))
W2<-data.frame(A2=c(0,1,1,0),B2=c(1,1,0,1),C2=c(0,1,0,1))
W3<-data.frame(A3=c(0,1,1,0),B3=c(1,1,0,1),C3=c(0,1,0,1))
L<-data.frame(D,W2,W3)

我可能是错的,但我发现的材料一次只处理一个变量的数据管理和分析(例如,跨越几波的就业状况)。我的数据集比上面的要大得多,所以我不能真正手动估算这些,如本教程第 48 页所示。有没有人使用 TraMineR(或类似软件包)处理过此类数据?

1) 您如何将上述数据提供给 TraMineR?

2)你将如何计算替代成本,然后将它们聚类?

非常感谢

4

2 回答 2

4

使用序列分析时,我们对一个变量的演变感兴趣(例如,一个变量跨多个波的序列)。然后,您有多种可能性来分析多个变量:

  • 创建每个变量的序列,然后分析序列集群之间的链接。在我看来,如果您的变量衡量不同的概念(例如,家庭和就业),这是最好的方法。
  • 使用该函数为每个波创建一个新变量,interaction该变量是一个波的不同变量。interaction例如,对于第一波,使用L$IntVar1 <- interaction(L$A1, L$B1, L$C1, drop=T)(用于drop=T删除未使用的答案组合)。然后分析这个新创建的变量的顺序。我认为,如果您的变量是同一概念的不同维度,这是首选方法。例如,婚姻、孩子和结合都与家庭生活有关。
  • 为每个变量创建一个序列对象,然后用于seqdistmc计算距离(多通道序列分析)。这等同于之前的方法,具体取决于您将如何设置替代成本(见下文)。

如果您使用第二种策略,您可以使用以下替代成本。您可以计算原始变量之间的差异来设置替代成本。例如,在状态“已婚,孩子”和“未婚和孩子”之间,您可以将替换设置为“1”,因为只有“婚姻”变量存在差异。同样,您可以将状态“已婚,孩子”和“未婚且没有孩子”之间的替代成本设置为“2”,因为您的所有变量都是不同的。最后,您将 indel 成本设置为最大替代成本的一半。这是使用的策略seqdistmc

希望这可以帮助。

于 2013-06-10T09:55:07.337 回答
1

在 Biemann 和 Datta (2013) 中,他们谈到了多维分析。这意味着为相同的“个人”创建多个序列。

我使用以下方法来做到这一点:

1)定义3维序列

comp.seq <- seqdef(comp,NULL,states=comp.scodes,labels=comp.labels, alphabet=comp.alphabet,missing="Z")
titles.seq <- seqdef(titles,NULL,states=titles.scodes,labels=titles.labels, alphabet=titles.alphabet,missing="Z")
member.seq <- seqdef(member,NULL,states=member.scodes,labels=member.labels, alphabet=member.alphabet,missing="Z")

2)计算多通道(多维)距离

mcdist <- seqdistmc(channels=list(comp.seq,member.seq,titles.seq),method="OM",sm=list("TRATE","TRATE","TRATE"),with.missing=TRUE)

3)用ward的方法对其进行聚类:

library(cluster)
clusterward<- agnes(mcdist,diss=TRUE,method="ward")
plot(clusterward,which.plots=2)

不要介意“缺失”或“左”等参数,但我希望简短的代码示例有所帮助。

于 2015-03-10T13:56:13.070 回答