Esempio n. 1
0
 def model(data):
     concentration = jnp.array([1.0, 1.0, 1.0])
     p_latent = numpyro.sample('p_latent', dist.Dirichlet(concentration))
     numpyro.sample('obs', dist.Categorical(p_latent), obs=data)
     return p_latent
Esempio n. 2
0
def SIR_stochastic(T=50,
                   N=1e5,
                   T_future=0,
                   duration_mean=10,
                   R0_mean=2.2,
                   gamma_shape=5,
                   beta_shape=5,
                   det_rate_mean=0.3,
                   det_rate_conc=50,
                   det_conc=100,
                   drift_scale=5e-2,
                   obs=None):
    '''
    Stochastic SIR model. Draws random parameters and runs dynamics.
    '''

    # Sample initial number of infected individuals
    I0 = numpyro.sample("I0", dist.Uniform(0, N * 0.02))

    # Sample parameters
    gamma = numpyro.sample(
        "gamma", dist.Gamma(gamma_shape, gamma_shape * duration_mean))

    beta0 = numpyro.sample(
        "beta0", dist.Gamma(beta_shape, beta_shape * duration_mean / R0_mean))

    det_rate = numpyro.sample(
        "det_rate",
        dist.Beta(det_rate_mean * det_rate_conc,
                  (1 - det_rate_mean) * det_rate_conc))

    x0 = SIRModel.seed(N, I0)
    numpyro.deterministic("x0", x0)

    # Split observations into first and rest
    obs0, obs = (None, None) if obs is None else (obs[0], obs[1:])

    # First observation
    y0 = observe("y0", x0[3], det_rate, det_conc, obs=obs0)

    # Run dynamics
    params = (beta0, gamma, det_rate, det_conc, drift_scale)

    beta, x, y = SIR_dynamics(T, params, x0, obs=obs)

    x = np.vstack((x0, x))
    y = np.append(y0, y)

    if T_future > 0:

        params = (beta[-1], gamma, det_rate, det_conc, drift_scale)

        beta_f, x_f, y_f = SIR_dynamics(T_future + 1,
                                        params,
                                        x[-1, :],
                                        suffix="_future")

        x = np.vstack((x, x_f))
        y = np.append(y, y_f)

    return beta, x, y, det_rate
Esempio n. 3
0
 def model():
     a = numpyro.param('a',
                       a_init,
                       constraint=constraints.greater_than(a_minval))
     b = numpyro.param('b', b_init, constraint=constraints.positive)
     numpyro.sample('x', dist.Normal(a, b))
def model(returns):
    step_size = numpyro.sample('sigma', dist.Exponential(50.))
    s = numpyro.sample('s', dist.GaussianRandomWalk(scale=step_size, num_steps=jnp.shape(returns)[0]))
    nu = numpyro.sample('nu', dist.Exponential(.1))
    return numpyro.sample('r', dist.StudentT(df=nu, loc=0., scale=jnp.exp(s)),
                          obs=returns)
