projnormal.formulas.projected_normal

Formulas for the projected normal distribution, given by \(y=x/\|x\|\).

empirical_moments(mean_x, covariance_x, n_samples)

Compute the mean, covariance and second moment of the variable \(y = x/\sqrt{x^T x}\), where \(x \sim \mathcal{N}(\mu_x, \Sigma_x)\), by sampling from the distribution. The variable \(y\) has a general 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).

  • n_samples (int) – Number of samples.

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)

Compute the log-pdf at points y for the distribution of the variable \(y = x/\sqrt{x^T x}\), where \(x \sim \mathcal{N}(\mu_x, \Sigma_x)\). (\(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).

Returns:

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

Return type:

torch.Tensor

mean(mean_x, covariance_x)

Compute the mean of \(y = x/\sqrt{x^T x}\), where \(x \sim \mathcal{N}(\mu_x, \Sigma_x)\) via Taylor approximation. (\(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).

Returns:

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

Return type:

torch.Tensor

pdf(mean_x, covariance_x, y)

Compute the pdf at points y for the distribution of the variable \(y = x/\sqrt{x^T x}\), where \(x \sim \mathcal{N}(\mu_x, \Sigma_x)\). (\(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).

Returns:

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

Return type:

torch.Tensor

sample(mean_x, covariance_x, n_samples)

Sample the variable \(y = x/\sqrt{x^T x}\) where \(x \sim \mathcal{N}(\mu_x, \Sigma_x)\).

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.

Returns:

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

Return type:

torch.Tensor

second_moment(mean_x, covariance_x)

Compute the second moment matrix of \(y = x/\sqrt{x^T x}\), where \(x \sim \mathcal{N}(\mu_x, \Sigma_x)\) via Taylor approximation. (\(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).

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.

probability

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

sampling

Sampling functions for the general projected normal distribution.