python mk趋势检验_时序数据常用趋势检测方法

本文介绍了三种时序数据趋势检测方法:斜率法、Cox-Stuart检验和Mann-Kendall检验。通过Python代码实现,详细解释了每种方法的原理、优缺点,帮助理解如何自动检测指标的趋势变化。
摘要由CSDN通过智能技术生成

背景

在最近的项目中,需要自动检测某段时间内的某个指标是上升了还是下降了,因此需要研究下常用的时序数据趋势检测方法。

方法一 斜率法

原理

斜率法的原理就是使用最小二乘等方法对时序数据进行拟合,然后根据拟合成的直线的斜率k判断序列的数据走势,当k>0时,则代表趋势上升;当k<0时,则代表趋势下降。

代码

import numpy as np

def trendline(data):

order=1

index=[i for i in range(1,len(data)+1)]

coeffs = np.polyfit(index, list(data), order)

slope = coeffs[-2]

return float(slope)

优缺点

优点是方法简单;缺点是要求趋势是线性的,当数去波动较大时无法准确拟合。

方法二 Cox-Stuart检验

原理

直接考虑数据的变化趋势,若数据有上升趋势,那么排在后面的数据的值要比排在前面的数据的值显著的大,反之,若数据有下降趋势,那么排在后面的数据的值要比排在前面的数据的值显著的小,利用前后两个时期不同数据的差值正负来判断数据总的变化趋势。

算法步骤取xi和xi+c组成一对(xi,xi+c)。这里如果n为偶数,则c=n/2,如果n是奇数,则c=(n+1)/2。当n为偶数时,共有n’=c对,而n是奇数时,共有 n’=c-1对。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值