gpt4 book ai didi

r - 使用 R 从具有可见中断的大系列中提取迷你系列(绘制时)

转载 作者:行者123 更新时间:2023-12-02 07:38:35 24 4
gpt4 key购买 nike

这是我的数据:

data1 <- c(726, 718, 699, 737, 743, 734, 726, 722, 715, 714, 752, 750, 
749, 746, 743, 734, 725, 717, 717, 708, 756, 753, 752, 746, 744,
740, 737, 732, 728, 728, 720, 720, 714, 703, 702, 697, 758, 753,
753, 746, 743, 734, 720, 706, 697, 761, 744, 749, 741, 738, 738,
732, 725, 720, 712, 782, 778, 776, 773, 772, 770, 770, 769, 769,
766, 763, 763, 756, 755, 753, 750, 749, 746, 737, 723, 711, 702,
685, 782, 779, 778, 778, 776, 776, 775, 772, 770, 770, 766, 763,
761, 756, 752, 738, 735, 729, 715)

这给出了使用 plot(data1) 的图:

enter image description here

如何使用 R 分离八个独立的趋势?我可以使用 identify(data1) 并手动标记它们(类次)并使用索引来隔离它们,但在我的情况下这是不可能的,因为我正在处理许多此类图。我想以编程方式提取单独的行。如果有统计技术(时间序列等)可以识别趋势和标签的变化并返回 8 系列,请告诉我。

编辑

我应该明确指出,需要确定整个数据集中的系列数。样本数据中的系列数恰好是八个。但我不会在每种情况下都知道这一点,除非我绘制数据并手动识别中断。

最佳答案

我认为基里尔就在这里 (+1)。这是一个重要的研究/知识领域,有时称为变化点或断点分析。相关的 R 包包括 strucchange changepoint,如 Kiril 所提到的,以及 bcp

strucchangebreakpoints() 使用最小二乘回归来估计当被告知有多少变化时变化的位置(这在这里没有帮助。)

changepoint 有多种算法,正如 Kiril 所说,包括 Scott 和 Knott 的二进制分段、Auger 和 Lawrence 的分段邻域以及 Killick 等人的 Pruned Exact Linear Time (PELT) 算法。这是一个很棒的包,但我非常有限的经验是这些功能需要大量调整(这是值得做的)。

对于重要的任务,我们希望利用我们对数据的了解来制作更详细的模型,并最终将多种方法组合成一个集成分类器。

但对于简单的点击和运行,您可以使用 bcp,它使用基于 MCMC 的 Barry 和 Hartigan 贝叶斯过程的近似值:

library(bcp)
changefit <- bcp(data1)
plot(changefit)

enter image description here

分离组的一种方法是选择后验概率阈值并根据它split()数据:

data2 <- data.frame(data=data1, prob = changefit$posterior.prob)
threshold <- 0.90
split(data2,c(0, cumsum( ifelse (data2$prob > threshold, 1, 0))))
#split will warn about unequal lengths

关于r - 使用 R 从具有可见中断的大系列中提取迷你系列(绘制时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13733228/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com