論文一覧に戻る 📚 用語解説(ジャストインタイム型データサイエンス教育)
VAR(ベクトル自己回帰)
Vector Autoregression (VAR)
複数時系列が互いに過去の値で影響し合う構造をモデル化。Granger因果検定の前段。
時系列VARVARベクトル自己回帰

🔖 キーワード索引 — VAR を多角的に理解する

VAR(ベクトル自己回帰)は、 複数の時系列が互いの過去値で影響し合う構造をモデル化する多変量時系列手法です。 関連キーワードを難易度別に整理しました。

🟢 基礎キーワード(まず押さえる)

🟡 中級キーワード

🔴 上級キーワード

🔖 キーワード索引 — セクション早見

「VAR モデル」を理解するための各セクションへ移動できます。

30 秒結論 文脈 直感 数式 記号読み解き 実値計算 Python 実装 落とし穴 関連手法 関連用語 概念マップ

💡 30秒で分かる結論

🍰 まずはやさしく

複数のデータの関係を見る道具です。

未来の値を予測するために使います。

スマホの利用時間と成績の変化などです。

この章ではVARの基本を学びます。

📖 包括的解説 — この概念を完全マスター

📍 学習の3ステップ

  1. 定義を理解する:VAR(p) の連立式と、 係数行列 A が意味するものを確認
  2. 具体例を見る:SSDSE-B-2026 の時系列(総人口・出生数)で statsmodels の VAR を回す
  3. 応用する:IRF・FEVD・グレンジャー因果で変数間の動学関係を解釈

🔧 Python実装パターン

🎯 このコードでやること:SSDSE-B-2026 を時系列として読み込み、 2 変量 VAR(1) を推定して係数行列と残差共分散を確認します。

📥 入力例(SSDSE-B-2026 の 2023 年・47 都道府県から 3 行) 都道府県 A1101(総人口) A4101(出生数) 北海道 5,092,000 24,430 東京都 14,086,000 86,348 沖縄県 1,468,000 12,549 …(全 47 行)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# statsmodels で VAR を最短で回す
import pandas as pd
from statsmodels.tsa.api import VAR

# SSDSE-B-2026(47都道府県 × 年次): 1行目は日本語名なので skiprows=[1]
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', skiprows=[1], encoding='cp932')

# 東京都を時系列として抜き出し、総人口 A1101 と 出生数 A4101 の2変量
tokyo = df[df['Prefecture'] == '東京都'].sort_values('SSDSE-B-2026')
y = tokyo[['A1101', 'A4101']].astype(float)

model = VAR(y)              # 多変量時系列モデル
res = model.fit(maxlags=1)  # VAR(1) を推定
print(res.summary())        # 係数行列 A1・残差共分散を確認
📤 実行例(実測) Summary of Regression Results ================================== Model: VAR Method: OLS Date: Sun, 16, Aug, 2026 Time: 18:58:09 -------------------------------------------------------------------- No. of Equations: 2.00000 BIC: 36.1824 Nobs: 11.0000 HQIC: 35.8286 Log likelihood: -223.026 FPE: 4.28411e+15 AIC: 35.9654 Det(Omega_mle): 2.64478e+15 -------------------------------------------------------------------- Results for equation A1101 ================================================= …(以下略)

📚 統計概念マップでの位置

このページの上にある3つの概念マップ(関係マップ、 包含マップ、 ツリーマップ)で VAR の位置づけが視覚的に分かります。 ARIMA(単変量)→ VAR(多変量)→ グレンジャー因果・SVAR という発展の流れを辿りましょう。

🎯 SSDSE-B-2026 で挑戦

SSDSE-B-2026 は 47 都道府県 × 複数年次の社会経済データ。 年次方向を時間軸として、 VAR で以下のような分析ができます:

※ 1 県あたりの年次点数は限られるため、 ここでは手法の流れを体験する教材例。 実務では十分な期間長(目安 n ≫ k²p)を確保する。

💡 30 秒で分かる結論 — 要点整理

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

🍰 まずはやさしく

データのつながりを分析する手法です。

どのデータが影響したかを探ります。

人口と出生数の変化を調べる例です。

この用語がどう使われるかを確認します。

論文中に 「VAR(ベクトル自己回帰)」として登場する用語。

VAR(ベクトル自己回帰) とは:複数時系列が互いに過去の値で影響し合う構造をモデル化。Granger因果検定の前段。

