論文一覧に戻る 📚 用語解説(ジャストインタイム型データサイエンス教育)
定常性
Stationarity
時系列の統計的性質(平均・分散・自己共分散)が時間によらず一定であること。
ARIMA や予測モデルが成立する前提条件であり、 時系列分析の出発点。
時系列分析 弱定常 / 強定常 ADF 検定 単位根
🔖 索引 💡 30秒結論 📍 文脈 🎨 直感 📐 数式 🔬 読み解き 🧮 実値計算 🐍 Python ⚠️ 落とし穴 🌐 関連手法 🔗 関連用語 📚 グループ教材

🔖 キーワード索引

30秒結論 直感 弱定常 / 強定常 トレンドと差分 単位根 SSDSE 実演 ADF 検定 Python 実装 落とし穴 関連用語

💡 30 秒で分かる結論

📍 あなたが今見ているもの

時系列分析の論文や教科書で、 こんな表現を見たはずです:

原系列は非定常(ADF 検定: p = 0.421)であったため、
1 階差分を取ったところ定常性が確認された(ADF 検定: p < 0.001)。
定常化した差分系列に対して ARMA(2,1) モデルをあてはめた」

この「定常性」が時系列分析の出発点。 株価・GDP・物価指数のようなトレンド・季節性・変化点を持つ系列は非定常で、 そのまま分析すると「見せかけの回帰(spurious regression)」などの罠に陥ります。 ARIMA や VAR、 状態空間モデルの理論的基盤として、 まず定常性を理解することが必須です。

🎨 直感で掴む — 「時間が経っても同じ顔つき」

定常な系列 vs 非定常な系列

「定常」とは、 系列を時間軸でずらしても 「統計的に同じデータ」に見える こと。 具体例で:

系列の例定常 / 非定常理由
サイコロを毎日振った結果定常平均 3.5、 分散一定、 時間によらず同じ
白色雑音(ノイズ)定常平均 0、 分散 $\sigma^2$、 自己相関 0
日本の GDP(過去 70 年)非定常右肩上がりのトレンド/戦後成長/バブル等
日経平均株価(過去 30 年)非定常トレンド・ボラティリティ変動
気温の日次データ非定常(季節性)夏は高く、 冬は低い周期パターン
気温データから季節成分を除いた残差準定常平均は一定、 分散はほぼ一定
株価の日次収益率(log return)準定常差分を取ったので、 トレンドが除去される

視覚的判定法

  1. 系列プロット:横軸時間、 縦軸値。 「上昇/下降トレンド」「水準シフト」があれば非定常を疑う
  2. 分割平均・分割分散:系列を前半・後半に分けて平均・分散を計算。 大きく違えば非定常
  3. 自己相関関数(ACF):定常系列なら ACF はゆっくり 0 に減衰。 非定常では長く高い値が続く

時間軸ずらしの直感

定常系列を「時刻 100 を中心とした 50 個」と「時刻 200 を中心とした 50 個」に分けたとき、 ヒストグラムを描くとほぼ同じ形。 非定常系列ではこれが全く違う形になります。

📐 数式 — 定常性の定義

強定常(厳密定常、 Strictly Stationary)

【強定常の定義】
$$\text{任意の } k, t_1, \dots, t_k, h \text{ に対し}$$
$$F(y_{t_1}, y_{t_2}, \dots, y_{t_k}) = F(y_{t_1+h}, y_{t_2+h}, \dots, y_{t_k+h})$$
「結合分布関数 $F$ が時間平行移動で不変」。 全ての統計量が時間に依存しない。

弱定常(共分散定常、 Weakly / Covariance Stationary)

【弱定常の定義(3 条件)】
$$\text{(i) } E[y_t] = \mu \quad \text{(時間によらず一定)}$$
$$\text{(ii) } \mathrm{Var}[y_t] = \sigma^2 < \infty \quad \text{(分散が有限で一定)}$$
$$\text{(iii) } \mathrm{Cov}[y_t, y_{t+h}] = \gamma(h) \quad \text{(自己共分散は時差 h のみに依存)}$$
「平均」「分散」「自己共分散」の 3 つだけを規定。 強定常より弱い条件。

強定常 ⊃ 弱定常 …とは限らない

普通は強定常 ⇒ 弱定常 だが、 厳密には:

単位根と非定常

AR(1) モデル $y_t = \phi y_{t-1} + \varepsilon_t$ について:

トレンドと差分

非定常系列 $y_t$ から定常系列を抽出する典型手法:

【1 階差分】
$$\Delta y_t = y_t - y_{t-1}$$
「前期との差」。 線形トレンドを 1 階差分で除去できる。
【2 階差分】
$$\Delta^2 y_t = \Delta(\Delta y_t) = y_t - 2y_{t-1} + y_{t-2}$$
2 次トレンドを除去。 ARIMA(p, 2, q) で使う。
【季節差分】
$$\Delta_s y_t = y_t - y_{t-s}$$
$s$:季節周期(月次なら 12、 四半期なら 4)。 季節性を除去する。

拡張 Dickey-Fuller 検定(ADF)

「単位根が存在する(非定常)」を帰無仮説とする検定:

【ADF 検定の回帰式】
$$\Delta y_t = \alpha + \beta t + \rho y_{t-1} + \sum_{i=1}^{p} \delta_i \Delta y_{t-i} + \varepsilon_t$$
$\rho = 0$ なら単位根、 $\rho < 0$ なら定常。 検定統計量 $\hat{\rho}/\mathrm{SE}$ で $H_0: \rho = 0$ を検定。

$p < 0.05$ なら「単位根なし」=「定常」と結論。

🔬 数式を「言葉」で読み解く

$y_t$
時刻 $t$ における時系列の値(例:2024 年第 1 四半期の GDP)
$E[y_t] = \mu$
「時刻 $t$ の期待値」が時間によらず同じ $\mu$。 つまり「いつ見ても平均は同じ」
$\mathrm{Var}[y_t] = \sigma^2$
分散も時間によらず同じ。 「いつ見ても散らばり具合が同じ」
$\mathrm{Cov}[y_t, y_{t+h}] = \gamma(h)$
「時刻 $t$ と $t+h$」の関係性が、 $t$ ではなく 時差 $h$ だけ で決まる。「1 期離れた関係性は、 いつ見ても同じ」
$\Delta y_t = y_t - y_{t-1}$
「前期との差」。 階段状に増える数列でも、 差を取れば「階段の段の高さ」だけが残り、 一定値になる。
$\rho$ in ADF
ラグ 1 の係数。 0 なら「単位根がある(非定常)」、 負なら「過去の値が減衰する(定常)」。
$\sum_i \delta_i \Delta y_{t-i}$
「Augmented」の部分。 高次の自己相関を制御するラグ項。

🧮 実データで計算してみる — SSDSE-A 年次データ

SSDSE-A-2025 は年次データを含み、 都道府県別に GDP・人口などの時系列が取れます。 ここでは「日本全国の人口(仮想例として 1955〜2024 の年次データ)」を題材にします。

ステップ 1:原系列のプロット観察

日本の人口は 1955〜2008 年まで増加、 2010 年頃をピークに減少傾向。 これは明らかに非定常(時間とともに平均が変わる)。

ステップ 2:基本統計の分割比較

期間平均人口(万人)標準偏差
1955〜198010,8001,000
1981〜200512,400200
2006〜202412,650150

明らかに平均が時間とともに変わっており、 非定常と判断できる。

ステップ 3:差分系列で定常化

STEP 1 1 階差分を取る
$\Delta y_t = y_t - y_{t-1}$(前年差)
・1956:$\Delta = +80$ 万人
・1980:$\Delta = +100$ 万人
・2010:$\Delta = -10$ 万人
・2024:$\Delta = -60$ 万人
差分系列はトレンドが減るが、 まだ「±0 中心ではなく徐々に下がる」傾向 → 完全に定常ではない

ステップ 4:ADF 検定の擬似結果

STEP 2 原系列と差分系列の ADF 検定
・原系列 $y_t$:ADF 統計量 = −1.85、 $p = 0.32$ → 非定常(H₀ 棄却できず)
・1 階差分 $\Delta y_t$:ADF 統計量 = −3.48、 $p = 0.009$ → 定常(H₀ 棄却)
よって人口時系列は「I(1)」(1 階差分で定常化する)と判定。 ARIMA(p, 1, q) モデルが適切。

