问题标签 [traminer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - 通过 WeightedCluster 包进行多通道序列分析
我想应用WeightedCluster
包中可用的功能来分析我通过TraMineR
. 我正在尝试这样做,但由于多通道序列是由每个通道分别组成的列表,我在函数中遇到错误,例如seqtreedisplay()
所有需要sequence object
.
这是一个例子:
是否有一种方法可以WeightedCluster
在多通道类型对象(序列列表)上使用包的功能。我对使用带有初始病房集群(函数)的Partition Around Medioids算法特别感兴趣。wcKMedioids()
如果不可能,哪个是集群多通道的最佳替代方案R
?提前非常感谢!
r - 作为时间函数的转换率
我花了一段时间发现R
和TraMineR
包能够分析我的数据库项目(TSE
格式如此)的转换事件(出于本讨论目的的状态)的 MySQL 导出。
我有 10 个状态,可以转换到任何其他状态(即没有特定的顺序)。
到目前为止,我已经设法将此数据转换为STS
,使用 1 小时的基本时间单位,以便能够使用该seqtrate
函数,它为我提供了从每个状态到另一个状态的绝对转换率(在 10x10 表中)。
我遇到的麻烦是将转换率计算为时间的函数。我想象这将再次显示为 10x10 表,但不是每个单元格中的绝对值,它可能是一个离散图,表示根据不同时间的速率(例如 <24h、24-72h、72-168h、> 168 小时)。
有 的time.varying
选项seqtrate
,但它计算每个时间单位的费率,我没有看到定义特定时间范围的选项。
我也想过使用SPS
,但我找不到任何特定的功能来做到这一点。
我还有其他功能可以做到这一点吗?或者我需要使用seqtrate
'stime.varying
选项手动编码吗?如果是后者,您能否让我走上正轨,我不知道从哪里开始。
更新(只是一个例子来说明我想为前 3 个州获得什么)
r - 处理具有确切日期的 SPELL 数据(功能请求?)
我正在学习 TraMineR 并使用了不同类型的纵向数据。我的原始数据是带有 id、开始时间、结束时间和状态的 SPELL 数据,其中开始和结束时间是确切的日期,所以我的子序列有不同的长度
使用 seqformat() 我可以将数据(自动)切成 1 年的片段并转换为 STS 格式,例如。其中第一个变量是第一个日期,第二个变量是第一个日期 + 1 年,依此类推。
我想做的是调整转换,以便我可以使用半年或一个月的时间段。
在这里,我使用 decimal.date() 将日期转换为带小数的年份:
自动创建的序列对象具有一年子序列中的数据:
因此,对于带有日期的数据,我希望可以选择使用短于 1 年的子序列长度。我知道使用 seqgranularity() 可能会发生相反的情况。
或者,我很想知道在 TraMineR 之外的 R 中是否有某种方式来处理 SPELL 数据以创建特定长度的子序列。
r - 从 GraphViz 保存序列树
一般来说,我是 TraMineR 和序列分析的新手。我正在开展一个与教育领导者的保留和招聘相关的项目,并发现 TraMineR 非常有用。这可能是一件简单的事情(而且有点不重要),但我似乎无法弄清楚如何命名或指导 GraphViz 在 TraMinR 包中创建的序列树。现在,我的代码是:
它生成了一个很棒的图形,但是如果我不小心关闭了图形,我无法重新定位它的随机文件名。
我的主要目标是能够唯一地命名和保存这些图表,并为整个项目拉入 R Markdown。至此,我唯一不能加入的是 seqtree 图形。
r - TraMineR 中的最大状态数?
我有一个数据集,其中包含用户在网站上的文本字段中编写的文本。由于网站的性质,大多数用户在该领域多次写作。现在我想看看是否有模式。例如,在某个时间写“A”的用户将在以后写“B”。
经过一番谷歌搜索后,我发现TraMineR
这是一个用于这种分析的库。但似乎TraMineR
和/或 R 设置了状态数的最大值。这是真的还是我做错了什么?解决我的问题的最佳方法是什么?
关于我的数据集的更多信息:
- 有超过一百万条文本输入日志
- 大约 90000 个不同的用户
- 大约 80000 个不同的输入(事件/状态?)
要创建我的数据的状态序列对象,我需要使用seqe2stm()
from TraMineRextras
(如此处所述),其中 my 的数量events
超过 80000。运行该函数会给我错误:
矩阵中的错误(TRUE,nrow = nbstate,ncol = nevent):
无效的“nrow”值(太大或 NA)
此外:警告消息:
在矩阵中(TRUE,nrow = nbstate,ncol = nevent):
强制引入的 NA到整数范围
r - seqdist中的内存瓶颈?
seqdist() 中是否可能存在内存瓶颈?
我是一名研究人员,在具有 64 GB RAM 的 Windows x64 计算机上处理寄存器数据。我们的数据由 60,000 人组成,目前我正在处理一个包含大约 220 万行 SPELL 格式的数据。我无法在其上运行 seqdist (method="OM", indel=1, sm="TRATE", with.missing=TRUE, full.matrix=FALSE),错误信息与此处相同,其中重要的部分似乎指向内存不足:“不允许负长度向量”。
好的,但是 seqdist() 似乎没有利用我的整个 RAM。现在我在 40,000 人的样本上运行它,它似乎通过了,但是 R 使用的 RAM 不到 2 gbs。如果我对 60,000 人运行 seqdist(),我会收到错误消息。
那里的某个地方可能有 2^31-1 的大小限制吗?
计算病房集群很容易利用所有可用的 RAM。我已经让它使用了多达 40 GB 的 RAM,这至少证明了 R 能够利用大量的 RAM。
编辑:案例的最大数量正好是 46341。但是警告,如果 size <= 46341 会吃掉内存。例如:
entropy - 解释熵大小的经验法则
我有一个关于熵的解释的问题。对于我的数据集中的每个人,我都有一个 17 个字符(年)长的字符串/序列。我对在这个观察期内发生了多少变化特别感兴趣。
我正在考虑使用 R 的 TraMineR 包来计算序列内熵。我知道这可以归一化,因此最大熵变为 1(显然,最小值为 0)。我的问题是,是否有任何经验法则可以说明什么是高熵,什么是低熵(例如,在相关系数的情况下)。例如,0.4 是高值还是低值?
谢谢。
traminer - 指定某些群组需要计算世代最频繁的子序列
我有一个分类变量“世代”。我想使用 计算每一代最频繁的子序列TraMineR
,但我不明白如何指定我需要某个群组。我已经尝试了我知道的所有可能的解决方案,但到目前为止没有任何效果。这是我无法指定的代码:
r - 如何在 R 中的 TraMineR 库创建的序列对象中引用 id?
在 RI 中使用 TraMineR 库创建一个序列对象。数据的第一列包含我在序列定义中使用的 id:
当我查看序列对象 (data.seq) 的列的名称时,没有列出“id”——仅列出了其中包含序列状态的列的名称。如何引用 data.seq 对象中的 id?
这样做的原因是我想随机重新排序序列对象的行,并且仍然能够从序列对象中提取“id”。