對於時間序列來說,傳統的時間序列**模型對於不平穩的資料是不能進行處理的,需要對時間序列進行分解,使得時間序列區域平穩,才可以進行時間序列的模擬**。本次採用python的seasonal_decompose分解來進行時間序列的分解。
python3.6、statsmodels庫、pandas庫、matplotlib庫。
匯入包
from statsmodels.tsa.seasonal import seasonal_decompose
import pandas as pd
from matplotlib import pyplot
比較簡單,不再詳解。
資料讀取與預處理
# 如果資料中表示時間的字段型別不為時間,則可用以下**
# dateparse = lambda dates: pd.datetime.strptime(dates, '%y-%m')
# data1 = pd.read_excel("123.xlsx",sheet_name="sheet4",parse_dates=['time'], index_col='time',date_parser=dateparse)
data1 = pd.read_excel(
"123.xlsx"
,sheet_name=
"sheet4"
,parse_dates=
['time'
], index_col=
'time'
)data1 = data1[
"test"
]
如果資料中,表示時間的序列不是datetime型別的,可以執行前兩段**,解決問題。如果時間的序列是datetime型別的,就用最下面的**就可以。parse_dates可以找到時間序列,index_col可以讓時間序列成為index。我的示例資料如下:
利用data1 = data1[「test」],可以拿出來【time,test】(其中time為index)的2d序列。這就是statsmodels庫支援的序列。
資料計算與顯示
decomposition = seasonal_decompose(data1[
"test"])
#變數為pandas時間序列資料
decomposition.plot(
)pyplot.show(
)
decomposition即為計算出的時間序列分解的集合。利用plot可以進行視覺化。
4. 資料儲存
trend = decomposition.trend
seasonal = decomposition.seasonal
residual = decomposition.resid
a = pd.dataframe(
)a.to_excel(
"path"
)
最終利用方法把資料輸出到path中。 時間序列分解 STL分解法
stl seasonal and trend decomposition using loess 是以魯棒區域性加權回歸作為平滑方法的時間序列分解方法。其中loess locally weighted scatterplot smoothing,lowess or loess 為區域性多項式回歸擬合...
R 時間序列 分解季節性時間序列
包含 長期趨勢trend,季節趨勢seasonal,週期迴圈circle,隨機項random 這裡分解為相加模型x t s c r 在對時間序列進行分解之前,應該對序列進行檢驗 下次寫 將時間序列進行上述分解 以紐約市月出生數量 1946.1 1959.12 的資料集為例 出生數量 從圖上可以看出,...
分解時間序列(季節性資料)
乙個季節性時間序列中會包含三部分,趨勢部分 季節性部分和無規則部分。分解時間序列就是要把時間序列分解成這三部分,然後進行估計。對於可以使用相加模型進行描述的時間序列中的趨勢部分和季節性部分,我們可以使用 r中的 decompose 函 數來估計。這個函式可以估計出時間序列中趨勢的 季節性的和不規則的...