Archive

Archive for the ‘科学’ Category

Kernel Bayesian Computation の R による実装例

少し前の事ですが ,京都大学で行われた日本遺伝学会第 83 回大会に参加しました。その中の "Kernel Bayesian Computation" という講演が気になりました。

集団遺伝学の世界ではモデルが複雑な場合に尤度を回避できる approximate Bayesian computation (ABC) という手法がよく用いられます。 ABC については本ブログでも『近似ベイズ計算によるベイズ推定』や『Tokyo.R#17[a] でまとめています。しかし ABC は計算コストが非常に高いのが難点です。

Kernel Bayesian computation (KBC) は ABC と同様に尤度計算を行わずにベイズ推定をする手法なのですが, ABC のような無駄な計算がないのが特徴です。そこで, KBC を R で実装してみました。

警告

私自身,まだきちんとカーネル法について理解していないため,本文には誤りを含むかもしれません。誤りに気づかれたらご指摘いただけると幸いです。

Read more...

脚注

  1. 実は遺伝学会は Tokyo.R#17 の 2 日前にあったので,この発表をしたときは既に KBC の存在を知っていたわけです。発表で触れようと少し考えたのですが,まだ全然理解が及んでいなかったのでスライドに組み込めませんでした。 []

プログラミング, 科学 ,

ピーク検出

R でバイナリを読む』で, R でピーク検出すればベースコールができるという話を書きました。 R には Peaks というパッケージがあり,ピーク検出が容易にできます。これを用いてベースコールを行ってみます。

Read more...

プログラミング, 科学 ,

R でバイナリを読む

昨年『R で2ちゃんねるを読んでみた』という遊びをやりました。詳細は読んでいただければ良いのですが,「Shift_JIS で定義されない文字が含まれているとうまく文字列処理ができないので,バイナリのまま処理した」という旨のことをサラッと書きましたが,その詳細については深く触れていません。そこで,あまり需要はないのかもしれませんが,実際に R でバイナリ処理を行う方法を簡単に紹介しようと思います。ただし,今回は読むだけで,書き込み操作に関しては扱いません。

なお,本記事は R Advent Calendar 2011 の 4 つ目の記事にあたります。

Read more...

プログラミング, 科学 , ,

Lotka-Volterra モデルのシミュレーション

生態学の被食者・捕食者の個体数変動を,以下の方程式 (Lotka-Volterra 方程式) で表現するモデルがあります。
\displaystyle\begin{eqnarray}\displaystyle\frac{dx}{dt}&=&x(a-by) \\ \displaystyle\frac{dy}{dt}&=&-y(c-dx)\end{eqnarray}
ここで x は被食者の個体数, y は捕食者の個体数を表します。

解析的に解くことが困難であるため,計算機によるシミュレーションを行うのが普通です。これを Haskell で実装してみました。

Read more...

プログラミング, 科学 ,

カーネル密度推定

R ではカーネル密度推定は density 関数で簡単に行うことができます。先日 Tokyo.R で発表した際に density 関数を使ったことある人に挙手をお願いしたところ,ほとんどいないという,自分としては驚きの結果でした[a]。単に R でカーネル密度推定をやったことがある人がいないだけだったのかもしれませんが。

ということで,私の知る限りでカーネル密度推定についてまとめてみたいと思います。簡単のために一次元で話をします。

Read more...

脚注

  1. ベイズ推定をやったことがある人は 1–2 割いました。 []

科学 ,