- Step3. 実践編
- 1. データの整理と可視化
1-2. 相関係数と散布図
次のデータは、「Step0. 初級編 7-2. データの相関を見てみよう」で用いたデータです。このデータを使って「相関行列の算出」と「参加匹数と競技時間の散布図の作成」を行ってみましょう。
ファイルのダウンロードはこちらから
- (日本語)neko_sports.csv
- (英語)neko_sports_eng.csv
■Excelによる解析例
- 「neko_sports.csv」のデータのうち、A列を除くすべてのデータを選択(B1セルからD8セルまで)
- データ > データ分析 > 相関を選択 > [OK]をクリック
- 「入力元」と「出力オプション」を図のように設定
- 相関行列(相関係数の行列)が出力される
- 再び「neko_sports.csv」データに戻り、B列とC列を選択(B1セルからC8セルまで)
- 挿入 > 散布図の絵 > 散布図を選択(デフォルトのグラフが出力されます)
- デフォルトのグラフを加工
※「データ分析」が見当たらない方はこちらを参考に設定を行ってください。
※この結果から、「参加匹数と競技時間」の相関係数は0.768、「参加匹数と怪我した猫」の相関係数は0.929、「競技時間と怪我した猫」の相関係数は0.930であることが分かります。
散布図からも、「参加匹数と競技時間」の間に強い正の相関があることが確認できます。
■Rによる解析例
・その1(packageを使わない場合)
dat <- read.csv("neko_sports_eng.csv", header=T)
#相関行列の算出
cor(dat[,2:4])
#散布図の作成
n <- dat[,2]
time <- dat[,3]
plot(n, time, pch = 19, col = "blue")
・その2(ggplot2とpsychを使う場合)
library(ggplot2)
library(psych)
#相関行列の算出
pairs.panels(dat[,2:4])
#デフォルトのグラフの出力
G1 <-ggplot(dat, aes(x = n, y = time)) + #x軸とy軸のデータを設定
geom_point() #散布図を指定
plot(G1)
#加工後のグラフの出力
G2 <-ggplot(dat, aes(x = n, y = time)) +
geom_point(col = "blue", size=4) + #散布図を指定&点の色を指定&点の大きさを指定
theme(panel.grid.major = element_blank(), #背景のgridの削除
panel.grid.minor = element_blank(), #背景のgridの削除
panel.background = element_blank(), #背景色の削除
axis.line=element_line(colour = "black"), #グラフの線の色を指定
axis.ticks=element_line(colour = "black"), #グラフの目盛(ticks)の色を指定
axis.text=element_text(size=14), #グラフの目盛のフォントサイズを指定
axis.title=element_text(size=16)) #軸ラベルのフォントサイズを指定
plot(G2)
■Pythonによる解析例
・その1(matplotlibを使う場合)
import pandas as pd
import matplotlib.pyplot as plt
dat = pd.read_csv("neko_sports_eng.csv")
#相関行列の算出
dat.corr()
#散布図の出力
fig, ax = plt.subplots() #グラフの大枠の作成
ax.scatter(dat["n"], dat["time"],
c="blue") #点の色を指定
plt.xlabel("n", fontsize=14) #x軸ラベルとフォントサイズを指定
plt.ylabel("time", fontsize=14) #y軸ラベルとフォントサイズを指定
plt.show() #グラフを表示
・その2(matplotlib + seabornを使う場合)
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
dat = pd.read_csv("neko_sports_eng.csv")
#散布図行列の出力
sns.set() #グラフの設定を初期化
sns.set(font_scale=1.2) #フォントサイズを指定
sns.set_style("white") #グラフのスタイルを指定
sns.pairplot(dat)
plt.show()
#散布図の出力
sns.set()
sns.set(font_scale=1.2)
sns.set_style("white")
sns.jointplot('n', 'time', data=dat, color="blue") #データと点の色を指定
plt.show()



















