【问题标题】:Multiple events in traminerTraminer 中的多个事件
【发布时间】:2015-03-10 21:56:13
【问题描述】:

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

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

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

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

非常感谢

【问题讨论】:

    标签: r traminer


    【解决方案1】:

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

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

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

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      在 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)
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-18
        相关资源
        最近更新 更多