サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
2024年ランキング
statmodeling.hatenablog.com
ここ5,6年、技術記事を書くのにはてなブログを使っていましたが、以降でははなるべくZennで書くようにしたいと思います。過去の記事まで移行するわけではありません。 Zennが良い理由は複数あります。大きなところで以下です。 はてなブログでは数式が書きづらい。[tex: ] でくくるのが結構つらい。たまに一部の文字のエスケープが必要になる。一方、Zennはふつうの慣れたTeX記法で書ける。ほぼバグらない。 調べた範囲では、はてなブログ・QiitaではGitHubのリポジトリにあるコードの埋め込みができない。gistの埋め込みは簡単にできるんだけどね。一方、Zennは簡単に埋め込みができる。 上記のユーザの快適さは頑張ればすぐ実現できただろうけど、はてなブログの新機能はどれも技術記事の方には向いておらず、一般の記事の方に向いている印象がある。一方、Zennは技術者のためを謳っていることもあり、
ありがたいことに統計関連学会連合大会の招待講演の依頼がありましたので喜んで引き受けました。たくさんの質問ありがとうございました。 発表資料を共有します。一言で言うと、臨床試験において各患者を各用量にどう割り付けるのが良いかを強化学習を用いて求める方法です。性能が良く第2相試験の効率を大きく改善すると思っています。実際の臨床試験でぜひ使ってほしいですし、そのための協力は惜しみません。 用量反応試験における患者の割り付けの深層強化学習による最適化 by @MatsuuraKentaro 元論文はこちらです(open access)。 資料の方は分かりやすさ重視のため、評価シナリオにexponentialモデルが入っていないです。論文の方は欠点を明確にするために入っています。 ソースコードは以下です。2022/9/6にPythonのgymライブラリに互換性のない変更が入りましたので、Rayライブ
先日の西浦先生のニコ生の発表を聞いていない人はぜひ聞いてください。 モデルとデータを以下のリポジトリでオープンにしていただいたので、モデルについて僕が分かる範囲内で少し解説を加えたいと思います。 github.com 実効再生産数を推定するコードが2種類ありまして、最尤推定(Maximum Likelihood Estimation, MLE)を使ったMLE版(Sungmok Jungさん作成)と 、ベイズ推定版(Andrei Akhmetzhanovさん作成)があります。どちらもコンセプトはほぼ同じで、実装が若干異なります。この記事では、ベイズ推定版(以降、元コードと呼びます)の流れを簡単に説明し、その後でその拡張を試みます。 ベイズ推定版の流れ 大きく分けて「データの集計」「back projection」「実効再生産数の推定」の3つの部分からなります。 データの集計 まずは日付ごとの
日本国内の潜在的な陽性者数を推定することは有益ですが、簡単ではありません。PCR検査がランダムになっていないことが推定を難しくしています。有症状者が検査されやすいというselection biasがあるからです。この記事ではいくつか仮定を置いて潜在的な陽性者数を推定したいと思います。 仮定 全国民のうち潜在的に陽性になっている割合 この割合は年代によらず一定と仮定します。ここでは と書きます(posはpositiveの略)。例えば0.0001なら日本人約1億2千万人中、おおよそ12000人が潜在的に陽性になっている計算です。 なお、国民の年代別人口の値はこのページの令和2年3月報 (令和元年10月確定値,令和2年3月概算値) (PDF:301KB) の「2019年10月1日現在(確定値)」の総人口 男女計の値を使用しました。 陽性者中の有症状者の割合 若年層で無症状が多いなど、年代で異なる
僕が中谷さんと初めて会ったのはみどりぼんの読書会で、初めて話したのは岩波DSの打ち合わせだったと思います。今でもそんなに親しくはないと思います。しかし、中谷さんのブログは10年ぐらい前から読んでいました。自然言語処理を中心とする機械学習に関連する理論(の解釈)・論文レビュー・数値実験の記事が多く、他のブログでは見られない独特かつ理解の深い内容で、毎日勉強させてもらっていました。今でも何度も読むべきブログです。その中谷さんが機械学習についてまるごと一冊書いたものが本書になります。もともと買うつもりでしたが、献本いただいたので簡単にご紹介いたします。 わけがわかる機械学習 ── 現実の問題を解くために、しくみを理解する 作者: 中谷秀洋出版社/メーカー: 技術評論社発売日: 2019/08/28メディア: 単行本(ソフトカバー)この商品を含むブログを見る 目次は以下になります。 0章: はじめ
とある勉強会で「TensorFlowで統計モデリング」というタイトルで講義をしました。聴衆はPythonユーザが多く、データ量が大きい問題が多そうだったので、StanよりもTensorFlowで点推定するスキルを伸ばすとメリットが大きいだろうと思ってこのようなタイトルになりました。 発表資料は以下になります。 TensorFlowで統計モデリング from . . 発表資料の途中に出てくるtf_tutorial.htmlとmodeling.htmlの内容は、以下のipynbをhtmlで出力したものです(見づらかったらプログラム名のところをクリックしてGitHubに移動して見てください)。 ちなみに僕が紹介しているTensorFlowの書き方はEager Executionではなく、Define and Runのやや古い書き方です。あまり気にしていませんけど。 ここではTensorFlowを
この記事の表記は以下です。Wがbag-of-wordsの行列を表すことに注意してください。 右2列は定数については数値を、そうでないものについてはR内の変数名を書いています。データは前の記事参照。 LDAの記事で、『別の視点から見ると、LDAがやっていることは、文書の特徴を大きな単語次元(V)から小さなトピック次元(K)に圧縮していることに相当します』と書きました。少し一般化して考えますと、LDAとはM×Vの行列であるW(bag-of-words)を、M×K行列であるとK×V行列であるに分ける、discrete PCAの一種とみなすことができます。componentの数がKになります。[Buntine+ 2005]ではをcomponent score matrix、をcomponent loading matrixと呼んでいるので以下ではそれにならうことにします。 LDAではは多項分布(K
以下のイベントで話しました。 第70回R勉強会@東京(#TokyoR): ATND 発表資料は以下です。 統計モデリングで癌の5年生存率データから良い病院を探す from Kentaro Matsuura 前にやった解析において、最終的なモデルにいたるまでのプロセスとモデリングのコツを多めにした内容にしました。 自分以外の発表内容も大変面白くて楽しめました。運営と発表者に感謝です。ありがとうございました!
この記事の続きです。 ここではPRMLの10.1.3項の一変数ガウス分布の例題(WikipediaのVariational_Bayesian_methodsのA basic exampleと同じ)をSymPyで解きます。すなわちデータが に従い*1、とが、 に従うという状況です。ここでデータ()が得られたとして事後分布を変分ベイズで求めます。 まずはじめに、上記の確率モデルから同時分布を書き下しておきます。 なので、 となります。 この問題は単純なので事後分布は厳密に求まるのですが、ここでは変分ベイズで解きます。すなわち、事後分布をで近似します。さらにと因子分解可能と仮定します。そして、前の記事の最後の2つの式を使って、とが収束するまで繰り返し交互に更新して求めるのでした。以下ではこれをSymPyでやります。 from sympy import * from sympy.stats imp
概要 2017年8月9日に国立がん研究センターは、がん治療拠点の約半数にあたる全国188の病院について、癌患者の5年後の生存率データを初めて公表しました(毎日新聞の記事)。報告書は国立がん研究センターが運営するウェブサイトからダウンロードできます(ここ)。報告書をダウンロードしようとすると注意点を記したポップアップが表示されます。大切な部分を抜粋すると以下です。 本報告書には、施設別の生存率を表示していますが、進行がんの多い少ない、高齢者の多い少ないなど、施設毎に治療している患者さんの構成が異なります。そのため、単純に生存率を比較して、その施設の治療成績の良し悪しを論ずることはできません。 一般に高齢者が多い病院ほど、進行癌(ステージが進んだ癌)が多い病院ほど、その病院の生存率は下がるわけです。それならば、統計モデリングで年齢と進行度(ステージ)の影響を取り除いて(専門的な言葉で言えば「調
(C++に自動で変換される)Stanの関数を使ってRを拡張できる機能が、Stan/RStanの2.16で実装開始されて2.17でほぼ完成しました。Rを高速化するためにC++(とRcpp)はあまり書きたくないけれど、Stanの関数なら書いてもいいよという僕得な機能です。この記事ではその方法を簡単に紹介します。 元にした資料はRStanの開発者であるBenさんがStanCon2018で発表したこちらの資料です。 ここでは例として、以下の2つの関数をRで使えるようにしましょう。 1) 機械学習分野でおなじみのlog_sum_exp関数 引数はN個の正の実数 2) データにemax modelという曲線をあてはめた場合の対数尤度を返す関数 引数はデータ(N個のXとYのペア)とパラメータの値 手順は簡単で以下だけです。 functionsブロックだけ書いたstanファイルを用意する R側でrstan
比較的読みやすい本を中心に紹介します。今後は毎年このページを更新します。 微分積分 高校数学をきちんとやっておけばそんなに困ることないような。偏微分とテイラー展開は大学演習のような本でしっかりやっておきましょう。ラグランジュの未定乗数法のような、統計・機械学習で必要になる部分は、ネット等で学べばいいかなと思っています。 線形代数 tensorflowなどのおかげで順伝播部分(行列積および行列とベクトルの積)さえ書ければ線形代数の知識はそこまでいらないんじゃないかという流れを感じます。しかし、主成分分析やトピックモデルなどの行列分解や、ガウス過程などのカーネル法のような様々なデータ解析の手法に一歩踏み込むと、きちんとした勉強が必要になります。理解しやすくて使いやすくて、統計や機械学習への応用を主眼においた線形代数の本はまだ見たことないです。機械学習シリーズとかで基礎から「The Matrix
以下の書籍を読んで、IGMRF(Intrinsic Gaussian Markov Ramdom Field)の尤度に関して自分の理解をまとめたメモです。 [asin:B00YBV6YLI:detail] この発表資料の18ページにおいて、(観測モデル部分を除いた)IGMRFの対数尤度は以下に比例すると書きました(ただしをに、をに読み替えてください)。 ここではnodeの数、はの精度行列*1でnodeのつながりの情報を反映していて、は線形制約に由来するのrankの減少分です。 1次元の1階階差のIGMRF 線状につながれたGMRFの場合、は以下になります。 このように精度行列が帯行列になってスパースになるところがGMRFの特徴です(分散共分散行列はスパースにならない)。 ここで、という線形の制約を満たすことに注意してください。に定数を足して平行移動しても、の要素の差しか尤度に関わってこない
タイトルの本を頂きました。ありがとうございます。僕は原著を少し読んだことがあり、こちらで非常に評判が高い本です。翻訳にもかかわらず原著とほぼ同じ値段で購入できます。 先にJAGSになじみのない方へ説明しておきますと、JAGSはRコアメンバーの一人でもあるMartyn Plummer氏によってC++で開発されたMCMCソフトウェアです。Rから使うのが多数派ですが、PythonからもPyJAGSによって使うことができます。 複雑なモデルでなければStanより収束が早く、離散値をとるパラメータも使えるため、プログラミングがそんなに得意でない人がベイズ統計モデリングをはじめるには一番向いていると思います。最近、再び活発に開発され始めたようで、先日JAGS 4.3.0がリリースされました。 JAGS 4.3.0 is released https://t.co/3jExabWcPI— Martyn
先日、以下のイベントで話しました。 『StanとRでベイズ統計モデリング』読書会(Osaka.Stan#5) : ATND 発表資料は以下です。 MCMCサンプルの使い方 ~見る・決める・探す・発生させる~ from Kentaro Matsuura 理論的には事後分布や予測分布の使い方というのが正しいですが、プログラミング言語との相性を考えてMCMCサンプルの使い方というタイトルにしました。自著ではモデリングのやり方の体得にフォーカスしていますが、事後分布や予測分布が得られるメリットについては分野や人によって異なるので詳細は省きました。いつか補おうと思っていたので良い機会でした。 読書会では、小杉先生の発表やLTもめちゃ面白く、東京のStan勉強会では見たことがない盛り上がりを見ました。ネット上でしか知らなかったベイジアンにたくさん会って話すことができてよかったです。調子に乗って3次会ま
ここ5,6年、技術記事を書くのにはてなブログを使っていましたが、以降でははなるべくZennで書くようにしたいと思います。過去の記事まで移行するわけではありません。 Zennが良い理由は複数あります。大きなところで以下です。 はてなブログでは数式が書きづ…
@housecat442さんのプレゼンにインスパイアされて、某S社様のサイトからスクレイピングさせていただき家賃予測を行いました。目的は広さ・最寄駅・築年や各種設備の割にお得な割安物件を探すことです。首都圏の賃貸物件を全て扱うのは大変なので、まずは山手線の各駅から徒歩15分以内の物件(32945件)について解析を行いました。およそ10分の1ぐらいの物件数です。 解析に使うデータは最終的には、応答変数が「費用.2年間」で説明変数が226個になりました。ここで予測したい「費用.2年間」は (賃料+管理費)*24 + 礼金 + 敷金 + 仲介手数料 + その他初期費用 - フリーレント.price で求めています。また今回は駐車場の費用に関しては考慮にいれませんでした。さらにデータを十分に可視化した上で説明変数に関していくつか前処理を追加しました。例えば「間取り」は「専有面積」と相関が高すぎるの
たまにはBUGSやStanの勉強法について書きます。 まずは久保先生の緑本の例題(ただし11章を除く)をBUGSやStanで実装するのがhello worldに相当します。 次にThe BUGS Bookをはじめから読みつつ気になったBUGSコードを実際に書いてみるのがよいと思います。 The BUGS Book (Chapman & Hall/CRC Texts in Statistical Science) 作者:Lunn, David発売日: 2012/11/01メディア: ペーパーバック 洋書なんか読みたくない!という方には以下の本をオススメします。ただちょっと高い。しかもBUGSの例題の解説が日本語でなされている感じ。でも読みやすいです。 ベイジアン統計解析の実際 (医学統計学シリーズ) 作者:丹後俊郎,Taeko Becque発売日: 2011/10/14メディア: 単行本 本
背景やデータはしょラーさんの以下のブログ記事を読んでください。 kujira16.hateblo.jp この記事ではAOJ-ICPCで付加された貴重な難易度の情報をフル活用して、問題の真の難易度の推定と、各ユーザの習熟度の推定を行います。 この問題の難しさは「解いていない問題が、スキップして取り組んでいないのか、解こうとしたけど解けなかったのか区別できない」という点にあります。そこで、元記事にもあったように問題をスキップする確率を導入してモデリングする必要があります。 とはいえ、まずはモデルのヒントになりそうなグラフを作成します。 以下では元記事にあわせて、難易度をdifficulty(StanコードではD)、習熟度をperformance(Stanコードではpf)と表現します。 データの分布の確認 difficultyの分布 横軸にdifficulty、縦軸に問題の数をとったヒストグラム
確率変数の変数変換においてヤコビアンを使う場合を簡単にまとめてみました。 ●Q1. 以下は1.00…が出力されます。なぜですか? sum <- 0 max <- 10000 for(i in 1:max){ sum <- sum + var(rnorm(5)) } print(sum/max) 10000回を十分大きな数とみなせば、これは変数の平均値が出力されると解釈できます。ここでは平均0, 標準偏差1の正規分布からランダムに抽出された5サンプルであることに注意して式変形すると、 となります。式の変形の途中にあるは母集団の標準偏差を表します。今回は1です。ここで、は教科書に載っているように自由度4のカイ2乗分布に従います(この証明もそんなに難しくなく重要ですが今回はパスします)。また、自由度4のカイ2乗分布の平均値は4です。よっての平均値は、 となります。Q1.の最終的な出力は1となりま
自分用のメモです。 SEM Structural Equation Modelingの略で「構造方程式モデリング」と和訳されています。共分散構造分析は構造方程式モデリング(SEM)の古い名称です。共分散以外の行列も扱えるので、共分散構造分析という名称は適当ではないということで、最近では構造方程式モデリングという言い換えのほうが主流とのことです。心理統計やアンケート解析でよく使われる因子分析と多重回帰分析(パス解析)の拡張となっており、因果関係によりフォーカスしたモデル体系と言えるでしょう。 BUGS/Stanで何でもありのモデリングに比べた時の制約は次の通りです。 使える分布はnormal()とmulti_normal()のみ。応答変数は説明変数の線形結合の回帰式で表され、リンク関数がidentityのみ。 しかしながら、この制約のおかげで決定係数、検定を用いた適合度、そしてパスの係数から
@kivantiumさんの以下のツイートが面白そうすぎて追加解析してみました。特に2つ目のツイートが重要で、これがないと階層ベイズでやってみようという気は起りませんでした。 調査の結果、アニメキャラのバストサイズとPixivでR-18タグが付く割合の相関係数は0.286・相関検定の結果はp=0.14であったため、バストサイズとR-18タグがつく割合には相関が無いという結論になりました pic.twitter.com/16bt8tyk4p— 川奈 清 (@kivantium) 2015, 5月 12 同一作品の間では確かに相関があるっぽかったけど、作品間による差の方が大きかったため相関が消えてしまった— 川奈 清 (@kivantium) 2015, 5月 12 kivantiumさんはブログ記事およびデータもすぐにアップして下さっています(最後のpdfに考察も追加されました!)(アニメキャ
ベイズ統計の枠組みにおいて、回帰係数の事前分布に二重指数分布(ラプラス分布)を設定し回帰を実行してMAP推定値を求めると、lassoに対応した結果になります。また、回帰係数にt分布を設定する手法もあります。これらの手法は「shrinkage factorの分布」という観点から見ると見通しがよいです。さらに、その観点から見ると、馬蹄事前分布が魅力的な性質を持っていることが分かります。この記事ではそれらを簡単に説明します。 なお、lassoそのものに関しては触れません。岩波DS5がlassoを中心にスパースモデリングを多角的に捉えた良い書籍になっているので、ぜひそちらを参照してください。 岩波データサイエンス Vol.5 発売日: 2017/02/16メディア: 単行本(ソフトカバー) 参考文献 [1] C. Carvalho et al. (2008). The Horseshoe Esti
特長 Pythonユーザが待ちに待ったPythonによるMCMC本ではないでしょうか。原著タイトルが『Bayesian Methods for Hackers』だけあって、プログラマ・エンジニア向きだと思います。数式はびっくりするほど出てこない代わりに、Pythonコードは非常にたくさんでてきます。そしてPyMCの使い方が基礎から説明してあって丁寧です。自分でコーディングする際は原著のGitHubリポジトリを活用しましょう(なんとStarが10000個を超えてる!)。 Pythonで体験するベイズ推論 PyMCによるMCMC入門 作者: キャメロン・デビッドソン=ピロン,玉木徹出版社/メーカー: 森北出版発売日: 2017/04/06メディア: 単行本(ソフトカバー)この商品を含むブログを見る 購入を迷っている人の一番の心配は、本書のPyMCのバージョンが1つ前のPyMC2であることだと思
RからStanやJAGSを実行して得られるMCMCサンプルは、一般的に iterationの数×chainの数×パラメータの次元 のようなオブジェクトとなっており、凝った操作をしようとするとかなりややこしいです。 『StanとRでベイズ統計モデリング (Wonderful R)』のなかでは、複雑なデータ加工部分は場合によりけりなので深入りしないで、GitHub上でソースコードを提供しています。そこでは、ユーザが新しく覚えることをなるべく少なくするため、Rの標準的な関数であるapply関数群を使っていろいろ算出しています。しかし、apply関数群は慣れていない人には習得しづらい欠点があります。 一方で、Rのデータ加工パッケージとして、%>%によるパイプ処理・{dplyr}パッケージ・{tidyr}パッケージがここ最近よく使われており、僕も重い腰を上げてやっと使い始めたのですが、これが凄く使い
前の記事の続きです。 今回はSIRモデルを人数のまま扱い、確率過程で扱います。このことでモデルはより正確になって定量的になりますが、「時間がたったらどうなるのか?」などの定性的な理解は難しくなります。時間に関しては一日ごとに感染者数が発表されることを考えて離散時間にします。離散時間の場合はStanの得意領域です。連続時間の場合は確率微分方程式となります。Rでは{yuima}パッケージがよく使われるでしょうか。 それでは元の微分方程式を離散時間の確率モデルに変換します。 まずは適当な時間刻み幅Δtを持ってきて差分化します。 nは時点を表します。は時刻t-Δtから時刻tまでの間にSからIになった人数を表します。S人の人がΔtの間に、ある確率pでIになることを考えると、これは平均pSの二項分布に従うと考えることができます。平均pSは微分方程式モデルと対応していないといけないので、以下になります。
1次元の場合の変化点検出は以下の記事で扱いました。 状態空間モデルでシステムノイズに非ガウス分布(1次元の変化点検出) - StatModeling Memorandum 二つの時系列データの間に「差」があるか判断するには - StatModeling Memorandum 変化点検出のポイントは状態空間モデルのシステムモデルに「ほとんどの場合は0の近くの値を生成するが,まれにとても大きな値を生成する」という性質を持つ分布を使うことでした。そこで、上記の例ではコーシー分布を使いました。しかし、コーシー分布はかなり厄介な分布なので逆関数法を利用したコーディングをしないとうまくサンプリングできません。そのため2次元以上の場合の同様のモデル(マルコフ場モデル)に拡張することができません。2次元の場合のマルコフ場モデルについては以下の記事で簡単に扱いました(少しコードが古いです)。詳しくは書籍「S
少し前に週刊ダイヤモンドの記事「使える大学・使えない大学」の結果がインターネット上で話題になっていました。具体的には以下のデータです。 引用元はこちら(参考: Googleブックスの書籍を引用するには) 画像の下の方の注意書きにも注目。有効回答数は「使える大学」と「使えない大学」で異なっています。1位~5位を5点~1点にして集計した結果のようです。そして「使える度合い」の算出方法には「使える大学」の点数と「使えない大学」の点数の差を使っています。 点数の差で問題ナシと言う人もします。しかしながら、例えば大学Aが「使える点数10100, 使えない点数10000」で大学Bが「使える点数100, 使えない点数0」である時、それが等価に思えるでしょうか。少なくとも僕にはそうは思えませんでした。 また点数の割合がいいんじゃないかという人もいます。色々な割算値が提案されているようです。回答数ならまだし
2016 - 12 - 24 統計・R・Stan関連の本、用途別のオススメ10冊 書評 R Stan 年末年始向けに、比較的読みやすい本を中心にオススメします。 統計学 入門 色々読んでみましたが、現在決定版と言えるものは存在しないように思えました。個人的には、シグマと 積分 の復習、場合の数・数え上げの方法、確率、確率変数、確率密度、度数分布と ヒストグラム 、代表値・平均・分散、確率分布、同時分布、周辺分布、確率変数の変数変換、検定、散布図と箱ひげ図、回帰、相関あたりをRなどを使いながらシンプルに説明していく本があるといいと思うのですが、なかなかバランスのとれたいい本がありません。初歩の初歩しか説明してない、グラフが少ない、検定にページを割きすぎ、分厚い、ちょっと難しいなどの不満点があります。立ち読みして自分にあった本を選ぶのがいいと思います。ネットで検索して調べるのでもいいと思います
次のページ
このページを最初にブックマークしてみませんか?
『StatModeling Memorandum』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く