pyMC API ベイズ・確率プログラミング

pyMC API サンプラー

サンプラー

サンプラー
pymc.sample
pymc.sample_prior_predictive
pymc.sample_posterior_predictive
pymc.sample_posterior_predictive_w
pymc.sampling.jax.sample_blackjax_nuts
pymc.sampling.jax.sample_numpyro_nuts
pymc.init_nuts
pymc.draw
pymc.NUTS
pymc.NamiltonianMC
pymc.BinaryGibbsMetroplis
pymc.BinaryMetropolis
pymc.CategoricalGibbsMetropolis
pymc.CauchhyProposal
pymc.DEMetropolis
pymc.DEMetropolisZ
pymc.LaplaceProposal
pymc.Metropolis
pymc.MutivariateNormalProposal
pymc.NormalProposal
pymc.PoissonProposal
pymc.UniformProposal
pymc.CompoundStep
pymc.Slice

pymc.sample

事後分布からサンプルを出力する。

pymc.sample(draws=1000, *, tune=1000, chains=None, cores=None, random_seed=None, progressbar=True, step=None, nuts_sampler='pymc', initvals=None, init='auto', jitter_max_retries=10, n_init=200000, trace=None, discard_tuned_samples=True, compute_convergence_checks=True, keep_warning_stat=False, return_inferencedata=True, idata_kwargs=None, nuts_sampler_kwargs=None, callback=None, mp_ctx=None, model=None, **kwargs)
変数
drawint出力するサンプル数
tuneinttuneのための繰り返し数
chainsintチェイン数
coresint並列に動かすチェイン数、(CPUコア数)
random_seedintサンプリングステップに使うランダムシード
progressbarboolコマンドラインに進捗バーを出力するかどうか
stepfunstionステップ関数。
nuts_samplerstr実行するNUTSの実装。(pymc,nutpie,blackjax,numpyro)
intervalsdict, dictの配列dictに設定した初期値。
initstrNUTSサンプラーを使う初期化メソッド
jitter_max_retiresint初期行列を作る時に(チェインごとに)繰り返しに達する最大値
n_initint初期化の繰り返し回数
traceバックエンドのインスタンス
discard_tunedbooltuneインターバルの事後サンプルを破棄するかどうか
compute_convergence_checksboolサンプラーの統計値を計算するかどうか
return_inferencedataboolトレースを返すかどうか
idata_kwargsdictpymc.to_inference_data()のキーワード引数
nuts_sampler_kwargsdictサンプリングライブラリのキーワード引数
callbackチェインのトレースから各サンプルを呼び出す関数
mp_ctxmultiprocessing.context.BaseContent並列サンプリングのための多重処理コンテキスト
modelModel

(使用例)

import pymc as pm
n = 100
h = 61
alpha = 2
beta = 2

with pm.Model() as model: # context management
    p = pm.Beta("p", alpha=alpha, beta=beta)
    y = pm.Binomial("y", n=n, p=p, observed=h)
    idata = pm.sample()

az.summary(idata, kind="stats")

Out[3]:
    mean     sd  hdi_3%  hdi_97%
p  0.609  0.047   0.528    0.699

pymc.sample_prior_predictive

事前予測分布からサンプルを生成する

pymc.sample_prior_predictive(samples=500, model=None, var_names=None, random_seed=None, return_inferencedata=True, idata_kwargs=None, compile_kwargs=None)

変数
samples事前予測から生成するサンプル数
modelModel
var_names事前予測サンプルを計算するための変数名のリスト
random_seed乱数生成用のシード
return_inferencedataboolarviz.InferenceDataオブジェクト(True)またはdict(False)を返す.
idata_kwargsdictpymc.to_inference_data()のためのキーワード引数
compile_kwargspymc.pytensorf.compile_pymc()へのキーワード引数
リターン
arviz.InferenceData事前予測サンプルを含むarviZ InferenceDataオブジェクト

pymc.sample_posterior_predictive_w

トレースを与えられたモデルから事後予測分布を生成する

