DISTRICT 37

なにか

僕はノストラダムスが怖かった。Future is WILD

特別お題「青春の一冊」 with P+D MAGAZINE
http://blog.hatena.ne.jp/-/campaign/pdmagazine

ということで、今週のお題「青春の一冊」

The Future is WILD

フューチャー・イズ・ワイルド

フューチャー・イズ・ワイルド

やはりこれかと。SFの世界がこの世界の延長線上にあることを印象付けた一冊だ。

ノストラダムスの大予言

僕はノストラダムスの大予言が異様に怖かった。1999年7の月が来るのを相当恐れた。新約聖書だってヨハネの黙示録だけを何回も読んだ。そして人類がいなくなった地球のことを考えこむことが多かった。それは生物は何一つ存在しない、植物さえ存在しない岩だらけの星で、さながら原始地球のような想像をよくしていた。

幸いにもノストラダムスの予言どおりに人類は滅亡することはなく、2016年まで時を進めることができている。そんなノストラダムス狂騒が過ぎて誰もが忘れたあたりでこの本は出版されたのを覚えている。

人類滅亡後の世界

海中の生物が陸に上がり、恐竜が覇権をとっていた時代が過ぎ、現在は哺乳類、特に人類が地球の覇権を取っている。人類が滅亡したのちに地球上で蠢く生物はどのようなものだろうか?というのが本書の構成。人類滅亡後は生物が何もいなくなる想像ばかりしていたので、この本の指摘は何もかもが新しかった。これまでの生物の進化の過程などを踏まえて科学的な理論の裏付けから新たな生物を創造、いや想像する。まさかイカが陸上を歩くようになるなんて!8tとかデカすぎだろと思ったが、大王イカといった規格外の生物の発見もされ、ちょうどメガマウスも水揚げされたニュースがでたばかりなので、そんな事もあるかもねと思わせる。

www.huffingtonpost.jp

僕はこの本を読むことで何億年も先のことを考え、ノストラダムスの呪縛から一気に解き放たれた気がしたのだ。

SFとはなんだろうか

SFとはScience Fictionの略であり、日本語では空想科学と訳される。SFのジャンルに登場する便利な道具や異形な生物は空想から生み出されている。本書の登場人物(?)も大概が異形な生物だ。きっとそれは何かしら科学的な根拠をもとに想像されたものなのだろうとこの本を読んだ後では思う。きっと僕らの未来もそこにつながっていくのだと。そうでなければただの魔法だ。Science Fantasyだ。

では、未来を想像で語るこの本のジャンルはなんだろうか?同じようにSFなのだろうか?それともScience Future(is WILD)とでもいうべきなのだろうか?

Rの文字列結合

ありがてぇありがてぇ

RPubs - R の文字列結合が面倒くさいので色々考えてみた

Rにおける文字列結合

Rにおける文字列の結合には、他の言語とは違って関数を使わないと結合してくれない。

"foo" + "bar"
 "foo" + "bar" でエラー:  二項演算子の引数が数値ではありません 

paste("foo", "bar", sep="")
[1] "foobar"

+でやってくれると楽なんだけどなぁ。ということで関数を作ってしまえというのが元エントリ。パクらせてもらいました!!

これを定義した後で+を使えば文字列が簡単に結合できる。ありがてぇありがてぇ

"foo" + "bar"

[1] "foobar"

ARIMAモデルで時系列分析および予測

Rのforecastパッケージを使うと(比較的)簡単に時系列分析ができるというので、試してみた。

なにを行うか

10分おきの温度を計測したデータが手元にあったので、ARIMAモデルを使って分析を行い、この後どのように変化するか予測を行う。

データはこんな感じとなっている。

項目 内容
timestamp 時刻(unixtime)
temp 温度

ARIMAモデルで予測する

forecastパッケージを使い、時系列分析と予測値を出力する。ARIMAと聞いてフィッシャーとかピアソンとかベイズとかにならって有馬という日本人によって提唱されたモデルかと思っていたら、何のことはない自己回帰和分移動平均(AR:Auto Regression I:Integrated MA:Moving Average)の頭文字だったので肩すかしくらったのを覚えている。

結果

f:id:dragstarclassic:20160412144131j:plain

黒い線が気温で、グレーや青でプロットされているところが予測範囲。d.arima.forecastに100期先までの予測値が入っているので、その値を使って何かほかのプロセスに使うこともできる。予測するN期のNの値を増やしても平均値に寄っていくだけなので、長期の予測には向かない。

devtoolsでGithubからパッケージを取得する

YOU、Githubなんかで配布しないでCRANに置いちゃいなYO!!

devtoolsのインストール

devtoolsはCRANにいるのでインストールするところから始まるのだけど、そのdevtoolsのインストール時にはまった。なんか必要なライブラリが足りないみたい。でもそれはRのライブラリではなく、Linux(僕の場合はUbuntu)本体のにライブラリが必要とのことだった。devendencyだけではなくR以外で必要なライブラリはヒントだけでも出力してほしいなぁ。

