電話 0422-27-7828チャットで質問無料相談を予約

武蔵野個別指導塾の特徴

【情報I】データの分析②を図解で総まとめ—散布図・相関係数・回帰直線・相関と因果|武蔵野個別指導塾

【情報I】データの分析②を図解で総まとめ—散布図・相関係数・回帰直線・相関と因果のアイキャッチ 武蔵野個別指導塾
X LINE Facebook

5組のデータから相関係数と回帰直線を求める例題を通して、散布図の読み方を整理します。相関係数が0でも関係がある図や、第三の変数による疑似相関を読み解く視点も身につけましょう。

よくあるのは、校庭のベンチで部活動の記録を見返し、練習時間が長い人ほど成功回数も多い散布図を見て、「時間を増やせば必ず上達する」と書いてしまう場面です。右上がりの並びを見つけるところまではよいのですが、並び方の説明から原因の断定へ、一段飛び越えてしまっています。経験の長さや練習内容も違うなら、時間だけの効果とはまだ言えません。

2種類のデータを組にして調べると、平均だけでは見えなかった関係が見えてきます。ただし、図の見た目、相関係数、予測のための直線は、それぞれ答えられる問いが違います。数値を求めたあとに、その数値で何を言ってよいかを判断するところまでがデータの分析です。

まず散布図の点が何を表すかを確かめ、次に直線的な関係を数値にし、最後に予測と因果の限界を考えます。計算は小さな表で追える形にしますので、式だけを暗記する前に、点と表と文章を行き来してみましょう。

この単元で身につけること

これまで学んだ平均、偏差、分散、標準偏差は、1種類の値の特徴を調べる道具でした。今回は2種類の値を組にしたまま、平均からのずれが一緒に変わるかを調べるために使います。表計算で処理するときも、計算前に対応関係を壊さないことが出発点です。

基本の考え方

散布図は、同じ対象の2つの値を1点にする

散布図は、横軸に変数x、縦軸に変数yを取り、値の組を点で表した図です。変数とは対象によって値が変わる項目のことです。たとえば、ある人の練習時間が3時間で、決まった回数の試技における成功回数が5回なら、点は横3、縦5の位置に置きます。別の人の時間と成功回数を組み合わせてはいけません。

次の表は計算を学ぶための5組のデータです。xもyも単位を付けない数値として扱います。後で現実の記録を分析するときは、同じ測定方法のデータか、測定期間はそろっているかも確認します。

対象 x y
A 1 2
B 2 3
C 3 5
D 4 4
E 5 6

図1のように、xが大きい対象ほどyも大きい方向に点が並んでいます。ただし、CからDではxが増えてもyが減っています。このような部分があっても、全体が右上がりなら正の相関があると読めます。相関は「すべての組で例外なく成り立つ決まり」とは違います。

図1 同じ対象の値を組にして表した右上がりの散布図

右下がりの並びなら負の相関です。たとえば、一定の距離を走る速さと所要時間では、速さが大きいほど時間は短くなります。ただし、この関係はそのままでは直線にならないので、向きの印象と直線への近さを区別する必要があります。方向性が見えない場合にも、曲線の並びや点の集まりがないかを見ます。

散布図では通常、点を観測順に線で結びません。線を結ぶと、対象AからBへ時間が進んだように見えることがあるからです。また、横方向と縦方向の1目盛りは同じ長さである必要はありませんが、それぞれの軸では等しい数値差を等しい間隔で表します。図の縦横比を変えるだけで傾きの印象が変わるため、「急だから相関が強い」という読み方も避けます。

相関係数は直線的な関係を数値で表す

相関係数rは、2変数の直線的な関係の向きと強さを表す値です。ここでは一般に使われるピアソンの相関係数を扱います。値は−1以上1以下です。1に近いほど強い正の相関、−1に近いほど強い負の相関があり、0に近いほど直線的な関係が弱いと読みます。

たとえばr=−0.9は、r=0.4よりも直線的な関係が強い状態です。強さを比べるときは絶対値を見ます。負の符号は成績の悪さや分析の失敗を意味せず、片方が大きいほど他方が小さくなる向きを表しているだけです。また、「0.7以上なら必ず強い」などの区切りは、あらゆるデータに共通する自然な境界ではありません。対象や目的、散布図も合わせて読みます。

