Rで3Dグラフを作る(rglパッケージ)
※IT系はこちらへ移転
このブログでもたまに登場していますが
(データ分析でお得な物件を探したい とか)
R言語を使ったプロットを進化させてみます。
rglという3Dプロットができるパッケージを追加すると色々できるみたいなのでお試し。
(Windows上で試してみます)
導入
まず、パッケージをダウンロードします。
http://cran.r-project.org/web/packages/rgl/index.html
Windowsで動くRGuiを使っている方は楽に使えます。
パッケージー>パッケージローカルにあるzipファイルから…
を選択し、ダウンロードしたzipを読み込み。
図のようなメッセージが出ればおk。
library(rgl)
で読み込んで、使える状態にします。
3Dプロットしてみる
早速使ってみます。
サンプルで適当に乱数で作ったデータを置いておきます。コピペでお使いください。
84.4118361 67.02094633 53.30306495 1
95.19853622 19.46755224 44.81424551 1
76.99221056 21.19832946 6.679098233 2
47.11851053 44.08072688 21.83290854 3
28.17605163 70.81807808 3.038094815 3
37.79006518 17.6206705 17.85126479 3
52.70716655 3.157611848 54.80928113 2
82.17892307 52.40771784 8.826890308 1
76.72345846 45.05295159 8.254543393 2
9.100676234 28.05738328 10.33647699 3
84.80308196 57.28399693 28.78125627 1
57.77000643 14.59246153 23.5896464 2
39.83637948 10.83326358 58.19865 3
29.0778965 27.42478172 36.72898976 3
39.13353415 61.22114732 36.7095343 3
82.98384957 52.79636373 2.636465571 1
6.463960197 31.90275242 42.21141831 3
57.70714968 48.01281819 11.08404224 2
6.262877946 5.154597262 18.14285997 3
26.13265512 60.96556647 37.1863922 3
2.843575692 50.21537584 21.85217763 3
76.32971877 40.43526046 37.41980928 2
51.23026568 16.61420881 20.80880777 2
9.711487254 73.88291056 38.66993505 3
82.02349732 31.48345024 19.24464369 1
1~3列目がデータ、4列目がカテゴリか何かのつもりです。
クリップボードから読み込む機能があるので便利です。
data<-read.table("clipboard")
そしてプロット
plot3d(data[,1:3],col=data[,4])
これだけで3Dの散布図ができるすぐれもの。
そして何がすごいってプロットされてるウィンドウをマウスでドラッグすると、ぐるぐると回転させることができます。
グラフの保存
そしてここからが本領発揮。
3Dとなると人に見せる時が困りもの。いろんな方向からみた図を保存しておくのも大変なので、グリグリ動く状態をそのまま保存しておきたいもの。
最近ではそういうことが可能になってるんです。
HTML5関連で注目されてるWebGLという機能があります。ブラウザ上で3Dグラフィックをサポートする機能です。
このrglというパッケージではこのWebGLを使ってブラウザ上で3Dグラフが再現できるように保存することができます。
writeWebGL(width=700, height=700)
しかも、この1行で。
すごい。
ということで適当にweb上に置いてみました。グリグリできて楽しいです。
http://tsukemono.ohitashi.com/R/webGL/sample.html
※chromeやoperaやfirefoxの最新のなら対応してるはず。IE11でも対応してたとは思います。
slideshareすごい。
遅ればせながらスライドシェアへ参戦。
アップロードテストも兼ねて、某所で実施したデータマイニング入門講座の資料を公開してみた。
偉そうに"講座"と言ってはいますが、自分も勉強しながらです。
今年はどこぞのIT勉強会のLTででも発表できるように成果出したいもんだ。
エクセルアドインを配布したい
エクセルのVBAでマクロを作ったりなんかするわけですが、人にそのマクロを渡すいい方法がよくわからないので勉強中のメモ書きです。
とりあえず、ちょっと利用者が手間かかるけど配布側が楽なのはこちら。
保存
VBAで書いた後、アドイン形式である”.xlam”で保存します。
保存場所は
c:\[ユーザ]\AppData\Roaming\Microsoft\AddIns
になります。windows8.1の場合。
導入
保存した.xlamをそのまま配布します。
で、導入する側も上記と同じディレクトリに入れます。
別の場所でも動くけど、セキュリティーの警告が出ます。
有効化
まず、開発のタブを出しておきます。何かと便利なので出しておきましょう。
開発タブが出たら”アドイン”が出てくるので、
追加したアドインを有効にします。
ここでExcel再起動しておくと安心。
次に、リボンにマクロ実行ボタンをつけます。
オプションのりボンのユーザ設定で
- 任意の場所に新しいグループを作っておきます。今回だと右側の「追加アドイン(ユーザー設定)」のところ。
- コマンドの設定で”マクロ”を選択、すると追加した関数の名前が出てくるので
- 作ったグループに追加
これで実行ボタンが出来たはず!
データ分析でお得な物件を探したい part.どうでもいい後日談
数回に渡りがんばっていたデータ分析でお得な物件をさがしたい の後日談です。
結局分析結果を元に引っ越しできそうです。仕事の都合等もあり南の方へいきまーす。
さて実際に物件を探してみて、更にこの分析の精度をよくするにはどうすりゃいいかと考えたメモ書き。
・区の違いというのも家賃には影響大きそう。場所が隣でも人気の区とそうじゃない区とか。
・治安の良し悪しやイメージは重要。事故数とか事件のデータってのも入れるといいかも。
・路線の情報も含めたいけど、モデル化が大変そうだ・・・。
またブログに書きたいけど、東京メトロが行っているオープンデータコンテストとも絡めれそうな気がする。
などなど。後日談メモでした。
データ分析でお得な物件を探したい part.5
<<part.4
地価と家賃の関係式
前回の地価モデルAで話を進めていきましょう。
早速実際の物件と比較していきたいところですが、現在のモデルでは地価はわかっても家賃はわからないので
地価と家賃の関係式を作らなくては行けません。
少し調べてみたところ地価と家賃の関係性というのは当然あるはあるんですが、その時の状況(オリンピック開催だぞー、とか再開発はじまったぞーとか)や経済状況によって結構変動するとのこと。
まぁ今回は目安には使えるでしょうということで地価と家賃を直接結びつけて考えます。
家賃は不動産サイトで公開されている地下鉄の駅ごとにの相場を元にします。
ひたすら入力。有楽町線、日比谷線、千代田線、・・・・、東京すごい、一体どんだけ路線あるんだ。地元なんてそもそも地下鉄がない。
結論として、比例式でなんとかなりそうです。
家賃 = 0.1171×地価+22398.3
当然これは東京23区限定なので皆様のお住まいの地域に当てはめてもたぶんめちゃくちゃな家賃になります。
実際の家賃と上記の式で計算した家賃をグラフにするとこんな感じ。なんとかなってそうな感じです。
家賃12万を越えだしたあたりから少しずれていますが、今回は無視します。だってそんな高価なとこ住めないもん。
精度確認
では、今回の地価モデル&地価と家賃の関係式を使って、家賃予想をしてみます。
予想する場所はJR山手線の各駅。
結果をどーん。 ※単位は万円。1ルーム、1K,1DKの相場
いかがでしょうか。確かにずれはあるものの(恵比寿とか)概ね予想できていると言えそうです。
というかもうちょっと残念な感じになると思ってたら結構いいかんじだ。
Webサービス化
最後のお仕事です。
分析ができて、こういう関係性があります!というのがわかってもものづくりとしてはまだ途中段階で、最終的にはそれを使ったものが完成して初めてゴールです。(もちろん場合にもよりますが)
当初の目標、位置を指定したら相場家賃が表示されるWebサービス、作ってやろうじゃありませんか。
・・・
できたよ。
ページの作りは適当です。そのうち自分のメインサイトに取り込むかもです。(作成中)
地図上でクリックするとその点の予想家賃を表示します。築10年と築30年の場合の予想値もつけてみました。
よーし、ではこれを持って不動産屋行って来ます!
データ分析でお得な物件を探したい 完
データ分析でお得な物件を探したい part.4
<<part.3
モデルを評価する
前回、東京23区の地価モデルとしてこんなモデルが出来上がりました。「地価モデルA」とします。
比較としてもうひとつモデルを考えてみます。
前回定義したモデルの要素3つのうち
☆モデル要素1:一点上に凸のモデル
☆モデル要素2:傾いた平面のモデル
☆モデル要素3:曲面のモデル
2つだけ使ってみます。傾いた曲面で表してみます。
こういう地価モデル。(実は最初はこっちでやってました。)「地価モデルB」としましょう。
こっちでも真ん中が高く、外に行くほど地価が下がるというのを表現できている気がします。
この2つの地価モデルを比較してみます。
AICの比較
モデルの当てはまりの良さを表す指標にAICというものがあります。赤池情報量規準の略称ですが、難しい式は置いておいて。
地価モデルAのAIC = 15771.32
地価モデルBのAIC = 15895.24
低い方が当てはまりが良い、ということになります。
うーん、たしかに地価モデルAのほうが良さそうに数値上見えますが、ちょっとイメージしにくいです。
残差の比較
今回は地価のデータを予測したいわけなので、実際の地価データとモデルによって算出される地価の差「残差」をみてみると評価できそうです。まぁこういう回帰分析評価の王道というわけです。
残差をグラフ化してみました。黒点が上にあるほどモデルに対して実際の地価のほうが高い状態です。黒点線が差が0の部分です。
モデルAの場合、比較的差0付近に集まっているように見えます。
モデルBの場合、予想地価が低いところとでは残差が+、予想地価が中間ぐらいのところでは残差がー、高いとこではまた+、と予想値があんまりあてにならないような印象を受けます。
もう一個、グラフを。予想値と実値をプロットしてみます。
予想値と実値が一緒なのがピンクの線です。ちょっと縦横のスケールずれてすいません。
たしかに地価モデルBの方は地価が中間ぐらいのところで予想が外れそうです。
次回は、ついに(やっと)実際の家賃と合わせて評価&Webサービス化を考えます。