Component spin models
We investigate potential features in the underlying binary black hole component spin magnitude and tilt angle distributions using several different models.
Beta + Mixture
Following the GWTC-3 Rates and Populations paper, our simplest approach is to model the spin magnitudes \(\chi_i\) as a beta distribution and the cosines of the spin tilt angles \(\cos\theta_i\) as a mixture between aligned and isotropic subpopulations:
and
Here the isotropic subpopulation is uniform over \(\cos\theta_i \in [-1,1]\) and the aligned spin population is a truncated half gaussian \(\mathcal{N}\) peaking at \(\cos\theta_i = 1\) with a width \(\sigma_t\).
This model can be rerun as follows:
$ conda activate gwtc3-spin-studies
$ cd code/emceeCode/
$ python run_beta_plus_mixture.py
The output will be a .json file storing the resulting posterior samples:
data/component_spin_betaPlusMixture.json
Note
A notebook that demonstrates how to load in, inspect, and manipulate this output file can be found here.
Beta + Truncated Mixture
Here, we keep the same \(\chi_i\) distribution as in Beta Plus Mixture but add a lower truncation bound \(z_\mathrm{min}\) to the \(\cos\theta_i\) distribution:
This model can be rerun as follows:
$ conda activate gwtc3-spin-studies
$ cd code/emceeCode/
$ python run_beta_plus_truncated_mixture.py
The output will be a .json file storing the resulting posterior samples:
data/component_spin_betaPlusTruncatedMixture.json
Note
A notebook that demonstrates how to load in, inspect, and manipulate this output file can be found here.
Beta Spike + Mixture
Here, we keep the same \(\cos\theta_i\) distribution as in Beta Plus Mixture but add a spike to the \(\chi_i\) distribution. This spike is a truncated half-gaussian centered at \(\chi=0\):
where \(f_\mathrm{spike}\) is the fraction of the population in the spike, \(\epsilon_\mathrm{spike}\) is the width of the spike, and \(c(\alpha,\beta)\) is a normalization factor for the beta distribution (not a hyperparameter).
This model can be rerun as follows:
$ conda activate gwtc3-spin-studies
$ cd code/emceeCode/
$ python run_beta_spike_plus_mixture.py
The output will be a .json file storing the resulting posterior samples:
data/component_spin_betaSpikePlusMixture.json
Note
A notebook that demonstrates how to load in, inspect, and manipulate this output file can be found here.
Beta Spike + Truncated Mixture
In our model with the most features, we use \(\chi_i\) distribution from Beta Spike Plus Mixture and the \(\cos\theta_i\) distribution from Beta Plus Truncated Mixture.
This model can be rerun as follows:
$ conda activate gwtc3-spin-studies
$ cd code/emceeCode/
$ python run_beta_spike_plus_truncated_mixture.py
The output will be a .json file storing the resulting posterior samples:
data/component_spin_betaSpikePlusTruncatedMixture.json
Note
A notebook that demonstrates how to load in, inspect, and manipulate this output file can be found here.
- emceeCode.posteriors.betaPlusMixture(c, sampleDict, injectionDict, priorDict)[source]
Implementation of the Beta+Mixture model: a component spin distribution with spin magnitude as a beta distribution and the cosine of the tilt angle as a mixture of aligned + isotropic, for inference within emcee.
- Parameters
c (numpy.array) –
array containing hyper-parameter samples in the order: [ mu_chi, sigma_chi, MF_cost, sigma_cost, Bq ] where
mu_chi = mean of spin magnitude beta distribution
sigma_chi = std. dev. of spin magnitude beta distribution
MF_cost = mixing fraction in aligned spin subpopulation for cos tilt angle distribution
sigma_cost = std. dev. of aligned spin subpopulation for cos tilt angle distribution
Bq = power law slope of the mass ratio distribution
sampleDict (dict) – Precomputed dictionary containing posterior samples for each event in our catalog
injectionDict (dict) – Precomputed dictionary containing successfully recovered injections
priorDict (dict) – Precomputed dictionary containing bounds for the priors on each hyper-parameter
- Returns
logP – log posterior for the input sample ‘c’
- Return type
float
- emceeCode.posteriors.betaPlusTruncatedMixture(c, sampleDict, injectionDict, priorDict)[source]
Implementation of the Beta+TruncatedMixture model: a component spin distribution with spin magnitude as a beta distribution and the cosine of the tilt angle as a mixture of aligned + isotropic with a lower truncation, for inference within emcee.
- Parameters
c (numpy.array) –
array containing hyper-parameter samples in the order: [ mu_chi, sigma_chi, MF_cost, sigma_cost, cost_min, Bq ] where
mu_chi = mean of spin magnitude beta distribution
sigma_chi = std. dev. of spin magnitude beta distribution
MF_cost = mixing fraction in aligned spin subpopulation for cos tilt angle distribution
sigma_cost = std. dev. of aligned spin subpopulation for cos tilt angle distribution
cost_min = lower truncation bound on the cosine tilt angle distribution
Bq = power law slope of the mass ratio distribution
sampleDict (dict) – Precomputed dictionary containing posterior samples for each event in our catalog
injectionDict (dict) – Precomputed dictionary containing successfully recovered injections
priorDict (dict) – Precomputed dictionary containing bounds for the priors on each hyper-parameter
- Returns
logP – log posterior for the input sample ‘c’
- Return type
float
- emceeCode.posteriors.betaSpikePlusMixture(c, sampleDict, injectionDict, priorDict)[source]
Implementation of the BetaSpike+Mixture model: a component spin distribution with spin magnitude as a beta distribution + a half gaussian “spike” centered at 0 and the cosine of the tilt angle as a mixture of aligned + isotropic, for inference within emcee.
- Parameters
c (numpy.array) –
array containing hyper-parameter samples in the order: [ mu_chi, sigma_chi, MF_cost, sigma_cost, frac_in_spike, sigma_spike, Bq ] where
mu_chi = mean of spin magnitude beta distribution
sigma_chi = std. dev. of spin magnitude beta distribution
MF_cost = mixing fraction in aligned spin subpopulation for cos tilt angle distribution
sigma_cost = std. dev. of aligned spin subpopulation for cos tilt angle distribution
frac_in_spike = mixing fraction in half gaussian spike at spin mag. = 0
sigma_spike = std. dev. of half gaussian spike at spin mag. = 0
Bq = power law slope of the mass ratio distribution
sampleDict (dict) – Precomputed dictionary containing posterior samples for each event in our catalog
injectionDict (dict) – Precomputed dictionary containing successfully recovered injections
priorDict (dict) – Precomputed dictionary containing bounds for the priors on each hyper-parameter
- Returns
logP – log posterior for the input sample ‘c’
- Return type
float
- emceeCode.posteriors.betaSpikePlusTruncatedMixture(c, sampleDict, injectionDict, priorDict)[source]
Implementation of the BetaSpike+TruncatedMixture model: a component spin distribution with spin magnitude as a beta distribution + a half gaussian “spike” centered at 0 and the cosine of the tilt angle as a mixture of aligned + isotropic with a lower truncation, for inference within emcee.
- Parameters
c (numpy.array) –
array containing hyper-parameter samples in the order: [ mu_chi, sigma_chi, MF_cost, sigma_cost, frac_in_spike, sigma_spike, cost_min, Bq ] where
mu_chi = mean of spin magnitude beta distribution
sigma_chi = std. dev. of spin magnitude beta distribution
MF_cost = mixing fraction in aligned spin subpopulation for cos tilt angle distribution
sigma_cost = std. dev. of aligned spin subpopulation for cos tilt angle distribution
frac_in_spike = mixing fraction in half gaussian spike at spin mag. = 0
sigma_spike = std. dev. of half gaussian spike at spin mag. = 0
cost_min = lower truncation bound on the cosine tilt angle distribution
Bq = power law slope of the mass ratio distribution
sampleDict (dict) – Precomputed dictionary containing posterior samples for each event in our catalog
injectionDict (dict) – Precomputed dictionary containing successfully recovered injections
priorDict (dict) – Precomputed dictionary containing bounds for the priors on each hyper-parameter
- Returns
logP – log posterior for the input sample ‘c’
- Return type
float