# LKJCholesky Source: https://www.tensorplay.cn/docs/generated/tensorplay.distributions.LKJCholesky.html ```python class tensorplay.distributions.LKJCholesky(dim: int, concentration: Tensor | float = 1.0, validate_args: bool | None = None) ``` LKJ distribution for lower Cholesky factor of correlation matrices. The distribution is controlled by concentration parameter $\eta$ to make the probability of the correlation matrix $M$ generated from a Cholesky factor proportional to $\det(M)^{\eta - 1}$. Because of that, when concentration == 1, we have a uniform distribution over Cholesky factors of correlation matrices: ``` L ~ LKJCholesky(dim, concentration) X = L @ L' ~ LKJCorr(dim, concentration) ``` Note that this distribution samples the Cholesky factor of correlation matrices and not the correlation matrices themselves and thereby differs slightly from the derivations in [1] for the LKJCorr distribution. For sampling, this uses the Onion method from [1] Section 3. Example: ``` >>> # xdoctest: +IGNORE_WANT("non-deterministic") >>> l = LKJCholesky(3, 0.5) >>> l.sample() # l @ l.T is a sample of a correlation 3x3 matrix tensor([[ 1.0000, 0.0000, 0.0000], [ 0.3516, 0.9361, 0.0000], [-0.1899, 0.4748, 0.8593]]) ``` Parameters: - dimension (dim) – dimension of the matrices - concentration ([float](https://docs.python.org/3/builtins/functions.html#float) or [Tensor](/docs/generated/tensorplay.Tensor.html#tensorplay.Tensor)) – concentration/shape parameter of the distribution (often referred to as eta) References [1] Generating random correlation matrices based on vines and extended onion method (2009), Daniel Lewandowski, Dorota Kurowicka, Harry Joe. Journal of Multivariate Analysis. 100. 10.1016/j.jmva.2009.04.008 ```python property batch_shape: Size ``` Returns the shape over which parameters are batched. ```python cdf(value: Tensor) → Tensor ``` Returns the cumulative density/mass function evaluated at value. Parameters: value ([Tensor](/docs/generated/tensorplay.Tensor.html#tensorplay.Tensor)) ```python entropy() → Tensor ``` Returns entropy of distribution, batched over batch_shape. Returns: Tensor of shape batch_shape. ```python enumerate_support(expand: bool = True) → Tensor ``` Returns tensor containing all values supported by a discrete distribution. The result will enumerate over dimension 0, so the shape of the result will be (cardinality,) + batch_shape + event_shape (where event_shape = () for univariate distributions). Note that this enumerates over all batched tensors in lock-step [[0, 0], [1, 1], …]. With expand=False, enumeration happens along dim 0, but with the remaining batch dimensions being singleton dimensions, [[0], [1], ... To iterate over the full Cartesian product use itertools.product(m.enumerate_support()). Parameters: expand ([bool](https://docs.python.org/3/builtins/functions.html#bool)) – whether to expand the support over the batch dims to match the distribution’s batch_shape. Returns: Tensor iterating over dimension 0. ```python property event_shape: Size ``` Returns the shape of a single sample (without batching). ```python icdf(value: Tensor) → Tensor ``` Returns the inverse cumulative density/mass function evaluated at value. Parameters: value ([Tensor](/docs/generated/tensorplay.Tensor.html#tensorplay.Tensor)) ```python property mean: Tensor ``` Returns the mean of the distribution. ```python property mode: Tensor ``` Returns the mode of the distribution. ```python perplexity() → Tensor ``` Returns perplexity of distribution, batched over batch_shape. Returns: Tensor of shape batch_shape. ```python rsample(sample_shape: Size | Sequence[int] = ()) → Tensor ``` Generates a sample_shape shaped reparameterized sample or sample_shape shaped batch of reparameterized samples if the distribution parameters are batched. ```python sample_n(n: int) → Tensor ``` Generates n samples or n batches of samples if the distribution parameters are batched. ```python static set_default_validate_args(value: bool) → None ``` Sets whether validation is enabled or disabled. The default behavior mimics Python’s assert statement: validation is on by default, but is disabled if Python is run in optimized mode (via python -O). Validation may be expensive, so you may want to disable it once a model is working. Parameters: value ([bool](https://docs.python.org/3/builtins/functions.html#bool)) – Whether to enable validation. ```python property stddev: Tensor ``` Returns the standard deviation of the distribution. ```python property variance: Tensor ``` Returns the variance of the distribution.