コード例 #1
0
def theta_prior_rqmc(i, dim=5, n=1):
    random_seed = random.randrange(10**9)
    u_generator = np.array(randtoolbox.sobol(n=n, dim=dim, init=(i==0), scrambling=1, seed=random_seed)) # randtoolbox for sobol sequence
    #if u_generator.shape[1] != 5:
    #    raise ValueError("Input random generator has wrong size ! ")
    lam = gaussian(u_generator[:,0])
    delt = gaussian(u_generator[:,1])
    barrier1 = np.exp(lam)
    barrier2 = np.exp(lam+delt)
    s = gaussian(u_generator[:,2])
    drift1 = -0.1+u_generator[:,3]*0.2
    drift2 = -0.1+u_generator[:,4]*0.2
    if dim>5:
        extra_drift = -0.1+u_generator[:,5:]*0.2
        return np.expand_dims(np.hstack((np.array([barrier1, barrier2, s, drift1, drift2]), extra_drift.squeeze())),1)
    else:
        return np.expand_dims(np.array([barrier1, barrier2, s, drift1, drift2]),1)
コード例 #2
0
def theta_prior_mc(i, dim=5, n=1):
    random_seed = random.randrange(10**9)
    np.random.seed(seed=random_seed)
    u_generator = np.asarray(np.random.uniform(size=dim*n).reshape((n,dim)))
    #if u_generator.shape[1] != 5:
    #    raise ValueError("Input random generator has wrong size ! ")
    lam = gaussian(u_generator[:,0])
    delt = gaussian(u_generator[:,1])
    barrier1 = np.exp(lam)
    barrier2 = np.exp(lam+delt)
    s = gaussian(u_generator[:,2])
    drift1 = -0.1+u_generator[:,3]*0.2
    drift2 = -0.1+u_generator[:,4]*0.2
    if dim>5:
        extra_drift = -0.1+u_generator[:,5:]*0.2
        return np.expand_dims(np.hstack((np.array([barrier1, barrier2, s, drift1, drift2]), extra_drift.squeeze())),1)
    else:
        return np.expand_dims(np.array([barrier1, barrier2, s, drift1, drift2]),1)
コード例 #3
0
ファイル: compare_gaussians.py プロジェクト: buchhola/ABC
def brownian_self(steps):
    u = random_sequence_mc(steps)
    brownian_increments = np.cumsum(gaussian(u))
    return brownian_increments