- qspec.analyze.linear_nd_monte_carlo ( x , cov = None , axis = None , optimize_cov = False , n_samples = None , n_accepted = None , optimize_sampling = True , return_samples = False , method = 'py' , report = False , ** kwargs )[source]
Maximum likelihood Monte-Carlo sampling of a straight line through points $\vec{\mu}_i\in\mathbb{R}^n$ with covariances $\mathbf{\Sigma}_i\in\mathbb{R}^{n\times n}$, assuming $n$-dimensional multivariate normal distributions $\mathcal{N}(\vec{\mu}_i, \mathbf{\Sigma}_i)$. The algorithm is described in the supplementary material of [Gebert et al., Phys. Rev. Lett. 115, 053003 (2015)].
- Parameters:
-
- xndarray | Iterable
The data vectors $\vec{\mu}_i$. Must have shape
(k, n), wherekis the number of data points andnis the number of dimensions of each point.- covndarray | Iterable
The covariance matrices $\mathbf{\Sigma}_i$ of the data vectors. Must have shape
(k, n, n). Usecovariance_matrixto construct covariance matrices. IfNone, samples are generated untiln_acceptedsamples get accepted.- axisint
The index of the vector component of the n-dimensional vectors that are fixed for fitting. This is required since a straight in
ndimensions is fully described by2 * (n - 1)parameters. IfNone, the best axis is determined from the data, and the direction vector of the straight is normalized.- optimize_covbool
If
True, the origin vector of the straight is optimized to yield the smallest covariances.- n_samplesint
The number of samples generated for each data point. If
Noneandmethod == 'cpp', samples are generated untiln_acceptedsamples get accepted.- n_acceptedint
The number of samples to be accepted for each data point. Only available if
method == 'cpp'.- optimize_samplingbool
Whether to optimize the data sampling for acceptance efficiency.
- return_samplesbool
Whether to also return the generated points $\vec{p}_i$ with shape
(n_samples, k ,n).- methodstr
The method to generate the collinear points. Can be one of
{'py', 'cpp'}. The'py'version is faster but only allows to specifyn_samples. The'cpp'version is slower but allows to specify bothn_acceptedandn_samples.- reportbool
Whether to print the result of the fit.
- kwargsNone
Additional keyword arguments to be passed to the chosen method.
'py': {},'cpp': {seed: None}.
- Returns:
-
- (popt, pcov, p)(ndarray, ndarray, Optional[ndarray])
The optimized parameters and their covariances. If
return_samples == True, also the generated points $\vec{p}_i$ are returned. The resulting shapes are(2 * n, ),(2 * n, 2 * n)and(n_samples, k, n).