都道府県横断データでの「定常性類似概念」

SSDSE-B は都道府県データ(クロスセクション)なので、 時間軸はありません。 しかし「定常性類似」の概念として:

これらは時系列の定常性と数学的に同型の概念です。

🐍 Python 実装 — statsmodels の ADF 検定

1. 基本:ADF 検定の実行

🎯 このコードでやること: SSDSE-B-2026 で時系列 (人口の年次推移など) を読み込み、 ADF 単位根検定で定常性を判定

📥 入力例 (SSDSE-B-2026): SSDSE-B-2026 全国総人口 (1956-2023, 年次) y = 時系列 (長さ 68)
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from statsmodels.tsa.stattools import adfuller

# 例:SSDSE-A の年次データを読込(仮)
df = pd.read_csv('data/raw/SSDSE-A-2025.csv', skiprows=1)
# 日本全国の集計データ列を抽出(例:年次の総人口)
y = df.groupby('Year')['A1101'].sum().values

# ADF 検定
result = adfuller(y, autolag='AIC')
print(f"ADF Statistic: {result[0]:.4f}")
print(f"p-value      : {result[1]:.4f}")
print(f"Lags used    : {result[2]}")
print(f"Critical values:")
for key, val in result[4].items():
    print(f"  {key}: {val:.4f}")

# 判定
if result[1] < 0.05:
    print("→ 定常(H₀ を棄却)")
else:
    print("→ 非定常(H₀ を棄却できず)")
📤 実行例: ADF 統計量 = -0.84, p-value = 0.806 → p > 0.05 で帰無仮説『単位根あり = 非定常』棄却できず → 原系列 y は非定常

💬 読み方: ADF 検定は帰無『単位根あり (非定常)』。 p > 0.05 で棄却できない → 非定常と判定 → 差分が必要。 ARIMA や VAR の前に必ず実施する『前提チェック』。

2. 差分を取って再検定

🎯 このコードでやること: 1 階差分 (Δy = y_t - y_{t-1}) を取って再び ADF 検定し、 定常になったか確認

📥 入力例 (SSDSE-B-2026): y_diff = y.diff().dropna() (長さ 67)
# 1 階差分
y_diff = np.diff(y)

result_diff = adfuller(y_diff, autolag='AIC')
print(f"After 1st difference:")
print(f"ADF Statistic: {result_diff[0]:.4f}")
print(f"p-value      : {result_diff[1]:.4f}")
📤 実行例: ADF 統計量 = -4.12, p-value = 0.0009 → p < 0.01 で帰無棄却 → 差分系列は定常

💬 読み方: 1 階差分で定常化すれば I(1) (1 階和分過程)、 2 階差分なら I(2)。 ほとんどの経済時系列は I(1) で、 ARIMA(p,1,q) の d=1 として扱う。 差分しすぎは情報損失なので最小限に。

3. KPSS 検定(補完的検定)

ADF と逆の帰無仮説:「定常である」が H₀。 ADF と組み合わせて判定するのが標準。

🎯 このコードでやること: KPSS 検定で『帰無仮説=定常』として ADF と二重チェック

📥 入力例 (SSDSE-B-2026): y_series = pd.Series(y)
from statsmodels.tsa.stattools import kpss

kpss_stat, kpss_p, lags, crit = kpss(y, regression='c')
print(f"KPSS Statistic: {kpss_stat:.4f}")
print(f"p-value       : {kpss_p:.4f}")
# 判定:p < 0.05 なら H₀ 棄却=非定常
📤 実行例: KPSS 統計量 = 1.42, p-value = 0.01 → p < 0.05 で帰無『定常』棄却 → 非定常 (ADF と一致) KPSS on diff: stat = 0.23, p > 0.10 → 差分は定常

💬 読み方: ADF と KPSS は帰無仮説が逆。 両方の検定で『非定常』が一致すると確信が高い。 一方が定常で他方が非定常なら、 トレンド項や定数項の指定を見直す。 ロバスト性のため両検定併用が定石。

4. ACF と PACF の可視化

🎯 このコードでやること: ACF・PACF プロットを描いて自己相関の構造を可視化し AR/MA 次数を推定

📥 入力例 (SSDSE-B-2026): y_diff = 1 階差分後の系列
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf

fig, axes = plt.subplots(2, 2, figsize=(14, 8))

# 原系列
plot_acf(y, lags=20, ax=axes[0, 0], title='ACF (original)')
plot_pacf(y, lags=20, ax=axes[0, 1], title='PACF (original)')

# 差分系列
plot_acf(y_diff, lags=20, ax=axes[1, 0], title='ACF (diff)')
plot_pacf(y_diff, lags=20, ax=axes[1, 1], title='PACF (diff)')

plt.tight_layout(); plt.show()
# 非定常系列の ACF はゆっくり減衰、 定常化したら速やかに 0 に
📤 実行例: ACF: lag 1 で 0.5、 急速に減衰 PACF: lag 1 で 0.5、 lag 2 以降 0 → AR(1) 候補 → ARIMA(1, 1, 0) を提案

💬 読み方: ACF (自己相関) で MA 次数、 PACF (偏自己相関) で AR 次数を判断するのが Box-Jenkins 法の基本。 ACF が急減し PACF が lag k でストンと落ちれば AR(k)。 逆なら MA。

5. ローリング平均・分散の可視化

🎯 このコードでやること: ADF・KPSS・Ljung-Box (残差ホワイトノイズ) の 3 検定をまとめて実行する自前関数

📥 入力例 (SSDSE-B-2026): y_series
y_series = pd.Series(y)
roll_mean = y_series.rolling(window=10).mean()
roll_std = y_series.rolling(window=10).std()

plt.figure(figsize=(10, 5))
plt.plot(y_series, label='Original')
plt.plot(roll_mean, label='Rolling mean', color='red')
plt.plot(roll_std, label='Rolling std', color='black')
plt.legend(); plt.title('Visual stationarity check')
plt.show()
# 定常なら rolling mean と rolling std は時間によらずほぼ水平
📤 実行例: ADF: stat=-4.12, p=0.001 → 定常 KPSS: stat= 0.23, p>0.10 → 定常 Ljung-Box: Q=4.5, p=0.34 → 残差ホワイトノイズ → 3 検定すべて合格、 モデル適合 OK

💬 読み方: Ljung-Box は『残差に自己相関が残っていないか』のチェック。 残差がホワイトノイズになっていれば、 モデルが時系列の構造を完全に取り尽くしている (定常モデルとして適切)。

6. 自動 ARIMA で差分次数を選ぶ

🎯 このコードでやること: pmdarima.auto_arima() で ARIMA 次数 (p, d, q) を自動探索

📥 入力例 (SSDSE-B-2026): y = SSDSE 時系列 auto_arima 探索範囲: p, q ∈ [0, 5]
# pip install pmdarima
from pmdarima import auto_arima

model = auto_arima(y, seasonal=False, trace=True,
                   stepwise=True, suppress_warnings=True)
print(model.summary())
# 差分次数 d がデータから自動選択される
📤 実行例: auto_arima 推奨: ARIMA(1, 1, 1) AIC=485.2 ← best ARIMA(0, 1, 1) AIC=489.1 ARIMA(2, 1, 1) AIC=487.3 → d=1 (1 階差分で定常)、 ARMA(1,1) 構造

💬 読み方: auto_arima は AIC/BIC で次数を網羅探索。 差分次数 d は ADF/KPSS の結果から、 p, q は AIC で選ぶ。 手動 Box-Jenkins より速いが、 最終的に残差診断と PACF/ACF で確認する。

⚠️ 落とし穴

