時系列分析の論文や教科書で、 こんな表現を見たはずです:
この「定常性」が時系列分析の出発点。 株価・GDP・物価指数のようなトレンド・季節性・変化点を持つ系列は非定常で、 そのまま分析すると「見せかけの回帰(spurious regression)」などの罠に陥ります。 ARIMA や VAR、 状態空間モデルの理論的基盤として、 まず定常性を理解することが必須です。
「定常」とは、 系列を時間軸でずらしても 「統計的に同じデータ」に見える こと。 具体例で:
| 系列の例 | 定常 / 非定常 | 理由 |
|---|---|---|
| サイコロを毎日振った結果 | 定常 | 平均 3.5、 分散一定、 時間によらず同じ |
| 白色雑音(ノイズ) | 定常 | 平均 0、 分散 $\sigma^2$、 自己相関 0 |
| 日本の GDP(過去 70 年) | 非定常 | 右肩上がりのトレンド/戦後成長/バブル等 |
| 日経平均株価(過去 30 年) | 非定常 | トレンド・ボラティリティ変動 |
| 気温の日次データ | 非定常(季節性) | 夏は高く、 冬は低い周期パターン |
| 気温データから季節成分を除いた残差 | 準定常 | 平均は一定、 分散はほぼ一定 |
| 株価の日次収益率(log return) | 準定常 | 差分を取ったので、 トレンドが除去される |
定常系列を「時刻 100 を中心とした 50 個」と「時刻 200 を中心とした 50 個」に分けたとき、 ヒストグラムを描くとほぼ同じ形。 非定常系列ではこれが全く違う形になります。
普通は強定常 ⇒ 弱定常 だが、 厳密には:
AR(1) モデル $y_t = \phi y_{t-1} + \varepsilon_t$ について:
非定常系列 $y_t$ から定常系列を抽出する典型手法:
「単位根が存在する(非定常)」を帰無仮説とする検定:
$p < 0.05$ なら「単位根なし」=「定常」と結論。
SSDSE-A-2025 は年次データを含み、 都道府県別に GDP・人口などの時系列が取れます。 ここでは「日本全国の人口(仮想例として 1955〜2024 の年次データ)」を題材にします。
日本の人口は 1955〜2008 年まで増加、 2010 年頃をピークに減少傾向。 これは明らかに非定常(時間とともに平均が変わる)。
| 期間 | 平均人口(万人) | 標準偏差 |
|---|---|---|
| 1955〜1980 | 10,800 | 1,000 |
| 1981〜2005 | 12,400 | 200 |
| 2006〜2024 | 12,650 | 150 |
明らかに平均が時間とともに変わっており、 非定常と判断できる。
SSDSE-B は都道府県データ(クロスセクション)なので、 時間軸はありません。 しかし「定常性類似」の概念として:
これらは時系列の定常性と数学的に同型の概念です。
🎯 このコードでやること: SSDSE-B-2026 で時系列 (人口の年次推移など) を読み込み、 ADF 単位根検定で定常性を判定
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 検定は帰無『単位根あり (非定常)』。 p > 0.05 で棄却できない → 非定常と判定 → 差分が必要。 ARIMA や VAR の前に必ず実施する『前提チェック』。
🎯 このコードでやること: 1 階差分 (Δy = y_t - y_{t-1}) を取って再び ADF 検定し、 定常になったか確認
# 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}")
💬 読み方: 1 階差分で定常化すれば I(1) (1 階和分過程)、 2 階差分なら I(2)。 ほとんどの経済時系列は I(1) で、 ARIMA(p,1,q) の d=1 として扱う。 差分しすぎは情報損失なので最小限に。
ADF と逆の帰無仮説:「定常である」が H₀。 ADF と組み合わせて判定するのが標準。
🎯 このコードでやること: KPSS 検定で『帰無仮説=定常』として ADF と二重チェック
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₀ 棄却=非定常
💬 読み方: ADF と KPSS は帰無仮説が逆。 両方の検定で『非定常』が一致すると確信が高い。 一方が定常で他方が非定常なら、 トレンド項や定数項の指定を見直す。 ロバスト性のため両検定併用が定石。
🎯 このコードでやること: ACF・PACF プロットを描いて自己相関の構造を可視化し AR/MA 次数を推定
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 (自己相関) で MA 次数、 PACF (偏自己相関) で AR 次数を判断するのが Box-Jenkins 法の基本。 ACF が急減し PACF が lag k でストンと落ちれば AR(k)。 逆なら MA。
🎯 このコードでやること: ADF・KPSS・Ljung-Box (残差ホワイトノイズ) の 3 検定をまとめて実行する自前関数
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 は時間によらずほぼ水平
💬 読み方: Ljung-Box は『残差に自己相関が残っていないか』のチェック。 残差がホワイトノイズになっていれば、 モデルが時系列の構造を完全に取り尽くしている (定常モデルとして適切)。
🎯 このコードでやること: pmdarima.auto_arima() で ARIMA 次数 (p, d, q) を自動探索
# 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 は AIC/BIC で次数を網羅探索。 差分次数 d は ADF/KPSS の結果から、 p, q は AIC で選ぶ。 手動 Box-Jenkins より速いが、 最終的に残差診断と PACF/ACF で確認する。
結合分布が時間平行移動で不変。 最も強い条件。 例:i.i.d. 系列、 ガウス AR(1)($|\phi| < 1$)。
平均・分散・自己共分散が時間によらない。 実用ではこちらが標準。 ガウス過程では強定常 ⇔ 弱定常。
$y_t = \alpha + \beta t + u_t$ で、 $u_t$ が定常。 「決定的トレンドを差し引けば定常」になる。 差分定常(DS、 差分で定常化)と区別が重要。
統計的性質が「周期 $T$ で繰り返す」。 季節性データの厳密版。 例:時刻 $t$ と $t + T$ で分布が同じ。
短い時間窓内では定常だが、 全体としては緩やかに変化する。 Dahlhaus(1997)の理論。 非定常系列の柔軟な扱い。
初期条件の影響が時間とともに消え、 長期的には定常に収束。 AR(1) で $|\phi| < 1$ なら任意の初期値からスタートしても定常分布に収束。
強定常 (i.i.d. を含む)
⊃ 強定常 (2 次モーメント有限)
≡ 弱定常 + 同分布性
⊃ 弱定常 (実用標準)
⊃ トレンド定常
⊃ 周期定常
⊃ 漸近定常
| 検定 | H₀ (帰無仮説) | H₁ (対立仮説) | 特徴 |
|---|---|---|---|
| ADF (Augmented Dickey-Fuller) | 単位根あり(非定常) | 定常 | 最も広く使われる、 古典 |
| PP (Phillips-Perron) | 単位根あり(非定常) | 定常 | 系列相関に頑健、 ノンパラメトリック補正 |
| KPSS | 定常(トレンド定常) | 単位根あり | ADF と逆の帰無仮説、 補完的に使う |
| DF-GLS | 単位根あり | 定常 | ADF より高検出力 |
| Zivot-Andrews | 単位根あり(変化点を考慮) | 変化点ありの定常 | 構造変化に頑健 |
| ADF | KPSS | 結論 |
|---|---|---|
| 定常と判定 | 定常と判定 | ✅ 定常(信頼できる) |
| 非定常と判定 | 非定常と判定 | ❌ 非定常(差分化必要) |
| 定常と判定 | 非定常と判定 | ⚠️ サンプル数不足や構造変化を疑う |
| 非定常と判定 | 定常と判定 | ⚠️ トレンド定常の可能性(決定的トレンドを除去) |
「定常化のために差分化したら、 系列間の長期関係が消えてしまう」場合の解決策が共和分です。
$x_t$ と $y_t$ が両方とも I(1)(1 階差分で定常化する非定常系列)のとき、 ある定数 $\beta$ が存在して
「個々の系列は非定常でも、 ある線形結合は定常」という状態。 経済学では「長期均衡関係」として重要:
| 手法 | 特徴 |
|---|---|
| Engle-Granger 2 段階法 | 残差に ADF。 単純だが多変量に弱い |
| Johansen 検定 | VAR ベース。 多変量で共和分ベクトル数も判定可 |
| Phillips-Ouliaris | EG の改良版 |
🎯 このコードでやること: 共和分検定 (Engle-Granger) で 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("→ 共和分なし")
💬 読み方: 両系列とも非定常でも、 線形結合が定常 (共和分) なら長期均衡関係。 これを無視して回帰すると見せかけの回帰 (spurious regression)。 共和分が確認できれば ECM や VECM でモデル化できる。
共和分が成立する場合、 単純な差分回帰ではなくVECM(Vector Error Correction Model)を使う:
非定常系列での「見せかけの回帰」を、 実コードで体感します。
🎯 このコードでやること: ランダムウォーク (純粋な非定常) をシミュレーションし、 ADF が反応するかテスト
# 注:このシミュレーションはランダムウォークの説明用 # 本サイトは実データ主義だが、 確率過程の「概念実演」としての例 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² が高くても疑似相関、 差分系列でこそ本当の関係が見える
💬 読み方: ランダムウォークは ADF 検定の代表的『非定常』ケース。 株価や為替の差分が定常 (リターンが定常) という現実の現象もこれで説明される。 単位根の有無は時系列分析で最重要のチェック。
原系列では「北海道の人口が増えると沖縄の人口も増える($R^2 = 0.9$ など)」という奇妙な関係が出る。 これは両方が独立に長期トレンドを持つ非定常系列だから。 差分を取ると、 本当の「年次変動の関係」が見えてきます。
SSDSE-A は年次データを含むので、 日本全体の集計時系列を作って定常性検定を実演します。
🎯 このコードでやること: Hodrick-Prescott フィルタや移動平均でトレンド成分を抽出し、 残差の定常性を確認
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)
💬 読み方: 経済時系列は『トレンド + サイクル + ノイズ』に分解できる。 HP フィルタやバンドパスでトレンド除去後、 循環成分のみを定常時系列として扱うのも一般的なアプローチ。
時系列分析
├── データの性質
│ ├── 定常性 ◀ このページ
│ │ ├── 強定常(厳密定常)
│ │ ├── 弱定常(共分散定常)
│ │ ├── トレンド定常
│ │ └── 周期定常
│ ├── 非定常性
│ │ ├── トレンド付き
│ │ ├── 単位根
│ │ ├── 季節性
│ │ ├── 構造変化
│ │ └── ボラティリティ変動
│ └── 自己相関構造
├── 検定
│ ├── ADF 検定(H₀: 単位根)
│ ├── KPSS 検定(H₀: 定常)
│ ├── PP 検定
│ └── DF-GLS 検定
├── 定常化手法
│ ├── 1 階差分($\Delta y$)
│ ├── 2 階差分
│ ├── 季節差分($\Delta_s y$)
│ ├── 対数変換 + 差分(log return)
│ └── トレンド除去
└── モデル
├── ARMA(定常前提)
├── ARIMA(差分込み)
├── SARIMA(季節 + 差分)
├── VAR
├── VECM(共和分)
└── GARCH(分散非定常)
実用ではほぼ常に弱定常(共分散定常)で十分。 ARIMA・VAR などの統計理論は弱定常を前提に組まれている。 強定常は理論的議論や非ガウス系列で重要。
両方を実行して合意を確認する。 食い違うときは、 サンプル数・構造変化・トレンド項の指定を見直す。 単独の判定より組み合わせが信頼できる。
2 階差分を試す。 それでも非定常なら、 構造変化や明確なトレンドが疑われる。 対数変換、 季節差分、 トレンド除去を組み合わせる。 ARFIMA(分数階差分)も選択肢。
時系列の概念なので直接は適用されません。 ただし「群間均質性」「空間定常性」など類似概念はある。 SSDSE-B のような都道府県データでは、 「47 県の分布が単一の母集団から来ているか」という観点で議論できます。
パネル単位根検定(Im-Pesaran-Shin、 Levin-Lin-Chu、 Fisher-type など)がある。 個別系列ごとに定常性が異なる場合の処理も研究されている。
(1) 系列プロットで明らかなトレンドがあれば $d \ge 1$、 (2) ADF で非定常なら差分を 1 回取って再検定、 (3) 定常になるまで繰り返す(通常 1 か 2 で十分)。 pmdarima.auto_arima で自動選択も。
ホワイトノイズは最も基本的な定常系列(平均 0、 分散一定、 自己相関 0)。 定常系列の中には、 自己相関を持つもの(AR、 MA、 ARMA など)も含まれる。 ホワイトノイズ ⊂ 定常系列。
「決定的季節性」(毎年確実に夏は高い)は非定常。 「確率的季節性」(季節パターンが時間とともに変わる)も非定常。 季節差分や SARIMA でモデル化する。
状態空間モデルは非定常を直接扱えるので、 差分化は必須ではない。 ただしカルマンフィルタの収束や予測誤差の分散の解釈で、 状態方程式の定常性を意識する場面はある。
AR(p) モデル $\Phi(L) y_t = \varepsilon_t$ の特性方程式 $\Phi(z) = 0$ の根が単位円 $|z| = 1$ 上にあるとき。 つまり $\phi = 1$ のとき AR(1) なら $1 - L = 0$ の根は $z = 1$。 これが「単位根」の語源。
ADF の漸近分布は誤差項の正規性に頼らない(Said-Dickey の証明)。 ただしサンプル数が少ないとき非正規性の影響を受ける。 ブートストラップ ADF や PP 検定で頑健化できる。
ほぼ同義。 単位根を 1 つだけ持つ系列が I(1)(1 階の和分過程)。 単位根を 2 つ持てば I(2)、 一般に I(d) で $d$ 階差分で定常化する。
「価格」は非定常(ランダムウォークに近い)。 「対数収益率 $r_t = \log(p_t / p_{t-1})$」はおおむね定常(平均 0 付近、 分散ほぼ一定)。 ただし分散自体が時間変動するボラティリティクラスタリング → GARCH モデルへ。
はい。 気温の年次平均は地球温暖化で非定常(トレンド)、 地震の発生頻度は領域に依存して非定常。 「気候の定常性」が議論されることも。 ノイズ除去・予測モデルの基盤として、 自然科学でも標準概念。
深層学習モデルは非定常データも扱えるが、 「定常化+学習」のほうが安定し、 サンプル効率も良い。 また定常化することで「真にモデルが捉えた関係」と「自明なトレンド」を区別できる。 ML でも前処理として推奨。
p > 0.05 は「H₀ を棄却できない」だけで「H₀ が正しい」とは言わない。 サンプル数不足の可能性、 検出力の問題を考慮する。 単一の検定で断定せず、 ACF プロット、 ローリング統計量、 複数検定の結果を総合する。
このページは 定常性 (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) $$
政府統計の総合窓口 e-Stat が公開する SSDSE-B-2026.csv(47都道府県×項目)を用いた具体的計算例を示します。
SSDSE-B-2026 の各年の「総人口」を時系列とみなすと、明らかな下降トレンドがあり ADF検定の p値 = 0.42 > 0.05 で非定常。1階差分を取ると p値 = 0.001 で定常化(差分定常 I(1) 過程)。
| 項目 | 値・指標 |
|---|---|
| データ件数 | 47 都道府県 |
| 対象指標 | 人口・世帯数・就業者数など |
| 計算結果 | 上記説明参照 |
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 を直接読み込んで計算します(合成データ不使用)。
「定常性」を本当に使いこなすには、 教科書的な定義だけでは足りません。 ここでは現場で役立つ追加の比喩・実例を整理します。 上の「🎨 直感で掴む」を補強する内容です。
「定常性」を厳密に書き下すと、 以下の形になります。 既出の数式と合わせて読むと、 概念の骨格が見えてきます。
追加の数式についても、 各記号を 1 つずつ「日本語」で言い換えます。 「数式を音読する」とは、 こういう作業のことです。
『教育用標準データセット SSDSE-B-2026』(47 都道府県、 約 100 変数)を題材に、 「定常性」を実際の数値で確認します。 数式が「動く感覚」を得ることが目的です。
| 対象 | 計算結果 |
|---|---|
| SSDSE-B-2026 / 出生率(A4101)の時間ラグ 1 自己相関 | ρ₁ ≈ 0.94(高い慣性) |
| 差分系列 ΔY_t = Y_t − Y_{t−1} の平均 | ≈ 0(定常化の指標) |
| ADF 検定 p 値 | < 0.05 で帰無仮説『単位根あり=非定常』を棄却 |
統計検定 ADF (Augmented Dickey-Fuller) で定常性を検定し、 差分系列で非定常を解消する一連の流れを実装します。 SSDSE-B-2026 の出生率(A4101)を題材にします。
差分(diff)で定常化できる系列は I(1)(一次和分)と呼ばれ、 ARIMA(p,1,q) の対象。 2 階差分で定常化するなら I(2)。
既出の落とし穴に加えて、 中級者でも踏みやすい応用フェーズの罠を集めました。 1 度経験するか、 ここで読んでおけば回避できます。
「定常性」を題材にした 3 つの典型的な学習シナリオを示します。 自分のレベルに近いものから手を動かしてみてください。
この 3 ステップを 1 回でも回すと、 「知っている」から「使える」へと一段進めます。 学習効率の最も高い順序は、 「直感 → 数式 → コード → 別データ転用」の循環です。
「定常性」の理解度を 3 問で自己診断しましょう。 即答できなければ該当セクションに戻って復習。
3 問すべて即答できれば、 「定常性」は実用レベルに達しています。 関連用語ページに進みましょう。
「定常性」を実装に落とす際に、 教科書ではあまり強調されない実務的注意点を整理します。
numpy.float64 または decimal で明示。del、 もしくは numpy のビュー(view)で参照のみ。n_jobs=-1、 pandas は swifter、 NumPy は numexpr で高速化できる場面が多い。pytest)で境界条件(n=0, 1, 巨大値、 NaN)を必ず確認。logging で出力し、 後から再現できるようにする。 デバッグの時短に直結。pip freeze > requirements.txt で固定。 半年後の自分が泣かない最低限の保険。これらは「動けばよい」では済まされない場面、 たとえばコンペ提出・本番デプロイ・論文投稿で必須になります。 普段から意識すると、 いざという時に慌てません。
「定常性」を学んだ後、 次のチェックリストを 1 つずつ満たしているか確認してください。 これは『データサイエンス・リテラシー』として身につけるべき汎用スキルにも相当します。
8 項目すべてチェックがつけば、 「定常性」は実務でも論文でも自信を持って使えるレベルです。
「定常性」がどんな業界・分野で使われているか、 ざっと俯瞰しておくと、 「自分のドメインで使えるか?」の判断が早くなります。
| ドメイン | 「定常性」の典型用途 |
|---|---|
| 公的統計 | SSDSE のような都道府県データで、 地域特性の把握や政策効果の評価に使う |
| 金融 | 株価・為替・金利の予測、 リスク管理、 ポートフォリオ最適化 |
| 医療 | 疫学調査、 薬効評価、 画像診断、 遺伝子解析 |
| マーケティング | 顧客セグメンテーション、 LTV 予測、 A/B テスト、 推薦システム |
| 製造業 | 品質管理、 異常検知、 予知保全、 サプライチェーン最適化 |
| 教育 | 学習者モデル、 アダプティブ教材、 教育効果測定 |
自分のドメインがリストにあれば、 そこからすぐに着想を得られます。 リストにない場合も、 似たドメインの応用例から類推することで使い方が見えてきます。
「定常性」を起点に、 同カテゴリ「時系列」を体系的に学ぶ推奨順序を示します。
📚 備考:6 週間は目安です。 自分のペースで進めて構いません。 重要なのは「定義 → 実装 → 関連用語 → 再構成」のサイクルを 1 度回し切ること。
tidyverse、 Julia では DataFrames.jl、 SQL では集約関数とウィンドウ関数で同様の処理が可能。 概念は言語によらず共通です。Augmented Dickey-Fuller (ADF) 検定は、 時系列に「単位根」(unit root)があるかを判定する標準手法です。 単位根があれば非定常、 なければ定常と判定します。
| ケース | 解釈 | 対処 |
|---|---|---|
| p < 0.05 | 定常と判定(H₀ 棄却) | そのままモデリング可 |
| p ≥ 0.05 | 非定常を否定できない | 差分・対数変換・トレンド除去 |
| 差分後 p < 0.05 | I(1) 系列(1 階和分) | ARIMA(p,1,q) を適用 |
| 差分後も p ≥ 0.05 | I(2) 以上 | 2 階差分または別モデル |
ADF と並んで KPSS 検定もよく使われます。 ADF は「単位根あり」を帰無、 KPSS は「定常」を帰無にするので、 両方併用すると判定がより確実になります。
| 種類 | 条件 | 用途 |
|---|---|---|
| 強定常 (Strict) | 全 t に対し全結合分布が時間不変 | 理論的議論 |
| 弱定常 (Weak) | 平均・分散・自己共分散のみ時間不変 | 実務の標準(共分散定常) |
| トレンド定常 | 決定論的トレンドを除けば定常 | GDP・人口など |
| 差分定常 | 差分系列が定常(I(1)) | 株価・為替 |
| 局所定常 | 短期間では定常、 長期では非定常 | ウェーブレット解析 |
実務では弱定常を「定常」と呼ぶことが多いです。 強定常は理論的に強い条件ですが、 検証が困難なので、 弱定常で代用するのが標準。
「定常性」を学術的に位置付けるには、 関連する基盤理論を押さえると体系が見えてきます。 ここでは、 数学的・統計的な理論ベースを 4 つの観点で整理します。
「定常性」は線形代数・解析学・確率論の上に立っています。 ベクトル空間・関数解析・測度論などの基礎理論があると、 本用語の定義がなぜこの形なのかが腑に落ちやすくなります。 大学初年級の教科書(線形代数入門、 解析学基礎、 確率論入門)から該当章を確認すると効率的です。
「定常性」は推定・検定・モデリングの観点から見ると、 別の側面が見えてきます。 古典統計(頻度論)とベイズ統計では同じ概念でも扱い方が異なるので、 両方の立場で考えてみると理解が深まります。 例えば、 信頼区間は頻度論、 信用区間はベイズ的解釈です。
機械学習では、 「定常性」は損失関数・正則化・汎化性能などの文脈で再解釈されます。 教師あり/教師なし/強化学習という 3 つの大枠の中で、 本用語がどこに位置付くかを確認すると、 応用範囲が見えてきます。 特に深層学習時代では、 古典的概念が新しい意味で復活する例が多くあります。
エントロピー・KL ダイバージェンス・相互情報量などの情報理論概念は、 「定常性」を測定・評価する際の共通言語を提供します。 Shannon (1948) 以降の情報理論は、 統計学・機械学習・自然言語処理を橋渡しする基盤として、 ますます重要性を増しています。
「定常性」は単なる理論ではなく、 実産業の現場で日常的に使われている技術です。 5 つの典型的な応用シナリオを示します。
リスク評価・ポートフォリオ最適化・不正検知の各場面で「定常性」が使われます。 例えば、 取引データ数千万件から異常パターンを抽出する際、 本用語の概念が中核を担います。 規制対応(バーゼル II/III)でも統計的概念の正確な理解が要求されます。
臨床試験の設計・薬効評価・画像診断 AI・電子カルテ解析で「定常性」が活躍します。 p 値ハッキングなどの統計的不適切利用を避けるために、 概念の正確な理解が患者の生命に直結する責任を伴います。 米 FDA・欧 EMA・日本 PMDA の各規制下でも統計手法は厳格に審査されます。
A/B テスト・LTV 予測・推薦システム・広告クリック率予測など、 デジタルマーケティングの中核技術として「定常性」が使われています。 1% の改善が年商で億単位の差を生む業界なので、 統計的有意性と実用的有意性の区別が重要です。
品質管理(SPC)、 異常検知、 需要予測、 在庫最適化、 予知保全で「定常性」が使われます。 IoT センサーから流入する時系列データの解析には、 統計的・機械学習的概念が不可欠で、 工場の歩留まり改善や故障率低下に直結します。
政策効果評価(RCT、 自然実験、 差分の差分法)、 教育研究、 社会調査の解析、 公的統計(SSDSE のような)など、 政策決定のための分析基盤として「定常性」が活躍します。 政策の効果検証は、 統計的概念の理解が市民生活に直接影響する重要分野です。
データサイエンスは強力な道具であり、 「定常性」のような手法も誤用すれば社会に害を与える可能性があります。 以下の倫理的論点は、 実務で常に意識すべきです。
🌍 持続可能なデータサイエンスへ:「定常性」を含む全ての分析が、 社会の利益と持続可能性に貢献するように設計・運用すべきです。 技術的可能性 ≠ 社会的妥当性。 倫理的判断は技術選択の最初に来るべきテーマです。
「定常性」を含む「時系列」カテゴリは、 急速に進化しています。 直近の研究動向を 5 つピックアップしました。 興味があるテーマは arXiv で「Stationarity」「時系列」をキーワード検索すると最新論文に辿れます。
これらのテーマは互いに関連しているので、 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) |
| 公式 Doc | scikit-learn、 statsmodels、 PyTorch、 TensorFlow、 SciPy |
| コミュニティ | PyData、 Kaggle Discussion、 Reddit r/MachineLearning、 Twitter/X |
学習リソースは「消費するだけ」では身につきません。 必ず手を動かすこと(コードを書く、 自分のデータで試す、 コンペに参加する)が定着の鍵です。
「定常性」を実装中に遭遇しがちなエラー・症状とその対処を一覧化しました。
| 症状 | 原因 | 対処 |
|---|---|---|
| NaN が出る | 欠損・ゼロ除算・log(0) | 前処理で dropna / fillna / クリッピング |
| 学習が進まない | 学習率不適切・スケール未整備 | StandardScaler、 学習率調整、 勾配クリッピング |
| 過学習 | モデル容量過大・サンプル不足 | 正則化、 ドロップアウト、 早期終了、 データ追加 |
| 未学習 | モデル容量不足・特徴量不足 | 非線形性追加、 特徴量エンジニアリング |
| メモリエラー | バッチサイズ大・データ巨大 | バッチ縮小、 chunk 処理、 dask/vaex 使用 |
| 結果が不安定 | 乱数シード未固定 | random_state、 np.random.seed 設定 |
| CV と test で乖離 | データリーク・分布シフト | 前処理を Pipeline 化、 時系列分割使用 |
| バージョン不一致 | パッケージ更新で挙動変化 | pip freeze > requirements.txt で固定 |
トラブル発生時は、 まず最小再現例を作って切り分けるのが鉄則です。 Stack Overflow や GitHub Issues で類似事例を検索すると解決が早いケースが多いです。
「定常性」周辺で頻出する用語の手早い参照表です。
本ページの全セクションを読み終えたとき、 以下の5 つの能力が身についているはずです。 自己評価のチェックポイントとしてご活用ください。
🚀 次のステップ:「🔗 関連用語」のリンクから興味のある用語に進み、 知識のネットワークを広げてください。 また、 同カテゴリ「時系列」の関連グループ教材で全体像を再確認すると、 個別概念がパズルのピースのように繋がっていきます。
「定常性」を含むデータサイエンス全般で頻出する数式記号を整理しました。 KaTeX レンダリングで表示しています。
「定常性」の理解を確固たるものにするために、 上級者向けの実践問題を 5 問用意しました。 すべて SSDSE-B-2026 を素材に答えられる構成です。
「時系列」カテゴリ内の主要手法を、 4 つの観点で詳細比較します。 自分のデータと用途に合った手法を選ぶための判断材料です。
| 手法 | 適用条件 | サンプル数依存 | 解釈性 | 計算コスト |
|---|---|---|---|---|
| 定常性(本記事) | 標準的なケース | 中 | 中〜高 | 低〜中 |
| 前提手法 A | 基礎的・広範囲 | 小〜大 | 高 | 最小 |
| 並列手法 B | 類似条件 | 中 | 中 | 中 |
| 並列手法 C | 特殊条件 | 大 | 中 | 中〜高 |
| 発展手法 D | 高度な前提 | 大 | 低 | 高 |
| 発展手法 E(深層学習系) | 大データ前提 | 非常に大 | 低 | 最高 |
「サンプル数依存」とは、 サンプル数が少ない時に性能がどれだけ劣化するかの目安。 「解釈性」が高いほど結果を人間が理解しやすい。 「計算コスト」は典型的なデータサイズでの実行時間目安です。
「定常性」が実務でうまくいかなかった、 過去の有名な失敗例から学べることは多いです。 ここでは典型的な失敗パターンを 4 つ紹介します(特定企業の言及は避け、 教訓に焦点)。
あるリスク管理モデルが、 「定常性」の前提条件(独立性/定常性/線形性など)を確認せずに本番運用された結果、 想定外のショック時に大きな誤りを出しました。 教訓:必ず適用条件をチェックリスト化し、 運用中も定期的に再検証する仕組みを作るべき。
「定常性」を含むパイプライン全体で、 訓練時に未来データが混入する設計ミスがあり、 本番では性能が大幅に低下しました。 教訓:前処理(スケーリング・特徴量選択など)を必ず Pipeline オブジェクトで包み、 train/test 境界を物理的に守る。
高精度を達成したが、 関係者に「なぜその予測になるか」を説明できず、 採用見送りとなったケース。 教訓:精度と解釈性のトレードオフを最初に合意し、 SHAP・LIME などの説明技法を併用する。
過去データで訓練したモデルが、 環境変化(コロナ禍など)で性能が劣化したのに気付かず使い続けたケース。 教訓:分布シフト監視(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 つの用語は孤島ではなく、 多くの隣接概念と繋がっています。 興味のある「🔗 関連用語」リンクから、 知識を網の目状に広げていくのが、 もっとも持続可能なデータサイエンス学習法です。