0

I have 5 NumPyro models of the form:

def patient_1():
    disease = numpyro.sample("disease",dist.Bernoulli(0.4))
    treatment = numpyro.sample("treatment",dist.Bernoulli(0.7))
    list_variables=[disease,treatment]
    list_variables_no_treatment=[disease]
    
    bloodpressure = numpyro.sample("bloodpressure",dist.Normal(non_linear_fn(jnp.array(random.sample(list_variables_no_treatment,np.random.randint(0,1))),np.random.randint(0,1)*treatment),1))
    list_variables.append(bloodpressure)
    list_variables_no_treatment.append(bloodpressure)
                                   
    weight = numpyro.sample("weight", dist.Normal(non_linear_fn(jnp.array(random.sample(list_variables_no_treatment,np.random.randint(0,2))),np.random.randint(0,1)*treatment), 1))
    list_variables.append(weight)
    list_variables_no_treatment.append(weight)
    
    heartattack=numpyro.sample("heartattack",dist.Normal(non_linear_fn(jnp.array(random.sample(list_variables_no_treatment,np.random.randint(1,3))),np.random.randint(0,1)*treatment),1))
    list_variables.append(heartattack)
    list_variables_no_treatment.append(heartattack)
    
    variables=[]
    list_variables=[disease,treatment,bloodpressure,weight,heartattack]
    
    for i in range(5,k):
        vi=numpyro.sample('variable'+str(i),dist.Normal(non_linear_fn(jnp.array(random.sample(list_variables,np.random.randint(0,i))),np.random.randint(0,1)*treatment), 1))
        variables.append(vi)
        list_variables.append(vi)
    
    vi=numpyro.sample('variable'+str(k),dist.Normal(non_linear_fn(jnp.array(random.sample(list_variables,np.random.randint(0,k))),treatment), 1))
    variables.append(vi)
    list_variables.append(vi)
    return list_variables                       `

Now, I would like to generate "k" models, so I was thinking of some form of for-loop where i specify each of the models, but it didn't work. Any ideas?

0 Answers0