projnormal.formulas.projected_normal_Bc

Formulas for the distribution of \(y=x/\sqrt{x^T B x + c}\).

empirical_moments(mean_x, covariance_x, const, n_samples, B=None, B_chol=None)

Compute the mean, covariance and second moment of the variable \(y = x/\sqrt{x^T B x + c}\) where \(x \sim \mathcal{N}(\mu_x, \Sigma_x)\), \(B\) is a symmetric positive definite matrix, and \(c\) is a positive constant added to the denominator, by sampling from the distribution.

Parameters:
  • mean_x (torch.Tensor) – Mean of x. Shape is (n_dim,).

  • covariance_x (torch.Tensor) – Covariance of x. Shape is (n_dim, n_dim).

  • n_samples (int) – Number of samples to draw.

  • const (torch.Tensor) – Constant added to the denominator. Shape is ().

  • B (torch.Tensor, optional) – Matrix B used in the denominator of the projection. If not provided, the identity matrix is used. Shape is (n_dim, n_dim).

  • B_chol (torch.Tensor, optional) – Cholesky decomposition matrix L, such that B = LL’. Can be provided to avoid recomputing it. Shape is (n_dim, n_dim).

Returns:

Dictionary with the keys mean, covariance, and second_moment, containing the empirical moments of the projected normal distribution.

Return type:

dict

log_pdf(mean_x, covariance_x, y, const, B=None, B_chol=None)

Compute the log-pdf at points y for the distribution of the variable \(y = x/\sqrt{x^T B x + c}\), where \(x \sim \mathcal{N}(\mu_x, \Sigma_x)\), \(B\) is a symmetric positive definite matrix and \(c\) is a positive constant. (\(y\) has a projected normal distribution.).

Parameters:
  • mean_x (torch.Tensor) – Mean of x. Shape is (n_dim,).

  • covariance_x (torch.Tensor) – Covariance of x. Shape is (n_dim, n_dim).

  • y (torch.Tensor) – Points where to evaluate the PDF. Shape is (n_points, n_dim).

  • const (torch.Tensor) – Constant added to the denominator. Must be positive. Shape is ().

  • B (torch.Tensor, optional) – Matrix B used in the denominator of the projection. If not provided, the identity matrix is used. Shape is (n_dim, n_dim).

  • B_chol (torch.Tensor, optional) – Cholesky decomposition of B. Can be provided to avoid recomputing it. Shape is (n_dim, n_dim).

Returns:

Log-PDF evaluated at each y. Shape is (n_points,).

Return type:

torch.Tensor

mean(mean_x, covariance_x, const, B=None, B_chol=None)

Compute the mean of \(y = x/\sqrt{x^T B x + c}\), where \(x \sim \mathcal{N}(\mu_x, \Sigma_x)\), \(B\) is a symmetric positive definite matrix and \(c\) is a positive constant. Uses a Taylor approximation. (\(y\) is distributed on the ellipse defined by \(B\).).

Parameters:
  • mean_x (torch.Tensor) – Mean of x. Shape is (n_dim,).

  • covariance_x (torch.Tensor) – Covariance of x. Shape is (n_dim, n_dim).

  • const (torch.Tensor) – Constant added to the denominator. Shape is ().

  • B (torch.Tensor, optional) – Symmetric positive definite matrix defining the ellipse. Shape is (n_dim, n_dim).

  • B_chol (torch.Tensor, optional) – Cholesky decomposition of B. Can be provided to avoid recomputing it. Shape is (n_dim, n_dim).

Returns:

Expected value for the projected normal on ellipse. Shape is (n_dim,).

Return type:

torch.Tensor

pdf(mean_x, covariance_x, y, const, B=None, B_chol=None)

Compute the pdf at points y for the distribution of the variable \(y = x/\sqrt{x^T B x + c}\), where \(x \sim \mathcal{N}(\mu_x, \Sigma_x)\), \(B\) is a symmetric positive definite matrix and \(c\) is a positive constant.

Parameters:
  • mean_x (torch.Tensor) – Mean of x. Shape is (n_dim,).

  • covariance_x (torch.Tensor) – Covariance of x. Shape is (n_dim, n_dim).

  • y (torch.Tensor) – Points where to evaluate the PDF. Shape is (n_points, n_dim).

  • const (torch.Tensor) – Constant added to the denominator. Must be positive. Shape is ().

  • B (torch.Tensor, optional) – Matrix B used in the denominator of the projection. If not provided, the identity matrix is used. Shape is (n_dim, n_dim).

  • B_chol (torch.Tensor, optional) – Cholesky decomposition of B. Can be provided to avoid recomputing it. Shape is (n_dim, n_dim).

Returns:

PDF evaluated at each y. Shape is (n_points,).

Return type:

torch.Tensor

sample(mean_x, covariance_x, n_samples, const, B=None, B_chol=None)

Sample the variable \(y = x/\sqrt{x^T B x + c}\) where \(x \sim \mathcal{N}(\mu_x, \Sigma_x)\), \(B\) is a symmetric positive definite matrix and \(c\) is a positive constant added to the denominator.

Parameters:
  • mean_x (torch.Tensor) – Mean of x. Shape is (n_dim,).

  • covariance_x (torch.Tensor) – Covariance of x. Shape is (n_dim, n_dim).

  • n_samples (int) – Number of samples to draw.

  • const (torch.Tensor) – Constant added to the denominator. Shape is ().

  • B (torch.Tensor, optional) – Matrix B used in the denominator of the projection. If not provided, the identity matrix is used. Shape is (n_dim, n_dim).

  • B_chol (torch.Tensor, optional) – Cholesky decomposition matrix L, such that B = LL’. Can be provided to avoid recomputing it. Shape is (n_dim, n_dim).

Returns:

Samples from the projected normal. Shape is (n_samples, n_dim).

Return type:

torch.Tensor

second_moment(mean_x, covariance_x, const, B=None, B_chol=None)

Compute the second moment matrix of \(y = x/\sqrt{x^T B x + c}\), where \(x \sim \mathcal{N}(\mu_x, \Sigma_x)\), \(B\) is a symmetric positive definite matrix and \(c\) is a positive constant. Uses a Taylor approximation.

Parameters:
  • mean_x (torch.Tensor) – Mean of x. Shape is (n_dim,).

  • covariance_x (torch.Tensor) – Covariance of x. Shape is (n_dim, n_dim).

  • const (torch.Tensor) – Constant added to the denominator. Shape is ().

  • B (torch.Tensor, optional) – Symmetric positive definite matrix defining the ellipse. Shape is (n_dim, n_dim).

  • B_chol (torch.Tensor, optional) – Cholesky decomposition of B. Can be provided to avoid recomputing it. Shape is (n_dim, n_dim).

Returns:

Second moment matrix of \(y\). Shape is (n_dim, n_dim).

Return type:

torch.Tensor

Modules

moments

Approximation to the moments of the general projected normal distribution projected onto ellipse given by matrix B.

probability

Probability density function (PDF) for the general projected normal distribution.

sampling

Sampling functions for the general projected normal distribution.