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)
お昼に向かって気温が高くなり、夕方に向けて気温が下がっていくのが見て取れる
近似曲線を描く
こんなデータの近似曲線は三次関数で表せます。
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)
これで近似曲線が描けた。フィットしているようなしていないような、、、
おソースはこちら
JAXAに行ってきた
GWにJAXAへ行ってきた。宇宙キター
JAXAいいよ、いいよJAXA
大西さんISSへ
きぼうモジュール
日本のロケット技術の発展
「ひとみ」の運用断念と大西宇宙飛行士のISS搭乗
X線天文衛星ASTRO-H「ひとみ」の運用断念という残念なニュースも出たばかりだけど、まだ宇宙ファンには次の「きぼう」が続いている。
そう、6月には大西さんが宇宙へ行くことになっているのだ。
油井さんも帰ってきたばかりなのに、もう次の日本人が宇宙に行くなんて、、、いやぁ楽しみですね。
いかにして大西さんが宇宙飛行士になったか
もう宇宙ファンには今更の情報だが、時期も近くなってきたので再読した。宇宙兄弟でもおなじみの閉鎖環境というあれは、実際に大西さんが選抜試験を受けた際に使われたものだ。この時に合格した宇宙飛行士が次々と宇宙へ飛び立っていくなんて、、、と思い入れもひとしおになるのでお勧めの本です。
- 作者: 大鐘良一,小原健右
- 出版社/メーカー: 光文社
- 発売日: 2010/06/17
- メディア: 新書
- 購入: 3人 クリック: 90回
- この商品を含むブログ (54件) を見る
JAXAの中の人に聞きましたが、六太たちをそこへ連れて行くあの黒いバスは無いそうです
Ubuntu15.04でpipからmatplotlibが入らない
ということで、リンク先まんまですが
必要ライブラリを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
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をプロット
こうすればきれいなプロットができるといわれてきた。けど結果としては白黒のプロットが出来上がった。
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オプションも無視してやったわ」とありがたいメッセージが警告に出てた。とりあえずその警告メッセージを頼りに書き換えたのがこのコード。
出来上がったのがこちら
以上です。
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にリポジトリを作成
この辺は今さら説明することはないかと。名前を付けて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できるようになりました。
参考
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
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サーバに接続するのに公開鍵が必要。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でしか面倒見ないという人がちらほらいるようですね。