📍 文脈ボックス — あなたが今見ているもの(完全強化版)

このセクションは「VAR モデル」を扱う 用語ページ です。 統計データ分析コンペティション(2026)の再現教材における中核用語のひとつで、人口 A1101・出生数 A4101 の 2 変量 VAR(1) モデル という観点で SSDSE-B-2026(47 都道府県 × 複数年 × 100 超列)に紐づけられます。

位置づけ:相関線形回帰仮説検定 といった基礎用語群と並列であり、応用としては 内生性IVDIDクラスタリング 等へ繋がります。

🎨 直感で掴む — 完全強化版

🍰 まずはやさしく

分析のための眼鏡のようなものです。

データに隠れた関係をあぶり出します。

都市と地方の人口の差を見る例です。

直感的に仕組みを理解していきましょう。

VAR モデル を一言でいえば「人口 A1101・出生数 A4101 の 2 変量 VAR(1) モデル」。 47 都道府県という小さな母集団でも、 SSDSE-B-2026 の A1101 列に注目すると、 大都市圏と地方の差・人口規模に伴う相対比較など、 様々なパターンが見えてきます。

比喩でいうと、 VAR モデル はデータ分析の「眼鏡」のようなもの。 同じデータでも眼鏡を変えれば、 平均(中心)・分散(ばらつき)・相関(連動)・因果(影響)と、 異なる情報が浮かび上がります。 SSDSE-B-2026 を題材に、 この眼鏡をかけてみるのが本ページの狙いです。

🎨 概念図で押さえる(VAR モデルを視覚で理解)

VAR(ベクトル自己回帰)は複数の時系列が相互に影響し合うシステムを記述するモデルです。 以下 3 点の概念図で「多変量の相互依存」「インパルス応答」「Granger 因果検定の方向性」を視覚的に整理します。

図A: 2 変量 VAR(1) の相互依存構造

VAR(1): y_t = A y_{t-1} + ε_t y₁,t-1 人口 y₂,t-1 出生数 y₁,t 人口 y₂,t 出生数 a₁₁ = 0.85 a₂₂ = 0.78 a₂₁ = 0.12 (人口→出生数) a₁₂ = 0.05 (出生数→人口)

→ VAR(1) では各変数の現在値は、 自分自身と他変数の前期値の線形結合で表現されます。 対角成分(a₁₁, a₂₂)は自己回帰、 非対角成分(a₁₂, a₂₁)はクロス効果。 例えば 47 都道府県の総人口 A1101 と 出生数 A4101 を VAR で扱えば、 「人口は出生数に影響するが、 出生数の人口への影響は限定的」のような非対称な動学関係が定量化できます。

図B: インパルス応答関数 (IRF) — ショックの伝播

人口に +1σ ショック → 12 期先までの影響 人口への影響 (自己応答) 期 (0 → 12) 応答 指数的減衰 出生数への影響 (波及効果) 期 (0 → 12) 3-5 期遅れでピーク

→ インパルス応答関数(IRF)は「ある変数に 1 単位の外的ショックが起きたとき、 各変数の将来値がどう動くか」を可視化します。 自己応答(左)は指数的に減衰、 他変数への波及(右)は数期遅れてピークを迎えるパターンが典型的。 マクロ経済では「金利ショックの GDP への波及」「人口減少の地域経済への影響」など、 政策効果のシミュレーションに使われます。

図C: Granger 因果性 — 予測情報の方向性

Granger 因果検定 — Y の予測に X の過去は役立つか? 制約モデル M₀ Y_t = α + Σ β_i Y_{t-i} + ε Y の過去だけで予測 残差分散: SSR₀ 非制約モデル M₁ Y_t = α + Σ β_i Y_{t-i} + Σ γ_j X_{t-j} + ε Y と X の過去で予測 残差分散: SSR₁ F 検定 SSR₁ << SSR₀ → X は Y を Granger 因果する(p < 0.05)

→ Granger 因果は「X の過去を加えると Y の予測精度が有意に改善するか」を F 検定で判定します。 改善があれば「X → Y への Granger 因果あり」と判断。 ただしこれは予測情報の方向性であり、 真の因果関係ではない点に注意(共通の交絡変数で見かけ上の因果が出る場合あり)。 VAR モデルでは、 すべての変数ペアについて両方向に検定し、 動学関係の方向性ネットワークを描くのが標準手順です。