計算の仕組みをつかむため、xの平均をx̄、yの平均をȳと書きます。偏差は「値−平均」です。xの偏差とyの偏差を掛け、すべての組について足した値をSxyとします。また、xの偏差の2乗の合計をSxx、yの偏差の2乗の合計をSyyとします。相関係数は次の式で求められます。

r=Sxy ÷ √(Sxx × Syy)

平均より大きい値どうし、または小さい値どうしの組では、偏差の積は正になります。片方が平均より大きく他方が小さい組では、積は負になります。この積を足すことで、2つの変数が同じ方向にずれやすいかを調べています。分母でそれぞれの散らばりを考慮するので、rは単位を持ちません。

偏差の積の平均を共分散と呼びます。共分散を2つの標準偏差の積で割る形も、上の式と同じ結果になります。ただし、分散などを計算する際は分母の取り方をそろえます。片方の変数がすべて同じ値なら対応する偏差の2乗和が0になるので、分母が0になり、相関係数は定義できません。これはr=0とは別の状態です。

回帰直線は予測のためのまとめ方

回帰直線は、点の傾向を1本の直線で近似したものです。xからyを予測する場合、xを説明変数、yを目的変数と呼び、予測値をŷと書いて、ŷ=ax+bの形にします。aは傾き、bは切片です。xが1増えたときに予測値がいくつ変わるかを示すのがaです。

ここで扱う最小二乗法は、各点の実測値yと、そのxでの予測値ŷとの差を2乗し、合計が最も小さくなる直線を選ぶ方法です。この差「y−ŷ」を残差と呼びます。残差をそのまま足すと正負が打ち消し合うため、2乗して大きなずれも評価します。点から直線への最短距離ではなく、同じxで測った縦方向の差であることが重要です。

Sxxが0でないとき、傾きa=Sxy ÷ Sxx、切片b=ȳ−ax̄で求められます。したがって直線は平均の点(x̄, ȳ)を通ります。相関係数と違って、傾きには単位の影響があります。時間を時間単位から分単位に直すと、相関係数は変わりませんが、1単位の増加量が変わるため傾きは変わります。

例題で解き方を確かめる

例題1 散布図に対応する表を読む

基本の考え方で示した5組の表について、点Cの座標と全体の相関の向きを答えましょう。また、yの列だけを小さい順に並べ替えて散布図を作ってよいかも判断します。

  1. まず横軸がx、縦軸がyであることを確かめます。点の位置は軸の順序で決まるので、Cの行からx=3、y=5を取り出し、座標を(3, 5)とします。
  2. 次に5点全体を見ます。Dだけに注目すると右下がりの部分もありますが、低いxには低いy、高いxには高いyが多く、全体には正の相関が見られます。
  3. 並べ替えの操作を確かめます。yの列だけを動かすとCのxに別の対象のyが対応するため、元のデータと異なる組になります。並べ替えるなら対象名、x、yを行ごと一緒に動かします。

答え:Cは(3, 5)、全体は正の相関で、yの列だけを並べ替えてはいけません。

この確認は表計算でも欠かせません。数式が正しくても、違う対象どうしを組にした入力からは、元の関係を分析できないためです。欠損があるときも、それぞれの列から独立に空欄を詰めると対応がずれるおそれがあります。必要な2値がそろっている行を確認してから、採用する組を決めます。

例題2 5組の相関係数を求める

同じ表について、相関係数rを求めましょう。計算を短くするためにも、先に平均と偏差を表にまとめます。

  1. 平均を求めます。xの合計は15、yの合計は20、組の数は5なので、x̄=3、ȳ=4です。平均からのずれを見るため、この2つを基準にします。
  2. 各行の偏差と積、2乗を求めます。行の対応を残したまま計算すれば、どの組が正や負に寄与したかを追えます。
