Python 時系列分析 1,000本ノック
– ノック84: 移動平均 –

Python 時系列分析 1,000本ノック– ノック84: 移動平均 –
次の Python コードが行っている処理の目的は何ですか?

Python コード:

import numpy as np, pandas as pd

np.random.seed(42)
data = pd.Series(50 + np.random.randn(200)*2)
data.iloc[50] += 15
data.iloc[120] -= 18
data.iloc[170] += 20

ma = data.rolling(20).mean()
ms = data.rolling(20).std()
syori = data[np.abs(data - ma) > 3 * ms].dropna()

for t, v in syori.items():
    print(f"t={t:3d} : 値={v:.2f}, "
          f"移動平均={ma[t]:.2f}, "
          f"乖離={abs(v-ma[t])/ms[t]:.1f}σ")

回答の選択肢:
(A) 移動平均を用いてトレンドを抽出し、将来値を予測している
(B) 移動平均と移動標準偏差からバンドを構成し、バンドを逸脱した点を異常として検知している
(C) 移動平均で時系列データを平滑化し、ノイズを除去している
(D) 移動平均を用いて季節性を分離し、季節調整済みデータを作成している