pymc.sample_posterior_predictive(trace, model=None, var_names=None, sample_dims=None, random_seed=None, progressbar=True, return_inferencedata=True, extend_inferencedata=False, predictions=False, idata_kwargs=None, compile_kwargs=None)
変数
traceMCMCサンプリングから生成するトレース
modelModel事後予測サンプルを生成するトレース
var_names事後予測サンプルを計算するための変数名のリスト
random_seed乱数生成用のシード
progressbarコマンドラインに進捗バーを表示させるかどうか
return_inferencedataboolarviz.InferenceDataオブジェクト(True)またはdict(False)を返す.
extend_inferencedatabool事後予測サンプルをtraceに追加するためにarviz.InferenceData.extend()を自動で使うかどうか
predictionsbool戻り値arviz.InferenceDataオブジェクトの中の事後予測サンプルの位置をセットする
idata_kwargsdictFalse:pymc.to_inference_data()のためのキーワード引数, True:pymc.predictions_to_inference_data()
compile_kwargspymc.pytensorf.compile_pymc()へのキーワード引数

(使用例)

thinned_idata = idata.sel(draw=slice(None, None, 5))
with model:
    idata.extend(pymc.sample_posterior_predictive(thinned_idata))

expanded_data = idata.posterior.expand_dims(pred_id=5)
with model:
    idata.extend(pymc.sample_posterior_predictive(expanded_data))

pymc.sampling.jax.sample_blackjax_nuts

blackjaxライブラリのNUTSメソッドを使った事後分布からサンプルを出力

pymc.sampling.jax.sample_blackjax_nuts(draws=1000, tune=1000, chains=4, target_accept=0.8, random_seed=None, initvals=None, model=None, var_names=None, keep_untransformed=False, chain_method='parallel', postprocessing_backend=None, postprocessing_chunks=None, idata_kwargs=None, **kwargs)
変数
drawint出力するサンプル数
tuneinttuneのための繰り返し数
chainsintチェイン数
target_acceptfloat調整されるステップサイズ
random_seedintサンプリングステップに使うランダムシード
initvalsランダム変数をマッピングしたdict型で与えられるランダム変数の初期値
var_names事後サンプルを計算する変数名
keep_untransformed事後サンプルの変換しない変数を含む
chain_methodサンプルの出力法。 pararell または  vectorized
postprocessing_backend後処理の計算方法、gpu または cpu
idata_kwargsdictpymc.to_inference_data()のキーワード引数
リターン
arviz.InferenceData事後サンプルを含むarviZ InferenceDataオブジェクト

pymc.sampling.jax.sample_numpyro_nuts

numpyroライブラリのNUTSメソッドを使った事後分布からサンプルを書き出す。

pymc.sampling.jax.sample_numpyro_nuts(draws=1000, tune=1000, chains=4, target_accept=0.8, random_seed=None, initvals=None, model=None, var_names=None, progressbar=True, keep_untransformed=False, chain_method='parallel', postprocessing_backend=None, postprocessing_chunks=None, idata_kwargs=None, nuts_kwargs=None, **kwargs)
変数
drawint出力するサンプル数
tuneinttuneのための繰り返し数
chainsintチェイン数
target_acceptfloat調整されるステップサイズ
random_seedintサンプリングステップに使うランダムシード
initvalsランダム変数をマッピングしたdict型で与えられるランダム変数の初期値
modelModelサンプラーのモデル
var_namesstr事後サンプルを計算する変数名
progressbarboolコマンドラインに進捗バーを表示されるかどうか
keep_untransformed事後サンプルの変換しない変数を含む
chain_methodstrサンプルの出力法。 pararell または  vectorized
postprocessing_backend後処理の計算方法、gpu または cpu
postprocessing_chunks計算する後処理のチャンク数
idata_kwargsdictpymc.to_inference_data()のキーワード引数
nuts_kwargsnumpyro.infer.NUTS()のキーワード引数
リターン
arviz.InferenceData事後サンプルを含むarviZ InferenceDataオブジェクト

pymc.init_nuts

NUTSのための行列の塊の初期化

pymc.init_nuts(*, init='auto', chains=1, n_init=500000, model=None, random_seed=None, progressbar=True, jitter_max_retries=10, tune=None, initvals=None, **kwargs)

変数
initstr初期化メソッド
chainsintチェイン数
initvalsdictdictまたはdictのリスト。ランダム変数をマッピングしたdict型で与えられるランダム変数の初期値
n_initint初期化の繰り返し回数
modelModel
random_seedintサンプリングステップに使うランダムシード
progressbarbooladviサンプリングの進捗バーを表示するかどうか
jitter_max_retriesint初期行列を作る時に到達する繰り返し数の最大値
idata_kwargsdictpymc.NUTSにわたされるキーワード引数
リターン
arviz.InferenceData事後サンプルを含むarviZ InferenceDataオブジェクト

