Stanの練習がてら、おなじみのirisデータでロジスティック回帰のパラメータを推定してみた。 今回作成したモデルはirisのSpeciesを予測する多クラスロジスティック回帰。回帰係数の事前分布は平均0の正規分布とした(こうするとL2正則化と同等の効果が得られる)。 なお、正規分布の分散の事前分布には半コーシー分布を使う。サンプル数が少ないときは逆ガンマ分布を無情報事前分布として使うと不都合があるらしいので。(でもirisのサンプル数は150なので逆ガンマ分布のままでも大丈夫かも?) 追記: Gelmanの論文をチラ見したら逆ガンマ分布を使って問題になるケースは「グループレベルの効果をモデル化していて、グループ数が少ないあるいはグループレベルの分散がゼロに近い場合」みたいなので、今回のケースは当てはまらないかも(別にコーシー分布を使っても問題は無いみたいだけど)。 参考: http://
続・確率的変分ベイズ ついにRStanにも変分ベイズが実装されたようです。 RStanにおける変分ベイズはADVI(Automatic Differentiation Variational Inference)と呼ばれるテクニックで実現されています。 変分ベイズは変分下限を導出するのが非常に面倒な訳ですが、ADVIはこの面倒な操作を自動化してくれます。なのでRStanユーザは導出に頭を悩ませることなく、今まで通りモデルを定義するだけで良いのです。すばらしいと思います。 概要はこちらのブログにまとまっていますし、さらに詳しく知りたい方は元論文を参考にされるのが良いと思います。 さて、この記事では元論文の中でほんの少し取り上げられている確率的最適化のStan実装を扱いたいと思います。これまでのサンプリングと比較したADVIのメリットは速さな訳ですが、元論文ではさらに確率的最適化を適用してスケ
この記事では統計的問題を回避するためのデータ解析のプロトコル (Zuur et al. 2010)で扱われているゼロ過剰問題を取り扱っている。 uribo.hatenablog.com 離散値の整数かならるカウントデータの多くはポアソン分布に従うことが一般的である。しかし、ある生息地における生物の観察数やスポーツにおける試合の得点など、0を多く含むデータが存在する。 そうしたデータについて統計モデルを適用する場合、ポアソン分布や負の二項分布を仮定した一般化線形モデル GLMなどを行うと、ポアソン分布で期待されるよりも過剰(あるいは過少)にデータが観測されることがあり推定がうまくいかないことがある。そのデータのように0の割合が多いデータに対して有効なモデルがゼロ過剰なポアソン分布モデル Zero-inflated Poisson Distribution: ZIPモデルである。 📉 カウン
#2016.01.07現在,Rpubsが不調なため(?),こちらにアップします。 #2016.01.22 Rpubsが復旧したので,そちらにリンクを貼るようにします。なお,前に載せてあった記事にはstanコードにバグがありましたので,修正しました。 Lesson10. Bayesian Modeling 2 http://rpubs.com/kosugitti/145116
StanをつかってTitanicデータをロジスティック回帰してみて、さらに分類の性能評価を少し行ってみるという記事です。 この記事で使う確率的プログラミング言語「Stan」では分布のパラメーターの推定に、ハミルトニアンモンテカルロ法(HMC法)とNUTSという手法が用いられています。厳密には乱数の発生原理が異なるのですが、もう少しシンプルな手法にマルコフ連鎖モンテカルロ法 メトロポリス・ヘイスティングス法(MH法)があります。この動作原理について、私@kenmatsu4が書いた スライド, 基礎からのベイズ統計学 輪読会資料 第4章 メトロポリス・ヘイスティングス法 【統計学】マルコフ連鎖モンテカルロ法(MCMC)によるサンプリングをアニメーションで解説してみる。 の2点がありますので、よければ参考としてください。やっていることのイメージを付ける意図であればMH法とHMC法は大きく違わない
13. LDA(latent dirichlet allocation) ● ● Stan code(manual 128 page) parameters { simplex[K] theta[M]; // topic dist for doc m simplex[V] phi[K]; // word dist for topic k } model { for (m in 1:M) theta[m] ~ dirichlet(alpha); // prior for (k in 1:K) phi[k] ~ dirichlet(beta); // prior for (n in 1:N) { real gamma[K]; for (k in 1:K) gamma[k]<-log(theta[doc[n],k]) +log(phi[k,w[n]]); increment_log_prob(l
StanのToDoリストが長すぎて若干引き気味のberoberoです。 BUGS/Stan勉強会#2の発表した内容の一つを紹介をしたいと思います。 スライドは埋め込んで、ソースコードのコピペ&解説をメインにします。 使用したデータは以下。自由に使ってください。 ・元データ: data.txt ・起床時刻だけ抜き出したもの: data_sleepout.txt ・起床時刻から起床時刻の時間: data_out2out.txt ・起床時刻の累積時刻: data_cum.txt まずはじめに起床時間の分布のパラメータを求めたStanコードは以下になります。 7行目・11行目、Stanでvon Mises分布を使うときはsigmaをある程度小さくしましょう。 kickするRコードは以下になります。 9行目: von Mises分布に渡すために0-24を0-2πに変換しています。 次に起床時刻から起
EC サイトなどでは、1 ページの読み込み時間の平均値が短いユーザほどコンバージョン率が高くなるという話があります。 この原因については、サクサク読み込みが終わる速いサイトの方がユーザは気前よく購入する、というわけではなく、単に速い回線を持つほどお金持ちなので購入しやすいという身も蓋もない話もあります。 今回はこの原因についてではなく、制約条件が付いた時のパラメータ推定の話をします。 とりあえず擬似データを作成しましょう。 true_cvr <- c(0.209, 0.126, 0.096, 0.093, 0.086, 0.077, 0.067, 0.057) load_time <- c("0-1", "1-3", "3-7", "7-13", "13-21", "21-35", "35-60", "60+") session <- c(1000, 6000, 4000, 1500, 7
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く