如何在 R 中的数值序列中找到瞬态和渐近线动力学

How to find transient and asymptote dynamics in a numerical series in R

以下内容对我继续研究至关重要。

我正在尝试寻找一种方法来计算大型数据集的瞬态和渐近线动力学的持续时间。这是我的数据外观的简短示例。

x <- c(6,3,8,9,4,3,2,9,8,6,7,1, 2, 3, 2, 1, 1, 2, 1, 1, 2, 3, 2, 1, 1, 2, 1,1, 2, 3, 2, 1, 1, 2, 1,1, 2, 3, 2, 1, 1, 2, 1, 1, 2, 3, 2, 1, 1, 2, 1, 1, 2, 3, 2, 1, 1, 2, 1,1, 2, 3, 2, 1, 1, 2, 1,1, 2, 3, 2, 1, 1, 2, 1,1, 2, 3, 2, 1, 1, 2, 1, 1, 2, 3, 2, 1, 1, 2, 1,1, 2, 3, 2, 1, 1, 2, 1,1, 2, 3, 2, 1, 1, 2, 1, 1, 2, 3, 2, 1, 1, 2, 1, 1, 2, 3, 2, 1, 1, 2, 1,1, 2, 3, 2, 1, 1, 2, 1,1, 2, 3, 2, 1, 1, 2, 1,1)
plot(x, type="l")

我看过一阶和二阶导数,但没有按我的意愿工作。

感谢任何帮助

如果我没理解错的话,你可以探索一个change point analysis

存在一个名为 changepoint 的 R 包,它实现了各种变点搜索方法,详情可在 the original publication.

中找到

这是一个使用您的示例数据的示例。

library(changepoint);
ret <- cpt.mean(x, class = FALSE);
ret;
#cpt conf.value
#11.0000000  0.9406066

在输出中,cpt 是变化点最可能的位置。如果你放大情节,你会发现这似乎是明智的。

plot(x, type="l", xlim = c(0, 20));
abline(v = ret[1], col = "red")

显然您需要仔细查看一些 "tuning" 参数。 ?cpt.mean 这篇论文将是一个很好的起点。

然后您可以将事件 x < cpt 分类为瞬态事件,将 x > cpt 分类为渐近事件;但这当然取决于我不知道的 context/source 数据。