2017年5月20日土曜日

RESASの不動産取引データでheatmapを作ってみた。

前回、「RESAS(リーサス:地域経済分析システム)」で公開されている各都道府県における「大規模土地取引」データで遊んでみました。

RESASデータを「IBM Data Scientist Workbench」でゴニョゴニョしてみた。
http://sapporomkt.blogspot.jp/2017/05/resasibm-data-scientist-workbench.html

今回は、このデータを使って「heatmap」を作ってみます。
最終的には、下記のようなアウトプットを目指します。

<2015年:都道府県別の大規模土地取引件数(内訳)>

データの取得方法については、上記の前回エントリーをご覧ください。
なお、実施環境については、以下の通りです。

・macOS Sierra ver10.12.3
・R version:3.3.3
・RStudio:1.0.136

分析手順のご紹介


冒頭のデータ読み込み部分は前回エントリーと同じです。

# データの読み込み
fudousan.dat <- read.csv("fudousan.csv",header = TRUE, stringsAsFactors = F,fileEncoding = "cp932")

# 読み込んだデータ内容の確認
View(fudousan.dat)

head(fudousan.dat)でも確認できますが、個人的にはこちらの方が好きです。


# カラム名の変更
fudousan2.dat <- fudousan.dat %>%
dplyr::rename(year = 集計年,pref_code = 都道府県コード, pref_name = 都道府県名, usage_code = 利用目的種別コード, usage = 利用目的種別名, deal_count = 取引件数.件., deal_field = 取引面積.u.)

# 2015年データの抽出:直近の状況を知りたいので、下記のようにしましたが、抽出したい年数を変えたい場合は「2015」部分を書き換えてください。
# ちなみに、dplyr関数でよく使う「%>%」は、Unixのshellでいう「パイプ」と同じ役割を果たします。RStudio上では「Ctrl+Shift+m」で入力できるので是非覚えましょう。
# 「!=」は「not equal」の意味です。「filter」以降の3条件は「AND」条件として処理されます。
fudousan2015.dat <- fudousan2.dat %>%
dplyr::filter(year == 2015,pref_name != "すべての都道府県", usage != "すべての利用目的")

# エリア x 利用用途 で 取引件数 を抽出:[ ,c(3,5,6)]の( )内は列番号を示しています。
fudousan3.dat <- fudousan2015.dat[,c(3,5,6)]

# 参考までに「縦持ち」データを「横持ち」データに変換してみます。
fudousan4.dat <- fudousan3.dat %>%
tidyr::spread(usage,deal_count)


うーん、まぁ、これぐらいの情報量ならセーフかもしれませんが、ちょっと見づらいですねぇ。

# heatmap作成
p <- ggplot(fudousan3.dat,aes(as.factor(usage),as.factor(pref_name))) +
geom_tile(aes(fill=deal_count)) +
scale_fill_gradient(low="white",high="red") +
theme_bw(base_family = "HiraKakuProN-W3")

# 上記のままだとX軸のラベルが潰れるので、微修正を追加。
p + labs(x = "",y = "") + scale_x_discrete(expand = c(0, 0)) + scale_y_discrete(expand = c(0, 0)) +  theme(axis.ticks = element_blank(), axis.text.x = element_text(size = 10, angle = 330, hjust = 0, colour = "grey50"))

<2015年:都道府県別の大規模土地取引件数(内訳)> 

前回エントリーでも言及しましたが、「北海道」における「資産保有・転売等目的」の取引件数は多いようですね(「大規模」になる土地の広さも影響していると思いますが)。
また、「静岡県」の「病院等その他の利用目的」が多いのも特徴的ですね。

このような感じで、わずか数行のコードでヒートマップが出力出来ちゃいました。
ggplot2の記法がやや取っつきにくいですが、一度コードを書いてしまえば後は転用できるのがRのいいところ。ご興味ありましたら、是非お試しください。

(参考サイト)
ヒートマップで行列を可視化する! -ggplot2を用いたmicroarray発現量の可視化をしよう!
http://tomoshige-n.hatenablog.com/entry/2014/08/15/235510

R関連エントリー


