赞
踩
研究长时间的气候变化会发现很多序列是带有趋势的,有部分观点认为这是认为因素造成全球变暖导致的,研究本身的大气变化需要去掉序列的趋势,简单来说就是序列的每一个点都减去序列趋势的回归斜率乘以一个时间步长,当然前提是这个序列的线性趋势是显著的。还有一个要注意的是去趋势序列(若干年长度的序列)并不等于该序列的年际变化,获得年际变化分量需要去用滤波或者其他方法单独提取,我目前看到的大部分文献中的去趋势都是为了剔除人为因素造成的全球变暖。
scipy直接提供了一个去趋势函数,十分的方便。
- scipy.signal.detrend(data, axis=-1, type='linear', bp=0, overwrite_data=False)
- #data:输入数据,可以为任意维度
- #axis,指定对哪一维度去趋势
- #type,可设置为'linear'即为去线性趋势,设置为'constant',则为去平均值,即为求距平
- #bp,断点,若设置,则为断点两侧分别去趋势,即将序列分成两个子序列各自计算
- #overwrite_data,是否覆盖原数据
使用方法举例:
- from scipy import signal
- time_series_dtrend = signal.detrend(time_series, axis=0, type='linear',
- bp=0, overwrite_data=False)
- plt.plot(x,time_series_dtrend,c = "b")
- plt.plot(x,time_series,c = "r")
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。