使用R减少序列分析中的时间范围
我有一个在很长一段时间内发生的序列。我尝试了8种不同的算法来分类我的序列(OM,CHi2,…)。时间从1到123。我有110个个人项目和8个项目 我的成绩不如预期。首先,它很难阅读。第二,类别包含太多的代表序列(group3)。第三,每组的序列数量确实不平衡 这可能是因为我的时间变量的范围是123。我搜索的文章有一个太长的时间范围内的问题。我在Satherwal和Robey(1993年)以及Shi和Prescott(2011年)中读到,您可以标准化“通过将所需转换的数量除以较长序列的长度来实现每个序列”。我怎样才能在R中做到这一点 请在下面找到我的数据说明:使用R减少序列分析中的时间范围,r,range,sequence,traminer,standardized,R,Range,Sequence,Traminer,Standardized,我有一个在很长一段时间内发生的序列。我尝试了8种不同的算法来分类我的序列(OM,CHi2,…)。时间从1到123。我有110个个人项目和8个项目 我的成绩不如预期。首先,它很难阅读。第二,类别包含太多的代表序列(group3)。第三,每组的序列数量确实不平衡 这可能是因为我的时间变量的范围是123。我搜索的文章有一个太长的时间范围内的问题。我在Satherwal和Robey(1993年)以及Shi和Prescott(2011年)中读到,您可以标准化“通过将所需转换的数量除以较长序列的长度来实现每
library(TraMineRextras)
head(seq.tse.data)
seq.tse.data <- structure(list(
ID = c(1L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 6L, 6L,
6L, 6L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L),
Year = c(2008L, 2010L, 2012L, 2007L, 2009L, 2010L, 2012L,
2013L, 1996L, 1997L, 1999L, 2003L, 2006L, 2008L,
2012L, 2007L, 2007L, 2008L, 2003L, 2007L, 2007L,
2009L, 2009L, 2011L, 2014L, 2016L, 2006L, 2009L,
2011L, 2013L, 2013L, 2015L, 2015L, 2016L),
Event = c(5L, 4L, 5L, 3L, 1L, 5L, 5L, 5L, 3L,3L,3L,3L,3L,5L, 1L, 5L,
5L,5L,4L,5L, 5L, 5L, 5L, 5L, 5L,5L,5L,5L, 4L, 4L, 1L, 4L, 1L,5L)),
class = "data.frame", row.names = c(NA, -34L)
)
seq.sts <- TSE_to_STS(seq.tse.data,
id = 1, timestamp = 2, event = 3,
stm =NULL, tmin = 1935, tmax = 2018,
firstState = "None")
seq.SPS <- seqformat(seq.sts, 1:84, from = "STS", to = "SPS")
seq.obj <- seqdef(seq.SPS)
> head(seq.tse.data)
ID Year Event
1 1 2008 5
2 2 2010 4
3 2 2012 5
4 3 2007 3
5 3 2009 1
6 3 2010 5
> head(seq.obj)
Sequence
[1] (None,74)-(5,10)-1
[2] (None,76)-(4,2)-(5.4,6)-2
[3] (None,73)-(3,2)-(3.1,1)-(5.3.1,8)-3
[4] (None,62)-(3,12)-(5.3,4)-(5.3.1,6)-3
[5] (None,73)-(5,11)-1
[6] (None,69)-(4,4)-(5.4,11)-2
> head(alphabet(seq.obj),10)
[1] "(1,1)" "(1,10)" "(1,11)" "(1,12)" "(1,14)" "(1,19)" "(1,2)" "(1,21)" "(1,25)" "(1,3)"
...
[145] "(5.4.3.1,5)" "(5.4.3.1,6)" "(5.4.3.1,7)" "(5.4.3.1,8)" "(5.4.3.1.2,9)" "(None,1)" "(None,11)" "(None,20)"
[153] "(None,26)" "(None,30)" "(None,38)" "(None,41)" "(None,42)" "(None,44)" "(None,45)" "(None,49)"
[161] "(None,51)" "(None,53)" "(None,55)" "(None,57)" "(None,58)" "(None,59)" "(None,60)" "(None,61)"
[169] "(None,62)" "(None,64)" "(None,65)" "(None,66)" "(None,67)" "(None,68)" "(None,69)" "(None,7)"
[177] "(None,70)" "(None,71)" "(None,72)" "(None,73)" "(None,74)" "(None,75)" "(None,76)" "(None,77)"
[185] "(None,78)" "(None,79)"
库(tramineraxtras)
总分(如下tse数据)
seq.tse.data我想你的问题是关于序列间差异的标准化。例如,Sabherwal和Robe(1993,P 557)指的是雅培和Hyrac(1990)提出的距离标准化,并且根本不考虑序列的标准化。不管怎样,我不知道序列的标准化是什么
TraMineR
的seqdist
函数具有一个norm
参数,可用于规范化建议的一些距离度量。以下是seqdist
帮助页面的摘录:
距离可以通过norm参数进行规范化。
如果设置为“自动”,则Elzinga的标准化(相似性除以
两个序列长度的几何平均值)应用于“LCS”,
“LCP”和“RLCP”距离,而雅培的标准化(距离
除以较长序列的长度)用于“OM”、“HAM”和
“DHD”。Elzinga的方法可以用“gmean”和Abbott规则强制执行
使用“maxlength”。使用“maxdist”时,距离通过其
最大可能值。有关更多详细信息,请参见Gabadinho等人(2009年,
2011). 最后,“余剑波”是余剑波等人提出的规范化
保三角不等式的Bo(2007)
我要警告您,虽然标准化使两个短序列(比如长度10)之间的距离与两个长序列(比如长度100)之间的距离更具可比性,但它并不能解决比较不同长度序列的问题
您可以在中找到关于序列分析中距离和相似性标准化的详细讨论。欢迎来到StackOverflow!请阅读相关信息以及如何给出建议。这将使其他人更容易帮助你。谢谢你的评论。我添加了重新创建序列的命令。这里有太多问题:距离的标准化(或者你真的想标准化序列?),忽略时间的影响,字母表大小和序列长度的问题。请针对每一个问题分别提出一个问题。谢谢您的评论。我更新了我的问题,并在一个单独的链接上添加了额外的问题。请澄清您的问题。标题是“标准化时间”,文本是“标准化序列”,提供的参考是关于标准化差异。此外,作为链接提供的结果与提供的示例数据不一致。另外,以文本形式提供结果示例,而不是屏幕截图的链接。您的评论确实满足了我的需要。我所引用的文章(Shi和Prescott,2011)的引文不清楚。再次感谢您!