statsmodels.tsa.seasonal.seasonal_decompose使用移動平均線進行季節性分解


所謂分解就是將時序數據分離成不同的成分,分解有:長期趨勢Trend、季節性seasonality和隨機殘差residuals

statsmodels使用的X-11分解過程,它主要將時序數據分離成長期趨勢、季節趨勢和隨機成分。 與其它統計軟件一樣,statsmodels也支持兩類分解模型,加法模型和乘法模型,model的參數設置為"additive"(加法模型)和"multiplicative"(乘法模型)。

首先看看函數

statsmodels.tsa.seasonal.seasonal_decompose(x,model = 'additive',filt = None,period = None,two_side = True,extrapolate_trend = 0)

參數:

x:array_like,被分解的數據

model:{“additive”, “multiplicative”}, optional,"additive"(加法模型)和"multiplicative"(乘法模型)

fil:tarray_like, optional,用於濾除季節性成分的濾除系數。濾波中使用的具體移動平均法由two_side確定

period:int, optional,系列的時期。如果x不是pandas對象或x的索引沒有頻率,則必須使用。如果x是具有時間序列索引的pandas對象,則覆蓋x的默認周期性。

two_sided:bool, optional,濾波中使用的移動平均法。如果為True(默認),則使用filt計算居中的移動平均線。如果為False,則濾波器系數僅用於過去的值

extrapolate_trend:int or ‘freq’, optional,如果設置為> 0,則考慮到許多(+1)最接近的點,由卷積產生的趨勢將在兩端外推線性最小二乘法(如果two_side為False,則為單一個最小二乘)。如果設置為“頻率”,請使用頻率最近點。設置此參數將導致趨勢或殘油成分中沒有NaN值。

 

 

具體例子,數據我暫時找不出來,到時候再補上,再替換,現在主要任務是知道怎么用法,以及返回是什么

# 下面深入分解:長期趨勢Trend、季節性seasonality和隨機殘差residuals。

# 強行補充小知識:平穩性處理之“分解”
# 所謂分解就是將時序數據分離成不同的成分。statsmodels使用的X-11分解過程,它主要將時序數據分離成長期趨勢、季節趨勢和隨機成分。
# 與其它統計軟件一樣,statsmodels也支持兩類分解模型,加法模型和乘法模型,model的參數設置為"additive"(加法模型)和"multiplicative"(乘法模型)。

import statsmodels.api as sm  # 導入統計建模模塊
# multiplicative
res = sm.tsa.seasonal_decompose(ts.values,freq=12,model="multiplicative") 
# 這里用到的.tsa.seasonal_decompose()函數,經嘗試:參數ts.values時,橫坐標是Time;參數ts時,橫坐標是date_block_num。其他不變。
# freg這個參數容后研究,這里暫且猜測是周期12個月。

# plt.figure(figsize=(16,12))
fig = res.plot()
# fig.show()  # 此句,可加可不加。

# 得到不同的分解成分,接下來可以使用時間序列模型對各個成分進行擬合。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM