少し間が空きました。今日は散布図。
散布図は、二つの変数間の関係を表してくれるものです。英語ではScatter plotといいますね。
こんなグラフ
散布図はきわめてよく使われるグラフで、Rではplot(x, y)で描けます。このときxとyはデータのベクトルです。
二つの変数、ここではxとyの関係性を二次元の平面上の点としてで表したグラフということですね。一つ一つの点(〇)が、一つ一つのデータを表しています。この図から、
- データのxの値は0~10の範囲に分布している
- データのyの値は0~20の範囲に分布している
- xが大きくなるとyも大きくなる傾向にある
- その関係性はほとんど直線的
など、様々な情報を読み取ることができます。
ちなみに、plot関数をデータフレームに当てはめれば各変数間の関係を一覧にして描いてくれます(散布図行列)。
plot(airquality) #airqualityはRに含まれているサンプルデータ
散布図の確認はなぜ重要か
変数間の関係性を見ることで、それぞれ単一の変数の分布などのみを観察しても見えてこないものが見えてくることがあります。
たとえば、ある重要な変数……たとえば「売り上げ」に対して、他に測定している変数、「顧客訪問回数」などとの散布図を色々と描いてみると、「売り上げ」の変化に重要な影響を及ぼしている変数が見えてきたりすることがあるわけですね。逆にこの変数は重要じゃないな、ということが見えてくることもあります。こういったことが分かると、
- 最終的に管理したい値を目的地に近づけたい
- →散布図で関係性が強くでてきた変数を重点的に管理、確認する
- 最終的に知りたい値の測定コストが高い
- →散布図で見たときに関係性が強く、かつ測定コスト変数が低い値を管理することで代替的に測定を済ませる。
などいろいろな応用可能性がでてくるわけです。
また、データの平面上の位置から「異常」なデータを見つけたりすることも可能です。ちょっと以下の図を見てください。
“New”のデータについてみたとき、変数Aと変数Bの「これまでのデータ」を基準として考えると
- 変数Aは普段90~110くらいで変化している→Newの値(108くらい)は、別に異常値ではない
- 変数Bは普段140~160くらいで変化している→Newの値(147くらい)は、別に異常値ではない
- しかし、図で見ると関係性からのはずれがみられる……
異常の中にはこうして関係性を見ることではじめて気づくことができるものもあります。この辺りは異常検知の話でいずれ書いてみたいなと考えています。
散布図のちょっとした工夫
特にデータ点が多い時などは、プロットを塗りつぶした上で半透明にすれば二次元上のデータ分布を可視化できます。
data1 <- MASS::mvrnorm(10000, mu=c(0, 0), Sigma=(diag(2) + 5)) plot(data1, xlim=c(-10, 10), ylim=c(-10, 10), pch=20, col="#00000010") #黒の透明色指定
濃淡という三つめの軸を導入して、データの多さを表示しているともいえますね。
また、時系列的に得られているデータの散布図を描くとき、時系列順に並んだデータの散布図を色を段階的に変えて書くことで「2つの変数間の関係性の時系列的な変化」を可視化することもできます。
data2 <- MASS::mvrnorm(1000, mu=c(23, 23), Sigma=matrix(c(1, 0.9, 0.9, 1), 2)) data2[,2] <- data2[,2] + cumsum(rnorm(1000, 0.01, 0.1)) par(mar=c(4.2, 4.2, 1, 1)) plot(data2, xlab="x", ylab="y", col=rainbow(1500), pch=20, las=1)
この例では、赤→青と色が変わるほど新しいデータ、という風に仮に描いてみました。ポイントは、rainbowという関数を使ってデータの長さ*1.5の長さの色指定ベクトルを作ることです。
こう見ると、「短期的にはxとyは直線的な関係性にみえるが、長期的にみるとyの平均が上がってきている」という関係性をこのグラフから読み取ることができます。このデータ全体を単純に散布図にしてしまう(グラフが全部黒い点でプロットされていると想像してみてください)と、「xとyってそんなに関係ないよね」という結論になりかねません。ややこしい季節変動などもこうみると見えてくるということがあります。
散布図の利点と難点まとめ
◆散布図の利点
- とてもオーソドックスなグラフであり、単純かつ読みやすい。
- 二つの変数の関係性がみられる(とても重要)
- 描き方次第でさらに情報を盛り込むことができる
◆散布図の難点
あまり難点らしい難点は思い浮かばないのですが……。
- 変数間の関係性が全て表現されたと誤解を与える?
- 3次元的な関係性などは、簡単には描けません。plot3dやsctterplot3dといった3次元散布図を扱うものもありますが、基本的に3次元以上の関係性は散布図に限らず図示することが難しいです。これはヒトが簡単に知覚できるのが二変数の関係までくらい、ということで仕方ないことではありますね。平面では見えてこない関係性が3次元、4次元では見えてくるといったこともあるので、散布図をかいて「これがすべてだ」と思うのは多少危険です。
散布図はヒストグラムや箱ひげ図同様、とりあえずここから始めよう、くらいにオーソドックスなグラフです。どんどん描いて慣れていきましょう。
本日の内容は以上です。よいデータ分析ライフを。