pymc.draw

変数または変数のリスト

pymc.draw(vars, draws=1, random_seed=None, **kwargs)
変数
varsTensorVariableサンプルを出力するための変数、または変数のリスト
drawsint出力するサンプル数
random_seedintサンプリングステップに使うランダムシード
**kwargsdictpymc.to_inference_data()のキーワード引数
リターン
ndarrayのリストnumpy配列のリスト

(使用例)

import pymc as pm

# Draw samples for one variable
with pm.Model():
    x = pm.Normal("x")
x_draws = pm.draw(x, draws=100)
print(x_draws.shape)

# Draw 1000 samples for several variables
with pm.Model():
    x = pm.Normal("x")
    y = pm.Normal("y", shape=10)
    z = pm.Uniform("z", shape=5)
num_draws = 1000
# Draw samples of a list variables
draws = pm.draw([x, y, z], draws=num_draws)
assert draws[0].shape == (num_draws,)
assert draws[1].shape == (num_draws, 10)
assert draws[2].shape == (num_draws, 5)

pymc.NUTS

ハミルトニアンの仕組みを基にした連続変数のサンプラー

class pymc.NUTS(*args, **kwargs)
メソッド
NUTS.__init__([vars,max_treedepth,...])No-U-Turnサンプラーの設定
NUTS.astep(q0)単一のHMC繰り返しの実行
NUTS.competence(var,has_grad)ランダム変数のサンプリングにどの程度、このクラスが適当かチェックする
NUTS.reset([start])
NUTS.reset_tuning([start])
NUTS.step(point)サンプラーを1ステップ実行する
NUTS.stop_tuning()
属性
default_blocked
name
stats_dtypes1<= 以下のdict型の値を含むリスト
stats_dtypes_shapes
varsステップメソッドがアサインされた変数

pymc.HamiltonianMC

ハミルトニアン仕組みを基にした連続変数のサンプラー

class pymc.HamiltonianMC(*args, **kwargs)
メソッド
HamiltonianMC.__init__([vars,max_treedepth,...])ハミルトニアン・モンテカルロサンプラーの設定
HamiltonianMC.astep(q0)単一のHMC繰り返しの実行
HamiltonianMC.competence(var,has_grad)ランダム変数のサンプリングにどの程度、このクラスが適当かチェックする
HamiltonianMC.reset([start])
HamiltonianMC.reset_tuning([start])
HamiltonianMC.step(point)サンプラーを1ステップ実行する
HamiltonianMC.stop_tuning()
属性
default_blocked
name
stats_dtypes1<= 以下のdict型の値を含むリスト
stats_dtypes_shapes
varsステップメソッドがアサインされた変数

pymc.BinaryGibbsMetropolis

バイナリ変数のために最適化されたメトロポリス ギッブスステップ法

class pymc.BinaryGibbsMetropolis(*args, **kwargs)
変数
varsTensorVariableサンプラーための変数のリスト
orderintギッブス更新順序を示す整数のリスト
transit_pintカーネル遷移の対角線
modeldictサンプリングステップのための任意のモデル
メソッド
BinaryGibbsMetropolis.__init__([vars,max_treedepth,...])
BinaryGibbsMetropolis.astep(apoint,*args)混乱して、パラメータ空間を連結させたシングルステップの実行
BinaryGibbsMetropolis.competence(var,has_grad)バイナリメトロポリスはベルヌーイと分類変数(K=2)に適しています。
BinaryGibbsMetropolis.step(point)サンプラーを1ステップ実行する
BinaryGibbsMetropolis.stop_tuning()
属性
name
stats_dtypes1<= 以下のdict型の値を含むリスト
stats_dtypes_shapes統計名をdtypes と shapes にマップする
varsステップメソッドがアサインされた変数

pymc.BinaryMetropolis

バイナリ変数に最適化したメトロポリス・ヘイスティング