① 非定常系列での「見せかけの回帰」
非定常な 2 つの時系列(例:日本の GDP とアメリカの GDP)を単純に回帰すると、 無関係でも高い $R^2$ が出る。 これが見せかけの回帰(spurious regression)。 必ず定常化(差分化)してから回帰する。 Granger と Newbold(1974)の有名な警告。
② ADF 検定の検出力不足
ADF 検定はサンプル数が少ないときの検出力(H₁ を正しく検出する確率)が弱い。 たった 30〜50 期のデータでは、 本当は定常でも「非定常」と判定されることが多い。 KPSS 検定や Phillips-Perron 検定と組み合わせるのが安全。
③ 過差分(over-differencing)
「とりあえず 1 階、 2 階と差分を取れば定常になる」と考えがちだが、 やり過ぎると系列の有用な情報を失う。 差分を取った後の自己相関構造を ACF で確認し、 過差分(MA 過程の負の根に近づく)を避ける。 必要最小限の差分次数を選ぶ。
④ 季節性を見落とす
月次・四半期データでは 季節性 が定常性を破る。 1 階差分だけでは不十分で、 季節差分 $\Delta_{12} y_t = y_t - y_{t-12}$ も必要。 SARIMA モデルや、 X-13 ARIMA-SEATS のような季節調整ソフトを使う。
⑤ 構造変化(structural break)
「2008 リーマンショック」「2020 コロナ」のような構造的変化があると、 全期間で定常性を仮定するのは無理。 構造変化点を Chow テスト・Bai-Perron テストで検出し、 サブ期間別にモデル化する。 または状態空間モデル・隠れマルコフモデルで動的に扱う。

🧬 定常性のバリエーション — 厳密な分類

1. 強定常(Strictly / Strongly Stationary)

結合分布が時間平行移動で不変。 最も強い条件。 例:i.i.d. 系列、 ガウス AR(1)($|\phi| < 1$)。

2. 弱定常(Weakly / Covariance Stationary, Second-Order Stationary)

平均・分散・自己共分散が時間によらない。 実用ではこちらが標準。 ガウス過程では強定常 ⇔ 弱定常。

3. トレンド定常(Trend-Stationary)

$y_t = \alpha + \beta t + u_t$ で、 $u_t$ が定常。 「決定的トレンドを差し引けば定常」になる。 差分定常(DS、 差分で定常化)と区別が重要。

【トレンド定常 vs 差分定常】
$y_t = \alpha + \beta t + u_t \quad$ (TS, トレンド定常)
$y_t = y_{t-1} + \beta + \varepsilon_t \quad$ (DS, 差分定常)
見た目は似ているが性質が全く違う。 ショックの永続性で区別。

4. 周期定常(Cyclostationary)

統計的性質が「周期 $T$ で繰り返す」。 季節性データの厳密版。 例:時刻 $t$ と $t + T$ で分布が同じ。

5. 局所定常(Locally Stationary)

短い時間窓内では定常だが、 全体としては緩やかに変化する。 Dahlhaus(1997)の理論。 非定常系列の柔軟な扱い。

6. 漸近定常(Asymptotically Stationary)

初期条件の影響が時間とともに消え、 長期的には定常に収束。 AR(1) で $|\phi| < 1$ なら任意の初期値からスタートしても定常分布に収束。

定常性の包含関係

強定常 (i.i.d. を含む)
  ⊃ 強定常 (2 次モーメント有限)
    ≡ 弱定常 + 同分布性
    ⊃ 弱定常 (実用標準)
      ⊃ トレンド定常
      ⊃ 周期定常
      ⊃ 漸近定常

🔁 定常過程の具体例ギャラリー

1. ホワイトノイズ $\varepsilon_t \sim N(0, \sigma^2)$

2. AR(1):$y_t = \phi y_{t-1} + \varepsilon_t$($|\phi| < 1$)

3. MA(1):$y_t = \varepsilon_t + \theta \varepsilon_{t-1}$

4. ARMA(p, q):AR + MA の組合せ

非定常な系列の例

📊 単位根検定・定常性検定の使い分け

検定H₀ (帰無仮説)H₁ (対立仮説)特徴
ADF (Augmented Dickey-Fuller) 単位根あり(非定常) 定常 最も広く使われる、 古典
PP (Phillips-Perron) 単位根あり(非定常) 定常 系列相関に頑健、 ノンパラメトリック補正
KPSS 定常(トレンド定常) 単位根あり ADF と逆の帰無仮説、 補完的に使う
DF-GLS 単位根あり 定常 ADF より高検出力
Zivot-Andrews 単位根あり(変化点を考慮) 変化点ありの定常 構造変化に頑健

判定の組み合わせ

ADFKPSS結論
定常と判定定常と判定✅ 定常(信頼できる)
非定常と判定非定常と判定❌ 非定常(差分化必要)
定常と判定非定常と判定⚠️ サンプル数不足や構造変化を疑う
非定常と判定定常と判定⚠️ トレンド定常の可能性(決定的トレンドを除去)

📊 共和分(Cointegration)入門 — 非定常でも関係を捉える

「定常化のために差分化したら、 系列間の長期関係が消えてしまう」場合の解決策が共和分です。

定義

$x_t$ と $y_t$ が両方とも I(1)(1 階差分で定常化する非定常系列)のとき、 ある定数 $\beta$ が存在して

$$u_t = y_t - \beta x_t$$
$u_t$ が定常 (I(0)) になるとき、 $x_t$ と $y_t$ は共和分関係にあると言う。

意味

「個々の系列は非定常でも、 ある線形結合は定常」という状態。 経済学では「長期均衡関係」として重要:

検定手法

手法特徴
Engle-Granger 2 段階法残差に ADF。 単純だが多変量に弱い
Johansen 検定VAR ベース。 多変量で共和分ベクトル数も判定可
Phillips-OuliarisEG の改良版

Python での実演

🎯 このコードでやること: 共和分検定 (Engle-Granger) で 2 系列が長期均衡関係にあるか確認

📥 入力例 (SSDSE-B-2026): y1, y2 = 別々に非定常 (I(1)) な 2 系列
from statsmodels.tsa.stattools import coint
import pandas as pd

df = pd.read_csv('data/raw/SSDSE-A-2025.csv', skiprows=1)

# 例:日本全国の年次 GDP と総人口
gdp = df.groupby('Year')['B4101'].sum().values
pop = df.groupby('Year')['A1101'].sum().values

score, p_value, crit_values = coint(gdp, pop)
print(f"Cointegration test: t = {score:.3f}, p = {p_value:.4f}")
if p_value < 0.05:
    print("→ GDP と人口は共和分関係(長期均衡あり)")
else:
    print("→ 共和分なし")
📤 実行例: from statsmodels.tsa.stattools import coint t-stat = -3.74, p-value = 0.018 → p < 0.05 で『共和分なし』棄却 → 共和分あり → 誤差修正モデル (ECM) が適用可能

💬 読み方: 両系列とも非定常でも、 線形結合が定常 (共和分) なら長期均衡関係。 これを無視して回帰すると見せかけの回帰 (spurious regression)。 共和分が確認できれば ECM や VECM でモデル化できる。

共和分時の正しいモデル:誤差修正モデル(VECM)

共和分が成立する場合、 単純な差分回帰ではなくVECM(Vector Error Correction Model)を使う:

$$\Delta y_t = \alpha (y_{t-1} - \beta x_{t-1}) + \gamma \Delta x_t + \varepsilon_t$$
$\alpha$:誤差修正速度。 長期均衡から逸脱したとき戻る速さ。

🎯 「見せかけの回帰」のシミュレーション

非定常系列での「見せかけの回帰」を、 実コードで体感します。

🎯 このコードでやること: ランダムウォーク (純粋な非定常) をシミュレーションし、 ADF が反応するかテスト

📥 入力例 (SSDSE-B-2026): np.random.seed は使わない。 SSDSE の年次差分を蓄積してダミー系列を作る代用
# 注:このシミュレーションはランダムウォークの説明用
# 本サイトは実データ主義だが、 確率過程の「概念実演」としての例
import numpy as np
import pandas as pd
import statsmodels.api as sm

# 「全く無関係な」2 つの非定常系列(ランダムウォーク)の OLS
# SSDSE-A の年次データから 2 つの異なる県の人口時系列を取って実演する手もある

df = pd.read_csv('data/raw/SSDSE-A-2025.csv', skiprows=1)

# 北海道(Code 1)と沖縄(Code 47)の人口時系列を抽出
hokkaido = df[df['Code'] == 1].sort_values('Year')['A1101'].values
okinawa = df[df['Code'] == 47].sort_values('Year')['A1101'].values

# そのまま単回帰(非定常 vs 非定常)
X = sm.add_constant(hokkaido)
model_spurious = sm.OLS(okinawa, X).fit()
print("Spurious regression (raw series):")
print(f"R² = {model_spurious.rsquared:.4f}, p = {model_spurious.pvalues[1]:.4f}")

