ベイズ推定

【cmdstanpy】学習後のモデルを使って新しく予測値を生成する【generate_quantities】

Stanでベイズ推定を使ってモデルを学習させた後に、学習後のモデルを使って新しく予測値とその信頼区間を生成したいと思った。 cmdstanpyを色々と調べたところgenerate_quantitiesという関数が用意されているらしい。 今回は単回帰分析をした後に新たに予測…

【python】summary()の出力時に予測区間の範囲と数を変更する【Cmdstanpy】

Cmdstanpyでベイズ推定を実行した後に、summary()を実行すると各種パラメーターのまとめが出てくるが、その中に予測区間がある。 デフォルトは5%,50%,95%だが、この予測区間の範囲を変更したくなった。 fit.summary() percentilesで指定するといいらしく、範…

【Stan】Stanの演算子をメモしておく

Stanの演算子について忘れないようにメモしておく。 四則演算 a + b //足し算。a+b。 a - b //引き算。a-b。 a / b //割り算。a÷b。 a * b //掛け算。a×b。 a % b //剰余。a÷bの余り。 べき乗 a ^ b //累乗。aのb乗 exp(a) //ネイピア数eのa乗 pow(a,b) // a…

【Stan】Stanの構造を勉強中

Stanでは、5つのブロックがあるらしい。 data: 観測データtransformed data: dataに基づいて計算される変数parameters: モデルのパラメータtransformed parameters: prametersに基づいて計算される変数model: モデルgenerated quantities: サンプリングされ…

【python】Stanの重回帰分析をやってみる【Cmdstanpy】

前回cmdstanpyを使って単回帰を解説したので、今回は重回帰分析用のコードをまとめてみる。 使用するデータ x1(説明変数) 1 2 3 4 5 x2(説明変数) 2 6 6 9 6 x3(目的変数) 1 3 4 7 9 過去の計算によると下記式が得られていた。 pythonコード 使用したpython…

【stan】ベクトルの内積を計算するのに転置(')やrow_vectorが必要なことを知った

stanで重回帰分析をしようとすると、こんな感じのモデルを書くことになる。 data { int<lower=0> N; //データ数 int<lower=0> M; //説明変数の数 real X[N, M]; real Y[N]; } parameters { vector[M] b; real<lower=0> sigma; } model { Y ~ normal (X*b, sigma); } このXbはちゃんと書</lower=0></lower=0></lower=0>…

【cmdstanpy】Stanのフィッティング後のモデルを保存する【chatGPTメモ】

cmdstanpyで事後分布を計算した後保存したいなと思ったら、そのままcsvに行けるらしい。今度試してみる。 import cmdstanpy import pandas as pd # Stanモデルのコンパイル model = cmdstanpy.CmdStanModel(stan_file='model.stan') # データの準備 data = {…

【python】Stanの単回帰分析をとにかく丁寧に解説する【Cmdstanpy】

今はやりのベイズ推定。pythonだとpyMC3やCmdstanpyがライブラリとして準備されている。ただ、Stanの書き方はベクトルや行列になじみがないと結構難しい。 毎回調べながら書いているのだが、一度ちゃんと調べてまとめておきたい。 使用するデータ 色んな記事…