INPUTしたらOUTPUT!

忘れっぽいんでメモっとく

R言語徹底解説をご恵贈頂きました

報告が遅くなりましたが「R言語徹底解説」をご恵贈頂きました!

f:id:tak95:20160221024247p:plain:w200

ありがとうございますm(_ _)m
すでに多くの人が読了エントリ*1*2*3*4*5を書かれており、それらの書評で十分ですがようやく読み終えたので特に印象に残ったトピックを取り上げたい。


続きを読む

RでShape形式のファイルをGeoJSON形式に変換する

estrellita.hatenablog.com

の続き

参考にさせて頂いた総務省のデータを Elasticsearch にぶち込んで、緯度経度から市区町村の何丁目までを取り出す - Qiitaではオンラインツールを紹介しているが、約1900あるShapeファイルを手動でWebにアップするほうが面倒なのでRで変換する。


続きを読む

iMacrosで総務省の境界データをダウンロードを自動化する

estrellita.hatenablog.com

の続き。前回も参考にさせてもらった総務省のデータを Elasticsearch にぶち込んで、緯度経度から市区町村の何丁目までを取り出す - Qiita

1市区町村ずつダウンロードとか正直やってられません。

とあるように約1900ファイルある日本全国分の境界データを手動でダウンロードなどやっていられない。 ブラウザの拡張機能であるiMacrosを使って自動化できたのでメモしとく。 (Seleniumなどでもできるかも)


1. iMacrosのマクロサンプル

以下は千代田区・中央区・港区の境界データをダウンロードするサンプル。


境界データ自動ダウンロードマクロ


各コマンドの意味は次の表の通り。

コマンド 備考
SET !REPLAYSPEED SLOW 自分の環境ではデフォルトだと速すぎてエラーになるのでSLOWに設定
SET !TIMEOUT_STEP 30 境界データのリンクを表示するのに時間がかかる場合があるので30秒を設定
TAG POS=1 TYPE=SELECT ATTR=id:pref_list CONTENT=%13 都道府県コードを指定
TAG POS=1 TYPE=SELECT ATTR=id:city_list CONTENT=%13101 市区町村コードを指定
TAG POS=6 TYPE=A ATTR=TXT:〜* POS=2 : 日本測地系平面直角座標系・Shape形式
POS=3 : 世界測地系平面直角座標系・Shape形式
POS=4 : 世界測地系平面直角座標系・GML形式
POS=5 : 日本測地系緯度経度・Shape形式
POS=6 : 世界測地系緯度経度・Shape形式
POS=7 : 世界測地系緯度経度・GML形式
WAIT SECONDS=3 高負荷をかけないように3秒待機


2. 地域コード一覧

全国の地域コードの一覧もリンク先にアップした。

地域コード一覧 · GitHub


地域コードの重複も結構多い(上記のファイルは重複を除外している)ので自分でリストを作るのであれば注意が必要。


3. ファイルの確認

2016年1月現在、ダウンロードするファイル名の命名規則は以下のようだ。(2015年の国勢調査の結果で変わるかも)

A002005212010[座標系][ファイル形式][測地系]C[地域コード].zip

項目 備考
座標系 XY : 平面直角座標系
DD : 緯度・経度
ファイル形式 S : Shape形式
M : GML形式
測地系 J : 日本測地系
W : 世界測地系


ダウンロード後は必ず希望するファイルがダウンロードできているか確認すること。
(ダウンロードできていない・異なる座標系のファイルをダウンロードしていたことがあったが、やり直すと正常にダウンロードできていた)



次はShapeファイルからGeoJSONに変換する。

CentOS6.7(64bit)にelasticsearch 1.4.1をインストールする

逆ジオコーディングしたい。
しかし社内環境などでGoogleやYahooなど社外のAPIは叩けない。

ググってたらelasticsearchでもできそうだったので以下を参考にやってみた。

qiita.com


2016.2.2の時点でelastic searchの最新版は2.1.1なんだけどGeoJSONのロードがうまくいかなかったので1.4.1をインストールする。

Repositories の通りなので記事にするまでもないし、今更なんだけどあえて手順をメモしとく。

  • 環境
    • CentOS release 6.7 (Final)
    • elasticsearch 1.4.1-1


続きを読む

RStan v2.8.2でエラーが発生する場合の対処法

(2015.1.7追記) このポストとほぼ同時にRSrtan v2.9.0がCRANに上がってた。。。orz


久しぶりにRStanを実行しようとしたら色々ハマったのでメモしとく。
(@sinhrks氏と@hoxo_m親分に大感謝)


環境

  • MacBook Pro (15-inch, Late 2011)
  • OS X EI Capitan(10.11.2)
  • R version 3.2.3 (2015-12-10)


エラー内容

基礎からのベイズ統計学: ハミルトニアンモンテカルロ法による実践的入門

基礎からのベイズ統計学: ハミルトニアンモンテカルロ法による実践的入門

の6章のコードを実行すると"stan/services/init/init_adapt.hpp"が見つからなくてエラーになる。