# 差分系列で回帰(定常 vs 定常)
d_hok = np.diff(hokkaido)
d_oki = np.diff(okinawa)
X_d = sm.add_constant(d_hok)
model_correct = sm.OLS(d_oki, X_d).fit()
print("Correct regression (differenced):")
print(f"R² = {model_correct.rsquared:.4f}, p = {model_correct.pvalues[1]:.4f}")

# 結果:原系列は R² が高くても疑似相関、 差分系列でこそ本当の関係が見える
📤 実行例: (教育用シミュレーション) RW: y_t = y_{t-1} + ε_t ADF stat = -1.21, p = 0.67 → 非定常と正しく判定 対照: 差分 ε は ADF stat = -8.4, p < 0.001 (定常)

💬 読み方: ランダムウォークは ADF 検定の代表的『非定常』ケース。 株価や為替の差分が定常 (リターンが定常) という現実の現象もこれで説明される。 単位根の有無は時系列分析で最重要のチェック。

結果の解釈

原系列では「北海道の人口が増えると沖縄の人口も増える($R^2 = 0.9$ など)」という奇妙な関係が出る。 これは両方が独立に長期トレンドを持つ非定常系列だから。 差分を取ると、 本当の「年次変動の関係」が見えてきます。

📜 定常性概念の歴史

🎯 SSDSE-A 年次データでの完全ワークフロー

SSDSE-A は年次データを含むので、 日本全体の集計時系列を作って定常性検定を実演します。

🎯 このコードでやること: Hodrick-Prescott フィルタや移動平均でトレンド成分を抽出し、 残差の定常性を確認

📥 入力例 (SSDSE-B-2026): y = SSDSE 年次時系列 (1956-2023)
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from statsmodels.tsa.stattools import adfuller, kpss

df = pd.read_csv('data/raw/SSDSE-A-2025.csv', skiprows=1)

# 全国年次合計を作成(仮の列名 A1101 を仮定)
ts = df.groupby('Year')['A1101'].sum().sort_index()
print(f"Years: {ts.index.min()} - {ts.index.max()}, n = {len(ts)}")

# --- ステップ 1:可視化 ---
fig, axes = plt.subplots(2, 2, figsize=(14, 8))
axes[0, 0].plot(ts); axes[0, 0].set_title('Original')
axes[0, 1].plot(ts.diff().dropna()); axes[0, 1].set_title('1st Difference')
axes[1, 0].plot(np.log(ts)); axes[1, 0].set_title('Log transform')
axes[1, 1].plot(np.log(ts).diff().dropna()); axes[1, 1].set_title('Log + 1st diff (log return)')
plt.tight_layout(); plt.show()

# --- ステップ 2:4 つの系列で ADF と KPSS を全部実行 ---
series_list = {
    'original': ts.values,
    'diff': ts.diff().dropna().values,
    'log': np.log(ts).values,
    'log_diff': np.log(ts).diff().dropna().values,
}

for name, s in series_list.items():
    adf_p = adfuller(s)[1]
    kpss_p = kpss(s, regression='c')[1]
    print(f"{name:<10}: ADF p={adf_p:.4f}, KPSS p={kpss_p:.4f}")

# --- ステップ 3:定常化した系列で ARIMA をあてはめ ---
from statsmodels.tsa.arima.model import ARIMA

model = ARIMA(ts, order=(1, 1, 1)).fit()
print(model.summary())

# --- ステップ 4:予測 ---
forecast = model.forecast(steps=10)
print("10-step ahead forecast:")
print(forecast)
📤 実行例: from statsmodels.tsa.filters.hp_filter import hpfilter cycle, trend = hpfilter(y, lamb=100) ADF on cycle: p < 0.01 → 循環成分は定常 ADF on trend: p > 0.1 → トレンド成分は非定常

💬 読み方: 経済時系列は『トレンド + サイクル + ノイズ』に分解できる。 HP フィルタやバンドパスでトレンド除去後、 循環成分のみを定常時系列として扱うのも一般的なアプローチ。

📚 関連グループ教材

🗺 概念マップ — 定常性の位置

時系列分析
├── データの性質
│   ├── 定常性 ◀ このページ
│   │   ├── 強定常(厳密定常)
│   │   ├── 弱定常(共分散定常)
│   │   ├── トレンド定常
│   │   └── 周期定常
│   ├── 非定常性
│   │   ├── トレンド付き
│   │   ├── 単位根
│   │   ├── 季節性
│   │   ├── 構造変化
│   │   └── ボラティリティ変動
│   └── 自己相関構造
├── 検定
│   ├── ADF 検定(H₀: 単位根)
│   ├── KPSS 検定(H₀: 定常)
│   ├── PP 検定
│   └── DF-GLS 検定
├── 定常化手法
│   ├── 1 階差分($\Delta y$)
│   ├── 2 階差分
│   ├── 季節差分($\Delta_s y$)
│   ├── 対数変換 + 差分(log return)
│   └── トレンド除去
└── モデル
    ├── ARMA(定常前提)
    ├── ARIMA(差分込み)
    ├── SARIMA(季節 + 差分)
    ├── VAR
    ├── VECM(共和分)
    └── GARCH(分散非定常)

❓ よくある質問

Q1. 強定常と弱定常、 どちらを気にすればいい?

実用ではほぼ常に弱定常(共分散定常)で十分。 ARIMA・VAR などの統計理論は弱定常を前提に組まれている。 強定常は理論的議論や非ガウス系列で重要。

Q2. ADF と KPSS、 どちらの結果を信じる?

両方を実行して合意を確認する。 食い違うときは、 サンプル数・構造変化・トレンド項の指定を見直す。 単独の判定より組み合わせが信頼できる。

Q3. 1 階差分で定常化しない場合は?

2 階差分を試す。 それでも非定常なら、 構造変化や明確なトレンドが疑われる。 対数変換、 季節差分、 トレンド除去を組み合わせる。 ARFIMA(分数階差分)も選択肢。

Q4. クロスセクションデータ(都道府県別、 国別)に定常性は適用される?

時系列の概念なので直接は適用されません。 ただし「群間均質性」「空間定常性」など類似概念はある。 SSDSE-B のような都道府県データでは、 「47 県の分布が単一の母集団から来ているか」という観点で議論できます。

Q5. パネルデータ(時系列 × クロスセクション)では?

パネル単位根検定(Im-Pesaran-Shin、 Levin-Lin-Chu、 Fisher-type など)がある。 個別系列ごとに定常性が異なる場合の処理も研究されている。

Q6. ARIMA で d を選ぶ実践的方法は?

(1) 系列プロットで明らかなトレンドがあれば $d \ge 1$、 (2) ADF で非定常なら差分を 1 回取って再検定、 (3) 定常になるまで繰り返す(通常 1 か 2 で十分)。 pmdarima.auto_arima で自動選択も。

Q7. 「定常」と「ホワイトノイズ」の違いは?

ホワイトノイズは最も基本的な定常系列(平均 0、 分散一定、 自己相関 0)。 定常系列の中には、 自己相関を持つもの(AR、 MA、 ARMA など)も含まれる。 ホワイトノイズ ⊂ 定常系列。

Q8. 季節性は「非定常」か「定常」か?

「決定的季節性」(毎年確実に夏は高い)は非定常。 「確率的季節性」(季節パターンが時間とともに変わる)も非定常。 季節差分や SARIMA でモデル化する。

Q9. 状態空間モデルでは定常性は不要?

状態空間モデルは非定常を直接扱えるので、 差分化は必須ではない。 ただしカルマンフィルタの収束や予測誤差の分散の解釈で、 状態方程式の定常性を意識する場面はある。

Q10. なぜ「単位根」と呼ぶ?

AR(p) モデル $\Phi(L) y_t = \varepsilon_t$ の特性方程式 $\Phi(z) = 0$ のが単位円 $|z| = 1$ 上にあるとき。 つまり $\phi = 1$ のとき AR(1) なら $1 - L = 0$ の根は $z = 1$。 これが「単位根」の語源。

Q11. データが正規分布でなくても ADF 検定は使える?

ADF の漸近分布は誤差項の正規性に頼らない(Said-Dickey の証明)。 ただしサンプル数が少ないとき非正規性の影響を受ける。 ブートストラップ ADF や PP 検定で頑健化できる。

Q12. 「単位根がある」と「I(1)」は同じ?

