我正在R上用Traminer做序列分析,我想只考虑不同法术随时间的顺序。例如,我想在绘制最频繁的序列或使用指数图时,序列A-B-A将被视为与A-B-B-B-A相同。是否有一个选项可以在不改变数据格式的情况下处理这种类型的分析?
xqk2d5yq1#
有两种策略可以生成关注状态排序的图。
您还可以使用特定的距离度量生成一个侧重于状态排序的类型。
我们来看一个例子,首先构建序列对象:
library(TraMineR) #> #> TraMineR development version 2.3-4 (Built: 2022-11-29) #> Website: http://traminer.unige.ch #> Please type 'citation("TraMineR")' for citation information. data(biofam) ## Create the sequence object bfstates <- c("Parent", "Left", "Married", "Left/Married", "Child", "Left/Child", "Left/Married/Child", "Divorced") bf.shortlab <- c("P","L","M","LM","C","LC", "LMC", "D") bf.seq <- seqdef(biofam[,10:25], states=bf.shortlab, labels=bfstates) #> [>] state coding: #> [alphabet] [label] [long label] #> 1 0 P Parent #> 2 1 L Left #> 3 2 M Married #> 4 3 LM Left/Married #> 5 4 C Child #> 6 5 LC Left/Child #> 7 6 LMC Left/Married/Child #> 8 7 D Divorced #> [>] 2000 sequences in the data set #> [>] min/max sequence length: 16/16
创建于2023年2月21日,使用reprex v2.0.2
可以使用seqdss函数删除定时信息:
seqdss
bf.dss <- seqdss(bf.seq)
然后绘制它(任何序列图都可以):
seqfplot(bf.dss)
seqIplot(bf.dss, sortv="from.start")
平行坐标图旨在仅关注状态顺序:
seqpcplot(bf.dss)
结果可能看起来很混乱(取决于您的数据)。您可以通过显示占案例总数50%的颜色模式来突出显示最常见的状态排序
seqpcplot(bf.seq , filter = list(type = "function", value = "cumfreq", level = 0.5))
有关详细信息,请参见以下参考。Bürgin,R.和G. Ritschard(2014),分类纵向数据的装饰平行坐标图,美国统计学家68(2),98 - 103. https://doi.org/10.1080/00031305.2014.887591
如果你想建立一个专注于状态排序的类型学,你需要相应地选择距离度量,更多细节请参见下面文章的指导方针部分。Studer,M.和Ritschard,G.(2016),《生命轨迹差异的重要性:序列不相似性测量的比较综述,J.R. Stat. Soc. A,179:第481 - 511章
vx6bjr1n2#
基于Matthias的解决方案,您还可以使用DSS序列bf.dss的排序来绘制完整序列bf.seq。这里我们使用TraMineRextras的sortv函数。
bf.dss
bf.seq
TraMineRextras
sortv
library(TraMineR) data(biofam) ## Create a cohort factor for later use biofam$cohort <- cut(biofam$birthyr, c(1900,1930,1940,1950,1960), labels=c("1900-1929", "1930-1939", "1940-1949", "1950-1959"), right=FALSE) ## Create the sequence object bfstates <- c("Parent", "Left", "Married", "Left/Married", "Child", "Left/Child", "Left/Married/Child", "Divorced") bf.shortlab <- c("P","L","M","LM","C","LC", "LMC", "D") bf.seq <- seqdef(biofam[,10:25], states=bf.shortlab, labels=bfstates) bf.dss <- seqdss(bf.seq) library(TraMineRextras) seqIplot(bf.seq, sortv=sortv(bf.dss), legend.prop=.2)
m0rkklqb3#
我不明白你怎么能不接触序列格式就达到你的目标。如果你想专注于序列,忽略法术持续时间,你需要独特的状态序列格式。幸运的是,TraMineR提供了seqdss()函数来非常容易地获得DSS序列。下面是一个例子,上面的问题中提到了两个序列:
TraMineR
seqdss()
library(TraMineR) #> #> TraMineR stable version 2.2-6 (Built: 2023-01-02) #> Website: http://traminer.unige.ch #> Please type 'citation("TraMineR")' for citation information. ## Generate example data with 2 sequences seq1 <- c("A", "B", "A") seq2 <- c("A", "B", "B", "B", "A") length(seq1) <- length(seq2) seqdata <- rbind(seq1,seq2) |> seqdef() # Tabulate the sequences considering durations (default) seqtab(seqdata) #> Freq Percent #> A/1-B/1-A/1 1 50 #> A/1-B/3-A/1 1 50 # Tabulate DSS sequences (getting rid of duration information) seqtab(seqdss(seqdata)) #> Freq Percent #> A/1-B/1-A/1 2 100
3条答案
按热度按时间xqk2d5yq1#
有两种策略可以生成关注状态排序的图。
您还可以使用特定的距离度量生成一个侧重于状态排序的类型。
示例
我们来看一个例子,首先构建序列对象:
创建于2023年2月21日,使用reprex v2.0.2
删除所有计时信息
可以使用
seqdss
函数删除定时信息:然后绘制它(任何序列图都可以):
平行坐标图
平行坐标图旨在仅关注状态顺序:
结果可能看起来很混乱(取决于您的数据)。您可以通过显示占案例总数50%的颜色模式来突出显示最常见的状态排序
有关详细信息,请参见以下参考。
Bürgin,R.和G. Ritschard(2014),分类纵向数据的装饰平行坐标图,美国统计学家68(2),98 - 103. https://doi.org/10.1080/00031305.2014.887591
类型
如果你想建立一个专注于状态排序的类型学,你需要相应地选择距离度量,更多细节请参见下面文章的指导方针部分。
Studer,M.和Ritschard,G.(2016),《生命轨迹差异的重要性:序列不相似性测量的比较综述,J.R. Stat. Soc. A,179:第481 - 511章
vx6bjr1n2#
基于Matthias的解决方案,您还可以使用DSS序列
bf.dss
的排序来绘制完整序列bf.seq
。这里我们使用TraMineRextras
的sortv
函数。m0rkklqb3#
我不明白你怎么能不接触序列格式就达到你的目标。如果你想专注于序列,忽略法术持续时间,你需要独特的状态序列格式。幸运的是,
TraMineR
提供了seqdss()
函数来非常容易地获得DSS序列。下面是一个例子,上面的问题中提到了两个序列:创建于2023年2月21日,使用reprex v2.0.2