StatModeling Memorandum

StatModeling Memorandum

StanとRとPythonでベイズ統計モデリングします. たまに書評.

技術記事はZennで書くことにします

ここ5,6年、技術記事を書くのにはてなブログを使っていましたが、以降でははなるべくZennで書くようにしたいと思います。過去の記事まで移行するわけではありません。 Zennが良い理由は複数あります。大きなところで以下です。 はてなブログでは数式が書きづ…

Windows11においてWolfram EngineをJupyterで使う方法 (2023年10月時点)

基本的には黒木先生のドキュメントに従えばOK。公開してくださっていて圧倒的感謝。 このリポジトリが一部更新されたおかげで手順通りにいかなかったところをメモ用に書いておきます。 手順 ここ からWolfram Engineをダウンロードしてインストールします。 …

『用量反応試験における患者の割り付けの深層強化学習による最適化』というタイトルで統計関連学会連合大会で発表しました

ありがたいことに統計関連学会連合大会の招待講演の依頼がありましたので喜んで引き受けました。たくさんの質問ありがとうございました。 発表資料を共有します。一言で言うと、臨床試験において各患者を各用量にどう割り付けるのが良いかを強化学習を用いて…

階層ベイズモデルとWAIC (その2) 積分消去する変数が2個ある場合

この記事では積分消去する変数が2個ある場合において、階層モデルのWAICを算出します。シンプソンの公式を使う場合とモンテカルロ積分を使う場合の二通り行います。 その前に、積分消去する変数が1個の場合を復習します。以前の記事のモデル2の(2)の予測を考…

『Rで学ぶ統計的データ解析』林賢一(著)の書評

統計家やデータサイエンティストを志す大学生・大学院生に読んでほしい、正統派の本です。 目次はこちら。コードを含むサポートページはこちら。類書としては『Rによる統計的学習入門』があります。 この本の特徴は、親しみやすい説明とRを実行する部分と、…

西浦先生らによる実効再生産数の統計モデルを解説&拡張する試み

先日の西浦先生のニコ生の発表を聞いていない人はぜひ聞いてください。 【8割おじさん西浦教授に聞く】新型コロナの実効再生産数のすべて オンライン講演会生中継/主催:日本科学技術ジャーナリスト会議 モデルとデータを以下のリポジトリでオープンにしてい…

COVID-19 日本国内の潜在的な陽性者数を推定する試み

日本国内の潜在的な陽性者数を推定することは有益ですが、簡単ではありません。PCR検査がランダムになっていないことが推定を難しくしています。有症状者が検査されやすいというselection biasがあるからです。この記事ではいくつか仮定を置いて潜在的な陽性…

『わけがわかる機械学習』中谷秀洋(著)の書評

僕が中谷さんと初めて会ったのはみどりぼんの読書会で、初めて話したのは岩波DSの打ち合わせだったと思います。今でもそんなに親しくはないと思います。しかし、中谷さんのブログは10年ぐらい前から読んでいました。自然言語処理を中心とする機械学習に関連…

NIMBLEでノンパラベイズを試したメモ

NIMBLEというRのライブラリがあります。BUGS言語風の文法でC++にコンパイルされるタイプの確率的プログラミング言語です。実装されている推定のアルゴリズムはここに書いてあります。MCMCの他にも以下のようなアルゴリズムがデフォルトで実装されており、実…

Stanで1変数の積分を実行する

Stan2.19でモデルの内部で1変数の積分を実行する機能が追加されましたので簡単に紹介します。Stan2.19がCRANにないとお嘆きのアナタ!GitHubからインストールすればよろし。Windowsならば、Benさんがここに書いてくれた方法でバイナリを直接インストールする…

統計・機械学習・R・Pythonで用途別のオススメ書籍

比較的読みやすい本を中心に紹介します。今後は毎年このページを更新します。 微分積分 高校数学をきちんとやっておけばそんなに困ることないような。偏微分とテイラー展開は大学演習のような本でしっかりやっておきましょう。ラグランジュの未定乗数法のよ…

TensorFlowで統計モデリング

とある勉強会で「TensorFlowで統計モデリング」というタイトルで講義をしました。聴衆はPythonユーザが多く、データ量が大きい問題が多そうだったので、StanよりもTensorFlowで点推定するスキルを伸ばすとメリットが大きいだろうと思ってこのようなタイトル…

Tokyo.R#70で「統計モデリングで癌の5年生存率データから良い病院を探す」というタイトルで話しました

