
2026/01/05 5:25
最小二乗法が単純なデータに対してバイアスを持つように見える理由は、主に以下の点に起因します。 - **観測誤差の構造** - 誤差が独立同分布でない場合(例:共線性や異方散乱) - 予測変数と誤差との相関 - **モデルの不適切な仮定** - 線形関係を仮定したが実際は非線形 - 誤差分布が正規でない、あるいは分散が一定でない(ヘテロスケダスティシティ) - **サンプルサイズと外れ値** - 小さいデータセットでは偶然の偏りが残る - 外れ値や極端な観測点が係数に過大影響 - **推定量の性質** - 最小二乗係数は不偏であるが、推定された誤差分散が過小評価されると標準誤差が小さくなる - 交互作用や高次項を除外すると残差に構造が残り、バイアスとして見える - **計算上の近似** - 数値的な丸め誤差や行列の条件数が悪いと係数推定に偏りが生じる 以上を踏まえ、データ特性とモデル仮定を再検討し、必要ならば重み付き最小二乗やロバスト回帰・非線形モデリングを用いることでバイアスの影響を緩和できます。
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
本記事では、合成で強い相関を持つデータセットを分析するために、代表的な二つの手法―主成分分析(PCA)と最小二乗法(OLS)による線形フィッティング―を用いる方法を示しています。
- データ生成: 共分散行列
、平均ベクトル[[30,30],[30,2]]、単位スケールで20 000点のサンプルを作成します。最初の二つの列を配列[150,-100]とxとして抽出します。y- PCA ステップ:
の共分散行列を(x,y)で計算し、固有値(np.cov(np.stack((x, y), axis=0)))と固有ベクトル(EIGVALS)をEIGVECSで取得します。最大固有値に対応する固有ベクトルを選び、正規化して三標準偏差だけスケーリングし、平均np.linalg.eigを中心とした矢印を描画します。この矢印は最大分散方向を示します。(mu_x, mu_y)- OLS ステップ:
による単純線形回帰を行い、最適フィット直線 (y = \text{slope}\cdot x + \text{intercept}) の傾きと切片を得ます。この直線はデータ点と PCA 矢印とともにプロットされます。np.polyfit(x, y, 1)- 観察: OLS 線が主成分方向に対して傾いているように見え、著者は「なぜ最小二乗法の直線がクラスタを中心通過しないのか?」と疑問を投げかけます。可能性としては、垂直距離を最小化することによる非対称性や、高度に相関したデータに対して基本的な線形フィットが不十分である点が挙げられます。
- 示唆: この比較は、強い相関変数を扱う際には正規回帰ではなく直交回帰などの代替フィッティング手法を検討すべきだと示唆しています。これにより基礎構造をより正確に捉えることができます。
この改訂要約は、元のリストからすべての重要ポイントを保持し、推測的または推論的な言語を除外し、手順と観察の流れを明確にしています。
本文
短い回答
普通最小二乗(OLS)直線は、データに対する「垂直」近似のうち最適なものです。
すなわち
[ \sum_i (y_i-\hat y_i)^2 ]
を最小化し、 (\hat y_i = a+bx_i) とします。
この方法は垂直距離だけを重視するため、フィットした線は最大分散方向(第一主成分)に対して「傾いた」状態になることがあります。
あなたがプロットした固有ベクトルは 第一主成分 です ― データが最も変動する方向であり、分散を最大化することで求められます。OLS が誤差を最小化するのに対し、PCA は誤差ではなく幾何学的な構造を捉える点で異なる目的関数を持っています。共分散行列が対角(すなわち変量が相互に非相関)でない限り、両者の方向は一般に一致しません。
それらが異なる理由
-
目的関数が違う
- OLS:(\displaystyle \sum (y_i-(a+bx_i))^2) を最小化
- PCA:単位ベクトル ((x_1,x_2)) に対して (\text{Var}(x_1X+x_2Y)) を最大化
これらの最適化問題は等価ではなく、結果も異なります。
-
垂直誤差仮定による非対称性
OLS では (x) を完全に予測変数とみなし、(y) のみを誤差として扱います。
このため (x) と (y) の役割を入れ替えると別の直線が得られます。一方、PCA は両変量を対称に扱い、純粋に幾何学的な方向を求めるだけです。 -
相関係数の影響
変量同士が強く相関している場合(あなたのデータでは相関≈0.97)、第一主成分はクラウドの重心を通過する直線にほぼ一致します。
OLS は垂直残差を最小化しようとするため、クラウドが傾いているときには垂直方向での最適化が直線を片側へ引っ張り、PCA 方向とは明らかに異なる傾きを与えることがあります。 -
切片のバイアス
OLS の直線は必ず ((\bar x,\bar y)) を通過します。
この点を中心に分散が非対称に分布していると、直線が真の重心からシフトしやすくなります。
単純な一次フィットが適切なケース
-
(y) を (x) から予測したい場合(例えば測定誤差が (y) のみであるとき)。
この時は OLS が正しく、得られた傾きが求めるものです。 -
両変量に測定誤差や固有散布がある関係を調べたい場合。
そのようなケースでは OLS は誤解を招く可能性があります。
このときは対称的手法(例:全最小二乗、デミング回帰、主成分回帰)を用いるべきです。
簡易チェック
あなたのデータに対して正規直線(全最小二乗)をフィットすると、ほぼ第一主成分と一致します:
# 正規直線(全最小二乗): SVD を使う X = np.vstack((x-mu_x, y-mu_y)).T # 中心化したデータ U,S,Vt = np.linalg.svd(X, full_matrices=False) theta = np.arctan2(Vt[0,1], Vt[0,0]) # 第一主成分の角度 # もとの座標系で傾きと切片へ変換 slope_ortho = np.tan(theta) intercept_ortho = mu_y - slope_ortho*mu_x
この直線をプロットすると、黒矢印(第一主成分)にほぼ重なることが確認できます。
結論
OLS の直線は「傾いて」いるのは、PCA 方向と異なる基準で最適化しているからです。
強い相関を持つ点群の主要トレンドを捉えたい場合は、単純な OLS よりも正規直線(全最小二乗)や他の対称的手法を使用する方が妥当です。