DISTRICT 37

なにか

Rで近似曲線を描く

EXCELとかで出す近似曲線を描いた

準備

気温のプロットと、それの近似曲線を描くことを目標にします。

気象庁|過去の気象データ・ダウンロード

気象庁から5/1のとある地点のデータを持ってきます。データの内容はこんな感じで「kion_20160501.csv」という名前にして任意の場所に保存。

時刻 気温
2016-05-01 00:00 13.9
2016-05-01 01:00 13.9
2016-05-01 02:00 12.3

読み込む際に1列目をPOSIXct2列目をnumericとして読み込みます

kion = read.csv("kion_20160501.csv", header = T, colClasses = c("POSIXct", "numeric"))

まずはプロット

g = ggplot(kion, aes(1:nrow(kion), temp)) + geom_line(colour="blue") + labs(title="2016/05/01")
plot(g)


お昼に向かって気温が高くなり、夕方に向けて気温が下がっていくのが見て取れる f:id:dragstarclassic:20160518125038j:plain

近似曲線を描く

こんなデータの近似曲線は三次関数で表せます。

{ \displaystyle
y = ax{^3} + bx{^2} + cx + d
}

Rではnls関数を使うことで、変数a, b, c, dを算出できる。

x = 1:nrow(kion)
y = kion[,2]

kinji = nls(y ~ a * x^3 + b * x^2 + c * x + d, start=c(a=0, b=0, c=0, d=0))
summary(kinji)

# Formula: y ~ a * x^3 + b * x^2 + c * x + d
#
# Parameters:
#    Estimate Std. Error t value Pr(>|t|)    
# a -0.009287   0.001626  -5.710 1.38e-05 ***
# b  0.285935   0.061774   4.629 0.000162 ***
# c -1.640390   0.671806  -2.442 0.024033 *  
# d 14.627075   1.979598   7.389 3.89e-07 ***
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#
# Residual standard error: 2.056 on 20 degrees of freedom
#
# Number of iterations to convergence: 1 
# Achieved convergence tolerance: 6.516e-08

これで係数が出たので、プロットする。

a = -0.009
b =  0.228
c = -1.640
d = 14.627

近似曲線のプロット

predict関数でベクトルをとれます。

predict.c = predict(kinji)

ggplotでplotするためベクトルをdata.frameにしておきます

kd = data.frame(predict.c)
kd$num = 1:nrow(kion)

プロットするとこんな感じ

g = ggplot(kion, aes(1:nrow(kion), temp)) + geom_line(colour="blue") + labs(title="2016/05/01")
k = geom_line(aes(kd$num, kd$predict.c), colour="red")
a = annotate("text", label= "y = -0.009 * x^3 + 0.285 * x^2 - 1.64 * x + 14.62", x=7, y=25, col="red")
plot(g + k + a)


f:id:dragstarclassic:20160518132329j:plain

これで近似曲線が描けた。フィットしているようなしていないような、、、

おソースはこちら

JAXAに行ってきた

今週のお題ゴールデンウィーク2016」

GWにJAXAへ行ってきた。宇宙キター

JAXAいいよ、いいよJAXA

大西さんISS

きぼうモジュール

日本のロケット技術の発展

「ひとみ」の運用断念と大西宇宙飛行士のISS搭乗

X線天文衛星ASTRO-H「ひとみ」の運用断念という残念なニュースも出たばかりだけど、まだ宇宙ファンには次の「きぼう」が続いている。

fanfun.jaxa.jp

そう、6月には大西さんが宇宙へ行くことになっているのだ。

iss.jaxa.jp

油井さんも帰ってきたばかりなのに、もう次の日本人が宇宙に行くなんて、、、いやぁ楽しみですね。

いかにして大西さんが宇宙飛行士になったか

もう宇宙ファンには今更の情報だが、時期も近くなってきたので再読した。宇宙兄弟でもおなじみの閉鎖環境というあれは、実際に大西さんが選抜試験を受けた際に使われたものだ。この時に合格した宇宙飛行士が次々と宇宙へ飛び立っていくなんて、、、と思い入れもひとしおになるのでお勧めの本です。

ドキュメント 宇宙飛行士選抜試験 (光文社新書)

ドキュメント 宇宙飛行士選抜試験 (光文社新書)

JAXAの中の人に聞きましたが、六太たちをそこへ連れて行くあの黒いバスは無いそうです

Ubuntu15.04でpipからmatplotlibが入らない

ということで、リンク先まんまですが

ng3rdstmadgke.hatenablog.com

必要ライブラリをinstallしておく

必要なライブラリはこの3つ

  • libpng-dev
  • libjpeg8-dev
  • libfreetype6-dev

aptを使ってインストールします。

sudo apt install libpng-dev libjpeg8-dev libfreetype6-dev

この後pipでインストールできます

pip install matplotlib

numpy scipy pandas

Python でデータサイエンス

numpy、scikit-lean、pandasの使い方をこのサイトを写経しながら勉強しております。pandasはなんとなくRっぽいですねぇ。Rのggplot2並にmatplotlibが使いやすいと捗りそうな気がしているんですが、、どうなんでしょう?

かっこいいいペアプロット図を描く

pairsよりもカッコよくプロットが描けるというggpairs。もう使い古された情報だとは思うけど、微妙にうまくいかなかったので。

環境

パッケージ バージョン
R 3.2.5
GGally 1.0.1
ggplot2 2.1.0

ggpairsでirisをプロット

こうすればきれいなプロットができるといわれてきた。けど結果としては白黒のプロットが出来上がった。

