notes
Tools

R² (決定係数)

fit がデータをどれくらい説明できるかの指標。SS_res / SS_tot の比で、1.0 が完璧、0 が「平均を返すだけ」

要点: 。fit がデータの分散のうち何割を説明できたかを表す指標。1.0 = 完璧、0 = fit なしと同等 (データの平均を返すだけ)、負値 = fit が平均より悪い。

定義#

  • : 観測値
  • : fit の予測値
  • : 観測値の平均
  • 分子: 残差平方和 (SS_res, sum of squared residuals)
  • 分母: 全変動 (SS_tot, total sum of squares)

数値の目安#

R² 値意味
1.0完璧 fit (残差 0)
0.95+実験誤差レベルまで fit
0.8-0.95良い fit
0.5-0.8有意だがノイズ多め (低 SNR 系では普通)
0.3-0.5データ不足 or モデルが構造的に合わない
< 0.3fit 失敗
0.0fit なしと同等 (平均を返してるだけ)
< 0.0fit が平均より悪い (LS 以外で起きうる)

直感#

「データの分散」を、モデルは何割説明できたか。

  • を予測値としても SS_tot だけ残差が残る (これが baseline)
  • fit ができれば SS_res < SS_tot になる
  • 割合 (1 - SS_res/SS_tot) が R²

何が R² を下げるか#

1. ノイズ (SNR 低)#

観測に測定ノイズが乗ると、モデルが真に正しくても残差にノイズが乗る → R² 下がる。

例: 低摩擦機構で friction fit

  • 真の signal (duty 変動幅) が 0.03 duty しかない
  • ノイズが 0.005 duty あると、R² は 0.7 前後で頭打ち
  • 高摩擦機構で signal 幅 0.3 なら同じノイズでも R² 0.95+ 出せる

2. モデルの構造誤り#

データが sign(v) + v² に従うのに sign(v) + v で fit → R² 頭打ち。

症状: サンプル数増やしても R² 上がらない、残差プロットに系統誤差 (curve, drift) が見える。

3. 外れ値#

1 個の外れ値で R² が急落することも。ロバスト fit (Huber loss 等) で緩和。

4. サンプル数不足#

n < 5 くらいだと R² の分散大 (統計的に信頼できない)。

何が R² を上げすぎるか (要注意)#

Over-fit#

パラメータ数を増やせば R² は必ず上がる (最悪 R² = 1、n パラメータで n サンプル完全フィット)。モデルの正しさとは別。

対策:

  • adjusted R² (): パラメータ数でペナルティ
  • cross validation: 別データで R² 見る

単調変換で見せかけの高 R²#

を vs に変換 → R² 大きく変わる。何 vs 何の R² かを明示。

FF 校正での用途#

mech_ff_calibration の sanity check:

sanity:
  r2_min: 0.5   # これ未満は fit 拒否
  • 0.5 は「有意な fit」の下限
  • 低摩擦機構では 0.3 に下げる調整も可
  • ただし R² < 0.3 は「そもそも friction が測れない機構」の可能性 → データ変動幅を確認

実装 (C++)#

double mean = std::accumulate(y.begin(), y.end(), 0.0) / y.size();
double ss_tot = 0, ss_res = 0;
for (size_t i = 0; i < y.size(); ++i) {
  const double y_fit = model_predict(x[i]);
  ss_res += (y[i] - y_fit) * (y[i] - y_fit);
  ss_tot += (y[i] - mean) * (y[i] - mean);
}
double r2 = (ss_tot > 1e-12) ? (1.0 - ss_res / ss_tot) : 0.0;

ゼロ除算注意: SS_tot が 0 (全観測値が同じ) の時は R² 定義できない → 0 or NaN を返す。

R² と他の指標#

指標意味使い分け
R²分散の説明割合fit の全体品質 (0-1 で直感的)
RMSE残差の RMS物理単位で誤差を見たい
MAE残差の絶対値平均外れ値に頑健
χ² (chi-squared)誤差の重み付き二乗和各点の誤差分散が既知の時
BIC/AIC尤度 + パラメータ数ペナルティモデル選択

関連#

最終更新:

On this page