🎨 概念図で押さえる

VAR(ベクトル自己回帰)は複数時系列の同時モデリング。 時系列の典型形状、 自己相関、 残差プロットで全体像を直感する。

複数変数の時系列
複数時系列の同時挙動を VAR で捉える。 トレンドや共動が見えれば動学関係の存在を示唆。
自己相関 ACF
各変数の自己相関で次数(lag)p の決定指針を得る。 PACF の遮断点が p の候補。
残差プロット
VAR 残差にホワイトノイズ性があれば適合は十分。 Portmanteau 検定で確認。

→ VAR 分析のワークフローは「時系列確認 → 定常化 → 次数選択 → 推定 → 残差診断 → Granger/IRF」。 各図はその主要ステップに対応。

✅ 理解度チェック

  1. VAR(p) における p(ラグ次数)の選択基準を 2 つ挙げよ(ヒント:AIC / BIC)
  2. 定常性が VAR 推定に必要な理由を 1 行で述べよ。
  3. インパルス応答関数(IRF)が示すものは何か?
  4. Granger 因果と「真の因果」の違いを説明できるか?
  5. VAR と VECM(誤差修正モデル)の使い分けは?

→ 全項目に答えられれば、 計量経済学の時系列パートは応用編まで到達可能。

📐 数式または定義 — 完全強化版

🍰 まずはやさしく

数式で表したデータのルールです。

過去の値から今の値を計算します。

部活の練習量と試合結果の関係などです。

数式の中にある記号の意味を解説します。

VAR モデル の代表的な定義式は次のとおりです。

$$ \mathbf{y}_t = \mathbf{c} + \mathbf{A}_1\,\mathbf{y}_{t-1} + \cdots + \mathbf{A}_p\,\mathbf{y}_{t-p} + \mathbf{u}_t $$

ここで使われる記号や演算の意味は次節で言葉に翻訳します。

🔬 数式を言葉で読み解く — 完全強化版

数式の各記号を、日本語の意味に変換します。

🧮 実値計算例 — VAR(1) を手で解いて statsmodels と照合する

VAR の推定は「各変数を、 全変数の 1 期前の値で回帰する」だけです。 短い 2 変量系列を使って、 係数行列 A₁ を最小二乗(OLS)で手計算し、 statsmodels の結果と一致することを確かめます。

① データとモデル

y_t = [人口, 出生数] (教材用の短い系列, 単位は任意) t : 0 1 2 3 4 人口 : 1.0 1.2 1.5 1.7 2.0 出生 : 0.8 0.9 1.0 0.9 1.1 VAR(1): y_t = c + A₁ · y_(t-1) + u_t → 各行を「切片 + 1期前の人口 + 1期前の出生数」で OLS 回帰するだけ

② OLS で係数行列 A₁ を推定(numpy)

🎯 このコードでやること:ラグ付き説明変数 X=[1, y_(t-1)] を作り、 np.linalg.lstsq で切片 c と 2×2 係数行列 A₁ を一括推定します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import numpy as np

# 教材用の短い2変量系列(総人口・出生数を標準化したイメージ, 単位は任意)
# y_t = [人口, 出生数]
Y = np.array([
    [1.0, 0.8],
    [1.2, 0.9],
    [1.5, 1.0],
    [1.7, 0.9],
    [2.0, 1.1],
], dtype=float)

# VAR(1): y_t = c + A1 @ y_{t-1} + u_t
# ラグ付き説明変数 X = [1, y_{t-1}] と目的変数 Y_t を作る
Yt   = Y[1:]          # t = 1..4
Ylag = Y[:-1]         # t = 0..3
X = np.column_stack([np.ones(len(Ylag)), Ylag])   # 切片 + ラグ

# 各行が [c_i, a_i1, a_i2] となる係数を OLS で一括推定
B, *_ = np.linalg.lstsq(X, Yt, rcond=None)
c  = B[0]        # 切片ベクトル
A1 = B[1:].T     # 2x2 係数行列
print("切片 c =", c)
print("係数行列 A1 =\n", A1)
📤 実行例(実測) 切片 c = [0.35909091 1.275 ] 係数行列 A1 = [[ 1.12121212 -0.3030303 ] [ 0.33333333 -0.83333333]]

