1

現在、scipy.optimize.minimize と scipy.optimize.leastsq を使用して、データセットで非線形回帰を実行しています。PyMC(3) を使用して、フィッティング手順に含まれるすべてのパラメーターの事後調査を行いたいと考えています。SOでこの以前の回答に出くわしました。

これは非常に良い例です。私が見た他の例のほとんどは、線形回帰に関するものでした。ただし、この例は私の目的には完全には適していません。私のモデルには可変数のパラメーターがあり、そのサブセットをフィッティングします。このサブセットは通常、1 ~ 20 個のパラメーターの範囲ですが、それ以上になることもあります。scipy ミニマイザーを使用すると、これらのさまざまなパラメーターが 1D np.ndarray、p の形式でコスト関数に渡されます。

def chi2(p, *args):
    xdata = args[0]
    return p[0] + xdata * p[1] + ........

上記のリンクでは、@pymc.deterministic 装飾されたガウス関数にキーワード引数があります。同じコード ブロックがさまざまな (そしてかなりの) 数のパラメーターを処理する必要があるため、これは私にとって非現実的です。代わりにパラメータのベクトルを提供する方法はありますか? また、各パラメーターの事前確率のリストを提供する必要があります。ただし、各パラメーター [(min, max)...] の下限と上限のリストがあるので、問題にはなりません。

4

3 に答える 3

2

一連のパラメーターについては、ベクトルを使用してドット積を取得するのが最適な場合がよくあります。

@deterministic
def theta(beta=beta):
    return beta.dot(X)

または、明示的なベースライン平均が必要な場合:

@deterministic
def theta(mu=mu, beta=beta):
    return mu + beta.dot(X)

(これはすべて PyMC 2.3 です)

于 2014-11-30T23:47:20.770 に答える
0

次のリンクには、私が使用できる多くの情報が含まれていました。

https://groups.google.com/forum/#!msg/pymc/WUg0tZjNAL8/jsVRFe1DMT4J

于 2014-12-31T00:00:20.867 に答える