私はNataf Transformで相関多変量シミュレーションを行っています。モンテカルロシミュレーションを行うためにPython(中級知識)でコードを開発しましたが、コンピュータで時間がかかります。モンテカルロシミュレーションでForループを最適化する
# Exponential distribution (stats package)
loc_exp = 15.0
scale_exp = 139.21617
# Gamma distribution (l-moments package)
loc_gam = 0.72698
scale_gam = 16.18526
for i in range(len(rho_z)):
# Generate standarn normal variates
n = int(1e6)
r = np.random.normal(0, 1, [n,2])
ui = r[:,0]
uj = r[:,1]
xi = stats.expon.ppf(stats.norm.cdf(ui), loc_exp, scale_exp)
xj = lmoments.quagam(stats.norm.cdf(rho_z[i]*ui + np.sqrt(1.0 - rho_z[i]**2)*uj), para = np.array((loc_gam, scale_gam)))
# evaluate rho_x
R = np.corrcoef(xi,xj)
rho_x[i] = R[0,1]
私はstatsとlmomentsパッケージを使用しています。ありがとう
可能な限り計算をベクトル化できるように、各部分のタイミングを調整して書き直してください。私はLUTからあらかじめ生成されたランダムな値を使うことから始めます。 – StarShine