③ statsmodels の VAR で同じ結果になるか照合

🎯 このコードでやること:同じ系列に statsmodels の VAR(1) を当て、 手計算の A₁・c と一致することを確認します。

1
2
3
4
5
6
7
from statsmodels.tsa.api import VAR
import pandas as pd

y = pd.DataFrame(Y, columns=['pop', 'birth'])
res = VAR(y).fit(1)          # 同じ VAR(1) を statsmodels で
print(res.coefs[0])          # A1(手計算の A1 と一致)
print(res.intercept)         # 切片 c と一致
📤 実行例(実測) [[ 1.12121212 -0.3030303 ] [ 0.33333333 -0.83333333]] [0.35909091 1.275 ]

💬 手計算(OLS)と statsmodels の coefs[0]intercept は同じ値になります。 VAR の推定が「変数ごとの OLS を束ねただけ」であることが体感できます。

④ 読み取り方

🐍 Python 実装 — statsmodels で VAR の標準ワークフロー

実データ(SSDSE-B-2026)で「読み込み → 定常性 → 次数選択 → 推定 → IRF・因果」という VAR の標準手順を辿ります。

① データ読み込み(SSDSE-B-2026 を時系列化)

📥 入力例(SSDSE-B-2026 の 2023 年・47 都道府県から 3 行) 都道府県 A1101(総人口) A4101(出生数) 北海道 5,092,000 24,430 東京都 14,086,000 86,348 沖縄県 1,468,000 12,549 …(全 47 行)
1
2
3
4
5
6
7
8
9
import pandas as pd
from statsmodels.tsa.api import VAR
from statsmodels.tsa.stattools import adfuller, grangercausalitytests

# 1) 読み込み(cp932 / 1行目=日本語名を skiprows で除外)
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', skiprows=[1], encoding='cp932')
tokyo = df[df['Prefecture'] == '東京都'].sort_values('SSDSE-B-2026')
y = tokyo[['A1101', 'A4101']].astype(float)   # 総人口・出生数
y.columns = ['pop', 'birth']

② 定常性チェック(ADF 検定)と階差化

1
2
3
4
5
6
7
# 2) 定常性チェック(ADF検定)— 非定常なら階差をとる
for col in y.columns:
    stat, p, *_ = adfuller(y[col])
    print(f'{col}: ADF p = {p:.3f}')

# 非定常(p が大きい)なら1階差分で定常化してから VAR にかける
y_diff = y.diff().dropna()
📤 実行例(実測) pop: ADF p = 0.988 birth: ADF p = 0.999

③ ラグ次数の選択(AIC / BIC)

1
2
3
4
5
6
7
8
# 3) ラグ次数の選択(AIC / BIC)
# 東京都の 12 年ぶんしか無く、1 階差分後は 11 観測。2 変数の VAR では
# maxlags=3 だと推定に必要な観測数が足りないので 2 までにする
model = VAR(y_diff)
sel = model.select_order(maxlags=2)
print(sel.summary())          # AIC/BIC/FPE/HQIC が最小の次数を確認
p = int(sel.aic)              # AIC 最小のラグ次数を採用(fit には int を渡す)
print('採用ラグ p =', p)
📤 実行例(実測) VAR Order Selection (* highlights the minimums) ================================================= AIC BIC FPE HQIC ------------------------------------------------- 0 37.56 37.60 2.054e+16 37.46 1 37.46 37.59 1.950e+16 37.17 2 37.20* 37.42* 1.896e+16* 36.72* ------------------------------------------------- 採用ラグ p = 2

④ 推定・インパルス応答・グレンジャー因果

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
import matplotlib.pyplot as plt   # irf.plot() / fevd().plot() の描画に必要

# 4) 推定・診断・応用
res = model.fit(p)
print(res.summary())                    # 係数・残差共分散

# インパルス応答関数(IRF): pop へのショックが birth に伝播する経路
irf = res.irf(10)                        # 10期先まで
irf.plot(orth=False)

# 予測誤差分散分解(FEVD)
res.fevd(10).plot()