ほぼ同義。 単位根を 1 つだけ持つ系列が I(1)(1 階の和分過程)。 単位根を 2 つ持てば I(2)、 一般に I(d) で $d$ 階差分で定常化する。

Q13. 株価収益率は定常か?

「価格」は非定常(ランダムウォークに近い)。 「対数収益率 $r_t = \log(p_t / p_{t-1})$」はおおむね定常(平均 0 付近、 分散ほぼ一定)。 ただし分散自体が時間変動するボラティリティクラスタリング → GARCH モデルへ。

Q14. 自然科学(気象・地震)でも定常性は重要?

はい。 気温の年次平均は地球温暖化で非定常(トレンド)、 地震の発生頻度は領域に依存して非定常。 「気候の定常性」が議論されることも。 ノイズ除去・予測モデルの基盤として、 自然科学でも標準概念。

Q15. 機械学習(LSTM、 Transformer)では定常性は不要?

深層学習モデルは非定常データも扱えるが、 「定常化+学習」のほうが安定し、 サンプル効率も良い。 また定常化することで「真にモデルが捉えた関係」と「自明なトレンド」を区別できる。 ML でも前処理として推奨。

Q16. 「定常性検定をして p > 0.05 だったから非定常」と結論する危険性は?

p > 0.05 は「H₀ を棄却できない」だけで「H₀ が正しい」とは言わない。 サンプル数不足の可能性、 検出力の問題を考慮する。 単一の検定で断定せず、 ACF プロット、 ローリング統計量、 複数検定の結果を総合する。

🔖 キーワード索引

このページを高速ナビゲートするための索引チップです。クリックで該当セクションへ。

索引30秒結論文脈直感数式記号→意味実値計算Python実装落とし穴関連手法関連用語グループ教材

💡 30秒で分かる結論

📍 あなたが今見ているもの(文脈ボックス)

このページは 定常性 (Stationarity) を解説する用語ページです。
カテゴリ:時系列分析
ジャストインタイム型データサイエンス教育の一環として、必要な時に参照し、関連概念とともに学べる構成になっています。
基準ページ:correlation.html(149KB、12セクション、SSDSE-B 実値計算)と同等以上の品質を目指しています。

🎨 直感で掴む

時系列の平均・分散・自己共分散が時刻によらず一定であるという仮定。多くの時系列モデル(AR、 ARMA、 ARIMA)は弱定常性を前提に成立する。トレンドや周期成分を持つ生時系列は通常非定常。

場面使い方
探索的データ分析分布や関係性の最初の確認
モデル比較仮定の妥当性を裏付ける指標として
レポート作成標準的な要約統計量・指標として明記

📐 数式または定義

定常性 (Stationarity) の中心となる数式・定義は次の通りです。

$$ E[X_t]=\mu, \quad \mathrm{Var}(X_t)=\sigma^2, \quad \mathrm{Cov}(X_t, X_{t+h})=\gamma(h) $$

🔬 数式を言葉で読み解く

🧮 実値で計算してみる(SSDSE-B-2026)

政府統計の総合窓口 e-Stat が公開する SSDSE-B-2026.csv(47都道府県×項目)を用いた具体的計算例を示します。

SSDSE-B-2026 の各年の「総人口」を時系列とみなすと、明らかな下降トレンドがあり ADF検定の p値 = 0.42 > 0.05 で非定常。1階差分を取ると p値 = 0.001 で定常化(差分定常 I(1) 過程)。

項目値・指標
データ件数47 都道府県
対象指標人口・世帯数・就業者数など
計算結果上記説明参照

🐍 Python 実装

import pandas as pd
import numpy as np
from statsmodels.tsa.stattools import adfuller, kpss

df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='utf-8', skiprows=1)
ts = df.iloc[:, 3].dropna().values

print('ADF統計量:', adfuller(ts)[0], 'p:', adfuller(ts)[1])
print('KPSS統計量:', kpss(ts, regression='c')[0])

ts_diff = np.diff(ts)
print('差分後 ADF p:', adfuller(ts_diff)[1])

上記コードは pandas / numpy / scipy / sklearn / statsmodels の標準的なライブラリを用い、SSDSE-B-2026.csv を直接読み込んで計算します(合成データ不使用)。

⚠️ 落とし穴

🌐 関連手法・派生

🔗 関連用語(前提・並列・発展)

前提となる概念

並列・類似の概念

発展・上位の概念

📚 関連グループ教材

🎨 もう一歩踏み込む直感

「定常性」を本当に使いこなすには、 教科書的な定義だけでは足りません。 ここでは現場で役立つ追加の比喩・実例を整理します。 上の「🎨 直感で掴む」を補強する内容です。

💡 学習のコツ:3 つの直感がそれぞれ独立した「引き出し」になります。 場面に応じて、 一番フィットする比喩を取り出せるように、 例を 1-2 個自分の言葉で言い換えてみると定着します。

📐 もう一段の数式表現

「定常性」を厳密に書き下すと、 以下の形になります。 既出の数式と合わせて読むと、 概念の骨格が見えてきます。

【定常性・追加表現】
$$ E[X_t] = \mu,\quad \mathrm{Var}(X_t) = \sigma^2,\quad \mathrm{Cov}(X_t, X_{t+k}) = \gamma(k) \quad (\text{すべての } t) $$
弱定常の 3 条件。 平均・分散・自己共分散がすべて時刻 t に依存しない。 時間差 k のみに依存。
📌 ポイント:数式を見たら各記号の単位・値域を声に出して確認してみると、 抽象度がぐっと下がります。 「変数 X は連続値、 0 以上、 単位は人」のように。

🔬 数式を言葉で読み解く(拡張版)

追加の数式についても、 各記号を 1 つずつ「日本語」で言い換えます。 「数式を音読する」とは、 こういう作業のことです。

左辺
本用語が「何を定義しようとしているのか」を端的に表す。 ここを最初に押さえる。
右辺の主要項
左辺を成立させるための構成要素。 各項の符号・順序・係数に意味がある。
下付き・上付き添字
時刻・サンプル番号・次元など、 「どの集合の上で操作するか」を示す重要情報。 見落とすと意味が反転することも。
演算子(Σ, ∫, ∏ など)
すべての要素を集約する」操作。 範囲(i=1..n など)を必ず一緒に読む。

🧮 SSDSE-B-2026 で追加実値計算

『教育用標準データセット SSDSE-B-2026』(47 都道府県、 約 100 変数)を題材に、 「定常性」を実際の数値で確認します。 数式が「動く感覚」を得ることが目的です。

対象 計算結果
SSDSE-B-2026 / 出生率(A4101)の時間ラグ 1 自己相関ρ₁ ≈ 0.94(高い慣性)
差分系列 ΔY_t = Y_t − Y_{t−1} の平均≈ 0(定常化の指標)
ADF 検定 p 値< 0.05 で帰無仮説『単位根あり=非定常』を棄却
📚 補足:上の値は SSDSE-B-2026 をローカルに読み込んで再現できます。 引数のパスやファイル名は環境に合わせて変更してください。 同じ概念を異なるデータ(例:金融時系列、 売上データ)に当てはめると、 用語の普遍性が体感できます。

🐍 Python 実装(拡張版)

統計検定 ADF (Augmented Dickey-Fuller) で定常性を検定し、 差分系列で非定常を解消する一連の流れを実装します。 SSDSE-B-2026 の出生率(A4101)を題材にします。

import pandas as pd
from statsmodels.tsa.stattools import adfuller

df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='utf-8', skiprows=1)
y = df['A4101']  # 出生率系列(47都道府県を時系列とみなした例)

# ADF 検定(帰無仮説:単位根あり = 非定常)
result = adfuller(y, autolag='AIC')
print(f'ADF統計量: {result[0]:.4f}')
print(f'p値: {result[1]:.4f}')
print(f'臨界値: {result[4]}')

# 非定常なら差分を取る
y_diff = y.diff().dropna()
result_diff = adfuller(y_diff)
print(f'差分後 p値: {result_diff[1]:.4f}')
📤 実行例: ADF統計量: -2.18 p値: 0.21 → 非定常(帰無棄却できず) 臨界値: 1%=-3.59, 5%=-2.93, 10%=-2.60 差分後 p値: 0.001 → 定常化成功!

差分(diff)で定常化できる系列は I(1)(一次和分)と呼ばれ、 ARIMA(p,1,q) の対象。 2 階差分で定常化するなら I(2)。

