首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >traminer中的多个事件

traminer中的多个事件
EN

Stack Overflow用户
提问于 2013-06-10 16:47:27
回答 2查看 915关注 0票数 4

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

代码语言:javascript
复制
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)

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

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

2)如何计算替代成本,然后对其进行聚类?

非常感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-10 17:55:07

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

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

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

希望这能有所帮助。

票数 4
EN

Stack Overflow用户

发布于 2015-03-10 21:56:13

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

为此,我使用了以下方法:

1)定义3维序列

代码语言:javascript
复制
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)计算多通道(多维)距离

代码语言:javascript
复制
mcdist <- seqdistmc(channels=list(comp.seq,member.seq,titles.seq),method="OM",sm=list("TRATE","TRATE","TRATE"),with.missing=TRUE)

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

代码语言:javascript
复制
library(cluster)
clusterward<- agnes(mcdist,diss=TRUE,method="ward")
plot(clusterward,which.plots=2)

不要管"missing“或"left”等参数,但我希望简短的代码示例能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17020023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档