以下のイベントで話しました。 第70回R勉強会@東京(#TokyoR): ATND 発表資料は以下です。 統計モデリングで癌の5年生存率データから良い病院を探す from Kentaro Matsuura 前にやった解析において、最終的なモデルにいたるまでのプロセスとモデリングのコ…

PythonのSymPyで変分ベイズの例題を理解する

この記事の続きです。 ここではPRMLの10.1.3項の一変数ガウス分布の例題(WikipediaのVariational_Bayesian_methodsのA basic exampleと同じ)をSymPyで解きます。すなわちデータが に従い*1、とが、 に従うという状況です。ここでデータ()が得られたとし…

統計モデリングで癌の5年生存率データから良い病院を探す

概要 2017年8月9日に国立がん研究センターは、がん治療拠点の約半数にあたる全国188の病院について、癌患者の5年後の生存率データを初めて公表しました(毎日新聞の記事)。報告書は国立がん研究センターが運営するウェブサイトからダウンロードできます(こ…

逆温度1の事後分布のサンプルからWBICを計算する

この記事は以下のツイートを拝見してやってみようと思いました。 #統計 #Baysian もしも「元論文の式(20)をβ₁=1, β₂=1/log nの場合に適用した公式を使ってWBICを計算すると事後分布のサンプルの違いによる分散が大きくなる」とか「直接逆温度1/log nの事後分…

Stanの関数を使ってRを拡張して高速化する

(C++に自動で変換される)Stanの関数を使ってRを拡張できる機能が、Stan/RStanの2.16で実装開始されて2.17でほぼ完成しました。Rを高速化するためにC++(とRcpp)はあまり書きたくないけれど、Stanの関数なら書いてもいいよという僕得な機能です。この記事…

IGMRFの尤度におけるrankの減少分に関するメモ

以下の書籍を読んで、IGMRF(Intrinsic Gaussian Markov Ramdom Field)の尤度に関して自分の理解をまとめたメモです。 [asin:B00YBV6YLI:detail] この発表資料の18ページにおいて、(観測モデル部分を除いた)IGMRFの対数尤度は以下に比例すると書きました…

『ベイズ統計モデリング ―R,JAGS, Stanによるチュートリアル 原著第2版―』 John Kruschke著、前田和寛・小杉考司監訳

タイトルの本を頂きました。ありがとうございます。僕は原著を少し読んだことがあり、こちらで非常に評判が高い本です。翻訳にもかかわらず原著とほぼ同じ値段で購入できます。 先にJAGSになじみのない方へ説明しておきますと、JAGSはRコアメンバーの一人で…

Osaka.Stan#5で「MCMCサンプルの使い方 ~見る・決める・探す・発生させる~」というタイトルで話しました

先日、以下のイベントで話しました。 『StanとRでベイズ統計モデリング』読書会(Osaka.Stan#5) : ATND 発表資料は以下です。 MCMCサンプルの使い方 ~見る・決める・探す・発生させる~ from Kentaro Matsuura 理論的には事後分布や予測分布の使い方というの…

しょラーさんのブログ記事「StanでAizu Online Judgeの難易度・習熟度を推定したい」の追加解析

背景やデータはしょラーさんの以下のブログ記事を読んでください。 kujira16.hateblo.jp この記事ではAOJ-ICPCで付加された貴重な難易度の情報をフル活用して、問題の真の難易度の推定と、各ユーザの習熟度の推定を行います。 この問題の難しさは「解いてい…

スパースモデルではshrinkage factorの分布を考慮しよう ~馬蹄事前分布(horseshoe prior)の紹介~

ベイズ統計の枠組みにおいて、回帰係数の事前分布に二重指数分布(ラプラス分布)を設定し回帰を実行してMAP推定値を求めると、lassoに対応した結果になります。また、回帰係数にt分布を設定する手法もあります。これらの手法は「shrinkage factorの分布」と…

『Pythonで体験するベイズ推論 ―PyMCによるMCMC入門―』の書評

特長 Pythonユーザが待ちに待ったPythonによるMCMC本ではないでしょうか。原著タイトルが『Bayesian Methods for Hackers』だけあって、プログラマ・エンジニア向きだと思います。数式はびっくりするほど出てこない代わりに、Pythonコードは非常にたくさんで…

{Rcpp}と{RcppGSL}を活用した数値積分の例

R

GSLはGNU Scientific Libraryの略で, 広い用途の数値計算向けのC言語のライブラリです。20年前から開発されており、まだリリースされ続けています。個人的な印象としては、めちゃくちゃチューニングされてはいないが、長年の開発のおかげで安定しており、マ…

MCMCサンプルを{dplyr}で操る

R

RからStanやJAGSを実行して得られるMCMCサンプルは、一般的に iterationの数×chainの数×パラメータの次元 のようなオブジェクトとなっており、凝った操作をしようとするとかなりややこしいです。 『StanとRでベイズ統計モデリング (Wonderful R)』のなかでは…

2次元以上のスポット検出を行う統計モデル

1次元の場合の変化点検出は以下の記事で扱いました。 状態空間モデルでシステムノイズに非ガウス分布(1次元の変化点検出) - StatModeling Memorandum 二つの時系列データの間に「差」があるか判断するには - StatModeling Memorandum 変化点検出のポイント…

情報量規準LOOCVとWAICの比較

この記事はStan Advent Calendar 2016およびR Advent Calendar 2016の12月7日の記事です。StanコードとRコードは記事の最後にあります。 背景は以下です。 [1] Aki Vehtari, Andrew Gelman, Jonah Gabry (2015). Practical Bayesian model evaluation using …

GPy(Pythonのガウス過程用ライブラリ)の使い方

概要 GPyを用いて、サンプルパスの生成、ガウス過程回帰、クラス分類、ポアソン回帰、Bayesian GPLVMを実行しました。自分用のメモです。 参考資料 [1] 公式ページ [2] 公式のチュートリアル [3] Gaussian Process Summer Schoolsの資料 理論的背景は上記の[…

Bayesian GPLVMをStanで実装してみた

この記事の続きです。PRML下の12章に出てくるOil Flowのデータ(データ点1000個×特徴量12個)に対してBayesian GPLVMで2次元(または3次元)の潜在変数空間にマッピングして綺麗に分離されるか見てみます。 まずはPRMLにもあるように普通の主成分分析でやる…

条件付き独立と有向分離を用いた統計モデルの妥当性チェック

この記事では条件付き独立と有向分離を使い、作成したモデルが背景知識と齟齬がないかチェックする方法を紹介します。以下の本の4章と5.3.1項を参考にしています。 Modeling and Reasoning with Bayesian Networks 僕が持っているのは上の一版なのですが、新…