現在、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)...] の下限と上限のリストがあるので、問題にはなりません。