0

複数のこぶがあるディストリビューションがあります。各ハンプ、ガウス、指数、ワイブイルなどにいくつかの異なるタイプの分布を当てはめたいと思います。しかし、現状では、組み合わせごとに確率クラスを手動で定義する必要があるようです。私がやりたいことは次のようなものです

@stochastic(model_a, model_b, observed=True)
def mixture(value=observed_time_series, model_a_parameters, model_b_parameters, p):
     def logp(value, model_a_parameters, model_b_parameters):
         return p*model_a.logp(value, *model_a_parameters) + (1-p)*model_b.logp(value, *model_b_parameters)
     def random(model_a_parameters, model_b_paramters, ratio):
        if(random() < ratio):
             return model_a.random()
        return model_b.random()

このような委任は可能ですか?これを行う標準的な方法はありますか?上記のようなことを止める主な理由は、変数のセットを一緒にグループ化する方法が思いつかないということです。

4

1 に答える 1

1

あなたは正しい軌道に乗っています。デコレータは次のstochasticように単純化できます。

@observed
def mixture(...):
    ...

randomまた、尤度からサンプリングする必要があるかどうかを定義するだけで済みます。

混合物をモデル化するためのもう 1 つのアプローチは、潜在変数モデルを使用することです。この場合、個々の観測値には、それらがどの分布から派生したかに対応する指標があります。これらの指標は、たとえば、カテゴリ分布でモデル化できます。これは、ディリクレ事前分布などを持つことができます。

于 2013-12-29T18:23:03.137 に答える