Menu
CoddyTech

相関は因果関係ではない

CoddyのMachine Learningジャーニー「機械学習のための統計」セクションの一部。レッスン 33/64。

r は直線しか捉えません。ここでは y は x によって完全に決まりますが、それでも r は 0 です:

x が -3 から 3 までの y = x squared の散布図:点が完全な U 字型を描いており、タイトルは r = 0.0

下降する半分が上昇する半分を相殺します。0に近いrは直線的な関係がないことを意味しますが、関係性がないという意味ではありません。特徴量を削除する前にプロットしましょう。

また、遠く離れた1つの点が強いrを装うことがあるので、まず外れ値を確認しましょう。

4あたりの横軸、5あたりの縦軸にゆるく集まった青い点が8個あり、r = -0.27。さらに、20と25の位置に赤い点が1つ遠く離れている。この点を加えると、rは0.95に跳ね上がる

最後に、rは因果関係を証明することはありません。年長の子どもは靴のサイズが大きく、読解力も高くなります。年齢という隠れた第三の変数が、その両方に影響しているのです。

challenge icon

チャレンジ

中級

あるティーショップがカップを調べます。9杯分のsteepとtaste(蒸らす時間[分]、スコア)と、別の10杯分のsugarとscore(砂糖の角砂糖の数、スコア)を使います。プログラムは追加の1杯分の砂糖の量を読み取り、次にスコアを読み取ります。

  1. steepとtasteのrを出力します。
  2. sugarとscoreのrを出力し、次に追加のカップを加えた場合の値を出力します。

以下のようにラベルを付け、小数点以下2桁に丸めます。別のショップと追加のカップについて、10、2.0を入力した場合:

Steeping r: -0.05
Sugar r: -0.23
Sugar r with the extra cup: -0.88

自分で試してみよう

import numpy as np

# 9杯分の抽出時間(分)と味のスコア
steep = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
taste = np.array([3.1, 5.0, 6.6, 7.7, 8.1, 7.6, 6.5, 5.1, 3.4])

# 別の10杯分の角砂糖の数と味のスコア
sugar = np.array([0, 2, 1, 3, 0, 2, 1, 3, 2, 1])
score = np.array([6.5, 5.8, 7.4, 6.1, 5.9, 7.0, 6.2, 6.8, 6.4, 5.7])

# 追加の1杯
extra_sugar = float(input())
extra_score = float(input())

# 以下にコードを書いてください
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

機械学習のための統計のすべてのレッスン

自分で練習してみよう: Pythonオンラインコンパイラ