Esempio n. 5
0
def SEIRD_stochastic(T=50,
                     N=1e5,
                     T_future=0,
                     E_duration_est=4.0,
                     I_duration_est=3.0,
                     R0_est=3.0,
                     beta_shape=1,
                     sigma_shape=10,
                     gamma_shape=10,
                     det_prob_est=0.3,
                     det_prob_conc=50,
                     det_noise_scale=0.15,
                     rw_scale=1e-1,
                     drift_scale=None,
                     obs=None,
                     death=None,
                     hosp=None):
    '''
    Stochastic SEIR model. Draws random parameters and runs dynamics.
    '''

    # Sample initial number of infected individuals
    I0 = numpyro.sample("I0", dist.Uniform(0, 0.02 * N))
    E0 = numpyro.sample("E0", dist.Uniform(0, 0.02 * N))
    H0 = numpyro.sample("H0", dist.Uniform(0, 0.02 * N))
    D0 = numpyro.sample("D0", dist.Uniform(0, 0.02 * N))

    # Sample parameters
    sigma = numpyro.sample(
        "sigma", dist.Gamma(sigma_shape, sigma_shape * E_duration_est))

    gamma = numpyro.sample(
        "gamma", dist.Gamma(gamma_shape, gamma_shape * I_duration_est))

    #     gamma = numpyro.sample("gamma",
    #                            dist.TruncatedNormal(loc = 1./I_duration_est, scale = 0.25)

    beta0 = numpyro.sample(
        "beta0", dist.Gamma(beta_shape, beta_shape * I_duration_est / R0_est))

    det_prob = numpyro.sample(
        "det_prob",
        dist.Beta(det_prob_est * det_prob_conc,
                  (1 - det_prob_est) * det_prob_conc))

    det_prob_d = numpyro.sample("det_prob_d",
                                dist.Beta(.9 * 100, (1 - .9) * 100))

    death_prob = numpyro.sample("death_prob",
                                dist.Beta(.1 * 100, (1 - .1) * 100))

    death_rate = numpyro.sample("death_rate", dist.Gamma(10, 10 * 10))

    if True:  #drift_scale is not None:
        drift = numpyro.sample("drift", dist.Normal(loc=np.log(.5), scale=.01))
        drift = -np.exp(drift)
    else:
        drift = 0

    x0 = SEIRDModel.seed(N=N, I=I0, E=E0, H=H0, D=D0)
    numpyro.deterministic("x0", x0)

    # Split observations into first and rest
    obs0, obs = (None, None) if obs is None else (obs[0], obs[1:])
    death0, death = (None, None) if death is None else (death[0], death[1:])

    # First observation
    with numpyro.handlers.scale(scale_factor=0.5):
        y0 = observe("y0", x0[6], det_prob, det_noise_scale, obs=obs0)
    z0 = observe("z0", x0[5], det_prob_d, det_noise_scale, obs=death0)

    params = (beta0, sigma, gamma, rw_scale, drift, det_prob, det_noise_scale,
              death_prob, death_rate, det_prob_d)

    beta, x, y, z = SEIRD_dynamics(T, params, x0, obs=obs, death=death)

    x = np.vstack((x0, x))
    y = np.append(y0, y)
    z = np.append(z0, z)

    if T_future > 0:

        params = (beta[-1], sigma, gamma, rw_scale, drift, det_prob,
                  det_noise_scale, death_prob, death_rate, det_prob_d)

        beta_f, x_f, y_f, z_f = SEIRD_dynamics(T_future + 1,
                                               params,
                                               x[-1, :],
                                               suffix="_future")

        x = np.vstack((x, x_f))
        y = np.append(y, y_f)
        z = np.append(z, z_f)

    return beta, x, y, z, det_prob, death_prob
Esempio n. 6
0
 def expected_model(data):
     alpha = numpyro.sample('alpha', dist.Uniform(0, 1))
     loc = numpyro.sample('loc', dist.Uniform(0, 1)) * alpha
     numpyro.sample('obs', dist.Normal(loc, 0.1), obs=data)
Esempio n. 7
0
 def model(x, y):
     nn = numpyro.module("nn", Dense(1), (10, ))
     mu = nn(x).squeeze(-1)
     sigma = numpyro.sample("sigma", dist.HalfNormal(1))
     numpyro.sample('y', dist.Normal(mu, sigma), obs=y)
Esempio n. 8
0
def model_pred() -> np.ndarray:

    mu = numpyro.sample("mu", dist.Normal(0, 5))
    tau = numpyro.sample("tau", dist.HalfCauchy(5))
    return numpyro.sample("obs", dist.Normal(mu, tau))
Esempio n. 9
0
def model(data):
    loc = numpyro.sample("loc", dist.Normal(0., 1.))
    numpyro.sample("obs", dist.Normal(loc, 1.), obs=data)
Esempio n. 10
0
def model(data, labels):
    dim = data.shape[1]
    coefs = numpyro.sample('coefs', dist.Normal(jnp.zeros(dim), jnp.ones(dim)))
    logits = jnp.dot(data, coefs)
    return numpyro.sample('obs', dist.Bernoulli(logits=logits), obs=labels)