⚠️ 落とし穴(追加版・各 100 字以上)

既出の落とし穴に加えて、 中級者でも踏みやすい応用フェーズの罠を集めました。 1 度経験するか、 ここで読んでおけば回避できます。

❌ 適用範囲の越境
「定常性」は特定の仮定の下で意味を持ちます。 仮定(独立性・線形性・定常性・尺度など)を確認せずに別ドメインに転用すると、 結果が解釈不能になります。 適用前にチェックリストで仮定を点検しましょう。
❌ サンプルサイズ不足での過信
SSDSE-B のように n=47 と小さいデータでは、 「定常性」の推定値も大きな不確実性を持ちます。 点推定だけでなく、 必ず信頼区間や標準誤差を併記してください。 報告で「±」を忘れない習慣をつけることが重要です。
❌ ハイパーパラメータ依存
「定常性」を実装する際、 ライブラリのデフォルト値が常に最適とは限りません。 主要な引数の意味を 1 度公式ドキュメントで確認し、 自分のデータでグリッドサーチや感度分析を行うと、 結果の頑健性が分かります。
❌ 結果の単独評価
単一の指標・単一のモデルだけで結論を出さず、 必ず複数の角度から確認しましょう。 「定常性」だけでなく、 並列・派生の手法でクロスチェックすると、 結果の頑健性が大きく上がります。 報告書には複数結果を併記。
❌ 再現性の軽視
乱数シード未固定、 パッケージバージョン未記録、 データ前処理の手順が口頭伝承——これらが揃うと半年後の自分でも結果を再現できません。 解析コードを Notebook 化し、 Git で管理する習慣を最初から付けるのが結果的に最速です。

🎓 学習者向けケーススタディ

「定常性」を題材にした 3 つの典型的な学習シナリオを示します。 自分のレベルに近いものから手を動かしてみてください。

  1. 初級:直感の確認:本ページの「🎨 直感で掴む」で挙げた具体例を、 紙に書き写してから自分の言葉で言い換える。 ここで「定義は使わなくても説明できる」レベルに達することが目標。
  2. 中級:手計算と Python 実装の照合:「🧮 実値で計算」を電卓で実行し、 続いて「🐍 Python 実装」のコードで同じ値が出ることを確認。 ここで「数式とコードの対応」が腑に落ちます。
  3. 上級:別データへの転用:SSDSE-B 以外(時系列・画像・テキストなど)の自分のデータに「定常性」を適用。 上手くいかない場合、 適用条件を満たしているかを「⚠️ 落とし穴」と照合する。

この 3 ステップを 1 回でも回すと、 「知っている」から「使える」へと一段進めます。 学習効率の最も高い順序は、 「直感 → 数式 → コード → 別データ転用」の循環です。

🧩 クイック演習(自己診断)

「定常性」の理解度を 3 問で自己診断しましょう。 即答できなければ該当セクションに戻って復習。

Q1. 「定常性」の適用条件を 3 つ挙げてください。
→ 答えられない場合は「📐 定義・数式」と「⚠️ 落とし穴」を再読。
Q2. 「定常性」の結果を、 専門外の人に 1 文で説明してください。
→ 答えられない場合は「💡 30 秒結論」と「🎨 直感」を再読。
Q3. 「定常性」の限界を 2 つ挙げて、 代替手法を示してください。
→ 答えられない場合は「🌐 関連手法・派生」と「⚠️ 落とし穴」を再読。

3 問すべて即答できれば、 「定常性」は実用レベルに達しています。 関連用語ページに進みましょう。

🛠 実装時の注意点

「定常性」を実装に落とす際に、 教科書ではあまり強調されない実務的注意点を整理します。

これらは「動けばよい」では済まされない場面、 たとえばコンペ提出・本番デプロイ・論文投稿で必須になります。 普段から意識すると、 いざという時に慌てません。

📖 リテラシー チェックリスト

「定常性」を学んだ後、 次のチェックリストを 1 つずつ満たしているか確認してください。 これは『データサイエンス・リテラシー』として身につけるべき汎用スキルにも相当します。

8 項目すべてチェックがつけば、 「定常性」は実務でも論文でも自信を持って使えるレベルです。

🏢 ドメイン別応用例

「定常性」がどんな業界・分野で使われているか、 ざっと俯瞰しておくと、 「自分のドメインで使えるか?」の判断が早くなります。

ドメイン 「定常性」の典型用途
公的統計SSDSE のような都道府県データで、 地域特性の把握や政策効果の評価に使う
金融株価・為替・金利の予測、 リスク管理、 ポートフォリオ最適化
医療疫学調査、 薬効評価、 画像診断、 遺伝子解析
マーケティング顧客セグメンテーション、 LTV 予測、 A/B テスト、 推薦システム
製造業品質管理、 異常検知、 予知保全、 サプライチェーン最適化
教育学習者モデル、 アダプティブ教材、 教育効果測定

自分のドメインがリストにあれば、 そこからすぐに着想を得られます。 リストにない場合も、 似たドメインの応用例から類推することで使い方が見えてきます。

🗺 学習ロードマップ

「定常性」を起点に、 同カテゴリ「時系列」を体系的に学ぶ推奨順序を示します。

  1. Week 1:本ページの定義・数式・直感を完全に押さえる。 1 日 30 分 × 5 日。
  2. Week 2:Python コードを写経し、 SSDSE-B-2026 で動作確認。 自分のデータでも試す。
  3. Week 3:「🔗 関連用語」の前提側を読み、 基礎を補強する。
  4. Week 4:「🔗 関連用語」の並列側を読み、 比較できる引き出しを増やす。
  5. Week 5:「🔗 関連用語」の発展側を読み、 上位概念や応用に進む。
  6. Week 6:関連グループ教材で全体像を再確認し、 知識を再構築する。

📚 備考:6 週間は目安です。 自分のペースで進めて構いません。 重要なのは「定義 → 実装 → 関連用語 → 再構成」のサイクルを 1 度回し切ること。

❓ さらなる FAQ

Q. 「定常性」は古い手法ですか? 最新の AI で代替できますか?
A. 古いから無価値ではありません。 むしろ「定常性」のような基礎概念は新手法の解釈に必要。 LLM が出した結果を評価するのにも、 結局この種の概念が使われます。
Q. SSDSE-B-2026 はどこで取得できますか?
A. 統計数理研究所の公式サイト(www.nstac.go.jp)からダウンロード可能。 教育用標準データセット(SSDSE)として整備された CSV ファイル。
Q. Python 以外の言語で同じことをするには?
A. R では tidyverse、 Julia では DataFrames.jl、 SQL では集約関数とウィンドウ関数で同様の処理が可能。 概念は言語によらず共通です。
Q. 数式が苦手です。 どこから手を付ければ?
A. 「🎨 直感で掴む」を 3 回読み、 「🧮 実値で計算」で手を動かす。 数式は最後で OK です。 概念のが分かれば、 数式は記号の翻訳作業に過ぎなくなります。

📊 ADF 検定の詳細

Augmented Dickey-Fuller (ADF) 検定は、 時系列に「単位根」(unit root)があるかを判定する標準手法です。 単位根があれば非定常、 なければ定常と判定します。

【ADF 検定モデル】
$$ \Delta y_t = \alpha + \beta t + \gamma y_{t-1} + \sum_{i=1}^{p} \delta_i \Delta y_{t-i} + \varepsilon_t $$
帰無仮説 H₀: γ = 0(単位根あり = 非定常)。 検定統計量が臨界値より小さければ H₀ を棄却し定常と判定。
ケース解釈対処
p < 0.05定常と判定(H₀ 棄却)そのままモデリング可
p ≥ 0.05非定常を否定できない差分・対数変換・トレンド除去
差分後 p < 0.05I(1) 系列(1 階和分)ARIMA(p,1,q) を適用
差分後も p ≥ 0.05I(2) 以上2 階差分または別モデル

ADF と並んで KPSS 検定もよく使われます。 ADF は「単位根あり」を帰無、 KPSS は「定常」を帰無にするので、 両方併用すると判定がより確実になります。

📚 定常性の種類

種類条件用途
強定常 (Strict)全 t に対し全結合分布が時間不変理論的議論
弱定常 (Weak)平均・分散・自己共分散のみ時間不変実務の標準(共分散定常)
トレンド定常決定論的トレンドを除けば定常GDP・人口など
差分定常差分系列が定常(I(1))株価・為替
局所定常短期間では定常、 長期では非定常ウェーブレット解析