対象 x−3 y−4 偏差の積 xの偏差の2乗 yの偏差の2乗
A −2 −2 4 4 4
B −1 −1 1 1 1
C 0 1 0 0 1
D 1 0 0 1 0
E 2 2 4 4 4
合計 0 0 9 10 10
  1. 合計を式に代入します。Sxy=9、Sxx=10、Syy=10なので、r=9 ÷ √(10 × 10)=0.9です。途中で各値を丸める必要がないため、そのまま求められます。
  2. 数値を言葉に直します。符号が正で絶対値が1に近いので、この5組では強い正の直線的な関係が見られます。ただし、r=0.9を「90%の対象に当てはまる」と読み替えることはできません。

答え:相関係数はr=0.9で、この5組には強い正の相関が見られます。

Pythonでは、次のように偏差の積と2乗和から確かめられます。zipは同じ位置のxとyを組にするために使い、2つのリストは同じ長さであることを前提にしています。

from math import sqrt
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 4, 6]
mx, my = sum(x) / len(x), sum(y) / len(y)
sxx = sum((v - mx) ** 2 for v in x)
syy = sum((v - my) ** 2 for v in y)
sxy = sum((a - mx) * (b - my) for a, b in zip(x, y))
r = sxy / sqrt(sxx * syy)
print(round(r, 3))

出力は次のとおりです。

0.9

例題3 回帰直線と残差を求める

同じ5組から、xを使ってyを予測する回帰直線を求めます。さらに、x=3での予測値と、点Cの残差を求めましょう。

  1. 例題2で求めた合計を使い、a=Sxy ÷ Sxx=9 ÷ 10=0.9とします。相関係数の式と似ていますが、分母はxの偏差の2乗和だけです。今回はたまたま相関係数と同じ数値になっています。
  2. 平均の点(3, 4)を通ることから、b=4−0.9 × 3=1.3と求めます。これで予測式はŷ=0.9x+1.3になります。
  3. x=3を代入するとŷ=4です。点Cの実測値は5なので、残差は5−4=1です。実測値のほうが予測値より1大きいと説明できます。
  4. 図2で確かめます。点Cから直線上の同じxの位置まで、縦に引いた赤い線が残差に対応します。斜めの最短距離を測っているのではありません。

答え:回帰直線はŷ=0.9x+1.3、x=3での予測値は4、点Cの残差は1です。

図2 回帰直線と点から縦方向に測った残差の関係

図2の直線が全点を通らなくても、計算が間違っているわけではありません。各点のずれを合計として小さくすることが目的だからです。5点の予測値は順に2.2、3.1、4.0、4.9、5.8、残差は−0.2、−0.1、1.0、−0.9、0.2です。残差の和は0でも、ずれがすべてなくなったわけではありません。残差の2乗和は1.9です。

回帰の計算を独立に実行できる形にすると、次のようになります。printの丸めは表示を読みやすくするためで、計算途中の値は丸めずに使っています。

x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 4, 6]
mx, my = sum(x) / len(x), sum(y) / len(y)
sxx = sum((v - mx) ** 2 for v in x)
sxy = sum((u - mx) * (v - my) for u, v in zip(x, y))
a = sxy / sxx
b = my - a * mx
pred = [a * v + b for v in x]
res = [v - p for v, p in zip(y, pred)]
print(round(a, 1), round(b, 1))
print([round(v, 1) for v in pred])
print(round(sum(v ** 2 for v in res), 1))

出力は次のとおりです。

0.9 1.3
[2.2, 3.1, 4.0, 4.9, 5.8]
1.9

例題4 予測と原因の説明を分ける

例題3の式にx=10を代入した人が、「yは必ず10.3になる。また、xを増やせばyが増える原因になる」と説明しました。計算と解釈のどこを分けて直すべきでしょうか。

  1. 代入の計算を確かめます。0.9 × 10+1.3=10.3なので、式の計算自体は正しいです。算術の誤りと解釈の誤りを混ぜないことが出発点です。
  2. 観測範囲と比べます。元のxは1から5なので、10はその範囲外です。範囲内で予測する内挿に対し、範囲外へ延ばす予測を外挿と呼びます。外側でも同じ傾向が続く根拠がないため、10.3は式を延長した値として扱います。
  3. 「必ず」を外します。観測範囲内でも点は直線からずれていますから、回帰直線は個々の対象の値を保証しません。外挿であれば、関係自体が変わる可能性も加わります。
  4. 原因の断定を外します。xからyを予測する式を作ったことだけでは、xを意図的に変えたときyがどう変わるかは確定しません。共通の背景や逆向きの因果を別に調べる必要があります。

