4

途中で劇的に変化する時系列を生成しています。

import numpy as np

size = 120 
x1 = np.random.randn(size)
x2 = np.random.randn(size) * 4
x = np.hstack([x1, x2])

このシリーズはx次のようになります。

ここに画像の説明を入力

目標は、PyMC3 を使用して、変更が発生した時間 (スイッチポイント) の事後分布を推定することです。これはインデックス 120 あたりで発生するはずです。私は次のコードを使用しました。

from pymc3 import Model, Normal, HalfNormal, DiscreteUniform
basic_model = Model()

with basic_model:
    mu1 = Normal('mu1', mu=0, sd=10)
    mu2 = Normal('mu2', mu=0, sd=10)
    sigma1 = HalfNormal('sigma1', sd=2)
    sigma2 = HalfNormal('sigma2', sd=2)
    tau = DiscreteUniform('tau', 0, 240)

    # get likelihoods
    y1 = Normal('y1', mu=mu1, sd=sigma1, observed=x[:tau])
    y2 = Normal('y2', mu=mu2, sd=sigma2, observed=x[tau:])

これを行うとtau、配列のスライスに使用できないエラーが発生します。PyMCでこれを解決するアプローチは何ですか? PyMC で確率的な何かによってスライスを行う必要があるようです。

4

1 に答える 1