ということで。libcurl4-gnutls-devとlibcrypto++とlibssl-devが必要とのこと。要するにgithubからパッケージを持ってくるからその辺を処理するライブラリが必要なのだと思います。

sudo apt install libcurl4-gnutls-dev libcrypto++ libssl-dev

ののちに

install.package("devtools")

これでdevtoolsのインストールは完了。

Githubからパッケージを取得

devtoolsを入れたら、こんな感じでパッケージを取ってこれます。

install_github("package_you_want")

プロキシ設定

プロキシを見るところが変わるようで、改めて設定しなおす。プロキシの設定自体はこんな感じで。httrパッケージはdevtoolsインストール時にdependencyとしてついてくる。

library(httr)
set_config(use_proxy(url="yourproxy", port=8080))
install_github("package_you_want")

ggplot2で複数の折れ線を描く

描くたびに調べてるのでこれもメモ。melt{reshape2}の使い方が何度やっても覚えられない。

airquarity型のデータ

airquality型と勝手に呼んでいるデータとは、同じ行に複数の項目(列)があって、それぞれをプロットしたい場合のケース。それぞれの項目がX軸を同じにしているというのがポイント。時系列データのプロットに使えますね。

で、こうなる。Solar.Rの値の動きが激しくて、かえって見にくいというのはご愛嬌。

f:id:dragstarclassic:20160407130519j:plain

POSIXあれこれ

Rで時系列データを扱うことになったのだけど、日付型の扱いを何度も調べているのでメモ。

POSIXct

所謂プログラミング言語では日付はdateというクラスで扱われる。Rでももちろんそうなのだけど、POSIXctという聞きなれない型を使う。だけどこれはこれで結構便利。

unixtimeからPOSIXへ変換

取ったデータの日付および時刻はunixtimeになってたので、人間にわかりやすく変換する必要がある。unixtimeは特に形とかではなくただの数値。javaとかでとれるSystem.currenTimeMills()で返されるシステム日付の数値もこれ。これをまずPOSIXctというクラスにすると扱いやすくなる。

日付を扱う基本のきとして現在時刻のPOSIXctをとるにはSys.time()を使えば一発。

Sys.time()

[1] "2016-04-07 11:15:00"

同じように日付型としてdate()がある。ただしこちらの戻り値(というよりも文字列表現)は欧風。

date()

[1] "Thu Apr 7 11:15:00"

unixtimeからPOSIXctへの変換はas.POSIXctを使う。originを引数に渡すのをよく忘れる。デフォルト引数で"1970-01-01"にしてくれればいいのに。明示的に入れなければダメなのには何か理由があるんだろうな。

unixtime = 1459995330
as.POSIXct(unixtime, origin="1970-1-1")

[1] "2016-04-07 11:15:00 JST"

そののちにformatして人間がわかりやすい形にできる。

unixtime = 1459995330
format(as.POSIXct(unixtime, origin="1970-1-1"), foramt="%Y/%m/%d"))

[1] "2016/04/07"

formatで指定できるのは下記の表の通り。下記の表以外にもhelp(strptime)で使えるパラメータを確認できる。

パラメータ 内容
%Y 年(4ケタ)         
%y 年(2ケタ)              
%m 月(01-12)       
%d 日(01-31)
%H 時(00-23)
%M 分(00-59)
%S 秒(00-61)

Dateとか文字列とかからPOSIX

文字列からDate型にもPOSIXct型にも変換することもできる。もちろんunixtimeにも。

#文字列からPOSIXへ
as.POSIXct("2016-04-07 11:00")

[1] "2016-04-07 11:10:00 JST"

#文字列から日付へ
as.Date(as.POSIXct("2016-04-07 11:00"))

[1] "2016-04-07"

#文字列からunixtimeへ
as.numeric(as.POSIXct("2016-04-07 11:00"))

[1] 141574000

まとめ

わかったことはas.XXXXで何とかなるという事。それでやってみてどうしてもだめなら調べるというのがいいのかも。

アインシュタインが予言した重力波を観測

jp.techcrunch.com

アインシュタインが予言した「重力波」を観測したというニュース。一報を聞いたときにやったぜKAGRA!!ノーベル賞の確変はまだまだ続くぜ!!と思ったら、CaltechとMITのドリームチームによる研究の成果だった。本音ではKAGRAに遂げてほしかったけど、ともあれこれはすごい快挙。

KAGRAの戦いはこれからだ

その日本チームであるKAGRAも下記の通り声明を発表していた。

gwcenter.icrr.u-tokyo.ac.jp

まぁ大人だしそう言うよね。KAGRA先生による次回作にご期待くださいというのが少年漫画的に熱い展開になっている。ニュートリノを観測をした日本としては、ぜひ重力子(本当にあるのか?)を観測してほしいところである。名前もgravitonとかっこいいし。

重力とは何か アインシュタインから超弦理論へ、宇宙の謎に迫る (幻冬舎新書)

重力とは何か アインシュタインから超弦理論へ、宇宙の謎に迫る (幻冬舎新書)