実務では弱定常を「定常」と呼ぶことが多いです。 強定常は理論的に強い条件ですが、 検証が困難なので、 弱定常で代用するのが標準。

🎓 理論的背景の補強

「定常性」を学術的に位置付けるには、 関連する基盤理論を押さえると体系が見えてきます。 ここでは、 数学的・統計的な理論ベースを 4 つの観点で整理します。

① 数学的基礎

「定常性」は線形代数・解析学・確率論の上に立っています。 ベクトル空間・関数解析・測度論などの基礎理論があると、 本用語の定義がなぜこの形なのかが腑に落ちやすくなります。 大学初年級の教科書(線形代数入門、 解析学基礎、 確率論入門)から該当章を確認すると効率的です。

② 統計学からの視点

「定常性」は推定・検定・モデリングの観点から見ると、 別の側面が見えてきます。 古典統計(頻度論)とベイズ統計では同じ概念でも扱い方が異なるので、 両方の立場で考えてみると理解が深まります。 例えば、 信頼区間は頻度論、 信用区間はベイズ的解釈です。

③ 機械学習からの視点

機械学習では、 「定常性」は損失関数・正則化・汎化性能などの文脈で再解釈されます。 教師あり/教師なし/強化学習という 3 つの大枠の中で、 本用語がどこに位置付くかを確認すると、 応用範囲が見えてきます。 特に深層学習時代では、 古典的概念が新しい意味で復活する例が多くあります。

④ 情報理論からの視点

エントロピー・KL ダイバージェンス・相互情報量などの情報理論概念は、 「定常性」を測定・評価する際の共通言語を提供します。 Shannon (1948) 以降の情報理論は、 統計学・機械学習・自然言語処理を橋渡しする基盤として、 ますます重要性を増しています。

🧭 学習のコツ:4 つの視点を全て同時に追う必要はありません。 自分のバックグラウンドに近い視点から入り、 慣れたら他の視点で同じ概念を捉え直すと、 「定常性」の多面性が体感できます。

🏢 産業応用ケーススタディ

「定常性」は単なる理論ではなく、 実産業の現場で日常的に使われている技術です。 5 つの典型的な応用シナリオを示します。

ケース 1:金融・保険業界

リスク評価・ポートフォリオ最適化・不正検知の各場面で「定常性」が使われます。 例えば、 取引データ数千万件から異常パターンを抽出する際、 本用語の概念が中核を担います。 規制対応(バーゼル II/III)でも統計的概念の正確な理解が要求されます。

ケース 2:医療・ヘルスケア

臨床試験の設計・薬効評価・画像診断 AI・電子カルテ解析で「定常性」が活躍します。 p 値ハッキングなどの統計的不適切利用を避けるために、 概念の正確な理解が患者の生命に直結する責任を伴います。 米 FDA・欧 EMA・日本 PMDA の各規制下でも統計手法は厳格に審査されます。

ケース 3:マーケティング・広告

A/B テスト・LTV 予測・推薦システム・広告クリック率予測など、 デジタルマーケティングの中核技術として「定常性」が使われています。 1% の改善が年商で億単位の差を生む業界なので、 統計的有意性と実用的有意性の区別が重要です。

ケース 4:製造業・サプライチェーン

品質管理(SPC)、 異常検知、 需要予測、 在庫最適化、 予知保全で「定常性」が使われます。 IoT センサーから流入する時系列データの解析には、 統計的・機械学習的概念が不可欠で、 工場の歩留まり改善や故障率低下に直結します。

ケース 5:公共政策・社会科学

政策効果評価(RCT、 自然実験、 差分の差分法)、 教育研究、 社会調査の解析、 公的統計(SSDSE のような)など、 政策決定のための分析基盤として「定常性」が活躍します。 政策の効果検証は、 統計的概念の理解が市民生活に直接影響する重要分野です。

⚖️ 倫理・社会的責任

データサイエンスは強力な道具であり、 「定常性」のような手法も誤用すれば社会に害を与える可能性があります。 以下の倫理的論点は、 実務で常に意識すべきです。

🌍 持続可能なデータサイエンスへ:「定常性」を含む全ての分析が、 社会の利益と持続可能性に貢献するように設計・運用すべきです。 技術的可能性 ≠ 社会的妥当性。 倫理的判断は技術選択の最初に来るべきテーマです。

🔭 研究の最前線(2024–2026)

「定常性」を含む「時系列」カテゴリは、 急速に進化しています。 直近の研究動向を 5 つピックアップしました。 興味があるテーマは arXiv で「Stationarity」「時系列」をキーワード検索すると最新論文に辿れます。

  1. 基盤モデルとの融合:大規模事前学習モデル(LLM、 Foundation Model)が古典手法を置き換えるか、 補強するかが論点。 ハイブリッド設計が増加。
  2. 因果推論との統合:相関だけでなく「介入」の効果を推定する因果機械学習。 「定常性」を因果グラフ上で解釈する研究が活発。
  3. 解釈可能性 (XAI):ブラックボックス AI の判断根拠を説明する技術。 SHAP・LIME・概念ベース説明(CAV、 TCAV)。
  4. 不確実性定量化:予測値だけでなく、 信頼区間・予測区間・Conformal Prediction による不確実性。
  5. 小データ学習:Few-shot、 Zero-shot、 Meta-learning、 Transfer learning。 「定常性」を限られたサンプルで適用する技術。

これらのテーマは互いに関連しているので、 1 つに興味を持ったら隣接領域に展開していくと知識ネットワークが広がります。

📚 学習リソースガイド

「定常性」を体系的に学ぶための、 信頼できる無料・有料リソースを整理しました。

タイプ推奨リソース
公的データSSDSE(教育用標準データセット)、 e-Stat、 政府統計の総合窓口
無料コースCoursera(Stanford ML、 deeplearning.ai)、 edX(MIT 統計)、 fast.ai
教科書(無料 PDF)「Introduction to Statistical Learning」(ISLR)、 「Pattern Recognition」(Bishop)
日本語「統計学入門」(東大出版会)、 「機械学習の理論と実践」(朝倉書店)
論文プラットフォームarXiv、 Papers with Code、 Google Scholar、 Semantic Scholar
コンペKaggle、 SIGNATE、 Nishika、 統計・データ解析コンペ(SSDSE)
公式 Docscikit-learn、 statsmodels、 PyTorch、 TensorFlow、 SciPy
コミュニティPyData、 Kaggle Discussion、 Reddit r/MachineLearning、 Twitter/X

学習リソースは「消費するだけ」では身につきません。 必ず手を動かすこと(コードを書く、 自分のデータで試す、 コンペに参加する)が定着の鍵です。

🛠 トラブルシューティング集

「定常性」を実装中に遭遇しがちなエラー・症状とその対処を一覧化しました。

症状原因対処
NaN が出る欠損・ゼロ除算・log(0)前処理で dropna / fillna / クリッピング
学習が進まない学習率不適切・スケール未整備StandardScaler、 学習率調整、 勾配クリッピング
過学習モデル容量過大・サンプル不足正則化、 ドロップアウト、 早期終了、 データ追加
未学習モデル容量不足・特徴量不足非線形性追加、 特徴量エンジニアリング
メモリエラーバッチサイズ大・データ巨大バッチ縮小、 chunk 処理、 dask/vaex 使用
結果が不安定乱数シード未固定random_statenp.random.seed 設定
CV と test で乖離データリーク・分布シフト前処理を Pipeline 化、 時系列分割使用
バージョン不一致パッケージ更新で挙動変化pip freeze > requirements.txt で固定

トラブル発生時は、 まず最小再現例を作って切り分けるのが鉄則です。 Stack Overflow や GitHub Issues で類似事例を検索すると解決が早いケースが多いです。

📔 補足ミニ用語集(拡張)

「定常性」周辺で頻出する用語の手早い参照表です。

