- 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を使わない場合)
1 2 3 4 5 6 7 8 9 | 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を使う場合)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 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を使う場合)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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を使う場合)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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() |