Rによるデータ分析超入門~可視化編~

こんにちは、桂川です。本記事では、Rによるデータ分析について超入門的な内容を紹介します。特に、可視化について紹介します。Rとは、オープンソースソフトウェアであり、プログラミング言語の一種です。Rの特徴として、統計解析やデータ分析に特化しているという点が挙げられます。具体的には、統計解析やデータ分析、機械学習の役に立つライブラリや関数が充実しています。このような特徴をもつRを利用して、データ分析を試してみます。

 

Rによるデータの可視化

概要

本記事では、Rを利用してオープンデータを分析します。 特に、データ全体の概要を読み解くために、データの可視化に取り組みます。

今回、設定した目的は「家の価格に大きい影響をもつ特徴の把握」です。 個人的な話になりますが、新入社員としての目標は良い家に住むことです。しかし、様々な特徴で価格は変わっていきます。例えば以下の特徴です。

  • 部屋の数はいくつにするのか
  • 外見はどれほどこだわるのか
  • 海が見える水辺に建てるのか

これらの特徴はこだわりの強い自分にとって、とても重要かつ把握しておくべき内容かと思い(少々気が早いですが)調査してみます。

 

対象とするデータの詳細

本記事では、オープンデータとして公開されている住宅価格情報*1 を利用してそれらの特徴を分析します。このデータを可視化することで、住宅価格に特に大きい影響を与える特徴を把握する手がかりを発見できるかもしれません。

データサイエンスに関するコニュニティーサイト「Kaggle」から今回の分析に利用する[住宅価格情報(kc_data.csv)」をダウンロードします。

 

データの可視化

対象データの把握

まずは、対象とするデータがどのようなものなのか実際に見てみます。以下のコードを実行することによりcsvファイルの内容を表形式で標準出力できます。

これで、csvファイルの内容が把握できます。このcsvデータは列数(IDを含めた変数の数)は21列、行数は約2万行でした。

基本統計量の出力

今回のデータにはどのような特徴があるのか、2万行あるこの表を目視で確認することは気の遠くなる作業なので、各列の基本統計量を算出します。基本統計量とは、データの基本的な特徴を表すものです。例えば、以下のようなものが挙げられます。

  • Min.   : 最小値
  • 1st Qu. : 第1四分位
  • Median : 中央値
  • Mean : 平均値
  • 3rd Qu. : 第3四分位
  • Max.   : 最大値

R では summaryを呼びだす事で、指定されたデータについて、上記を取得して出力します。これによりデータの概要を把握できます。

以下のコードを実行することで、データの基本統計量を標準出力できます。

各変数について、どのような分布なのか、分かりやすくなりました。例えば、今回のデータでは、価格(price)は75, 000~7700, 000の間の値をとり、平均値は540, 088、中央値は450, 000 である事が分かります。また 階の数(floors)については、1~3.5 の間で、中央値は1.5ということが分ります。

ヒストグラムの描画

ただし、この数値を見てもまだまだ分かりにくい・・・直感的ではない・・・特徴の把握が難しい・・・ということで、これらを可視化していきましょう。まずは価格について見ていきます。今回はヒストグラムにしてみます。ヒストグラムとは、縦軸に度数、横軸に階級をとった統計グラフの一種で、データの分布の状況を視覚的に認識するために利用されます。

以下のコードを実行することで、ヒストグラムの描画ができます。

横軸が家の価格、縦軸がその価格の家の数です。可視化したことにより、分布が直感的でわかりやすくなりましたね。ほとんどの値が、500, 000~750, 000あたりのようです。

ただし、このような極端な分布を表すヒストグラムでは、細かい特徴を認識することは難しそうです。このような場合は、値を対数logに変換するなどして、わかりやすくすることもできます。今回は価格のみ試してみます。

以下のコードを実行することで、対数変換した値のヒストグラムの描画ができます。

横軸が対数変換をした家の価格、縦軸がその価格の家の数です。先ほどよりわかりやすくなりましたね。

次に、今回のデータから数値で表される特徴のみをヒストグラム化して一覧表示させます。以下のコードを実行することで、複数グラフを一覧表示してた描画ができます。

これで、データの概要として、各変数の分布をみることができました。この分布をじっくり見ることで、いろんなことがわかりそうです。

散布図・回帰直線の描画

次に、目的である「家の価格に大きい影響をもつ特徴の把握」のために、散布図とその回帰直線を描画してみます。散布図とは、2種類の項目を縦軸と横軸にとり、プロットにより作成される図です。2種類の項目の間に相関関係があるか否かの調査の役に立ちます。また、散布図に回帰直線を描くことで、予測もできます。回帰直線とは、散布図における分布の傾向をみるときに用いられる直線のことです。
最小二乗法と呼ばれる算術によって、求められます。

まずは、“価格”と“寝室の数”との関係を見てみましょう。

以下のコードを実行することで、散布図、および回帰直線の描画ができます。

横軸が寝室の数(bedrooms)、縦軸が対数変換した家の価格です。散布図および回帰直線をみると、寝室の数の増大に対して、価格も増大していることがわかりますね。これが正の相関がある状態です。

同じ要領で、価格と他の変数との関係も一覧表示して見てみます。

価格は、ほどんどの変数と正の相関がありそうということがわかりました。
やはり、どんな要素でも多かったり、大きかったりすると価格が高いということがグラフからもわかります。

ヒートマップの描画

次に、これら変数間の相関を比較しやすくするために、各変数間の相関係数をヒートマップにより、見てみましょう。ヒートマップは、行列の個々の値を色や濃淡として表現した可視化グラフの一種であり、色により相関係数を比較できます。

以下のコードを実行することで、ヒートマップの描画ができます。ヒートマップ上同じ色付けとなったものの間でも関連性を比較できるように、各セル内に相関係数の値も表示させます。

 

上記のヒートマップから、価格(log_price)は次の特徴と比較的高い相関があるといえます。

  • 見た目(view)
  • 寝室の数(bedroom)
  • 水辺に立地しているか否か(waterfront)
  • リビングの平米(sqft_living)

つまりは、これらが価格に与える影響は大きいということです。

水辺あたりに、広いリビング、大量の寝室、そして、とても見た目が良い、そんな家に住む夢はまだまだ先のようですね・・・

 

まとめ

本記事では、Rによるデータ分析について超入門的な内容を紹介しました。特にデータ全体の概要を読み解くためにいくつかの手法によりデータを可視化させました。その結果「家の価格に大きい影響をもつ特徴」とした4つの特徴を挙げる事ができました。

たとえばcsvなど、データが羅列された形式のまま、そこから人が目視で特徴を把握することは困難です。特に、データが大きいほど現実的でなくなります。このような場合にRなどを利用してデータ分析、可視化することでデータがその中にもつ特徴を容易に読み取れる事ができます。是非、利用してみてはどうでしょうか?

最後まで読んでいただきありがとうございました。

参照

  1. House Sales in King County, USA | Kaggle(https://www.kaggle.com/harlfoxem/housesalesprediction) より取得(2019/09/10)
Comments are closed, but you can leave a trackback: Trackback URL.