答え:式の値は10.3ですが、範囲外の予測であり、実測値の保証にも因果関係の証明にもなりません。

つまずきやすいところと直し方

誤り1 相関係数が0なら関係はないとする

誤った書き方は「r=0だから、xとyには何の関係もない」です。どこが違うかというと、相関係数が測るのは直線的な関係であって、あらゆる形の関係ではないところです。図3のように、x=−2、−1、0、1、2に対してy=4、1、0、1、4を取ると、5点はy=x²上に並びます。

図3 相関係数がゼロでも曲線の関係が残る散布図

図3では左側は右下がり、右側は右上がりになっています。xの平均は0、yの平均は2で、偏差の積は順に−4、1、0、−1、4です。合計が0になり、両変数の散らばりは0ではないのでr=0です。それでもxが決まればy=x²で値が決まるという明確な関係があります。

正しい書き方は「r=0なので直線的な相関はないが、散布図では曲線の関係が見られる」です。この例の確認用のプログラムは次のとおりです。相関係数を計算する前に図を見る意味が、この出力と点の形の違いに表れています。

from math import sqrt
x = [-2, -1, 0, 1, 2]
y = [v ** 2 for v in x]
mx, my = sum(x) / len(x), sum(y) / len(y)
sxx = sum((v - mx) ** 2 for v in x)
syy = sum((v - my) ** 2 for v in y)
sxy = sum((u - mx) * (v - my) for u, v in zip(x, y))
print(y)
print(sxy / sqrt(sxx * syy))

出力は次のとおりです。

[4, 1, 0, 1, 4]
0.0

誤り2 相関があれば原因と結果だとする

誤った書き方は「暑い日に冷たい飲み物の販売数とプールの利用者数がともに多いので、飲み物が売れることがプール利用を増やしている」です。どこが違うかというと、同時に変わることを、一方が他方を変える証拠にしている点です。気温という第三の変数が、両方に影響している可能性があります。

このように第三の変数などの影響で現れる見かけの相関を、疑似相関と呼びます。2つの値の間に相関が計算されること自体が誤りなのではありません。直接の原因と結果であると解釈することに問題があります。気温の近い日だけで比べるなど、条件をそろえると関係の見え方が変わるかを調べられます。

正しい書き方は「両者には相関が見られるが、気温が共通して影響している可能性があるため、直接の因果関係は断定できない」です。因果関係とは、一方の変化が他方の変化を引き起こす関係を指します。単に先に起きたこと、予測に役立つこと、相関が強いことは、それぞれ因果の確定とは別です。

校庭のベンチで見ていた記録に戻ると、もともと技能の高い人ほど練習を楽しく感じ、結果として練習時間が長くなる向きも考えられます。また、経験年数が長い人は時間も成功回数も多いかもしれません。原因を確かめるには、他の条件をそろえた比較や、時間的な順序、影響の仕組みなどの追加情報が必要です。条件をそろえたつもりでも未測定の要因は残り得るため、単一の観察結果だけで言い切らない姿勢を持ちます。

誤り3 相関係数だけでデータを評価する

誤った書き方は「rが大きいので、このデータはそのまま信頼でき、直線をどこまでも使える」です。どこが違うかというと、相関係数が、入力の正確さ、集め方の公平さ、対象の範囲まで保証する値になってしまっている点です。少数の離れた点に強く影響される場合や、性質の違う集団を混ぜたために傾向が現れる場合があります。

離れた点を見つけても、相関を高くするために削除してはいけません。入力ミスか、測定条件の違いか、実際に存在する特徴的な対象かを確認します。除外する根拠がある場合はその理由を残し、除外の有無で結果がどう変わるかも調べます。また、全体の相関と集団別の相関が同じとは限らないので、必要に応じて集団を区別して散布図を描きます。

正しい書き方は「散布図、対象数、観測範囲、収集条件を確かめたうえで、相関係数を関係の要約として使う」です。相関係数が同じでも、点の配置や予測の誤差は異なり得ます。最初に図を見て数値を計算し、数値を得た後でもう一度図へ戻ると、1つの数値に隠れた特徴を拾いやすくなります。