# グレンジャー因果性: pop の過去は birth の予測を改善するか
grangercausalitytests(y_diff[['birth', 'pop']], maxlag=p)
📤 実行例(実測) Summary of Regression Results ================================== Model: VAR Method: OLS Date: Sun, 16, Aug, 2026 Time: 18:58:09 -------------------------------------------------------------------- No. of Equations: 2.00000 BIC: 37.4169 Nobs: 9.00000 HQIC: 36.7248 Log likelihood: -182.931 FPE: 1.89587e+16 AIC: 37.1977 Det(Omega_mle): 7.83496e+15 -------------------------------------------------------------------- Results for equation pop =================================================== …(以下略)

💡 出力の読み方

🎮 触って理解する — 2変数VAR(1)シミュレータ

2 変数 VAR(1) モデル $y_t = A\,y_{t-1} + \varepsilon_t$ の係数行列 $A$ の 4 成分をスライダーで動かすと、 生成される 2 系列(上図)とインパルス応答(下図)がリアルタイム更新されます。 「変数1にショックを与える」ボタンを押すと、 変数1 に与えたショックが a₂₁ を通じて変数2 に波及して減衰していく様子が観察できます(上図で細線=ショックなしの基準経路、 太線=ショックあり)。 上図をクリック / タッチすると、 その時点にショックを注入できます。


固有値: / max|λ| =
IRF: 変数2 の最大応答 =

上図:生成された 2 系列(同一乱数系列で再現。 ▼ 印 = ショック注入時点。 図をクリック/タッチで移動)

下図:インパルス応答関数(IRF) — 変数1 への大きさ 1 のショックに対する両変数の反応(雑音なしの厳密計算 $A^h e_1$)

🧪 実験レシピ — この順に触ると VAR の本質が分かる

  1. 波及を見る:初期値(a₂₁ = 0.30、 a₁₂ = 0)でショックボタンを押す。 変数1(青)が跳ね、 1 期遅れて変数2(緑)が持ち上がり、 両方とも減衰する。 これがインパルス応答の実体。
  2. 波及を切る:a₂₁ を 0 にするとショックは変数1 の中だけで減衰し、 変数2 は無反応になる。 2 変量 VAR(1) では「a₂₁ = 0」がちょうど「変数1 は変数2 をグレンジャー因果しない」に対応する。
  3. 振動させる:a₁₂ = −0.5、 a₂₁ = 0.5 のように符号を逆にすると固有値が複素数になり、 系列と IRF が減衰振動する(景気循環のモデル化と同じ仕組み)。
  4. 発散させる:a₁₁ を 1.0 以上に上げる、 または相互影響を強めて max|λ| ≥ 1 にすると、 系列が爆発する。 安定条件(全固有値の絶対値 < 1)の破れを目で確認できる。

💡 直感 — 複数系列が「お互いの過去」に依存する

AR(1) は「今日の自分 = 昨日の自分 × 係数 + 雑音」でした。 VAR(1) はその行列版で、 「今日の自分たち(ベクトル)= 昨日の自分たち × 行列 A + 雑音」。 行列 A の対角成分は各変数の粘り強さ(自己持続)、 非対角成分は変数間の波及経路です。 単回帰を 2 本別々に推定するのと違い、 VAR は「人口の過去が出生数に効き、 出生数の過去が人口に効く」という双方向のフィードバックを 1 つの連立システムとして扱えるのが本質です。 上のシミュレータで a₁₂ と a₂₁ の両方を正にすると、 2 系列が互いを追いかけ合って共動する様子が見えます。

⚠️ よくある落とし穴(シミュレータで確認できるもの)

🚀 発展 — シミュレータの先にあるもの

⚠️ VAR の落とし穴 — 実務で必ず引っかかるポイント

① 非定常データにそのまま VAR をかける

VAR は定常性を前提とします。 単位根を持つ(トレンドのある)系列をそのまま入れると、 見せかけの回帰(spurious regression)になります。 ADF / PP 検定で確認し、 非定常なら階差をとるか、 共和分があれば VECM を使います。

② 過剰なパラメータ化(次元の呪い)

VAR(p) のパラメータ数は概ね k²p(k=変数数)。 変数やラグを増やすと急増し、 標本が足りないと推定が不安定になります。 目安は n ≫ k²p。 高次元では BVAR / FAVAR / Sparse VAR を検討します。

③ VAR 係数を「因果」と誤読する

VAR の係数は予測上の関係であり、 構造的な因果ではありません。 同時点の因果方向を論じるには SVAR による識別(Cholesky 分解や符号制約)が必要です。

④ インパルス応答の変数順序依存