class pymc.BinaryMetropolis(*args, **kwargs)
変数
varsTensorVariableサンプラーための変数のリスト
scalingint提案する初期スケール因子
tuneboolチューニングフラグ
tune_intervalintチューニングの頻度
modeldictサンプリングステップのための任意のモデル
メソッド
BinaryMetropolis.__init__([vars,max_treedepth,...])
BinaryMetropolis.astep(apoint,*args)混乱して(raveled)、パラメータ空間を連結させたシングルステップの実行
BinaryMetropolis.competence(var,has_grad)バイナリメトロポリスはバイナリと分類変数(K=1)に最適となります
BinaryMetropolis.step(point)サンプラーを1ステップ実行する
BinaryMetropolis.stop_tuning()
属性
name
stats_dtypes1<= 以下のdict型の値を含むリスト
stats_dtypes_shapes統計名をdtypes と shapes にマップする
varsステップメソッドがアサインされた変数

pymc.CategoricalGibbsMetropolis

分類変数のために最適化したメトロポリス・ギッブス・ステップ法

class pymc.CategoricalGibbsMetropolis(*args, **kwargs)
メソッド
CategoricalGibbsMetropolis.__init__([vars,max_treedepth,...])
CategoricalGibbsMetropolis.astep(apoint,*args)混乱して(raveled)、パラメータ空間を連結させたシングルステップの実行
CategoricalGibbsMetropolis.astep_prop
CategoricalGibbsMetropolis.astep_unif
CategoricalGibbsMetropolis.competence(var,has_grad)分類ギッブスメトロポリスはベルヌーイと分類変数に最適となります
CategoricalGibbsMetropolis.metropolis_proportional(q,...)
CategoricalGibbsMetropolis.step(point)サンプラーを1ステップ実行する
CategoricalGibbsMetropolis.stop_tuning()
属性
name
stats_dtypes1<= 以下のdict型の値を含むリスト
stats_dtypes_shapes統計名をdtypes と shapes にマップする
varsステップメソッドがアサインされた変数

pymc.CauchyProposal

class pymc.CauchyProposal(s)
メソッド
CauchyProposal.__init__(s)

pymc.DEMetropolis

差分進化メトロポリス サンプリングステップ

遺伝アルゴリズムを用いた最適化アルゴリズム、より詳しい情報は以下の文献Statistics and Computingを参照

 A Markov Chain Monte Carlo version of the genetic algorithm Differential Evolution: easy Bayesian computing for real parameter spaces

Cajo J. F. Ter Braak 
class pymc.DEMetropolis(*args, **kwargs)
変数
lambfloatDE提案する仕組みのLambdaパラメータ
varsTensorVariableサンプラーための変数のリスト
S標準偏差または共分散行列母数の提案分布のための基準の変数
proposal_dist母数がSの平均ゼロを返す関数
scalingintepsilonのための初期スケール因子
tunestrどのパラメータをチューニングするか
tune_intervalintチューニングの頻度
modeldictサンプリングステップのための任意のモデル
modestrPyTensor関数に渡すコンパイルモード
メソッド
CategoricalGibbsMetropolis.__init__([vars,max_treedepth,...])
CategoricalGibbsMetropolis.astep(apoint,*args)混乱して(raveled)、パラメータ空間を連結させたシングルステップの実行
CategoricalGibbsMetropolis.competence(var,has_grad)分類ギッブスメトロポリスはベルヌーイと分類変数に最適となります
CategoricalGibbsMetropolis.link_population(population,...)サンんプラーを母集団にリンクする
CategoricalGibbsMetropolis.step(point)サンプラーを1ステップ実行する
CategoricalGibbsMetropolis.stop_tuning()
属性
name
stats_dtypes1<= 以下のdict型の値を含むリスト
stats_dtypes_shapes統計名をdtypes と shapes にマップする
varsステップメソッドがアサインされた変数

pymc.DEMetropolisZ

適応差分進化メトロポリス・サンプリングステップ

class pymc.DEMetropolisZ(*args, **kwargs)
変数
lambfloatDE提案する仕組みのLambdaパラメータ
varsTensorVariableサンプラーための変数のリスト
S標準偏差または共分散行列母数の提案分布のための基準の変数
proposal_dist母数がSの平均ゼロを返す関数
scalingintepsilonのための初期スケール因子
tunestrどのパラメータをチューニングするか
tune_intervalintチューニングの頻度
tune_drop_fractionfloatチューニングが終了した時にサンプラーの履歴から除去するチューニングステップの部分
modeldictサンプリングステップのための任意のモデル
modestrPyTensor関数に渡すコンパイルモード

