2017-10-02 4 views
0

私は3つのパラメータa,bおよびcの関数を持っており、これらのパラメータごとに異なるpriorを定義します。私はemceeパッケージを使用しています。emcee内の各パラメータのカスタム事前定義を定義

私は、単純な均一(無情報)前に開始しました:私は、各パラメータ異なる前のために持っていると思います

def lnprior(theta): 
    m, b, c = theta 
    if 1.0 < m < 2.0 and 1.0 < b < 2.0 and 1.0 < c < 2.0: 
     return 0.0 
    return -np.inf 

。たとえばaの場合は、ノーマル(ミュー、シグマ)を前に、bをユニフォームに、cを前に(1/c)としたいと思います。今まで私は、次のように出てくる:私の知る限り、私は合計1(lnpriorの戻り値)を定義するために一緒にすべての確率を追加する必要が対数スケールで理解されるように

def lnprior(theta): 
    a, b, c = theta 

    mu = 0.5 # mean of the Normal prior 
    sigma = 0.1 # standard deviation of the Normal prior 

if not (1.0 < b < 2.0): # the bound on the uniform 
    return -np.inf 
if c < 0.0:    # the bound on the Jeffreys 
    return -np.inf 
return .... # total log-prior to be determined 

。では、通常のaから始めましょう:

log_Pr(a) = np.log(1.0/(np.sqrt(2*np.pi)*sigma)) - 0.5*(a - mu)**2/sigma**2;

その後、前c上:

log_Pr(c) = -log(c)

したがって、ログ前の総数は、Pr(a)+Pr(c)である必要があります。私の質問、このアプローチは正しいのですか?

おかげ

答えて

-1

...-- === はい! === --- ... [最小回答の長さを補うために23文字以上]

関連する問題