normal_sample¶
-
sherpa.astro.ui.
normal_sample
(num=1, sigma=1, correlate=True, id=None, otherids=(), numcores=None)¶ Sample the fit statistic by taking the parameter values from a normal distribution.
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.
Parameters: - num (int, optional) – The number of samples to use (default is 1).
- sigma (number, optional) – The width of the normal distribution (the default is 1).
- 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 or str, optional) – The data set containing the model expression. If not given then the default identifier is used, as returned by get_default_id.
- otherids (sequence of int or str, optional) – For when multiple source expressions are being used.
- numcores (optional) – The number of CPU cores to use. The default is to use all the cores on the machine.
Returns: A NumPy array table with the first column representing the statistic and later columns the parameters used.
Return type: samples
See also
fit()
- Fit a model to one or more data sets.
set_model()
- Set the source model expression for a data set.
set_stat()
- Set the statistical method.
t_sample()
- Sample from the Student’s t-distribution.
uniform_sample()
- Sample from a uniform distribution.
Notes
All thawed model parameters are sampled from the Gaussian distribution, where the mean is set as the best-fit parameter value and the variance is determined by the diagonal elements of the covariance matrix. The multi-variate Gaussian is assumed by default for correlated parameters, using the off-diagonal elements of the covariance matrix.
Examples
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, 4) >>> np.median(ans[:,0]) 119.82959326927781