R/BB_Update_mu.R

Defines functions BB_Update_mu

Documented in BB_Update_mu

BB_Update_mu <-
function(last.params){
		mu_update <- stats::rnorm(last.params$loci,0,last.params$mu_stp)
		mu_prime <- Shift(last.params$mu,mu_update)
		prior_prob_mu_prime <- Prior_prob_mu(mu_prime,last.params$beta)
		allele.frequencies_prime <- transform_frequencies(last.params$thetas,mu_prime)
		LnL_counts_mat_prime <- BB_Likelihood_counts(last.params$phi,last.params$counts,last.params$sample_sizes,allele.frequencies_prime)
		new.params <- last.params
			for(i in 1:ncol(last.params$mu)){
				if(!is.na(sum(LnL_counts_mat_prime[,i]))){				
					if(exp((prior_prob_mu_prime[i]+sum(LnL_counts_mat_prime[,i])) - (last.params$prior_prob_mu[i]+sum(last.params$LnL_counts_mat[,i]))) >= stats::runif(1)){
						new.params$mu[,i] <- mu_prime[,i]
						new.params$allele.frequencies[,i] <- allele.frequencies_prime[,i]
						new.params$LnL_counts_mat[,i] <- LnL_counts_mat_prime[,i]
						new.params$prior_prob_mu[i] <- prior_prob_mu_prime[i]
						new.params$mu_accept <- new.params$mu_accept + 1
					}
				}
			}
		new.params$mu_moves <- new.params$mu_moves + last.params$loci
		return(new.params)
	}

Try the BEDASSLE package in your browser

Any scripts or data that you put into this service are public.

BEDASSLE documentation built on April 11, 2022, 1:07 a.m.