Esempio n. 11
0
def model_c(nu1, y1, e1):
    Rp = sample('Rp', dist.Uniform(0.5, 1.5))
    Mp = sample('Mp', dist.Normal(33.5, 0.3))
    RV = sample('RV', dist.Uniform(26.0, 30.0))
    MMR_CO = sample('MMR_CO', dist.Uniform(0.0, maxMMR_CO))
    MMR_H2O = sample('MMR_H2O', dist.Uniform(0.0, maxMMR_H2O))
    T0 = sample('T0', dist.Uniform(1000.0, 1700.0))
    alpha = sample('alpha', dist.Uniform(0.05, 0.15))
    vsini = sample('vsini', dist.Uniform(10.0, 20.0))

    # Kipping Limb Darkening Prior
    q1 = sample('q1', dist.Uniform(0.0, 1.0))
    q2 = sample('q2', dist.Uniform(0.0, 1.0))
    u1, u2 = ld_kipping(q1, q2)

    # GP
    logtau = sample('logtau', dist.Uniform(-1.5, 0.5))  #tau=1 <=> 5A
    tau = 10**(logtau)
    loga = sample('loga', dist.Uniform(-4.0, -2.0))
    a = 10**(loga)

    #gravity
    g = getjov_gravity(Rp, Mp)

    # T-P model
    Tarr = T0 * (Parr / Pref)**alpha

    # Line computation
    qt_CO = vmap(mdbCO.qr_interp)(Tarr)
    qt_H2O = vmap(mdbH2O.qr_interp)(Tarr)

    def obyo(y, tag, nusdx, nus, mdbCO, mdbH2O, cdbH2H2, cdbH2He):
        #CO
        SijM_CO, ngammaLM_CO, nsigmaDl_CO = exomol(mdbCO, Tarr, Parr, R_CO,
                                                   molmassCO)
        xsm_CO = xsmatrix(cnu_CO, indexnu_CO, R_CO, pmarray_CO, nsigmaDl_CO,
                          ngammaLM_CO, SijM_CO, nus, dgm_ngammaL_CO)
        dtaumCO = dtauM(dParr, jnp.abs(xsm_CO), MMR_CO * ONEARR, molmassCO, g)

        #H2O
        SijM_H2O, ngammaLM_H2O, nsigmaDl_H2O = exomol(mdbH2O, Tarr, Parr,
                                                      R_H2O, molmassH2O)
        xsm_H2O = xsmatrix(cnu_H2O, indexnu_H2O, R_H2O, pmarray_H2O,
                           nsigmaDl_H2O, ngammaLM_H2O, SijM_H2O, nus,
                           dgm_ngammaL_H2O)
        dtaumH2O = dtauM(dParr, jnp.abs(xsm_H2O), MMR_H2O * ONEARR, molmassH2O,
                         g)

        #CIA
        dtaucH2H2=dtauCIA(nus,Tarr,Parr,dParr,vmrH2,vmrH2,\
                          mmw,g,cdbH2H2.nucia,cdbH2H2.tcia,cdbH2H2.logac)
        dtaucH2He=dtauCIA(nus,Tarr,Parr,dParr,vmrH2,vmrHe,\
                          mmw,g,cdbH2He.nucia,cdbH2He.tcia,cdbH2He.logac)

        dtau = dtaumCO + dtaumH2O + dtaucH2H2 + dtaucH2He
        sourcef = planck.piBarr(Tarr, nus)

        Ftoa = Fref / Rp**2
        F0 = rtrun(dtau, sourcef) / baseline / Ftoa

        Frot = response.rigidrot(nus, F0, vsini, u1, u2)
        mu = response.ipgauss_sampling(nusdx, nus, Frot, beta, RV)
        cov = gpkernel_RBF(nu1, tau, a, e1)
        sample(tag,
               dist.MultivariateNormal(loc=mu, covariance_matrix=cov),
               obs=y)

    obyo(y1, "y1", nu1, nus, mdbCO, mdbH2O, cdbH2H2, cdbH2He)
Esempio n. 12
0
 def guide(data):
     alpha_q = numpyro.param("alpha_q",
                             1.0,
                             constraint=constraints.positive)
     beta_q = numpyro.param("beta_q", 1.0, constraint=constraints.positive)
     numpyro.sample("beta", dist.Beta(alpha_q, beta_q))
Esempio n. 13
0
 def model(data):
     f = numpyro.sample("beta", dist.Beta(1., 1.))
     with numpyro.plate("plate", 10):
         numpyro.deterministic("beta_sq", f**2)
         numpyro.sample("obs", dist.Bernoulli(f), obs=data)
Esempio n. 14
0
 def model(data=None):
     with numpyro.plate("dim", 2):
         beta = numpyro.sample("beta", dist.Beta(1., 1.))
     with numpyro.plate("plate", N, dim=-2):
         numpyro.deterministic("beta_sq", beta**2)
         numpyro.sample("obs", dist.Bernoulli(beta), obs=data)
Esempio n. 15
0
 def body_fn(z, val):
     z = numpyro.sample("z", dist.Normal(z, 1))
     return z, z
Esempio n. 16
0
def guide(data):
    guide_loc = numpyro.param("guide_loc", 0.)
    guide_scale = np.exp(numpyro.param("guide_scale_log", 0.))
    numpyro.sample("loc", dist.Normal(guide_loc, guide_scale))
Esempio n. 17
0
 def transition(state, i):
     x, mu = state
     x = numpyro.sample("x", dist.LogNormal(phi * x, q))
     mu = beta * mu + x
     numpyro.sample("y", dist.Normal(mu, r))
     return (x, mu), None
Esempio n. 18
0
def model(deterministic=True):
    GLOBAL["count"] += 1
    x = numpyro.sample("x", dist.Normal())
    if deterministic:
        numpyro.deterministic("x_copy", x)
