【问题标题】:Any existing methods to find a drop in a noisy time series?在嘈杂的时间序列中找到下降的任何现有方法?
【发布时间】:2017-11-16 14:02:27
【问题描述】:

我有一个时间序列(值数组),我想找到值开始长期下降的起点(至少 X 个连续值下降)。例如:

有一个值列表

[1,2,3,4,3,4,5,4,3,4,5,4,3,2,1,2,3,2,3,4,3,4,5,6,7,8]

我想找到至少 5 个连续值的下降。所以在这种情况下,我会找到段 5,4,3,2,1

但是,在真实场景中,数据中存在噪声,因此实际下降包含很多小起伏。

我可以为此编写一个算法。但我想知道是否有用于此类分析的现有库或标准信号处理方法。

【问题讨论】:

    标签: python time-series signal-processing


    【解决方案1】:

    您可以使用 pandas(我知道您有)轻松地做到这一点。将您的列表转换为系列,然后执行groupby + count 以查找连续下降的值:

    v = pd.Series([...])
    v[v.groupby(v.diff().gt(0).cumsum()).transform('size').ge(5)]
    
    10    5
    11    4
    12    3
    13    2
    14    1
    dtype: int64
    

    【讨论】:

    • 您能解释一下这是如何工作的吗?我只有熊猫的基本经验。这是否解释了在下降过程中可能会出现小幅增长的事实?
    • @swbandit 中间加小加?基本上,我所做的就是找到连续增加的值组,并对每组值进行分组,并消除那些小于 5 的组。
    • 抱歉,表示下降中途有小幅上涨。这意味着您可以拥有 5,4,3,2,3,2,1
    • @swbandit 我不赞成提问者没有具体说明他们的完整问题,然后期望回答者介意阅读它们并写下完整的答案,即使 OP 中没有提到它。我再告诉你一次,要么提出一个新问题,要么自己解决你的问题。您作为后续问题随便问的“实际问题”不能作为解决问题中提到的“当前问题”的代码的微不足道的扩展来解决。
    • @swbandit StackOverflow 也是关于好问题的,而你的问题不是。如果我错过的“小细节”如此重要,也许它不应该那么少?是的,我回答问题是为了积分,那么你的点是什么?我回答你问题的动机在这里无关紧要。
    猜你喜欢
    • 2019-08-31
    • 1970-01-01
    • 2023-03-07
    • 2014-05-30
    • 2015-12-01
    • 1970-01-01
    • 2015-08-31
    • 1970-01-01
    • 2023-01-20
    相关资源
    最近更新 更多