PythonやR言語で相関係数を計算する方法
2018.2.20
こんにちは。データサイエンスチーム tmtkです。
この記事では、パソコンで相関係数を計算する方法について解説します。具体的には、Microsoft Excel、R言語、Python(Pandas)、Python+Spark(PySpark)の4つの方法での計算を解説します。
相関係数とは
相関係数とは、2つの変数に線形関係があるかどうかを判定するための値です。
データとしてというものが与えられたとき、このデータにおける変数の相関係数はで定義されます。ここで、はそれぞれの平均、はそれぞれの標準偏差です。の標準偏差はで定義されます。
相関係数は、の間に線形関係があるとき、になります。
相関係数の計算の具体例
それでは、具体的なデータを例にして、相関係数を計算してみます。
いま、3人の生徒、一郎、二郎、三郎が英語と数学の試験を受けて、英語と数学それぞれの成績が、一郎は10点と10点、二郎は20点と40点、三郎は30点と90点だったとします。このとき、英語の点数と数学の点数の相関係数を計算する、という問題について考えることにします。
名前 | 英語 | 数学 |
---|---|---|
一郎 | 10 | 10 |
二郎 | 20 | 40 |
三郎 | 30 | 90 |
ただし、コンピュータで処理するため、次のようなCSVファイルが用意されていると仮定します。
score.csv
Name,English,Mathematics Ichiro,10,10 Jiro,20,40 Saburo,30,90
Microsoft Excelで計算
まずは、みんな大好きMicrosoft Excelで相関係数を計算してみましょう。まずはscore.csv
をExcelで開きます。
Microsoft Excelには、CORREL
という相関係数を計算するための関数があります。今回はこれを使って計算します。
適当なセルに、=CORREL(B2:B4,C2:C4)
と入力すると、英語の得点と数学の得点の相関係数が計算できます。B2:B4
が英語の得点が入っているセルで、C2:C4
で数学の得点が入っているセルを指定しています。
Enterキーで確定すると、相関係数が計算されます。
Microsoft Excelではほかに、「分析ツール」というものを使って相関係数を計算する方法もあります。興味がある方は調べてみてください。
R言語で計算
次に、R言語で計算してみます。R言語の環境はMicrosoft Excelと違って無料で入手できるのでうれしいですね。
R Studioやターミナルから、Rのコンソールを起動します。
次に、score.csv
を読み込みます。必要があれば、score.csv
へのパスを変更します。
df <- read.csv("./score.csv")
最後に、English
列とMathematics
列の相関係数をcor
関数で計算します。
cor(df["English"], df["Mathematics"])
これで、R言語で相関係数が計算できました。
Python(Pandas)で計算
今度は、機械学習界隈で人気のPythonで計算してみます。Pythonでは、データ分析ライブラリのPandas
を使ってみます。
まず、PythonのREPLを起動します。私は便利なIPythonを使うことにしています。
次に、Pandasをimport
します。
import pandas as pd
read_csv
関数でscore.csv
を読み込みます。
df = pd.read_csv("./score.csv")
最後に、corr
メソッドで相関係数を計算します。
df.corr()
!
PythonとPandasでの計算
これで、PythonとPandasで相関係数が計算できました。
Python+Spark(PySpark)で計算
最後に、PythonをつかってApache Spark上で計算してみます。ビッグデータを扱っている方はSparkをつかっているかもしれませんね。
まず、PySparkを起動します。
pySpark
SparkのDataFrameとしてscore.csv
を読み込みます。ヘッダを有効にし、型を自動的に推論します。
df = spark.read.option("header", True).option("inferSchema", True).csv("score.csv")
corr
メソッドを使って相関係数を計算します。
df.corr("English", "Mathematics")
これで、PySparkで相関係数が計算できました。
まとめ
この記事では、相関係数の紹介と、いろいろなソフトウェアでの相関係数の計算方法の解説を行いました。
参考
- 日本統計学会『改訂版 日本統計学会公式認定 統計検定2級対応 統計学基礎』
- Python Data Analysis Library — pandas: Python Data Analysis Library
テックブログ新着情報のほか、AWSやGoogle Cloudに関するお役立ち情報を配信中!
Follow @twitterデータ分析と機械学習とソフトウェア開発をしています。 アルゴリズムとデータ構造が好きです。
Recommends
こちらもおすすめ
-
Apache Sparkとpandasでデータ処理の時間を短縮する方法
2017.12.21
-
Pythonで実装する画像認識アルゴリズム SLIC 入門
2018.2.13
-
中央値を線形時間で選択するアルゴリズムについて
2019.7.12
Special Topics
注目記事はこちら
データ分析入門
これから始めるBigQuery基礎知識
2024.02.28
AWSの料金が 10 %割引になる!
『AWSの請求代行リセールサービス』
2024.07.16