一方の数が増えると、もう一方も増えるのか?点の雲を読み、関係を数値で測り、直線を引いて予測する。そして「いっしょに動く」ことを「原因と結果」と混同しないこと。
これまでは1つひとつの測定値が単独で存在していた――身長の山、点数の山。しかし現実の世界はデータがペアでやってくる。生徒の学習時間と成績、ある日の気温とアイスクリームの販売数、人の身長と体重。もはや問いは「中心はどこか?」ではなく「この2つは連動するのか?」だ。それを確かめるため、ペアデータを点の雲としてプロットし、雲の傾きを−1から+1の間の1つの数rに凝縮し、最も良い直線を引いて予測する。そして道のりを通じて忘れてはならない警告がある――2つがいっしょに動くことはパートナーシップであり、因果関係の証明では決してない。
1変数はリストを与える:x₁, x₂, …, xₙ。ペアデータは組のリストを与える――各個体について2つの数を同時に記録した (x, y) のペアだ。2つが連動するかを見るには、各ペアを平面上に置く。xだけ右へ進み、yだけ上へ進んで点を打つ。この図が散布図であり、個別の点ではなく全体のドリフト(流れ)が物語を語る。
横軸は入力とみなす変数(説明変数:操作できる、あるいは先に分かる変数)、縦軸は予測したい応答変数。ステージ 21 · 一次関数で学んだのと同じ平面に、今度はきれいな一本の式ではなく、現実の雑然としたデータが載る。
散布図はペアのリスト (x, y) を点の雲に変える。読むべきは個別の点ではなく、雲の形と傾きだ――雲は右上がりか、右下がりか、それとも広がるだけか?
雲から少し離れて眺め、左から右へ目を動かしたとき雲がどうなるかを問う。
「傾向がある」というのが正直な言い方だ。いくつかの点がトレンドに逆らうこともある。相関は集団全体の振る舞いを表すものであり、個々の点への約束ではない。
方向は傾きの符号:右上がり=正、右下がり=負、水平でぼんやり=無相関。強さは点が直線にどれだけ密集しているか。この2つを1つの数で同時に測ろうとしている。
「かなり右上がり」「少し右上がり」では比べにくい。カール・ピアソンの相関係数 r は雲全体を−1から+1の間の1つの数に凝縮する:
r = +0.97 は強い右上がりの直線、r = −0.97 は同じくらい強い右下がり、r = 0.1 はかろうじてトレンドの気配があるだけだ。エンジンは GX.corr(pairs) で計算する。r は図から目分量で読むものではない。
ギャラリーの「強い正」データセットでは、GX.corr は r = 0.999 を返す――点が直線からほとんど離れない。1点を大きくずらして再計算すると、雲の形は同じでも r は 0.40 前後まで落ち込む。1点だけで r は大きく揺らぐ――§34.6.7 で役立つ知識として覚えておこう。
r が測るのは直線的な強さだけだ。完全な放物線のように下がって底を打ち、きれいな∪字形に上がる雲は、関係が盤石に存在するにもかかわらず、直線が全体にフィットしないため r ≈ 0 になる。r が小さいのは「直線的な関係がない」という意味であり、「パターンがない」という意味ではない。必ず先に散布図を眺めること。
雲が本当に直線に沿っているとして、どの直線を選ぶべきか?無数に引ける直線の中から統計家が選ぶのは、点にできる限り近い直線だ。それを
ŷ = b̂ x + â
と書く。ŷ(「y ハット」)の帽子印は、実際に測定した y ではなく予測値であることを示す。傾き b̂ は x が1単位増えたとき ŷ がどれだけ上がるかを表し、切片 â は直線が x = 0 と交わる点だ。エンジンは GX.linReg(pairs) でデータから両方を求め、{b, a, r, predict} を返す。
この直線を特定する美しい事実がある――直線は必ず雲の重心、すなわち (x̄, ȳ)(x の平均と y の平均のペア)を通る。直線は平均という支点でちょうど釣り合うシーソーだ。
なぜその直線なのか、他の直線ではいけないのか?候補の直線について、各点から直線へ垂直に下ろした距離を考える。これがその点における残差――直線がどれだけ外れたか。外れが正(上側)のものも負(下側)のものもあり、単純に足すとプラスとマイナスが打ち消し合い、ひどい直線でもゼロになりかねない。
そこで残差を二乗する(符号をなくし、大きな外れをより重く罰する)、そして合計する。この合計が残差平方和(SSE)だ:
SSE = Σ (yᵢ − ŷᵢ)²
最小二乗直線とは、定義上、この合計をできる限り小さくする唯一の直線だ。どちらの方向に傾けても SSE は上がる。Σ 残差² を最小化するというたった1つのルールが、フィットを公平かつ一意に定める。
アイスクリームデータでは GX.linReg が b̂ ≈ 3.10、SSE = 130.5 を返す。直線を支点に乗せたまま最良傾きから±0.5 単位動かしてみよう。b̂ + 0.5 ≈ 3.60 に急にすると SSE は 172.5 に跳ね上がる。b̂ − 0.5 ≈ 2.60 に平らにしても SSE は同じく 172.5。2つの傾きが b̂ から等距離にあるため合計は両側で同じだけ上がる――お椀の底は b̂ ≈ 3.10 でぴったり底を打つ。
当てはめた直線の真価は予測にある。x を与えて ŷ = reg.predict(x) を読む。アイスクリームの直線 ŷ = 3.10x − 41.57 では、31 °C の日は ŷ = 3.10·31 − 41.57 ≈ 54 ダース(dozen)と予測する。
残差 y − ŷ は実際に観測した点での直線の外れを測る。残差が小さければ直線は忠実だ。しかし崖がある。直線はたとえば 20 °C から 34 °C のデータから学んだ。そのデータ範囲の内側の予測(内挿)は合理的だが、範囲を大きく外れた予測(外挿)は信仰の跳躍――そこでは直線のパターンがまったく成り立たないかもしれない。
アイスクリームの直線を x = 45 °C まで延ばすと、直線は喜んでますます多くのコーンを予測する――しかし猛暑では人々は家にこもり、実際の売上は減るだろう。直線は見ていないデータについて何も知らない。観測範囲を大きく外れた予測は絶対に信用しないこと。
これは科学者・ジャーナリスト・政府全体をも騙してきた罠だ。アイスクリームの売上と溺死者数は年間を通じて一緒に増える――強い正の相関だ。コーンを買うと溺れるのか?もちろん違う。第三の隠れた要因――夏の暑さ――が両方を動かしている。暑い日はコーンが売れかつ大勢が水に入る。この隠れた要因が潜在変数(lurking variable)だ。
相関が言えるのは2変数がいっしょに動くということだけだ。x が y を引き起こすのか、y が x を引き起こすのか、あるいは潜在変数が両方を引き起こすのかは分からない。因果を証明するには散布図ではなく、対照実験が必要だ。データはパートナーシップを示す。犯人を名指しできるのは丁寧な推論だけだ。
① 相関≠因果 ――潜在変数が両方を動かしている可能性がある。② r が測るのは直線的な強さだけ――完全な放物線でも r ≈ 0 になる。③ 1つの外れ値が r と直線の両方を大きく動かす。④ データの外に外挿しない。直線を信じる前にこの4つを確認すること。
| アイデア | 何をするか | エンジンから |
|---|---|---|
| 散布図 | ペア (x, y) を雲として表示し傾きを読む | P.scatter(pairs) |
| 相関係数 r ∈ [−1, 1] | 符号=方向、|r|=直線的強さ | GX.corr(pairs) |
| 回帰直線 ŷ = b̂x + â | 最良直線;(x̄, ȳ) を通る | GX.linReg(pairs) |
| 最小二乗 | Σ(y − ŷ)²(SSE)を最小化する | b̂, â の定義 |
| 予測と残差 | ŷ = predict(x);外れ = y − ŷ | reg.predict(x) |
| 因果関係 | 含意されない ――潜在変数に注意 | 実験が必要 |
車の年式(年)と下取り価格($)の散布図が一貫して右下がりに流れている。相関を言葉で説明し、r の符号を予測せよ。
年式が上がるにつれて雲が下がるので負の相関:古い車ほど価値が低い。点が右下がりの直線にかなりぴったり沿っているので、r は負で −1 に近い(例:約 −0.9)。
学習データの回帰で ŷ = 5.29x + 46.46 が得られた。x は学習時間、ŷ は試験の点数。傾きと切片をわかりやすい言葉で解釈せよ。
傾き b̂ = 5.29:学習1時間増えるごとに試験の点数が約 5.3 点上がる傾向がある。切片 â = 46.46:学習0時間の生徒の予測点数は約 46 点――ただし x = 0 はデータの端にあるため、この数値は慎重に扱うこと。
同じ直線 ŷ = 5.29x + 46.46 で、6時間学習した生徒の点数を予測せよ。実際に79点だった場合、残差を求めよ。
ŷ = 5.29·6 + 46.46 = 31.74 + 46.46 = 78.2。残差 = y − ŷ = 79 − 78.2 = +0.8 ――直線は 0.8 点低めに外れた。ごく小さく誠実な外れだ。
ある研究で、火災に派遣された消防士の数と被害額の間に強い正の相関が見つかった。消防士を減らすべきか?潜在変数を挙げよ。
いいえ――それは相関と因果を混同している。潜在変数は火災の規模だ。大きな火災が消防士の多い派遣と大きな被害の両方を引き起こす。消防士を減らせば被害は良くなるどころか悪化する。
2人の生徒が同じ8点に直線を当てはめた。Ayra の直線は SSE = 130、Ben の直線は SSE = 172 で、真の最小二乗 SSE は 130。どちらの直線が回帰直線か、Ben の直線から何が分かるか答えよ。
Ayra の直線が最小二乗回帰直線だ――SSE が最小値 130 に等しい。Ben の SSE = 172 が大きいのは、彼の直線が最良フィットから傾いているから。最小二乗直線は Σ(y − ŷ)² を最も小さくする唯一の直線だ。
点の雲が下がって底を打ち、きれいな∪字形(放物線)に上がっている。相関が r ≈ 0 と出た。「関係がない」のか?説明せよ。
強い関係がある――ただし直線的ではないだけだ。r は直線がどれだけフィットするかだけを測り、∪字形に沿う直線はない。だから r ≈ 0 は「直線がない」という意味であり、「パターンがない」ではない。r だけでなく必ず散布図を見ること。
6問で理解を固めよう。正しいと思う答えをタップしてほしい。
このレッスンは Common Core の2変量データ分野をカバーしている:HSS-ID.B.6(ペアデータを散布図で表し、関数――ここでは最小二乗直線――を当てはめ、残差でフィットを評価する)、HSS-ID.C.7(文脈の中で線形モデルの傾きと切片を解釈する)、HSS-ID.C.8(相関係数 r を計算して解釈する)、HSS-ID.C.9(相関と因果を区別する)。ページに掲載するすべての統計値――傾き・切片・r・予測値・残差――は共有ヘルパー GX.linReg / GX.corr が計算し、図から目分量で読んだものは一切ない。各図の回帰直線はすべて本物の最小二乗直線であり、(x̄, ȳ) を通る。ステージ 21(一次関数)とステージ 33(正規分布と期待値)を土台とし、「データから結論を導く」姿勢はステージ 34.7 のカイ二乗検定とステージ 35 の論理へと続く。