Pythonで統計学入門―Pythonで相関係数を求めてみる― | SiTest (サイテスト) ブログ

メニューボタン閉じるボタン

Pythonで統計学入門―Pythonで相関係数を求めてみる―

以前の記事で、とある学年の国語の点数の偏差値を求めました。
今回は、「国語の点数が高い生徒は数学の点数も高い」ことが統計的に言うことができるかどうか、Python で計算します。

スポンサーリンク

相関係数を Python で計算する

二つの値の間に関係性、つまり「ある値が高く(低く)なれば、もう一つの値も高く(低く)なる」と言う関係を統計学では、相関関係といい、どのくらい関係しているかを「相関係数」という値で表現します。

今回は以前の学年全員より人数を少なめにして、あるクラスの点数にしてみましょう
あるクラスの国語の点数、および数学の点数は以下のようになります。どのみち Python で計算するので、Python の配列で表現してしまいましょう。

japanese = [5, 73, 29, 63, 68, 28, 45, 78, 70, 93]
math = [11, 82, 25, 61, 66, 27, 42, 88, 71, 84]

さて、早速Pythonで計算します。モジュールである Numpy には、簡単に、相関係数を計算できる numpy.corrcoef 関数があるので、これを利用します。

import numpy

japanese = [5, 73, 29, 63, 68, 28, 45, 78, 70, 93]
math = [11, 82, 25, 61, 66, 27, 42, 88, 71, 84]

correlation = numpy.corrcoef(japanese, math)

print(correlation[0,1])

さて、すぐに結果が出ました。

0.975751057911

相関係数は-1〜+1の間の値をとり±1に近くほど、二つの値の間に関連が見られる。ということになります。
今回の値は0.975751057911となりましたので、この二つの点数の間にはかなり強い正の相関、すなわち国語の点数が高い生徒は、数学の点数も高い傾向にあるということが言えます。

相関関係は因果関係を証明するものではない

このように、二つの値の傾向を探るのに便利な相関係数ですが、ぜひ注意したい点があります。
それは「相関関係があるからといって、因果関係があることを証明できるわけではない」という点です。つまり、国語の点数が高い「から」数学の点数が高いというわけではないのです。

因果関係が成り立っているのなら、国語の勉強「だけ」をして国語の点数が高ければ、数学の勉強をしなくても、勝手に数学の点数も上がっていくことになります。そうでないことは、私たちの経験から見ても明らかです。

社会調査などでは相関関係を用いて、いろいろな主張がされていますが、それらが何を主張しているのか、注意してみる必要があります。相関関係があるのに過ぎないのに、まるで「××が低い(高い)から「○○が低い(高い)」という因果関係が存在しているかのような主張をしている例は、思ったよりもたくさんあります。

相関関係の限界をよく知り、面白い統計ライフを送ってください。それでは


03-6441-3336

いますぐ無料で
お試しください。

SiTestの革新的な機能を、
1か月間無料でお試しいただけます。

お名前【必須】
メールアドレス【必須】
電話番号【必須】

利用規約はこちら