Last modified: December 2025

URL: https://cxc.cfa.harvard.edu/sherpa/ahelp/normal_sample.html
AHELP for CIAO 4.18 Sherpa

normal_sample

Context: modeling

Synopsis

Sample the fit statistic by taking the parameter values from a normal distribution.

Syntax

normal_sample(num: int = 1, scale: float = 1, correlate: bool = True,
id: int | str | None = None, otherids: Sequence[int | str] = (),
numcores: int | None = None, clip: Literal['none'] | Literal['hard'] |
Literal['soft'] = 'none')

Returns: np.ndarray

Description

For each iteration (sample), change the thawed parameters by drawing values from a uni- or multi-variate normal (Gaussian) distribution, and calculate the fit statistic.


Examples

Example 1

The model fit to the default data set has three free parameters. The median value of the statistic calculated by `normal_sample` is returned:

>>> ans = normal_sample(num=10000)
>>> ans.shape
(1000, 5)
>>> np.median(ans[:,0])
119.82959326927781

Example 2

Sample the thawed parameters using the covariance matrix, to account for correlations between the parameters:

>>> ans = normal_sample(num=1000, correlate=True)

Example 3

Ensure that the sampling is repeatable by fixing the random number generator (RNG), and then plot the statistic value (y axis) against the first thawed parmeter (x axis):

>>> set_rng(np.random.default_rng(2462357))
>>> res = normal_sample(id=1000)
>>> plot_scatter(res[:, 1], res[:, 0], ylabel="scatter")

Example 4

Compare the PDF of the first thawed parameter when using the calculated errors versus twice them:

>>> res1 = normal_sample(id=1000)
>>> res2 = normal_sample(id=1000, scale=2)
>>> plot_pdf(res1[:, 1], bins=20)
>>> plot_pdf(res2[:, 1], bins=20, overplot=True)

Example 5

Sample the model fits for datasets 1, 2, and 3:

>>> res = normal_sample(num=1000, correlate=True, id=1, otherids=(2, 3))

PARAMETERS

The parameters for this function are:

Parameter Type information Definition
num int, optional The number of samples to use (default is 1).
scale number, optional Scale factor applied to the sigma values from the fit before sampling the normal distribution.
correlate bool, optional Should a multi-variate normal be used, with parameters set by the covariance matrix ( True ) or should a uni-variate normal be used ( False )?
id int, str, or None, optional The data set that provides the data. If not given then all data sets with an associated model are used simultaneously.
otherids sequence of int or str, optional Other data sets to use in the calculation.
numcores optional The number of CPU cores to use. The default is to use all the cores on the machine.
clip {'hard', 'soft', 'none'}, optional What clipping strategy should be applied to the sampled parameters. The default ('none') applies no clipping, 'hard' uses the hard parameter limits, and 'soft' the soft limits.

Return value

The return value from this function is:

A NumPy array table with the first column representing the statistic, the later columns the parameters used, and the last column indicating whether any parameter in the row was clipped. The number of rows is given by the num argument.

Notes

It is expected that the model has already been fit to the data.

All thawed model parameters are sampled from the Gaussian distribution. The mean is set as the current parameter values. The variance is calculated from the covariance matrix of the fit multiplied by scale * scale. When correlate is False the diagonal of the matrix is used, so the parameters are uncorrelated. When correlate is True the full matrix is used, allowing for correlations between the parameters.

Changes in CIAO

Changed in CIAO 4.18

The sigma parameter has been renamed to scale, and the code has been updated so that changing it will change the sampled values. The random state returned by get_rng is now used for the sampling. The clip parameter has been added, and the return array now ends in a column indicating whether any parameter in the row was clipped.


Bugs

See the bugs pages on the Sherpa website for an up-to-date listing of known bugs.

See Also

contrib
get_data_prof, get_data_prof_prefs, get_delchi_prof, get_delchi_prof_prefs, get_fit_prof, get_model_prof, get_model_prof_prefs, get_resid_prof, get_resid_prof_prefs, get_source_prof, get_source_prof_prefs, plot_chart_spectrum, plot_marx_spectrum, prof_data, prof_delchi, prof_fit, prof_fit_delchi, prof_fit_resid, prof_model, prof_resid, prof_source
data
get_arf_plot, get_bkg_chisqr_plot, get_bkg_delchi_plot, get_bkg_fit_plot, get_bkg_model_plot, get_bkg_plot, get_bkg_ratio_plot, get_bkg_resid_plot, get_bkg_source_plot
info
list_model_ids, show_bkg_model, show_bkg_source
modeling
add_model, add_user_pars, clean, create_model_component, delete_bkg_model, delete_model, delete_model_component, get_model, get_model_autoassign_func, get_model_component, get_model_component_image, get_model_component_plot, get_model_plot, get_num_par, get_num_par_frozen, get_num_par_thawed, get_order_plot, get_par, get_pileup_model, get_source, get_source_component_image, get_source_component_plot, get_source_contour, get_source_image, get_source_plot, image_model, image_model_component, image_source, image_source_component, integrate, link, load_table_model, load_template_interpolator, load_template_model, load_user_model, reset, save_model, save_source, set_bkg_model, set_bkg_source, set_full_model, set_model, set_model_autoassign_func, set_pileup_model, set_source, t_sample, uniform_sample
plotting
get_cdf_plot, get_energy_flux_hist, get_pdf_plot, get_photon_flux_hist, get_pvalue_plot, get_pvalue_results, get_split_plot, plot, plot_arf, plot_bkg, plot_bkg_chisqr, plot_bkg_delchi, plot_bkg_fit, plot_bkg_fit_delchi, plot_bkg_fit_resid, plot_bkg_model, plot_bkg_ratio, plot_bkg_resid, plot_bkg_source, plot_cdf, plot_chisqr, plot_data, plot_delchi, plot_energy_flux, plot_fit, plot_fit_delchi, plot_fit_resid, plot_model, plot_model_component, plot_order, plot_pdf, plot_photon_flux, plot_pvalue, plot_ratio, plot_resid, plot_scatter, plot_source, plot_source_component, plot_trace, set_xlinear, set_xlog, set_ylinear, set_ylog
psfs
delete_psf, load_conv, plot_kernel
saving
save_delchi, save_resid
statistics
get_chisqr_plot, get_delchi_plot
utilities
calc_chisqr, calc_energy_flux, calc_model_sum, calc_photon_flux, calc_source_sum, calc_stat, eqwidth
visualization
contour_model, contour_ratio, contour_resid