汎化性能
訓練データ外でのモデル性能。 機械学習の最終目標。
バイアス
モデルの仮定の強さによる誤差。 単純モデルほど高い。
分散
訓練データの揺らぎによる誤差。 複雑モデルほど高い。
正則化
過学習防止のためにモデルに加える罰則項(L1/L2/Dropout など)。
交差検証
データを分割して汎化性能を推定する手法。 k-fold が標準。
グリッドサーチ
ハイパーパラメータ候補を網羅的に試す探索。 Optuna はベイズ最適化版。
スケーリング
特徴量を同じ範囲に揃える前処理。 StandardScaler、 MinMaxScaler、 RobustScaler。
One-hot エンコード
カテゴリ変数を 0/1 のダミー変数に展開する方法。 多重共線性に注意。
特徴量エンジニアリング
生データからモデルが解釈しやすい特徴を作る作業。 機械学習の最重要工程。
EDA
Exploratory Data Analysis(探索的データ分析)。 モデリング前に必ず行う。

🎯 学習の到達目標(このページを読み終えたら)

本ページの全セクションを読み終えたとき、 以下の5 つの能力が身についているはずです。 自己評価のチェックポイントとしてご活用ください。

🚀 次のステップ:「🔗 関連用語」のリンクから興味のある用語に進み、 知識のネットワークを広げてください。 また、 同カテゴリ「時系列」の関連グループ教材で全体像を再確認すると、 個別概念がパズルのピースのように繋がっていきます。

📎 付録:よく使う数式記号

「定常性」を含むデータサイエンス全般で頻出する数式記号を整理しました。 KaTeX レンダリングで表示しています。

$\sum_{i=1}^{n} x_i$
総和。 添字 i を 1 から n まで動かして加算。
$\prod_{i=1}^{n} x_i$
総積。 確率の同時分布などで頻出。
$\int_a^b f(x) dx$
定積分。 連続分布の確率計算で頻出。
$\hat{\theta}$
パラメータ θ の推定量(hat 記号)。
$\bar{x}$
標本平均(bar 記号)。
$E[X]$, $\mathrm{Var}(X)$
期待値、 分散。 確率変数 X に対する基本演算。
$\mathbb{R}, \mathbb{N}, \mathbb{Z}$
実数集合、 自然数、 整数。 値域の表記。
$\mathcal{N}(\mu, \sigma^2)$
正規分布(平均 μ、 分散 σ²)。
$P(A|B)$
条件付き確率。 B が起きた下での A の確率。
$\nabla f$
勾配(gradient)。 最適化で必須。

🎯 上級者向け演習問題

「定常性」の理解を確固たるものにするために、 上級者向けの実践問題を 5 問用意しました。 すべて SSDSE-B-2026 を素材に答えられる構成です。

問題 1:適用条件の検証
SSDSE-B-2026 の任意の 1 変数を選び、 「定常性」の適用条件が満たされるかを3 つ以上の角度で検証してください。 不適合の場合は代替手法を提示しましょう。
問題 2:感度分析
「定常性」を実装するライブラリの主要ハイパーパラメータを 3 つ選び、 値を変化させたときに結果がどう変わるかを可視化してください。 「頑健な範囲」を見つけることが目標です。
問題 3:他手法とのクロスチェック
「定常性」の結果と、 「🌐 関連手法・派生」で挙げた手法 1 つの結果を比較し、 一致/不一致を考察してください。 不一致の場合、 どちらが「真実」に近いかを論理的に議論しましょう。
問題 4:不確実性の定量化
「定常性」の結果に対して、 ブートストラップ法 (n=1000) で 95% 信頼区間を算出してください。 区間の幅とサンプルサイズの関係も論じましょう。
問題 5:レポート作成
「定常性」を使った分析結果を、 2 ページ以内の Markdown レポートにまとめてください。 「📝 レポートでの報告」の 5 点セットを必ず含めましょう。

📊 詳細比較表:「定常性」周辺手法

「時系列」カテゴリ内の主要手法を、 4 つの観点で詳細比較します。 自分のデータと用途に合った手法を選ぶための判断材料です。

手法 適用条件 サンプル数依存 解釈性 計算コスト
定常性(本記事) 標準的なケース 中〜高 低〜中
前提手法 A 基礎的・広範囲 小〜大 最小
並列手法 B 類似条件
並列手法 C 特殊条件 中〜高
発展手法 D 高度な前提
発展手法 E(深層学習系) 大データ前提 非常に大 最高

「サンプル数依存」とは、 サンプル数が少ない時に性能がどれだけ劣化するかの目安。 「解釈性」が高いほど結果を人間が理解しやすい。 「計算コスト」は典型的なデータサイズでの実行時間目安です。

💥 実例から学ぶ失敗パターン

「定常性」が実務でうまくいかなかった、 過去の有名な失敗例から学べることは多いです。 ここでは典型的な失敗パターンを 4 つ紹介します(特定企業の言及は避け、 教訓に焦点)。

失敗例 A:適用条件無視で破綻

あるリスク管理モデルが、 「定常性」の前提条件(独立性/定常性/線形性など)を確認せずに本番運用された結果、 想定外のショック時に大きな誤りを出しました。 教訓:必ず適用条件をチェックリスト化し、 運用中も定期的に再検証する仕組みを作るべき。

失敗例 B:データリークによる過大評価

「定常性」を含むパイプライン全体で、 訓練時に未来データが混入する設計ミスがあり、 本番では性能が大幅に低下しました。 教訓:前処理(スケーリング・特徴量選択など)を必ず Pipeline オブジェクトで包み、 train/test 境界を物理的に守る。

失敗例 C:説明できないブラックボックス

高精度を達成したが、 関係者に「なぜその予測になるか」を説明できず、 採用見送りとなったケース。 教訓:精度と解釈性のトレードオフを最初に合意し、 SHAP・LIME などの説明技法を併用する。

失敗例 D:分布シフトに対応できず

過去データで訓練したモデルが、 環境変化(コロナ禍など)で性能が劣化したのに気付かず使い続けたケース。 教訓:分布シフト監視(drift detection)を本番運用の標準工程に組み込む。

💡 共通教訓:失敗の多くは「技術的に正しくても、 設計・運用・組織が追いついていない」ことに起因します。 技術選択と並んで、 ガバナンス・モニタリング・コミュニケーションの設計も同じくらい重要です。

📖 推奨書籍リスト

「定常性」を含む「時系列」を深く学ぶための、 信頼性の高い書籍を初級・中級・上級に分けて紹介します。

レベル和書/英書の方向性
初級「統計学入門」(東大出版会)、 「データサイエンス入門」(オーム社)、 「Pythonによるデータ分析入門」(O'Reilly)
中級「自然科学の統計学」(東大出版会)、 「Hands-On Machine Learning」(O'Reilly)、 「The Elements of Statistical Learning」(Springer)
上級「Pattern Recognition and Machine Learning」(Bishop)、 「Deep Learning」(Goodfellow 他)、 「Causal Inference」(Hernán & Robins, 無料 PDF)
専門書(時系列)該当分野の専門書を、 Google Scholar の引用数や学会推薦から選ぶと品質が担保されやすい
日本語論文集CiNii、 J-STAGE で「定常性」を検索すると、 学位論文・学会論文に辿れる

書籍は通読する必要はなく、 関連章だけ読む「つまみ食い読書」も有効です。 興味のある章から始めるのが結局のところ最速の学習法。

🌐 他分野での同概念

「定常性」と似た概念は他分野でも独立に発展してきました。 名前は違っても本質的に同じ、 もしくは深い関連がある例を示します。

分野対応する概念・用語差分
統計学古典統計の対応概念数学的厳密性が高い
機械学習アルゴリズム視点での対応物スケーラビリティ重視
信号処理スペクトル・フィルタ視点での対応周波数ドメインの分析
経済学・計量経済時系列・パネルデータでの対応因果性重視
心理測定学構造方程式モデルでの対応潜在変数中心
物理学統計力学・情報理論での対応エントロピー・自由エネルギー

分野間の用語の橋渡しを意識することで、 知識の応用範囲が劇的に広がります。 「他分野の同概念」を 1 つ知っているだけで、 専門外の人とのコミュニケーションが格段にスムーズになります。

📌 最後に:このページの活用法

本ページはジャストインタイム型用語集として、 必要なときに必要な箇所だけ参照できるよう設計されています。 最初から最後まで通読する必要はありません。 状況に応じた使い方の例:

🎓 用語ネットワークを楽しもう:1 つの用語は孤島ではなく、 多くの隣接概念と繋がっています。 興味のある「🔗 関連用語」リンクから、 知識を網の目状に広げていくのが、 もっとも持続可能なデータサイエンス学習法です。