私は尤度関数を計算するプログラムを作成しています。Python:尤度関数の値の範囲を差し込むと、常に同じ値が返されます
#loglikelihood
def like_xe(I):
model=(0.1535*(Z/A)*((charge*c/v_array)**2))*(np.log((2*m_e*(gamma_array**2)*(v_array**2)*(w_array)/((I*1.6E-6)**2)))-(2*(v_array/c_speed)**2))
return np.sum(((-0.5*np.log(2*np.pi*xe_un))-((xe_sp-(model))/(2*xe_un**2))))
「配列は」私は私の1000の値のための尤度関数を計算する、長さ50の全てすると、すべてのデータの配列です:私はフィットしようとしているパラメータは、これは私の関数であるIです。 0.0001〜0.001の間であり、このデータから尤度関数の最大値を抽出する。
I_list=np.arange(1E-4,0.001,1000)
like_val=[0 for like in range(len(I_list))]
for like in range(len(I_list)):
like_val[like]=like_xe(I_list[like])
これは[-169.58003268336941]のみを返します。明らかに、これは間違っています。どのように私はこの問題に近づいているのですか?これはおそらくreturn文を1回だけ読み込むためですか?
EDIT:np.arangeをnp.linspaceに変更しました。これは、正しいサイズの配列を作成しますが、値-169.58003268336941で完全に満たされています。
を単一の巨大な行ではなく変数に物を入れる方が簡単かもしれません。 – user3591723