アルゴリズムのより詳しい情報は以下の文献Statistics and Computingを参照

Differential Evolution Markov Chain with snooker updater and fewer chains

Cajo C.F. ter Braak 
メソッド
DEMetropolisZ.__init__([vars,max_treedepth,...])
DEMetropolisZ.astep(q0)混乱した(raveled)、パラメータ空間を連結させたシングルステップの実行
DEMetropolisZ.competence(var,has_grad)
DEMetropolisZ.reset_tuning()初期値の履歴とチューニングしたサンプラーのパラメータをリセットする
DEMetropolisZ.step(point)サンプラーを1ステップ実行する
DEMetropolisZ.stop_tuning()チューニングフェイズの終了時、履歴の最初のX%をこのメソッドで除去する。
属性
default_blocked
name
stats_dtypes1<= 以下のdict型の値を含むリスト
stats_dtypes_shapes統計名をdtypes と shapes にマップする
varsステップメソッドがアサインされた変数

pymc.LaplaceProposal

class pymc.LaplaceProposal(s)
メソッド
LaplaceProposal.__init__(s)

pymc.Metropolis

メトロポリス・ヘイスティング サンプリングステップ

class pymc.Metropolis(*args, **kwargs)
メソッド
Metropolis.__init__([vars,max_treedepth,...])メトロポリスステッパーのインスタンスを生成する。
Metropolis.astep(q0)混乱して(raveled)、パラメータ空間を連結したシングルステップの実行
Metropolis.competence(var,has_grad)
Metropolis.reset_tuning()初期値の履歴とチューニングしたサンプラーのパラメータをリセットする
Metropolis.step(point)サンプラーを1ステップ実行する
Metropolis.stop_tuning()チューニングフェイズの終了時、履歴の最初のX%をこのメソッドで除去する。
属性
default_blocked
name
stats_dtypes1<= 以下のdict型の値を含むリスト
stats_dtypes_shapes統計名をdtypes と shapes にマップする
varsステップメソッドがアサインされた変数

pymc.MultivariateNormalProposal

class pymc.MultivariateNormalProposal(s)
メソッド
MultivariateNormalProposal.__init__(s)

pymc.NormalProposal

class pymc.NormalProposal(s)
メソッド
NormalProposal.__init__(s)

pymc.PoissonProposal

class pymc.PoissonProposal(s)
メソッド
PoissonProposal.__init__(s)

pymc.UniformProposal

class pymc.UniformProposal(s)
メソッド
PoissonProposal.__init__(s)

pymc.CompoundStep

順番に適用する他のいくつかのステップのリストからなるステップ法

class pymc.CompoundStep(methods)
メソッド
Metropolis.__init__([vars,max_treedepth,...])メトロポリスステッパーのインスタンスを生成する。
Metropolis.reset_tuning()初期値の履歴とチューニングしたサンプラーのパラメータをリセットする
Metropolis.step(point)サンプラーを1ステップ実行する
Metropolis.stop_tuning()チューニングフェイズの終了時、履歴の最初のX%をこのメソッドで除去する。
属性
vars

pymc.Slice

単一変数スライスサンプラー・ステップ法

class pymc.Slice(*args, **kwargs)
変数
varsTensorVariableサンプラーための変数のリスト
wfloat初期スライス幅、デフォルト値1
tuneboolチューニングフラグ
modeldictサンプリングステップのための任意のモデル
メソッド
Slice.__init__([vars,max_treedepth,...])メトロポリスステッパーのインスタンスを生成する。
Slice.astep(apoint,*args)もつれて(raveled)、パラメータ空間を連結させた単一のステップの実行
Slice.competence(var,has_grad)
Slice.step(point)サンプラーを1ステップ実行する
Slice.stop_tuning()チューニングフェイズの終了時、履歴の最初のX%をこのメソッドで除去する。
属性
default_blocked
name
stats_dtypes1<= 以下のdict型の値を含むリスト
stats_dtypes_shapes統計名をdtypes と shapes にマップする
varsステップメソッドがアサインされた変数

-pyMC API, ベイズ・確率プログラミング
-, , , ,