赞
踩
背景
在最近的项目中,需要自动检测某段时间内的某个指标是上升了还是下降了,因此需要研究下常用的时序数据趋势检测方法。
方法一 斜率法
原理
斜率法的原理就是使用最小二乘等方法对时序数据进行拟合,然后根据拟合成的直线的斜率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对。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。