在 TraMineR 中为事件排序格式化数据
Formatting data for event sequencing in TraMineR
我想使用 TraMineR
包的 seqST()
函数检查一系列文本组合中文本的相对湍流。在我的数据框中,每一行 (N=65) 都有一列包含作文的全文。要计算每种成分的湍流,我相信我需要首先 (a) 在我的数据上使用 seqdef()
函数来定义一个序列对象,然后 (b) 将该序列对象输入到湍流函数中,seqST()
.但是,我不确定第一步如何正确格式化我的数据。我能找到的大多数示例显然都是生命历程研究,其中数据被格式化为每个序列项一列。
问题:
1) 要创建一个序列对象,我是否需要首先格式化我的数据,以便每列包含一个组成词(而不是完整的组成词)?如果是这样,有什么关于最简单的方法的建议吗?
2) 是否有任何理由相信这种方法 a) 不适用于可变长度的组合 and/or b) 超过特定长度的组合?
3) 直觉上,文本组成可能比大多数生命周期状态值更具可变性(即,词汇表可能非常大)。 TraMineR
在推导湍流、熵等的值时,它可以可靠地考虑的可能状态值的数量是否有上限?
谢谢;任何指导表示赞赏。
我在下面说明了如何使用示例数据的三个文本中的每一个的前两个句子进行操作。我假设句子是用句号分隔的,但没有处理逗号。所以你可能首先消除了逗号。此外,在下面的代码中,我使用 tolower
来忽略大写。我们只是简单地使用TraMineR
的seqdecomp
函数将您的文本转换为table形式,然后将table输入到seqdef
。
text = c(
"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat",
"Tristique nulla aliquet enim tortor at auctor urna nunc Magna fermentum iaculis eu non diam phasellus vestibulum",
"Quam adipiscing vitae proin sagittis nisl rhoncus mattis rhoncus Facilisi morbi tempus iaculis urna id"
)
library(TraMineR)
d.text <- seqdecomp(tolower(text), sep=" ")
s.text <- seqdef(d.text)
entr <- seqient(s.text)
cplx <- seqici(s.text)
turb <- seqST(s.text)
data.frame(entr,cplx,turb)
## Entropy C Turbulence
## [1] 0.8528759 0.9235128 35.98833
## [2] 0.6919821 0.8318546 17.00000
## [3] 0.6388399 0.7992746 14.80735
在这里,我们计算了纵向熵、复杂性指数和湍流。
对于计算上述索引的字母表的大小没有已知的限制,但它可能会增加计算时间。由于难以找到对比色,太大的字母表本质上成为序列图形表示的一个问题。
湍流的一个已知缺点是,与复杂性指数不同,它忽略了序列中不存在的状态。此外,湍流的计算可能更耗时。因此我们建议使用复杂性指数。
我想使用 TraMineR
包的 seqST()
函数检查一系列文本组合中文本的相对湍流。在我的数据框中,每一行 (N=65) 都有一列包含作文的全文。要计算每种成分的湍流,我相信我需要首先 (a) 在我的数据上使用 seqdef()
函数来定义一个序列对象,然后 (b) 将该序列对象输入到湍流函数中,seqST()
.但是,我不确定第一步如何正确格式化我的数据。我能找到的大多数示例显然都是生命历程研究,其中数据被格式化为每个序列项一列。
问题:
1) 要创建一个序列对象,我是否需要首先格式化我的数据,以便每列包含一个组成词(而不是完整的组成词)?如果是这样,有什么关于最简单的方法的建议吗?
2) 是否有任何理由相信这种方法 a) 不适用于可变长度的组合 and/or b) 超过特定长度的组合?
3) 直觉上,文本组成可能比大多数生命周期状态值更具可变性(即,词汇表可能非常大)。 TraMineR
在推导湍流、熵等的值时,它可以可靠地考虑的可能状态值的数量是否有上限?
谢谢;任何指导表示赞赏。
我在下面说明了如何使用示例数据的三个文本中的每一个的前两个句子进行操作。我假设句子是用句号分隔的,但没有处理逗号。所以你可能首先消除了逗号。此外,在下面的代码中,我使用 tolower
来忽略大写。我们只是简单地使用TraMineR
的seqdecomp
函数将您的文本转换为table形式,然后将table输入到seqdef
。
text = c(
"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat",
"Tristique nulla aliquet enim tortor at auctor urna nunc Magna fermentum iaculis eu non diam phasellus vestibulum",
"Quam adipiscing vitae proin sagittis nisl rhoncus mattis rhoncus Facilisi morbi tempus iaculis urna id"
)
library(TraMineR)
d.text <- seqdecomp(tolower(text), sep=" ")
s.text <- seqdef(d.text)
entr <- seqient(s.text)
cplx <- seqici(s.text)
turb <- seqST(s.text)
data.frame(entr,cplx,turb)
## Entropy C Turbulence
## [1] 0.8528759 0.9235128 35.98833
## [2] 0.6919821 0.8318546 17.00000
## [3] 0.6388399 0.7992746 14.80735
在这里,我们计算了纵向熵、复杂性指数和湍流。
对于计算上述索引的字母表的大小没有已知的限制,但它可能会增加计算时间。由于难以找到对比色,太大的字母表本质上成为序列图形表示的一个问题。
湍流的一个已知缺点是,与复杂性指数不同,它忽略了序列中不存在的状态。此外,湍流的计算可能更耗时。因此我们建议使用复杂性指数。