一、原理
分解函数成三部分:趋势、周期、和剩余部分(一般指噪声,均值为0)
分解就是将时序数据分离成不同的成分,分解有:长期趋势Trend、季节性seasonality和随机残差residuals
返回包含三个部分 trend(趋势部分) , seasonal(季节性部分) 和residual (残留部分)
传入:一个序列,可以是时间序列
输出:趋势、周期、和剩余部分 三部分
函数详解链接:详解
二、代码示例
import statsmodels.api as sm
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
x=np.arange(0,100,1)
data=1+10*np.sin(2*x)+10*x+5*np.sin(x)
rd = sm.tsa.seasonal_decompose(data,freq=2)#该时间序列周期为2
rd.plot()
plt.show()
#得到趋势、周期性、随机变量的数据输出
#print(rd.trend)
#print(rd.seasonal)
#print(rd.resid)
print(rd.trend+rd.seasonal)
plt.plot(data)
plt.plot(rd.trend+rd.seasonal)
plt.show()
![](https://i-blog.csdnimg.cn/blog_migrate/959352d52c59f5f9e495ecdcf4935020.png)
![](https://i-blog.csdnimg.cn/blog_migrate/dfbdfae7063a7bfd7144c27b2f6b5faf.png)
freq=2 ,则表示趋势+季节性 里面有2个空值,首末各一个
作者:电气-余登武