直交化 IRF は Cholesky 分解の変数順序で結果が変わります。 「どの変数が同時点で先に動くか」という仮定が入るため、 順序の根拠を明示し、 順序を入れ替えた頑健性チェックを行いましょう。

⑤ ラグ次数を規準だけで機械的に決める

AIC は大きめ、 BIC は小さめのラグを選ぶ傾向。 選んだ後は残差診断(Portmanteau 検定で系列相関が消えているか)を必ず確認します。 残差にホワイトノイズ性がなければラグ不足のサインです。

🗺️ 統計手法選択フローチャート

Q1: 何を知りたい?

Q2: データの種類は?

Q3: サンプルサイズは?

Q4: 仮定は?

📏 効果量の参照表

p値だけでなく効果量も併記するのが現代統計の標準。 主要な指標と Cohen の解釈基準:

統計量 効果量
2群平均差Cohen's d0.20.50.8
相関r0.10.30.5
線形回帰0.020.130.26
ANOVAη² (eta²)0.010.060.14
χ²Cramér's V0.10.30.5
ロジスティックOdds Ratio1.52.54.0

🚀 実務応用の深掘り

典型的なプロジェクトの流れ

  1. 問題理解:ステークホルダーとの対話、 KGI/KPI 設定
  2. データ収集:内部DB、 公的データ(SSDSE等)、 API
  3. EDA:データの全体像把握、 異常検出
  4. 仮説立案:ドメイン知識からの仮説
  5. モデリング:シンプルから複雑へ段階的に
  6. 検証:CV、 ホールドアウト、 A/Bテスト
  7. 解釈:可視化、 SHAP、 部分依存プロット
  8. 展開:本番デプロイ、 監視

ベストプラクティス

論文・コンペでよく使う言い回し

日本語 英語
統計的に有意statistically significant
効果量effect size
95%信頼区間95% confidence interval (CI)
標本サイズsample size
検出力statistical power
第1種の誤りType I error / false positive
第2種の誤りType II error / false negative
多重比較問題multiple comparisons problem
過学習overfitting
汎化性能generalization
交差検証cross-validation (CV)

統計データ活用コンペでのコツ

🗺️ 概念マップ — 3つの視点で体系を理解する

VAR(ベクトル自己回帰) がデータサイエンスの体系の中でどこに位置するかを、 3つの異なる視点で可視化します。 同じ情報でも見方を変えると気付きが変わります。

📍 体系階層のパス

🌐 統計・データサイエンス › 時系列 › 予測 › VAR(ベクトル自己回帰)(複数系列を同時に扱う自己回帰)

① 🔗 関係マップ — 「他の手法とどう繋がっているか」

中心に VAR(ベクトル自己回帰) を置き、 そこから 時系列分析・ARIMA・指数平滑法 計 3 個の用語へ、 前提・兄弟・発展形といった関係を矢印で結んでいます。 線がどちら向きかを見れば、 先に読むべき用語あとから読む用語が分かります。 ノードはドラッグで動かせ、 ホイールでズーム、 クリックでその用語のページへ遷移します。

凡例:現在の用語上位カテゴリ兄弟(並列)前提発展形応用先2階層先

② ⭕ 包含マップ — 「どのカテゴリに含まれているか」

大きな円が小さな円を包含する Circle Packing 図。 「VAR(ベクトル自己回帰)」は緑色でハイライト

📍現在地:統計・データサイエンス

③ 🌳 ツリーマップ — 「面積で見るボリューム比較」

長方形を入れ子に分割した Treemap 図。 各分野の規模感を面積で比較。 「VAR(ベクトル自己回帰)」は緑色でハイライト

🎯 3つのマップの使い分け

マップ 分かること こんな時に見る
🔗 関係マップ手法間の横の関係(前提→発展→応用)「次に何を学べばよい?」 学習順序の判断
⭕ 包含マップ分類体系の入れ子構造(上位⊃下位)「この手法はどんなジャンルに属する?」
🌳 ツリーマップ分野の規模比較(面積=ボリューム)「データサイエンス全体の俯瞰像」

💡 3 つの図は同じ位置関係を別の角度から描いています。 関係マップは VAR(ベクトル自己回帰)隣に何が並ぶかを、 包含マップとツリーマップは 統計・データサイエンス予測 → VAR(ベクトル自己回帰) という入れ子の位置を示します。 「予測には他に何があったか」を思い出したいときは包含マップを、 「次に何を読むか」を決めたいときは関係マップを開いてください。

