論文中に 「共分散」として登場する用語。
共分散 とは:「x のズレ × y のズレ」の平均。相関係数の分子。符号は関係の向きを示すが、単位依存で強さの比較不可。
共分散(covariance)は、 「2つの変数がどれだけ一緒に動くか」を測る量。 相関係数の 分子 として登場します。
計算:「x のズレ × y のズレ」の平均。 同方向に動けば正、 逆方向に動けば負、 無関係なら 0 付近。
弱点:単位依存。 「身長 cm × 体重 kg」と「身長 m × 体重 g」では、 同じ関係でも共分散の値が大きく変わります。 だから「共分散 = 100 と 10 のどちらが強い関係か」は判断不能。
解決策:単位を打ち消すため、 各変数の標準偏差で割って規格化したのが 相関係数。 これで必ず -1〜+1 に収まり、 違う変数ペアの強さを比較できる。
重要応用:分散共分散行列は PCA・回帰の基礎。 多変量データの構造を表す最重要行列です。
共分散(covariance)は、 2つの変数が同じ方向に動くか、 逆方向に動くかを測る指標。 散布図上で「平均からのズレが正負どちらの組合せか」を集計します。
2変数(X, Y)の平均で4つの象限に分けると:
この積をすべて足し、 n(または n-1)で割ったものが共分散。 正の象限が多ければ正の共分散、 負が多ければ負の共分散。
💡 共分散は分散の2変数版。 分散が「X が X 自身とどう動くか」(同じ変数)を測るのに対し、 共分散は「X と Y がどう一緒に動くか」を測る。
東北6県の食料費と教育費の共分散を計算します。 (x̄ = 80.82, ȳ = 7.73)
| 都道府県 | 食料費 xᵢ | 教育費 yᵢ | xᵢ - x̄ | yᵢ - ȳ | (xᵢ-x̄)(yᵢ-ȳ) |
|---|---|---|---|---|---|
| 青森県 | 77.90 | 6.71 | -2.925 | -1.021 | +2.9864 |
| 岩手県 | 82.00 | 6.75 | +1.173 | -0.986 | -1.1566 |
| 宮城県 | 83.83 | 11.24 | +3.011 | +3.511 | +10.5716 |
| 秋田県 | 78.12 | 4.32 | -2.700 | -3.418 | +9.2286 |
| 山形県 | 84.11 | 7.27 | +3.281 | -0.467 | -1.5322 |
| 福島県 | 78.98 | 10.12 | -1.840 | +2.381 | -4.3810 |
| 合計 | +15.7168 | ||||
$$ s_{xy} = \frac{1}{n - 1} \sum_{i=1}^{n} (x_i - \bar{x})(y_i - \bar{y}) $$
$$ \sigma_{xy} = \mathbb{E}[(X - \mu_X)(Y - \mu_Y)] $$
展開すると:
$$ s_{xy} = \overline{xy} - \bar{x}\bar{y} = \frac{1}{n}\sum x_i y_i - \bar{x}\bar{y} $$
| 記号 | 読み方 | 意味 |
|---|---|---|
| s_xy / σ_xy | エス/シグマ サブ エックスワイ | X と Y の共分散 |
| Cov(X, Y) | カバリアンス エックス カンマ ワイ | 共分散の関数表記 |
| (xᵢ-x̄)(yᵢ-ȳ) | 偏差の積 | 2つの偏差の積 |
共分散の最大の問題は単位に依存すること。 同じデータでも単位を変えると値が変わります:
千円単位だと cov ≈ 8、 円単位だと cov ≈ 8,000,000。 数字だけ見ても「強い関係か弱い関係か」が判断できません。
共分散を、 両変数の標準偏差の積で割ることで単位を消すのが相関係数:
$$ r = \frac{\text{Cov}(X, Y)}{\sigma_X \sigma_Y} = \frac{s_{xy}}{s_x \, s_y} $$
これにより値は必ず -1 ≤ r ≤ +1 の範囲に収まり、 単位に依存しなくなります。 SSDSE 食料費×教育費の場合:
💡 覚え方:「共分散 ÷ 両方の標準偏差 = 相関係数」。 相関係数は正規化された共分散。 これによりどんな変数のペアでも比較可能に。
変数が3つ以上ある場合、 すべてのペアの共分散を行列にまとめたものが共分散行列。
$$ \Sigma = \begin{pmatrix} \sigma_x^2 & \sigma_{xy} & \sigma_{xz} \\ \sigma_{xy} & \sigma_y^2 & \sigma_{yz} \\ \sigma_{xz} & \sigma_{yz} & \sigma_z^2 \end{pmatrix} $$
$$ \text{Cov}(X, Y) = \text{Cov}(Y, X) $$
$$ \text{Cov}(X, X) = \text{Var}(X) $$
$$ \text{Cov}(aX + b, cY + d) = ac \cdot \text{Cov}(X, Y) $$
定数倍は乗算、 加算は影響なし。 単位変換で共分散が変わる原因。
X と Y が独立 ⇒ Cov(X, Y) = 0(逆は成立しない! 共分散ゼロでも非線形に依存することがある)
$$ \text{Var}(X + Y) = \text{Var}(X) + \text{Var}(Y) + 2 \text{Cov}(X, Y) $$
共分散項があるため、 一般には和の分散は単純な和ではない。 ポートフォリオ理論の基礎。
投資の世界で共分散はリスク計算の中核。 Markowitz の現代ポートフォリオ理論(1952)の基礎。
2資産(A, B)に重み w_A, w_B で投資する場合のリスク(分散):
$$ \sigma_p^2 = w_A^2 \sigma_A^2 + w_B^2 \sigma_B^2 + 2 w_A w_B \text{Cov}(A, B) $$
ポイント:共分散が小さい(あるいは負の)資産を組み合わせると、 ポートフォリオ全体のリスクが小さくなる。 これが分散投資の数学的根拠。
$$ \sigma_p^2 = \mathbf{w}^T \Sigma \mathbf{w} $$
w は重みベクトル、 Σ は資産の共分散行列。 機関投資家の最適化計算の中核式。
PCA は共分散行列 Σ の固有値分解で実装:
$$ \Sigma = V \Lambda V^T $$
固有ベクトル V が主成分軸、 固有値 Λ が各軸の分散。 「最も分散が大きい方向」が第1主成分。
クラス内共分散とクラス間共分散の比を最大化する。 共分散構造に基づく分類。
複数の多変量正規分布の組合せでデータ生成過程をモデル化。 各分布が共分散行列を持つ。
ガウス過程回帰では、 「入力空間での近さ」を共分散関数で測ります。 RBFカーネルなど。
共分散行列 Σ を単位行列に変換する前処理。 PCA + 標準化のような効果で、 学習を加速します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | import numpy as np import pandas as pd # 2変数の共分散 x = np.array([1, 2, 3, 4, 5]) y = np.array([2, 4, 5, 7, 9]) # numpy cov_mat = np.cov(x, y) # 2x2 行列 print(cov_mat[0, 1]) # x と y の共分散 # pandas df = pd.DataFrame({'x': x, 'y': y}) print(df.cov()) # 共分散行列 print(df['x'].cov(df['y'])) # 個別の共分散 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | cols = ['食料費', '住居費', '教育費', '光熱費'] cov_matrix = df[cols].cov() print(cov_matrix) # 相関行列に変換 import numpy as np def cov_to_corr(cov): sd = np.sqrt(np.diag(cov)) return cov / np.outer(sd, sd) corr_matrix = cov_to_corr(cov_matrix.values) print(corr_matrix) # pandas で直接 print(df[cols].corr()) |
1 2 3 4 5 6 7 8 9 10 | def portfolio_variance(weights, cov_matrix): # σ_p^2 = w^T Σ w return weights.T @ cov_matrix @ weights w = np.array([0.6, 0.4]) # 60% 株, 40% 債券 returns_cov = np.array([ [0.04, 0.01], [0.01, 0.02] ]) print(portfolio_variance(w, returns_cov)) |
同じデータでも単位を変えると共分散が変わる。 「強い関係か弱いか」を判断するには相関係数を使うこと。
共分散ゼロでも非線形な関係(U字、 周期的)はあり得ます。 共分散はあくまで「線形な共変動」のみを捉える指標。
偏差の積を取るので、 外れ値1つで共分散が大きく動きます。 散布図で外れ値を確認してから判断。
共分散が大きい ≠ 因果関係がある。 第3変数(交絡変数)の可能性を常に考慮。
共分散は線形関係のみを測るため、 非線形関係は数値に反映されない。 散布図と組み合わせて判断。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | # 基本パターン import pandas as pd import numpy as np from scipy import stats import matplotlib.pyplot as plt import seaborn as sns # データ読み込み df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932') # 基本統計量 df.describe() # 可視化 sns.pairplot(df[['食料費', '教育費', '住居費']]) plt.show() |
このページの上にある3つの概念マップ(関係マップ、 包含マップ、 ツリーマップ)でこの概念の位置づけが視覚的に分かります。 関連手法を辿って学習を進めましょう。
統計データ活用コンペティションのSSDSE-B-2026データは、 47都道府県の社会経済データ。 この概念を使って以下のような分析ができます:
| 機能 | Python (pandas) | Python (scipy) |
|---|---|---|
| 要約統計 | df.describe() | stats.describe() |
| 平均 | df.mean() | np.mean() |
| 標準偏差 | df.std() | np.std() |
| 相関 | df.corr() | stats.pearsonr() |
| t検定 | — | stats.ttest_ind() |
| 回帰 | — | stats.linregress() |
| 分布フィッティング | — | stats.norm.fit() |
この概念は、 他の多くの統計概念と密接に関連しています。 ジャストインタイム型学習では、 必要に応じて関連用語へジャンプしながら全体像を構築します。
| グループ | 主要概念 |
|---|---|
| 記述統計 | 平均、 中央値、 最頻値、 分散、 標準偏差、 共分散、 相関係数 |
| 可視化 | ヒストグラム、 散布図、 箱ひげ図、 ヒートマップ |
| 推測統計 | 標本平均、 標準誤差、 信頼区間、 p値、 有意水準 |
| 確率分布 | 正規分布、 t分布、 χ²分布、 F分布、 二項分布 |
| 仮説検定 | t検定、 F検定、 χ²検定、 ノンパラ検定 |
| 回帰 | 単回帰、 重回帰、 OLS、 Ridge、 LASSO |
| 分類 | ロジスティック回帰、 決定木、 SVM、 k-NN |
| 教師なし学習 | クラスタリング、 PCA、 因子分析 |
| 時系列 | ARIMA、 VAR、 指数平滑法、 自己相関 |
| 因果推論 | DiD、 IV、 傾向スコア、 交絡変数 |
| 前処理 | 標準化、 正規化、 欠損値処理、 多重共線性対策 |
| 評価 | R²、 残差、 CV、 RMSE、 効果量 |
論文・記事に登場する用語のリンクで該当箇所へジャンプ:
SSDSE-B-2026 2023年データから、 家計5変数(魚介・肉・野菜・果物・酒類)の共分散行列を計算し、 PCA・マハラノビス距離との関係を見ます。
各変数を 1000円単位にスケールして共分散行列 Σ を計算した例(仮想的な実値):
| 魚介 | 肉 | 野菜 | 果物 | 酒類 | |
|---|---|---|---|---|---|
| 魚介 | 42.3 | 8.1 | 12.4 | 9.7 | 5.2 |
| 肉 | 8.1 | 38.6 | 14.2 | 11.8 | 7.4 |
| 野菜 | 12.4 | 14.2 | 31.9 | 18.5 | 6.8 |
| 果物 | 9.7 | 11.8 | 18.5 | 28.4 | 4.9 |
| 酒類 | 5.2 | 7.4 | 6.8 | 4.9 | 22.6 |
※対角は分散、 オフ対角は共分散。 単位は (千円)²。 すべて正なので「どの食品も一緒に増えやすい」傾向。 これは家計の総支出という共通因子の存在を示唆。
固有値分解 Σ = V Λ V^T を行うと、 固有値の大きい順に主成分が並びます:
第1〜第2主成分で 74% の情報を保持。 共分散行列は多変量データの構造を凝縮した行列です。
マハラノビス距離 $D^2 = (x-\mu)^T \Sigma^{-1} (x-\mu)$ は、 共分散の構造を考慮した「異常さの度合い」。 47県でこの値が大きい県(D > 4 程度)は、 一般的な家計パターンから離れた特異な県と言えます。 沖縄県は酒類消費が独特で、 マハラノビス距離が大きく出る代表例。
身長を cm から m に変えるだけで、 共分散の値は 1/100 倍に。 つまり「Cov = 100」という数字だけでは関係の強さを判断できない。 だから相関係数(共分散 ÷ 両方の標準偏差)で規格化する。 共分散の値の絶対値を異なる変数ペアで比較するのは原則禁止。 比較したいなら必ず相関係数に変換すること。
標本サイズ n が変数数 p より小さい(n < p、 高次元)場合、 標本共分散行列は特異になり逆行列が存在せず、 PCA・マハラノビス・GLS が破綻します。 対策:(1) 主成分回帰、 (2) Ridge 系の縮約(shrinkage)共分散行列、 (3) Ledoit-Wolf 縮約推定(sklearn.covariance.LedoitWolf)、 (4) スパース推定(Graphical Lasso)。 ファイナンス・遺伝子解析で必須。
独立 ⇒ 共分散 = 0 は成立、 しかし逆は成立しない。 例:y = x² で x が標準正規なら Cov(x, y) = 0 だが、 明らかに独立ではない。 線形関係しか測れないのが共分散の本質的限界。 非線形関係には距離相関(distance correlation)、 相互情報量(MI)、 HSIC を使う。 機械学習の前処理で特徴量選択する際は要注意。
共分散は偏差の積の平均なので、 1つの極端な外れ値が大きく影響。 たとえば1点だけが (100, 100) にあると、 残りの点が独立でも共分散が大きく出ます。 対策:(1) ロバスト共分散行列(sklearn.covariance.MinCovDet)、 (2) Spearman 順位相関、 (3) Mahalanobis 距離での外れ値検出と除外。 金融データではブラックスワン事象でこの問題が顕在化。
分母を n とする標本共分散(numpy.cov(..., bias=True))と、 n-1 とする不偏共分散(デフォルト)で値が違う。 小サンプル(n < 20)では差が無視できない。 また pandas の df.cov() はデフォルト不偏(n-1)、 numpy の np.cov() もデフォルト不偏ですが bias 引数で切り替え可能。 ライブラリ間で挙動が違うので必ずドキュメントで確認。
時系列データでは隣接時点の y_t と y_{t+1} に自己相関がある。 これを iid とみなして共分散を計算すると、 標準誤差が過小評価される。 ファイナンスではEWMA 共分散やDCC-GARCH、 計量経済では Newey-West 標準誤差で時間相関を補正。 単純な np.cov は時系列に対しては誤解を招く道具と心得る。
1 2 3 4 5 | import numpy as np cov_matrix = np.cov(X.T) # 各列を変数とみなす(注意:行列の向き) # pandas なら直接 cov_df = df[['魚介', '肉', '野菜']].cov() print(cov_df) |
高次元データや小サンプルでは、 標本共分散より縮約推定の方が安定。
1 2 3 4 | from sklearn.covariance import LedoitWolf, MinCovDet, GraphicalLassoCV lw = LedoitWolf().fit(X) print(lw.covariance_, lw.shrinkage_) # ロバスト共分散(外れ値に強い) |
1 2 3 4 | from sklearn.covariance import EmpiricalCovariance cov = EmpiricalCovariance().fit(X) d_squared = cov.mahalanobis(X) # 各サンプルのマハラノビス距離² print(sorted(d_squared)[-5:]) # 最も外れた5サンプル |
1 2 3 | from scipy.stats import multivariate_normal mvn = multivariate_normal(mean=X.mean(0), cov=np.cov(X.T)) print(mvn.pdf(X[0])) # 観測値の確率密度 |
1 2 3 4 | import numpy as np # 標本ウェイト付き共分散 cov_w = np.cov(X.T, aweights=weights) # 時系列の EWMA 共分散は pandas で:df.ewm(span=20).cov() |
共分散 がデータサイエンスの体系の中でどこに位置するかを、 3つの異なる視点で可視化します。 同じ情報でも見方を変えると気付きが変わります。
🌐 統計・データサイエンス › 記述統計 › ばらつき › 共分散
中心の概念から放射状に、 前提・兄弟・発展形・応用先などの関係性を矢印で結びます。 横の繋がりを見るのに最適。 ノードをドラッグ、 ホイールでズーム、 クリックで遷移。
大きな円が小さな円を包含する Circle Packing 図。 「共分散」は緑色でハイライト。
長方形を入れ子に分割した Treemap 図。 各分野の規模感を面積で比較。 「共分散」は緑色でハイライト。
| マップ | 分かること | こんな時に見る |
|---|---|---|
| 🔗 関係マップ | 手法間の横の関係(前提→発展→応用) | 「次に何を学べばよい?」 学習順序の判断 |
| ⭕ 包含マップ | 分類体系の入れ子構造(上位⊃下位) | 「この手法はどんなジャンルに属する?」 |
| 🌳 ツリーマップ | 分野の規模比較(面積=ボリューム) | 「データサイエンス全体の俯瞰像」 |
💡 ジャストインタイム学習のヒント:3つの視点を行き来することで、 概念を多角的に理解できます。 包含マップやツリーマップはズーム/ドリルダウンで大分類から細部まで探索できます。
本セクションは「共分散」を 47都道府県データ(SSDSE-B-2026)で具体的に確認するための追加教材です。 例として総人口と課税対象所得の共分散を扱います。
共分散を 47都道府県データで直感的に捉えるには、 まず「総人口と課税対象所得の共分散」を思い浮かべます。 東京都・大阪府・神奈川県のように総人口が大きい都道府県ほど、 課税対象所得や就業者数も大きくなる傾向があり、 こうしたデータの「形」を 共分散 は要約します。
たとえば 47都道府県を散布図にすると、 右肩上がりの帯状にデータが並びます。 この「帯の傾き」「帯のばらつき」「帯から外れる外れ値」を表現する道具が、 ここで扱う 共分散 だとイメージしてください。
つまり、 この数式は「47枚のデータ点から、 最も当てはまりの良い 1 本の直線を選ぶ」操作を表現しており、 共分散の本質はこの「集計とフィッティング」にあります。
SSDSE-B-2026 の 47都道府県データから、 「総人口と課税対象所得の共分散」を Python で再現します。 まず一行で読み込めるよう、 引数を直書きしたシンプル版を示します:
# 最小コード(直書き)
df = pd.read_csv('data/raw/SSDSE-B-2026.csv')
続いて、 列名はリポジトリ準拠(A1101 総人口、 A1102 男性人口、 D3201 課税対象所得、 等)の本番コードです。
import pandas as pd
import numpy as np
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', header=[0,1,2])
# 列名を 3 段ヘッダの最下段だけ採用(コード列: A1101, D3201 等)
df.columns = [c[-1] for c in df.columns]
# 2022 年の 47都道府県スナップショット
sub = df[df['年度コード'] == 2022].copy()
x = sub['A1101'].astype(float) # 総人口
y = sub['D3201'].astype(float) # 課税対象所得
# 共分散の基礎統計
x_mean, y_mean = x.mean(), y.mean()
beta1 = ((x - x_mean) * (y - y_mean)).sum() / ((x - x_mean) ** 2).sum()
beta0 = y_mean - beta1 * x_mean
print(f'n = {len(x)}') # 47
print(f'beta1 = {beta1:,.4f}') # 傾き
print(f'beta0 = {beta0:,.4f}') # 切片
print(f'相関係数 = {x.corr(y):.4f}') # 0.95+ になる
# 残差・決定係数も計算
y_hat = beta0 + beta1 * x
resid = y - y_hat
ss_res = (resid ** 2).sum()
ss_tot = ((y - y_mean) ** 2).sum()
r2 = 1 - ss_res / ss_tot
print(f'R^2 = {r2:.4f}')
このコードを実行すると、 47都道府県データから 共分散に関連する係数・指標が直接得られます。 SSDSE-B-2026 が手元にない場合は、 統計データ活用コンペティション公式ページからダウンロードしてください。
共分散は単一の数値だけでなく、 多変量データでは「共分散行列」として頻繁に登場します。 ここでは SSDSE-B-2026 を題材に、 共分散行列の対角化(PCA の前段階)、 標本共分散の不偏性、 そして高次元下での スパース化テクニックを順に押さえます。
共分散行列 Σ を固有値分解すると、 固有ベクトルが 主成分方向、 固有値が 分散の大きさになります。 SSDSE-B-2026 の数値変数群に対して以下を実行すると、 主成分の意味と寄与率を一目で確認できます。
|
標本共分散の分母には n-1 を使う(不偏推定量)か n を使う(最尤推定量)かの 2 つの慣習があります。 SSDSE-B-2026 のように n=47 と小さいデータでは、 分母の違いが約 2% の差を生むため、 ライブラリの仕様 (ddof=1 がデフォルトか) を必ず確認してください。
|
変数の数 p が観測数 n に近い、 あるいは超えると、 標本共分散行列は 特異になり PCA や マハラノビス距離が機能しません。 対策は 3 つ:
|
| 手法 | 仮定 | 向き |
|---|---|---|
| 標本共分散 | n >> p | SSDSE 全体(n=47, p<=30) |
| Ledoit-Wolf | 高次元安定化 | p ≈ n の境界領域 |
| グラフィカル LASSO | 疎な依存構造 | 変数間関係の可視化 |
コンペでは「共分散行列の固有値が極端に小さい場合に PCA が不安定になる」現象を見たら、 まず 縮約推定を試すのが基本動作です。 また、 共分散が単位の影響を受ける点を忘れず、 単位の異なる変数を組み合わせる際には 必ず標準化を入れてから共分散行列を計算しましょう(事実上、 標準化後の共分散行列 = 相関行列)。
共分散行列は理論的には 半正定値(PSD)です。 しかし数値誤差で固有値がわずかに負になることがあり、 マハラノビス距離やコレスキー分解が失敗する原因になります。 SSDSE-B-2026 で対角成分を扱う際の 正定値補正テンプレートを覚えておきましょう。
|
共分散行列はヒートマップとして可視化すると一目で「正の依存」「負の依存」「独立」の構造が見えます。 SSDSE-B-2026 では総人口、 高齢化率、 大学進学率、 完全失業率などの軸で並べると、 人口関連 vs 経済関連のブロック構造が浮き上がります。
|
注意点として、 単位が大きく異なる変数を含む生の共分散行列は 解釈困難です。 「総人口」(数百万)と「失業率」(数%)が同じヒートマップに乗ると、 後者の動きはほぼ見えません。 必ず 標準化(z-score)した上での共分散=相関行列を併記しましょう。
「共分散 = 0」は「無相関」を意味するが、 「独立」を意味するとは限りません。 例えば U字型の関係(X² と X など)では、 共分散はゼロでも明らかな依存関係があります。 この誤解はコンペでも頻発するため、 共分散ゼロを発見しても 非線形依存の可能性を散布図で必ず確認しましょう。
| 関係性 | 共分散 | 独立性 |
|---|---|---|
| 線形に増加 | 正 | ×(依存) |
| 線形に減少 | 負 | ×(依存) |
| U 字 (Y=X²) | 0(理論) | ×(依存) |
| 完全独立 | 0 | ○ |
この表をコンペ提出物に貼っておくと、 「共分散ゼロ ≠ 独立」の指摘に対する反論材料になります。 一方、 多変量正規分布の特殊ケースでは「共分散ゼロ ⇔ 独立」が成立するため、 仮定が成立するか否かを最初に検討する習慣をつけましょう。 SSDSE-B-2026 の各指標は正規性が必ずしも担保されないため、 散布図と Spearman 順位相関の併用が安全策です。
共分散の数値そのものは 単位の積であり、 ビジネスや政策の文脈では直接そのまま示しても理解されにくいです。 そこで、 以下の 3 ステップで「説明可能な指標」に翻訳することを推奨します。
最終的に、 共分散は 多変量解析の入口として捉え、 「ばらつき」「相関」「主成分」「マハラノビス距離」「カルマンフィルター」など、 後段の応用に橋渡しする数学的ツールであることを意識すれば、 用語ページとしての価値が一段と高まります。 関連用語のリンク先(相関、 PCA、 分散、 距離)を往復しながら、 自分なりの「共分散から始まる学習マップ」を作ってみてください。
最後に、 共分散は 確率変数の積の期待値から、 それぞれの期待値の積を引いたものとして定義されます。 この定義を式と日本語の両方で言えるようになれば、 多変量解析の基礎が固まったと判断できます。 自分のノートに 「共分散の 5 通りの説明」を書き出してみるのもおすすめです。