RESASデータを「IBM Data Scientist Workbench」でゴニョゴニョしてみた。
http://sapporomkt.blogspot.jp/2017/05/resasibm-data-scientist-workbench.html

ggplot2でクロス集計的に複数グラフをプロットする方法
http://sapporomkt.blogspot.jp/2016/11/ggplot2.html

R開発環境が無料で簡単導入!「Data Scientist Workbench」を使ってみた。

http://sapporomkt.blogspot.jp/2016/10/rdata-scientist-workbench.html

(Bluemix)知ってた?dashDBってTwitter分析にもツカエルのさ(+ちょっとだけコンサドーレ調べ)
http://sapporomkt.blogspot.jp/2016/07/bluemixdashdbtwitter.html

RMeCabで形容詞の形態素解析をやってみた。
http://sapporomkt.blogspot.jp/2016/07/rmecab.html

【R言語】今年は、leafletでマップをグリグリしたい。
http://sapporomkt.blogspot.jp/2016/01/rleaflet.html

(R言語)当ブログアクセス者の興味関心事をコレポン(コレスポンデンス)した。
http://sapporomkt.blogspot.jp/2015/12/r.html

2017年5月14日日曜日

RESASデータを「IBM Data Scientist Workbench」でゴニョゴニョしてみた。

「地方創生」プランニングの中核を成す分析システムとして提供されているRESAS(リーサス:地域経済分析システム)ですが、実は、一部の機能において集計前ローデータが提供されています。

今回は、Cloud上でビックデータで分析が可能な「IBM Data Scientist Workbench」を使って、軽くゴニョゴニョやってみます。Workbenchでの分析環境は「RStudio」を使用します。

※本エントリーは、私、小田一弥が一個人として勉強を兼ねて記載したものです。私の勤務先である日本アイ・ビー・エム株式会社の見解・見識ではない、個人としての記載内容としてご覧ください。   


サンプルデータの登録手順



以前、当ブログでデータ登録手順は軽く触れたことがありますが、もう少し丁寧におさらいしてみます。

1.利用申請後、「Data Scientist Workbench」にアクセスし、「LOGIN」を選択。
 https://my.datascientistworkbench.com/


2.ログイン処理を実施。
「ユーザー名/メールアドレス」「パスワード」を入力してください。各種SNSでもログイン可能です。


3.「マイ・データ」を選択。
「データ管理」→「マイ・データ」を選択してください。


 下記のようにファイルパスが表示されます。フォルダの作成/削除なども当画面で実施可能です。


4.RESAS(リーサス:地域経済分析システム)からデータをダウンロード。
リーサスにアクセス後、「まちづくりマップ」→「不動産取引」を選択してください。
グラフ画面の右下に「データをダウンロード」ボタンからデータをダウンロードしてください。

(参照)「RESAS(リーサス:地域経済分析システム)」ページ

当然、こちらで取得可能なデータはリーサス上でも閲覧可能ですが、UIの限界もあってか、詳細は分析は別のツールを用いる必要があります。


ダウンロードデータの解凍フォルダ内です。この中から「まちづくりマップ_不動産取引_大規模土地取引_都道府県.csv」を使います。400KB以上もあるので、そこそこのデータ件数です。

このままのファイル名でも取り込めますが、今のうちに「fudousan.csv」に変更しておきます。


5.ファイルをアップロード。
「Data Scientist Workbench」画面に戻り、「Upload Data」を選択してください。


なんと、ドラッグ&ドロップ一発でファイルのアップロードが出来ちゃいます。
便利ですねぇ〜(しみじみ)


「RStudio」での分析手順


「Data Scientist Workbench」で使用する「RStudio」ですが、高度な使い方をしない限り、ローカル版と大きな差は感じないと思います。

1.「RStudio」を起動。
左上の「BDU Labs」を選択し、下記画面から「RStudio IDE」を選択してください。


2.作業ディレクトリの変更。
ブウラザ上で「RStudio」が起動するのでメニューの「Session」→「Choose Directory」から先ほどデータをアップロードしたフォルダを選択してください。



