MCMC Best Practices
Start Simple, Add Complexity Gradually
The most common mistake in GRB afterglow fitting is starting with an overly complex model. Always begin with the simplest physically motivated model and only add complexity when the data clearly demands it.
Recommended Progression:
Start with TopHat + ISM + Forward Shock Only
fitter = Fitter(z=1.58, lumi_dist=3.364e28, jet="tophat", medium="ism") # All other physics options default to False
This gives you ~7-8 free parameters. Run MCMC and examine the residuals.
Check if residuals suggest additional physics
Examine the fit quality and residual structure. Systematic deviations at specific times or frequencies may indicate missing physics.
Add ONE component at a time
Never jump from a simple model to enabling everything. Each addition should be justified by improved fit statistics (e.g., Bayesian evidence comparison).
Why Complex Models Are Problematic
1. Parameter Degeneracies
More parameters create more degeneracies. For example:
E_isoandn_ismare degenerate in flux normalizationeps_eandeps_Btrade off in spectral shapetheta_candtheta_vcorrelate for off-axis observersReverse shock parameters can mimic forward shock with different microphysics
With a complex model, the MCMC may find multiple solutions that fit equally well but have very different physical interpretations.
2. Computational Cost
Each additional physics module increases computation time. A model with all physics enabled can be significantly slower than a basic forward-shock-only model.
3. Overfitting Risk
With enough free parameters, you can fit noise. A model that fits your data perfectly but has 15+ parameters may not be physically meaningful. Use Bayesian evidence (from dynesty) to compare models:
# Compare two models using log evidence
result_simple = fitter_simple.fit(params_simple, sampler="dynesty", ...)
result_complex = fitter_complex.fit(params_complex, sampler="dynesty", ...)
# Bayes factor
log_BF = result_complex.bilby_result.log_evidence - result_simple.bilby_result.log_evidence
# Interpretation:
# log_BF < 1: No preference (stick with simple model)
# 1 < log_BF < 3: Weak preference for complex
# 3 < log_BF < 5: Moderate preference
# log_BF > 5: Strong preference for complex model
4. Non-Physical Solutions
Complex models can converge to non-physical parameter combinations. Always check:
Is
eps_e + eps_B < 1? (energy conservation)Is
p > 2? (required for finite electron energy)Are microphysics parameters consistent between forward/reverse shocks?
Does the inferred jet energy make sense given the host galaxy and redshift?
When to Use Complex Models
Complex models are justified when:
Clear observational signatures that simple models cannot explain after careful analysis
Comparison with similar GRBs where the additional physics was robustly established
Important
Golden Rule: If you cannot clearly explain WHY each physics component is needed based on your data, you probably don’t need it.