Python で pyMC3 ライブラリを使用してモデルを推定しています。私の「実際の」モデルには 4 つのパラメーター配列があり、そのうちの 2 つには 170,000 を超えるパラメーターが含まれています。このパラメーターの配列を要約すると、私のコンピューターでは計算量が多すぎます。arviz の要約関数を使用すると、配列内の 1 つ (または少数) のパラメーターのみを要約できるかどうかを調べようとしています。以下は、同じ問題が存在する reprex ですが、モデルははるかに単純です。以下の線形回帰モデルでは、パラメーター配列に、、のb
3 つのパラメーターがあります。だけの要約を取得する方法を知りたいです。b[0]
b[1]
b[2]
b[0]
b[1]
b[0]
import pandas as pd
import pymc3 as pm
import arviz as az
d = pd.read_csv("https://quantoid.net/files/mtcars.csv")
mpg = d['mpg'].values
hp = d['hp'].values
weight = d['wt'].values
with pm.Model() as model:
b = pm.Normal("b", mu=0, sigma=10, shape=3)
sig = pm.HalfCauchy("sig", beta=2)
mu = pm.Deterministic('mu', b[0] + b[1]*hp + b[2]*weight)
like = pm.Normal('like', mu=mu, sigma=sig, observed=mpg)
fit = pm.fit(10000, method='advi')
samp = fit.sample(1500)
with model:
smry = az.summary(samp, var_names = ["b"])
coords
関数への引数がそれを行うように見えましsummary()
たが、グーグルでいくつかの例を見つけた後、代わりにを使用した例のように、何かを機能させることができませんでした。特に、との要約が返されることを期待して、次のことを試しました。plot_posterior()
summary()
b[0]
b[1]
with model:
smry = az.summary(samp, var_names = ["b"], coords={"b_dim_0": range(1)})
またはこれの要約を返すにはb[0]
:
with model:
smry = az.summary(samp, var_names = ["b"], coords={"b_dim_0": [0]})
何か単純なものが欠けているのではないかと思います (私は R ユーザーであり、Python をときどき使っています)。どんな助けでも大歓迎です。
(ところで、私は Python 3.8.0、pyMC3 3.9.3、arviz 0.10.0 を使用しています)