f:id:dragstarclassic:20160503193530j:plain

Extra arguments: 'colour', 'alpha' are being ignored. 
If these are meant to be aesthetics, submit them using the 'mapping' variable within ggpairs with ggplot2::aes or ggplot2::aes_string.

「colourオプションもalphaオプションも無視してやったわ」とありがたいメッセージが警告に出てた。とりあえずその警告メッセージを頼りに書き換えたのがこのコード。

出来上がったのがこちら

f:id:dragstarclassic:20160503194715j:plain

以上です。

マイナンバーのチェックデジット計算 python編

マイナンバーを提出するときに何回か怒られた。DBにアクセスしてるのか?と思ったけど、何のことはなく、チェックデジットを使っていた。

チェックデジットの仕様はここに書いてある。

総務省令第八十五号

{ \displaystyle
11 - (\sum_{n=1}^{11} P_n \times Q_n) \bmod 11
}

ただし、 { \displaystyle
(\sum_{n=1}^{11} P_n \times Q_n) \bmod 11
} <= 1の場合は0とする

という事でpythonで作った

RstudioからGithubを使う

正規の方法からちょっとずれたかもしれないので、今回はこういった方法もあるよということで。

RstudioでSSHキーを発番

下記手順でSSHの暗号化キーを生成する。

Tools -> global option -> Git/SVN -> SSH RSA key -> Create RSA Key

Githubにキーを登録

生成したキーをGithubのユーザプロファイルに登録する。生成したところと同じところにView public keyがあるので、その内容をコピペで構わない

Profile SSH and GPG keys -> SSH keys -> New SSH key

ここまでは一度やればいいので、以後リポジトリを増やしたりするたびにやる必要はない。

Githubリポジトリを作成

https://github.com/new

この辺は今さら説明することはないかと。名前を付けてCreate repositoryするだけ

RProjectの作成

File -> New Project

この時にCreate git repositoryにチェックを入れないのがポイント。それからRstudioは終了しちゃう。

Git関連の設定をする

プロジェクトのディレクトリに移動してから、ターミナルでgitの設定をする。

echo "# {your_repository}" >> README.md
git init #ここで初めてinitする
git remote add origin https://{your_id}:{your_pass}@github.com/{your_id}/{your_repository}

終わったらRstudioを起動する。僕の環境ではそれっぽくやるとRstudio内のPush|Pullボタンがグレーアウトしたり、pushするときに怒られたりと散々な目にあって環境を簡単には構築できなかった。git remote addコマンドを打つときにユーザとパスワードを入れるので(もちろん.gitconfigにも残る)、セキュリティも何もありゃしないが、こうでもしないとうまく動かなかったのでやむなくこうした。

ちなみにこんな感じのエラーが出る。

fatal: could not read Username for 'https://github.com': No such file or directory

とりあえずこれでRstudioからGithubへcommit & pushできるようになりました。

参考

qiita.com

stackoverflow.com

Ubuntu15.10にCRANからRをインストールする。

carパッケージを使いたいのに、依存パッケージがR 3.2.3以降じゃないとインストールできないと怒られた。aptのr-baseは現時点で3.2.2なのでCRANからRをインストールすることにした。

ということで、Rのバージョンを更新してcarを入れるまでが今回の目標。

参考URL:

https://cran.ism.ac.jp/bin/linux/ubuntu/README

stackoverflow.com

sources.listの更新

まずはsources.listにCRANミラーを登録する。

sudo vim /etc/apt/sources.list

ファイルに次の一行を追加。使用するCRANミラーを書けばいい。Ubuntuの場合はバージョンによって最後の文字列を変える。今回はマシンがUbuntu15.10(Wily Werewolf)なのでubuntu wilyを記述

deb http://cran.ism.ac.jp/bin/linux/ubuntu wily/

ミラーとして統計数理研究所を使ったが、他のCRANのミラーは下記サイトで確認。日本国内では3つ(実質2つ)登録されている。

CRAN - Mirrors

公開鍵の取得

CRANサーバに接続するのに公開鍵が必要。READMEを見るとE084DAB9を使えとのこと。

gpg --keyserver keyserver.ubuntu.com --recv-key E084DAB9

通常はこれでできるんだけど、認証プロキシかつポート11371をブロックしている環境では、下記のコマンドで公開鍵を取ってこれる。プロキシはkeyserver-optionを使うことで設定が可能。

gpg --keyserver hkp://keyserver.ubuntu.com:80 --keyserver-option http-proxy=http://your.proxy:8080 --recv-keys E084DAB9

続いて下記コマンドを実行

gpg -a --export E084DAB9 | sudo apt-key add -

ここまででCRANの追加とそこへ接続するための公開鍵の設定が終了。

あとはupgrade

CRANサーバを登録したらあとはいつも通りにやればいい。apt updateとupgradeしたらインストール完了。

sudo apt update
sudo apt upgrade

無事にRを3.2.5をインストールできたようです。

version

major          3                           
minor          2.5                         
year           2016                        
month          04                          
day            14                          
svn rev        70478                       
language       R                           
version.string R version 3.2.5 (2016-04-14)
nickname       Very, Very Secure Dishes   

carのインストール

Rさえバージョンアップできればパッケージはいつも通りにinstall.packaagesコマンドを使うだけ。

install.packages("car")

依存するパッケージがRのバージョンを満たしたため問題なくインストールできたようです。Rのパッケージ作っている人は新しいRでしか面倒見ないという人がちらほらいるようですね。