> fit <- stan(file=scr, data=data, iter=ite, seed=see, warmup=war,
+             pars=par,chains=cha)
(中略)
 compileCode(f, code, language = language, verbose = verbose) でエラー: 
  Compilation ERROR, function(s)/method(s) not created! clang: warning: optimization flag '-ffat-lto-objects' is not supported
clang: warning: argument unused during compilation: '-ffat-lto-objects'
In file included from file7843c269091.cpp:444:
In file included from /Library/Frameworks/R.framework/Versions/3.2/Resources/library/rstan/include/rstan/rstaninc.hpp:3:
/Library/Frameworks/R.framework/Versions/3.2/Resources/library/rstan/include/rstan/stan_fit.hpp:69:10: fatal error: 'stan/services/init/init_adapt.hpp' file not found
#include <stan/services/init/init_adapt.hpp>
         ^
1 error generated.
make: *** [file7843c269091.o] Error 1
 追加情報:  警告メッセージ: 
 命令 '/Library/Frameworks/R.framework/Resources/bin/R CMD SHLIB file7843c269091.cpp 2> file7843c269091.cpp.err.txt' の実行は状態 1 を持ちました  

githubには既にissueとして認識されていてv2.9.0で修正されるみたい。

move src/stan/services · Issue #1616 · stan-dev/stan · GitHub


対処方法

RStan / PyStan 開発版を GitHub からインストールする - StatsFragments

を参考にgithubのコードをコンパイルしてインストールする。

git clone git://github.com/stan-dev/stan.git
git clone git://github.com/stan-dev/rstan.git
cp -R stan rstan/stan
vi makefile 
make build
make install


上記リンク先の

自分は TeX 設定してないので、vignette, manual をビルドしないように設定 ( makefile 108 行目のコメントアウトを外す)。

は2016.1.5時点では66行目になっていた。


動作確認

> fit <- stan(file=scr, data=data, iter=ite, seed=see, warmup=war,
+             pars=par,chains=cha)

SAMPLING FOR MODEL 'model611' NOW (CHAIN 1).

Chain 1, Iteration:     1 / 11000 [  0%]  (Warmup)
Chain 1, Iteration:  1001 / 11000 [  9%]  (Sampling)
Chain 1, Iteration:  2100 / 11000 [ 19%]  (Sampling)
Chain 1, Iteration:  3200 / 11000 [ 29%]  (Sampling)
Chain 1, Iteration:  4300 / 11000 [ 39%]  (Sampling)
Chain 1, Iteration:  5400 / 11000 [ 49%]  (Sampling)
Chain 1, Iteration:  6500 / 11000 [ 59%]  (Sampling)
Chain 1, Iteration:  7600 / 11000 [ 69%]  (Sampling)
Chain 1, Iteration:  8700 / 11000 [ 79%]  (Sampling)
Chain 1, Iteration:  9800 / 11000 [ 89%]  (Sampling)
Chain 1, Iteration: 10900 / 11000 [ 99%]  (Sampling)
Chain 1, Iteration: 11000 / 11000 [100%]  (Sampling)# 
#  Elapsed Time: 0.107373 seconds (Warm-up)
#                0.207752 seconds (Sampling)
#                0.315125 seconds (Total)
# 

無事に動いた!


からの罠orz

> traceplot(fit, inc_warmup=F)
 if (debug) { でエラー:  引数の長さが 0 です 
> plot(fit)
ci_level: 0.8 (80% intervals)
outer_level: 0.95 (95% intervals)
 if (debug) { でエラー:  引数の長さが 0 です 

R で関数のデフォルト引数を変更する(魔改造編) #rstatsj - Qiitaによるとrstanがggplot2のバージョンアップに対応できていないとのこと。


この件については@hoxo_m 親分が既に魔改造以外のワークアラウンドを用意してくれている。

rstan 2.8.2 - bug in traceplot under Windows · Issue #247 · stan-dev/rstan · GitHub

devtools::install_github("hoxo-m/fixer")
fixer::fix_params_persist(ggplot2:::titleGrob(debug = FALSE))


上記のワークアラウンド実行後にtraceplot, plotをそれぞれ実行すると正常に表示された。

> traceplot(fit, inc_warmup=F)

f:id:tak95:20160105105331p:plain:w400


> plot(fit)

f:id:tak95:20160105105402p:plain:w400



  • みどりぼん のときは普通に動いていたのに今回は泥沼だった。。。
    • RをアップデートしていたのでRStanを再インストール
    • Xcodeを入れようとするとOSのバージョンアップを求められる
    • OS X EI Capitanにアップデート
    • Xcodeをインストール
      • インストール後にXcodeを起動する必要がある(これに気付かず数時間ネットを彷徨う羽目に)
    • RStanをソースからインストール
  • ggplot2, rstanそれぞれバージョンダウンして実行した方が良いのかな・・・

携帯キャリアショップをイルミネーション風にプロットしてみた

クリスマスですね。 クリスマスといえばイルミネーション
ということでleafletで携帯キャリアショップをイルミネーション風にプロットしてみた。


続きを読む