🗺 概念マップ — 完全強化版

🔗 隣接手法への橋渡し

VAR (Vector AutoRegression、 ベクトル自己回帰) は多変量時系列の予測・因果分析の中核手法で、 以下と接続する。

SSDSE-B-2026 の年次データで「総人口 A1101 → 出生数 A4101」の関係を VAR(p) で推定し、 グレンジャー因果性で「先行関係」を統計的に検証する流れが標準。 ラグ次数 p は AIC/BIC で選定する。

🌳 手法選択フロー

「var」を含む手法選択は、 データの性質・分析目的・運用制約の 3 軸で決まる。 以下に典型シナリオと対応する手法の組合せを示す。

VAR の典型シナリオ別 手法選択

シナリオ重視する観点候補手法
変数 1 本のみ (例: 県別 GDP 単独予測)単変量、 ラグと階差で十分ARIMA(p,d,q) / AR(p) / 指数平滑
変数 2-10 本、 全て定常 (例: 失業率・物価・金利)相互フィードバック / インパルス応答VAR(p) + AIC でラグ選定 / IRF
変数が非定常だが共和分関係あり長期均衡を保ちつつ短期動学VECM (誤差修正モデル) / Johansen 検定
変数が 10 本以上 (高次元、 例: 47 都道府県 GDP)パラメータ爆発 (p×k² 個)Bayesian VAR / FAVAR / Sparse VAR (LASSO)
構造的解釈が必要 (因果方向の同定)同時性のある外生ショック分離SVAR (構造 VAR) / Cholesky 分解 / 符号制約
レジーム変化・季節性が顕著非線形 / 状態依存Markov-Switching VAR / 状態空間モデル / VARMAX

選んだ後の検証ステップ

  1. 前処理確認: 標準化 / 欠損処理 / カテゴリ変数のエンコード が適切か
  2. ハイパラ調整: 交差検証で安定する値を選ぶ
  3. 性能評価: タスクに応じた指標 (RMSE / Accuracy / F1 / AUC / シルエット等) を複数併用
  4. 頑健性チェック: 別手法 / 別シードで結果が大きく違わないか確認
  5. 解釈: 結果を分野知識と照らし合わせ、 意味のある発見になっているか検討

📝 補足:直感・落とし穴・発展をもう一段深く(追記)

すでに上の各セクションで直感・落とし穴・発展を扱っていますが、 ここでは SSDSE-B-2026 の実測値(東京都 2012–2023 年の 12 時点) を使って、 とくに初学者が VAR で踏みがちな罠を「数字で」体感できるよう補足します。

🎨 直感 — VAR は「会話の書き起こし」

複数人の会話を思い浮かべてください。 いま誰かが発する一言は、 直前に自分が言ったこと相手が言ったことの両方に反応して決まります。 VAR(1) はまさにこの「1 つ前の発言(ラグ 1)を全員ぶん見て、 次の一言を予測する」仕組み。 係数行列 A の対角成分は「自分の直前の発言をどれだけ引きずるか(粘り)」、 非対角成分は「相手の発言にどれだけ引っ張られるか(波及)」です。 単回帰を別々に 2 本引くのと違い、 VAR は全員の発言を 1 つの連立システムとして同時に扱うため、 「A が B に効き、 B も A に効く」という双方向の会話(フィードバック)を切り捨てずに表現できます。

⚠️ 実データで踏む落とし穴(東京都 2012–2023, SSDSE-B-2026 実測)

東京都の 総人口 A1101出生数 A4101 を年次で並べると、 実測でこうなっています(抜粋・単位は人)。

年 総人口 A1101 出生数 A4101 2012 13,234,000 107,401 2015 13,515,271 113,194 2019 14,007,000 101,818 2023 14,086,000 86,348 (12 時点。 人口は増加トレンド、 出生数は 2015 年頃を境に減少トレンド)

※ 上記の相関・係数は SSDSE-B-2026(東京都・2012–2023)の実測値から算出。 なお図A のシミュレータで表示している a₁₁=0.85 等の係数は、 挙動を示すための架空の値です。

🚀 発展 — 「係数を読む」から「構造を語る」へ

🔗 関連ページ(本ページ内リンクの再掲・実在ページのみ)