MCMC Fitting

radvel.mcmc.convergence_calculate(chains: ndarray, oldautocorrelation: float, minAfactor: float, maxArchange: float, minTz: int, maxGR: float) tuple[bool, ndarray, ndarray, ndarray, ndarray, ndarray][source]

Calculate Convergence Criterion

Calculates the Gelman-Rubin statistic, autocorrelation time factor, relative change in autocorrellation time, and the number of independent draws for each parameter, as defined by Ford et al. (2006) (http://adsabs.harvard.edu/abs/2006ApJ…642..505F). The chain is considered well-mixed if all parameters have a Gelman-Rubin statistic of <= 1.03, the min autocorrelation time factor >= 75, a max relative change in autocorrelation time <= .01, and >= 1000 independent draws.

Parameters:
  • chains (array) – A 3 dimensional array of parameter values

  • oldautocorrelation (float) – previously calculated autocorrelation time

  • minAfactor (float) – minimum autocorrelation time factor to consider well-mixed

  • maxArchange (float) – maximum relative change in autocorrelation time to consider well-mixed

  • minTz (int) – minimum Tz to consider well-mixed

  • maxGR (float) – maximum Gelman-Rubin statistic to consider well-mixed

Returns:

tuple containing:
ismixed (bool):

Are the chains well-mixed?

afactor (array):

A matrix containing the autocorrelation time factor for each parameter and ensemble combination

archange (matrix):

A matrix containing the relative change in the autocorrelation time factor for each parameter and ensemble combination

autocorrelation (matrix):

A matrix containing the autocorrelation time for each parameter and ensemble combination

gelmanrubin (array):

An NPARS element array containing the Gelman-Rubin statistic for each parameter (equation 25)

Tz (array):

An NPARS element array containing the number of independent draws for each parameter (equation 26)

Return type:

tuple

History:
2010/03/01:

Written: Jason Eastman - The Ohio State University

2012/10/08:

Ported to Python by BJ Fulton - University of Hawaii, Institute for Astronomy

2016/04/20:

Adapted for use in RadVel. Removed “angular” parameter.

2019/10/24:

Adapted to calculate and consider autocorrelation times

radvel.mcmc.convergence_check(minAfactor: float, maxArchange: float, maxGR: float, minTz: int, minsteps: int, minpercent: float, headless: bool) None[source]

Check for convergence

Check for convergence for a list of emcee samplers

Parameters:
  • minAfactor (float) – Minimum autocorrelation time factor for chains to be deemed well-mixed and halt the MCMC run

  • maxArchange (float) – Maximum relative change in the autocorrelative time to be deemed well-mixed and halt the MCMC run

  • maxGR (float) – Maximum G-R statistic for chains to be deemed well-mixed and halt the MCMC run

  • minTz (int) – Minimum Tz to consider well-mixed

  • minsteps (int) – Minimum number of steps per walker before convergence tests are performed. Convergence checks will start after the minsteps threshold or the minpercent threshold has been hit.

  • minpercent (float) – Minimum percentage of total steps before convergence tests are performed. Convergence checks will start after the minsteps threshold or the minpercent threshold has been hit.

  • headless (bool) – if set to true, the convergence statistics will not be displayed in real time.

radvel.mcmc.mcmc(post: Posterior, nwalkers: int = 50, nrun: int = 10000, ensembles: int = 8, checkinterval: int = 50, minAfactor: int = 40, maxArchange: float = 0.03, burnAfactor: int = 25, burnGR: float = 1.03, maxGR: float = 1.01, minTz: int = 1000, minsteps: int = 1000, minpercent: float = 5, thin: int = 1, serial: bool = False, save: bool = False, savename: str | None = None, proceed: bool = False, proceedname: str | None = None, headless: bool = False, progress_callback: Callable | None = None) <Mock name='mock.DataFrame' id='136970648936496'>[source]

Run MCMC Run MCMC chains using the emcee EnsambleSampler :param post: radvel posterior object :type post: radvel.posterior :param nwalkers: (optional) number of MCMC walkers :type nwalkers: int :param nrun: (optional) number of steps to take :type nrun: int :param ensembles: (optional) number of ensembles to run. Will be run

in parallel on separate CPUs

Parameters:
  • checkinterval (int) – (optional) check MCMC convergence statistics every checkinterval steps

  • minAfactor (float) – Minimum autocorrelation time factor to deem chains as well-mixed and halt the MCMC run

  • maxArchange (float) – Maximum relative change in autocorrelation time to deem chains and well-mixed

  • burnAfactor (float) – Minimum autocorrelation time factor to stop burn-in period. Burn-in ends once burnGr or burnAfactor are reached.

  • burnGR (float) – (optional) Maximum G-R statistic to stop burn-in period. Burn-in ends once burnGr or burnAfactor are reached.

  • maxGR (float) – (optional) Maximum G-R statistic for chains to be deemed well-mixed and halt the MCMC run

  • minTz (int) – (optional) Minimum Tz to consider well-mixed

  • minsteps (int) – Minimum number of steps per walker before convergence tests are performed. Convergence checks will start after the minsteps threshold or the minpercent threshold has been hit.

  • minpercent (float) – Minimum percentage of total steps before convergence tests are performed. Convergence checks will start after the minsteps threshold or the minpercent threshold has been hit.

  • thin (int) – (optional) save one sample every N steps (default=1, save every sample)

  • serial (bool) – set to true if MCMC should be run in serial

  • save (bool) – set to true to save MCMC chains that can be continued in a future run

  • savename (string) – location of h5py file where MCMC chains will be saved for future use

  • proceed (bool) – set to true to continue a previously saved run

  • proceedname (string) – location of h5py file with previously MCMC run chains

  • headless (bool) – if set to true, the convergence statistics will not display in real time

Returns:

DataFrame containing the MCMC samples

Return type:

DataFrame