練習問題

練習1

散布図Aの相関係数は−0.8、散布図Bは0.3です。直線的な関係が強いのはどちらですか。また、Aではxが大きいときyがどうなる傾向があるか説明しましょう。数値の大小だけで決めず、符号と絶対値を別々に読みます。

練習2

x=1、2、3に対し、同じ順番のyが6、4、2でした。xとyの平均、偏差の積の合計Sxy、相関係数rを求めましょう。さらに、3点を通る直線の式をy=ax+bの形で答えましょう。

練習3

例題3の回帰直線ŷ=0.9x+1.3を使います。観測範囲はx=1から5です。x=4での予測値と実測値4の残差を求め、x=20の予測が内挿か外挿かも答えましょう。残差は実測値から予測値を引いて求めます。

練習4

ある地域で、暑い日のほうが冷たい飲み物の販売数とプールの利用者数の両方が多くなりました。この結果だけで「飲み物の販売を増やせば、プールの利用者も増やせる」と言えますか。第三の変数を1つ挙げ、相関と因果を区別する文章で答えましょう。

答えと解説

練習1の答えはAです。絶対値は0.8と0.3なので、Aのほうが直線的な関係は強いと読めます。Aは負の相関なので、xが大きいときyは小さくなる傾向があります。負の数だから弱いのではありません。

練習2の答えは、xの平均が2、yの平均が4、Sxy=−4、r=−1、直線の式はy=−2x+8です。xの偏差は−1、0、1、yの偏差は2、0、−2なので、Sxx=2、Syy=8です。したがってr=−4 ÷ √(2 × 8)=−1となり、3点は右下がりの1本の直線上にあります。

練習3の答えは、予測値4.9、残差−0.9、x=20は外挿です。残差が負なので、実測値は予測値より小さいと読めます。式に20を代入すれば19.3になりますが、観測範囲から遠く離れており、その値の妥当性は式の計算だけでは判断できません。

練習4の答えは「この結果だけでは言えない。気温が両方に影響している可能性がある」です。第三の変数の候補として気温が挙げられます。気温などの条件を考慮しないまま販売数だけを原因とする説明は、疑似相関を直接の因果関係と取り違えています。

次の単元へのつながりと家庭での確かめ方

表計算ソフトで2列から散布図を作り、相関係数や回帰直線を求める操作は、この単元の考え方を大量のデータへ広げる方法です。操作を覚えるときは、セル範囲が同じ対象を指しているかも確認します。さらに、機械学習で数値を予測するときにも、学習した範囲の外で同じ関係が続くか、予測が外れたときにどこを見るかという問いにつながります。

家庭での1つ目の確かめ方は、5分で例題の5点を紙に写し、CとDの位置だけを表に戻って説明することです。「横が何で、縦が何か」を声に出すと、列を逆に読む間違いや対応のずれに気づけます。2つ目は、同じく5分で「一緒に増える2項目」を1組考え、両方に影響しそうな第三の項目を添えることです。実際に因果を証明する課題ではなく、別の説明を探す練習として取り組みます。

個別指導で相関係数の計算が止まったときは、偏差の符号、平均、表の行の対応まで戻って確かめます。お子さまへの声かけも、数値が合ったかだけでなく「この点は誰のどの値の組か」と尋ねると、理解の位置を確かめやすくなります。

まとめ

データを読んで提案するときは、観測したことと、その先に期待することの境界を文章に残します。「この範囲では右上がりだった」「直線からこれだけずれた」「別の要因も考えられる」と書ければ、次に集める情報が具体的になります。答えを弱めるために留保を付けるのではなく、確かめるべき問いを残すためです。

校庭のベンチで見つけた右上がりの点は、練習方法を考える入口になります。相関係数は点の並びを要約する数値であり、原因を決める判決ではありません。

本気になった日が、入塾の日。

お子様の教育、迷ったら「丸投げ」してください。必ず、期待以上の結果で返します。武蔵野で育む、武蔵境で学ぶ。

電話は年中無休。365日、24時間、お電話可能。

お電話 チャットで質問チャット