Esempio n. 19
0
 def model(x, y):
     a = numpyro.sample("a", dist.Normal(0, 10))
     b = numpyro.sample("b", dist.Normal(0, 10), sample_shape=(3, ))
     mu = a + b[0] * x + b[1] * x**2 + b[2] * x**3
     numpyro.sample("y", dist.Normal(mu, 0.001), obs=y)
def model(X,ndims,ndata,y_obs=None):
    w = numpyro.sample('w', dist.Normal(np.zeros(ndims), np.ones(ndims)))
    sigma = numpyro.sample('sigma', dist.Exponential(1.))
    y = numpyro.sample('y', dist.Normal(np.matmul(X, w), sigma * np.ones(ndata)), obs=y_obs)
Esempio n. 21
0
 def model(data):
     f = numpyro.sample('beta', dist.Beta(jnp.ones(2), jnp.ones(2)))
     numpyro.sample('obs', dist.Bernoulli(f), obs=data)
Esempio n. 22
0
 def true_fun(_):
     x = numpyro.sample("x", dist.Normal(4.0))
     numpyro.deterministic("z", x - 4.0)
Esempio n. 23
0
    def __call__(self,
                 T=50,
                 N=1e5,
                 T_future=0,
                 E_duration_est=4.0,
                 I_duration_est=2.0,
                 R0_est=3.0,
                 beta_shape=1.,
                 sigma_shape=100.,
                 gamma_shape=100.,
                 det_prob_est=0.3,
                 det_prob_conc=50.,
                 confirmed_dispersion=0.3,
                 death_dispersion=0.3,
                 rw_scale=2e-1,
                 forecast_rw_scale=0.,
                 drift_scale=None,
                 num_frozen=0,
                 rw_use_last=1,
                 confirmed=None,
                 death=None):
        '''
        Stochastic SEIR model. Draws random parameters and runs dynamics.
        '''

        # Sample initial number of infected individuals

        # Sample dispersion parameters around specified values

        rw = numpyro.sample("rw",
                            dist.GaussianRandomWalk(scale=100, num_steps=T))
        D0 = numpyro.sample("D0", dist.Normal(.000002 * N, 1000))

        # Sample parameters

        if death is None:
            death = None
            death0 = None
        else:
            death = clean_daily_obs(death)

            death0 = death[0]
        # First observation
        z_hat = np.exp(np.cumsum(rw) + np.log(D0))

        z0 = observe_normal("z0", z_hat[0], .95, death_dispersion, obs=death0)
        y0 = observe_normal("y0", z_hat[0], .95, death_dispersion, obs=death0)
        z = observe_normal("z", z_hat, .95, death_dispersion, obs=death)
        y = observe_normal("y", z_hat, .95, death_dispersion, obs=death)
        z = np.append(z0, z)
        y = np.append(y0, y)
        if (T_future > 0):

            z_hat_future = np.exp(
                np.cumsum(np.repeat(rw[-1], T_future)) + np.log(D0))

            z_future = observe_normal("z_future",
                                      z_hat_future,
                                      .95,
                                      death_dispersion,
                                      obs=death)

            y_future = observe_normal("y_future",
                                      z_hat_future,
                                      .95,
                                      death_dispersion,
                                      obs=death)
            z = np.append(z, z_future)
            y = np.append(y, y_future)

        return None, None, y, z, None, None
Esempio n. 24
0
 def false_fun(_):
     x = numpyro.sample("x", dist.Normal(0.0))
     numpyro.deterministic("z", x)
Esempio n. 25
0
def dual_moon_model():
    numpyro.sample('x', DualMoonDistribution())
Esempio n. 26
0
 def true_fun(_):
     numpyro.sample("x", dist.Normal(m1, s1))
Esempio n. 27
0
 def model(data, labels):
     coefs = numpyro.sample('coefs',
                            dist.Normal(jnp.zeros(dim), jnp.ones(dim)))
     offset = numpyro.sample('offset', dist.Uniform(-1, 1))
     logits = offset + jnp.sum(coefs * data, axis=-1)
     return numpyro.sample('obs', dist.Bernoulli(logits=logits), obs=labels)
Esempio n. 28
0
 def false_fun(_):
     numpyro.sample("x", dist.Normal(m2, s2))
Esempio n. 29
0
 def actual_model(data):
     alpha = numpyro.sample('alpha', dist.Uniform(0, 1))
     with numpyro.handlers.reparam(config={'loc': TransformReparam()}):
         loc = numpyro.sample('loc', dist.Uniform(0, alpha))
     numpyro.sample('obs', dist.Normal(loc, 0.1), obs=data)
Esempio n. 30
0
 def model():
     x = numpyro.sample("x", dist.Normal())
     with numpyro.handlers.mask(mask_array=False):
         numpyro.sample("y", dist.Normal(x), obs=1)