Python 時系列分析 1,000本ノック
– ノック83: STL分解 –

Python 時系列分析 1,000本ノック– ノック83: STL分解 –
次の Python コードで使用している STL 分解にはどのような利点がありますか?

Python コード:

import numpy as np, pandas as pd
from statsmodels.tsa.seasonal import STL

np.random.seed(42)
t = np.arange(144.)
data = pd.Series(
    50 + 0.3*t + 10*np.sin(2*np.pi*t/12)
    + np.random.randn(144)*2,
    index=pd.date_range('2010',periods=144,freq='MS'))
data.iloc[30] += 40
data.iloc[80] -= 35

r = STL(data, period=12, robust=True).fit()
print(f"【残差】平均:{r.resid.mean():.2f}"
      f", 標準偏差:{r.resid.std():.2f}")
print(f"【外れ値付近の残差】"
      f"\n  t=30の残差:{r.resid.iloc[30]:+.2f}"
      f"\n  t=80の残差:{r.resid.iloc[80]:+.2f}")

回答の選択肢:
(A) 分解が高速で、大規模データに適している
(B) 乗法モデルのみをサポートし、季節成分の精度が高い
(C) LOESS平滑化により柔軟な分解が可能で、外れ値に頑健である
(D) 自動的に最適な周期を検出できる