我已经看过了seqdef,但是当我使用类似于Aassve等人使用的数据集的东西时,我创建了一个TraMineR数据集 . (如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)您如何计算替代成本然后将它们聚类?
非常感谢
2 回答
当使用序列分析时,我们感兴趣的是一个变量的演化(例如,跨越几个波的一个变量的序列) . 那么您有多种可能性来分析几个变量:
在每个变量的序列上创建,然后分析序列簇之间的链接 . 在我看来,如果你的变量衡量不同的概念(例如,家庭和就业),这是最好的方法 .
使用
interaction
函数为每个波形创建一个新变量,该变量是一个波形的不同变量的interaction
. 例如,对于wave 1,请使用L$IntVar1 <- interaction(L$A1, L$B1, L$C1, drop=T)
(使用drop=T
删除未使用的答案组合) . 然后分析这个新创建的变量的顺序 . 在我看来,如果您的变量是同一概念的不同维度,这是首选方式 . 例如,婚姻,子女和工会都与家庭生活息息相关 .为每个变量创建一个序列对象,然后使用
seqdistmc
计算距离(多通道序列分析) . 这相当于以前的方法,具体取决于您如何设置替代成本(见下文) .如果您使用第二个策略,则可以使用以下替换成本 . 您可以计算原始变量之间的差异来设置替代成本 . 例如,在状态"Married, Child"和"Not married and Child"之间,您可以将替换设置为"1",因为"marriage"变量只有差异 . 同样,您可以将状态"Married, Child"和"Not married and No Child"之间的替换成本设置为"2",因为所有变量都不同 . 最后,将indel成本设置为最大替换成本的一半 . 这是
seqdistmc
使用的策略 .希望这可以帮助 .
在Biemann和Datta(2013)中,他们讨论了多维分析 . 这意味着为同一个“个体”创建多个序列 .
我使用以下方法来做到这一点:
1)定义3维序列
2)计算多通道(多维)距离
3)用病房方法聚类:
没关系“丢失”或“左”等参数,但我希望简短的代码示例有所帮助 .