问题标签 [sequence-analysis]
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.
markov-chains - 比较概率后缀树的对数损失值?
在PST
包中,可以使用 估计单个序列的预测质量log-loss
,例如:
如何在log-loss
统计上比较这些值?有没有办法表明与0.9183
有显着不同0.9600
?
r - 如何测试两个提升值是否彼此显着不同?
考虑这段代码:
然后,我可以通过以下方式计算两个特定“关联规则”的提升值的重要性阈值:
但是,如果我想比较两个提升值,看看它们是否存在显着差异(类似于我如何比较两个回归系数以查看它们是否显着不同),该怎么办?其他)?我怎样才能做到这一点?
r - 如何使用 TraMineR 将噪声引入序列数据?
为了模拟的目的,我想随机更改序列数据集中的状态。目标是查看集群质量的不同度量如何在数据中不同程度的结构下表现。
如果我要介绍缺失,TraMineRextras 中有一个方便的seqgen.missing()
功能,但它只会添加缺失状态。我将如何随机选择一部分p
序列并随机插入一个随机选择的字母表元素,其中p_g
,p_l
和p_r
概率将它们插入中间、左侧和右侧?
r - 如何从一个巨大的矩阵中获得尽可能少的行 NA 的最大可能列序列?
我想从数据框中选择列,以便生成的连续列序列尽可能长,而具有 NA 的行数尽可能少,因为之后必须删除它们。
(我想这样做的原因是,我想运行TraMineR::seqsubm()
以自动获取转换成本矩阵(通过转换概率),然后cluster::agnes()
在其上运行。TraMineR::seqsubm()
不喜欢NA
状态并且矩阵中cluster::agnes()
的NA
状态不一定会使很有道理。)
为此,我已经编写了一个工作函数,它按原则计算所有可能的幂子集并检查它们是否为NA
s。它适用于这个d
代表 10x5 矩阵的玩具数据:
现在的问题是我实际上想将该算法应用于代表34235 x 17 矩阵的调查数据!
我的代码已经在 Code Review 上进行了审查,但仍然无法应用于真实数据。
我知道使用这种方法会产生巨大的计算量。(对于非超级计算机来说可能太大了?!)
有谁知道更合适的方法?
我向您展示了来自 Code Review的 @minem 已经增强的功能:
产量:
在这种情况下,我会选择X1, X2, X3, X4
,X1, X2, X3
或者X2, X3, X4
因为它们是连续的并产生适当数量的观察。
预期输出:
因此,对于玩具数据d
,预期输出将类似于:
最后,该函数应该在巨大的矩阵上正常运行,d.huge
这会导致目前的错误:
玩具资料d
:
玩具资料d.huge
:
附录(见评论最新答案):
r - 当序列包含间隙时如何计算序列之间的差异?
我想TraMineR::seqdist()
从包含缺失的数据(即包含间隙的序列)中对具有最佳匹配的序列进行聚类。
当我跑seqdist()
我正在接收
但是当我设置选项时with.missing=TRUE
,我收到了
那么,当数据包含缺失(即序列包含间隙)时,我们如何使用正确方式seqdist()
的输出来计算序列之间的差异?seqsubm()
注意:我不太确定这是否有意义。到目前为止,我只是排除了缺失的观察结果,但由于我的数据,我因此失去了很多观察结果。因此,有必要知道是否有这样的选择。
r - 在 TraMineR::seqdist 中设置“tpow”和“expcost”参数
实际上,我正在研究住院患者住院期间的路径。这些路径表示为状态序列(每个时间单位的当前医疗单元),我试图通过聚类算法找到典型的路径。
seqdist
我通过使用R 包中的函数TraMineR
和方法来创建距离矩阵"OMspell"
。我已经阅读了 R 文档和相关文章,但我找不到如何设置参数tpow
和expcost
.
由于时间单位是一小时,我不希望任何微小的持续时间差异对聚类结果产生重大影响(例如,与医疗单位转移相反)。但我也不希望持续时间没有任何影响......
另外,是否有适当的方法来选择它们的值?还是我只是继续摸索一个好的配置?(我使用 Dunn、Davies-Bouldin 和 Silhouette 标准来比较层次聚类的结果,除了对结果聚类的医学意见)
r - 序列分析聚类CHI2 EUCLID错误
我对序列分析非常陌生,并试图在聚合序列矩阵中识别集群,重点关注状态持续时间。但是,当使用 method='CHI2'/'EUCLID' 结合 step=1 (不是其他)时,我收到错误:
if (SCres > currentSCres) { 中的错误:需要 TRUE/FALSE 的缺失值
任何想法为什么(距离矩阵中有一些 NaN,它们可能是由于序列长度不同造成的)?
序列对象和距离矩阵是什么样的代码:
代码:
r - 使用 TraMineR 的 seqpcplot() 函数时删除丢失的数据状态“%”
我正在尝试对纵向调查数据进行事件序列分析。我想创建一个看起来像这样的图(https://www.researchgate.net/publication/279560802_Exploratory_mining_of_life_event_histories的第 44 页),我相信它是使用 TraMineR 中的 seqpcplot() 函数生成的:
这将使我能够确定参与者在调查期间过渡的常见职业状态(例如“全日制教育>>全职工作”或“全职工作>>兼职工作>>家庭责任”)。
不幸的是,不同的参与者在调查中停留的时间不同,导致序列长度不同。这似乎导致 TraMineR 在除最长序列之外的所有序列的末尾创建缺失数据状态“%”(我认为要确保它们的长度都相同?)。然后将这个附加状态“%”插入到 seqpcplot() 图中。
这是一个随机生成的问题示例:
在此示例中,参与者在调查的每一波中被分配了 6 个潜在状态中的 1 个。序列的总长度因参与者而异,具体取决于他们被采访的次数(例如,参与者 4 被采访了 7 次,而参与者 6 被采访了 17 次)。
但是,一旦将其转换为事件序列对象,几乎每个序列的末尾都会添加一个最终状态“%”:
这导致以下“seqpcplot”:
在这里,几乎每个序列都以状态“%”结束。这没有用,因为它告诉我的只是这些事件序列在序列的末尾附加了“缺失数据”,以解释它们比数据集中最长的序列更短的事实。
问题1:有什么方法可以格式化数据或图表来删除这个丢失的数据状态'%'?
问题2:如果不是,为什么不呢?在我看来,完全可以在这样的图表上绘制不同长度的事件序列,而无需求助于这个“%”类别。
提前感谢您的时间!
traminer - TraMineR 是否适合具有不同序列长度的数据?
我的数据有学习期间每个学生的页面访问行为的顺序。例如(下)学生 1 阅读说明,访问了三个页面(“访问-访问-访问”),并重新访问了其中一页(“重访”)。学生 2 阅读说明并访问了两页,没有重新访问。
学生1:说明-访问-访问-访问-重访
学生2:指导-参观-参观
学生 3:说明-访问-访问-访问-访问-访问-访问-访问-访问-访问-访问-访问
我的问题是 TraMineR 包适用于这种类型的数据,其中不同的个体具有不同的序列长度(学生 1 有 5,学生 2 有 3,等等)。TraMineR 小插图 ( https://cran.r-project.org/web/packages/TraMineR/vignettes/TraMineR-state-sequence.pdf ) 中讨论的示例数据“mvad”具有在特定时间段内捕获的状态信息 ( Jul.93 到 Jun.99),这意味着所有个体的序列长度数相同。鉴于这种差异,我不确定是否可以使用 TraMineR 来分析我的日期。
我在我的数据上尝试了几个 TraMineR 函数(seqdef、seqfplot 等)。到目前为止,这些结果对我来说是有意义的,但我想在进一步做更多事情(聚类分析等)之前先确定一下。如果有人有使用 TraMineR 处理此类数据的经验,我将不胜感激。如果 TraMineR 不适合这个,有什么替代方法的建议吗?我的目标是识别和可视化数据中的主要行为模式,可能使用聚类分析。提前致谢!
machine-learning - 如何对序列进行聚类?
您将如何对顺序信息进行聚类?我有大约 500 个序列,其中一些具有相同的特征。对于分类顺序(时间)数据,是否有类似 K-means 的东西,或者您的方法会是什么样子?
这些序列是代表类的 one-hot-encoded 向量序列。例如,考虑四个班的护士排班问题:早班、白班、夜班、家。向量如下所示:[0, 1, 0, 0], [0, 1, 0, 0], [0, 0, 0, 1],这位护士在白班工作 2 天,在家第三天。但是这个“时间表”可能取决于医院的参数,所以我想对类似的数据进行聚类。我有大约 500 个“时间表”。有任何想法吗?