- 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()