上記画面で「Choose」を選択すると、「RStudio」画面左下のペインに「setwd("/resources/data/rstudio_data")」という文字が表示されます。
 本来は、「setwd」関数で手入力する作業ディレクトリ変更の処理がGUIで出来ましたよ ということですね。


3.Rのソースコードを入力!
あとは、以下のソースコードを入力するだけですが、「Data Scientist Workbench」のおける「RStudio」はほぼデフォルトインストールの状態のため、分析に必要なRのパッケージを随時インストールする必要があります。

コンソール画面に手入力してもいいのですが、「RStudio」の場合、下記のようにすると楽です。

「Tools」→「Install Packages」を選択すると下記のようなダイアログが表示されます。


ローカルインストール版と同様、パッケージ名の補完も動いてくれます。

※インストールに数分かかります。

インストール後は、適宜、利用するパッケージを下記「library」関数で呼び出してください。

library(ggplot2)

以降、「RStudio」のコンソールペインに入力するソースコードです。

# 作業ディレクトリの変更。先ほどGUIでやっていますけどね。
setwd("/resources/data/rstudio_data")
 # データの読み込み。今回、読み込むデータはWindows環境で作られたようなので、FileEncodingには「cp932」(Shift-JIS)を指定します。
# 「stringsAsFactors」はデフォルトのままだと「factor」型として読み込んでしまうので、「F」(FALSE)オプションをつけて抑制します。
fudousan.dat <- read.csv("fudousan.csv",header = TRUE, stringsAsFactors = F,fileEncoding = "cp932")

# 読み込んだデータ内容の確認
View(fudousan.dat)

# パッケージの呼び出し。インストールは前述の方法でお願いします。
library(dplyr)
library(ggplot2)

# カラム名の変更。日本語のままだと取り扱いが面倒なので変えておきます。
fudousan2.dat <- fudousan.dat %>%
dplyr::rename(year = 集計年,pref_code = 都道府県コード, pref_name = 都道府県名, usage_code = 利用目的種別コード, usage = 利用目的種別名, deal_count = 取引件数.件., deal_field = 取引面積.u.)

# 必要であればIDの追加。今回は不要ですが、パッケージや分析内容によってはID列が必要になったりしますので。
fudousan2.dat <- fudousan2.dat %>%
dplyr::mutate(id=rownames(fudousan2.dat))

# 分析対象データの抽出。下記は「北海道における”すべての利用目的”または"資産保有・転売等目的"」のデータを抽出します。
hokkaido.dat <- fudousan2.dat %>%
dplyr::filter(pref_name == "北海道", (usage == "すべての利用目的" | usage == "資産保有・転売等目的")) 

#今回は、シンプルに「すべての都道府県」データを抽出します。
national.dat <- fudousan2.dat %>%
dplyr::filter(pref_name == "すべての都道府県")

# 下記内容でグラフ化!
ggplot(national.dat, aes(x=year, y=deal_count, colour=usage)) +
geom_line() + theme_bw(base_family = "HiraKakuProN-W3") +
xlab("年") +
ylab("取引件数") +
ggtitle("RESAS:まちづくりマップ〜不動産取引データにおける取引件数(全国)") +
scale_color_hue(name = "利用用途")

・・・豆腐った(笑)
「base_family」を色々と変更したのですが、現時点ではWorkbenchでは豆腐化してしまうようです。もし、Workbench上での改善方法わかる方がいらっしゃったら教えてくださいm(_ _)m


同じコードをローカルで試すと正常に表示されました。もう少し利用用途を減らした方が見やすいですね。ここ数年で「生産設備」が妙に増えていますが、何でしょうか、これ。リーサスのサイトでも確認したのですが、定義が載っていなかったのでこちらもわかる方がいらっしゃったらご教示ください。


一部、ローカル環境とは使用感が異なる部分もありますが、自分で「RStudio」環境を構築する必要がない「IBM Data Scientist Workbench」。今後、Rデビューをご検討中の方にはオススメです^^

「IBM Data Scientist Workbench」関連エントリー


R開発環境が無料で簡単導入!「Data Scientist Workbench」を使ってみた。
http://sapporomkt.blogspot.jp/2016/10/rdata-scientist-workbench.html