Пример #1
0
 def logprior(self,prior):
     model=2
     logprior = 0.
 #failure frequencies
     logprior += chiamante_statfunc.dbeta(self.eta_arr,prior['arrfail_alpha'],prior['arrfail_beta'],True)
 #centroids/sigma
     j = self.p[0].argmax()
     if j==0: sigma_mu = prior['sigma_mu'][0:2,0:2]
     else: sigma_mu = prior['sigma_mu'][4:,4:]
     logprior += chiamante_statfunc.diwishart(self.sigma[j],prior['v0'][j],prior['s0'][j],True) + chiamante_statfunc.dmvnorm(self.mu[j],prior['mu0'][j],sigma_mu,True)
     return logprior
Пример #2
0
def chiamante_logprior(prior,parameters,popidx,hwe_prior):
    logprior = 0.
    model = prior['model']
    if hwe_prior:
        for idx,ii in enumerate(popidx):
            if prior['hwe_var']>0.: logprior += chiamante_statfunc.ddirichlet(parameters['p'][idx],parameters['alpha'][idx],True) + chiamante_statfunc.dbeta(parameters['raf'][idx],prior['raf_alpha'][idx],prior['raf_beta'][idx],True)
            else: logprior += chiamante_statfunc.dbeta(parameters['raf'][idx],prior['raf_alpha'][idx],prior['raf_beta'][idx],True)
    else: logprior += chiamante_statfunc.ddirichlet(parameters['p'],np.array([1.01,1.01,1.01]),True)
    #failure frequencies
    logprior += chiamante_statfunc.dbeta(parameters['eta_seq'],prior['seqfail_alpha'],prior['seqfail_beta'],True)
    logprior += chiamante_statfunc.dbeta(parameters['eta_array'],prior['arrfail_alpha'],prior['arrfail_beta'],True)
    #centroids/sigma
    for j in range(3):
        if model==1: #sigma_mu = sigma/kappa0
            logprior += chiamante_statfunc.diwishart(parameters['sigma'][j],prior['v0'][j],prior['s0'][j],True) + chiamante_statfunc.dmvnorm(parameters['mu'][j],prior['mu0'][j],parameters['sigma'][j]/prior['kappa0'][j],True)
        else:
            if model==2: #sigma_mu independent of sigma
                logprior += chiamante_statfunc.diwishart(parameters['sigma'][j],prior['v0'][j],prior['s0'][j],True) + chiamante_statfunc.dmvnorm(parameters['mu'][j],prior['mu0'][j],prior['sigma_mu'][j],True)
            if model==3: # mu prior is 6 dimensional MVN
                logprior += chiamante_statfunc.diwishart(parameters['sigma'][j],prior['v0'][j],prior['s0'][j],True)
    if model==3: logprior += chiamante_statfunc.dmvnorm(np.hstack(parameters['mu']),np.hstack(prior['mu0']),prior['sigma_mu'],True)

    return logprior