Simulates random samples from a Riemannian normal distribution on symmetric positive definite matrices.
rspdnorm(n, refpt, disp, met)
Number of samples to generate.
Reference point on the manifold, represented as a symmetric positive definite matrix. Must be an object of class dppMatrix
from the Matrix package.
Dispersion matrix defining the spread of the distribution. Must be an object of class dppMatrix
from the Matrix package.
A metric object of class rmetric
.
An object of class CSample
containing the generated samples.
if (requireNamespace("Matrix", quietly = TRUE)) {
library(Matrix)
data(airm)
refpt <- diag(2) |>
Matrix::nearPD() |>
_$mat |>
Matrix::pack()
disp <- diag(3) |>
Matrix::nearPD() |>
_$mat |>
Matrix::pack()
rspdnorm(10, refpt, disp, airm)
}
#> <CSample>
#> Public:
#> center: function ()
#> change_ref_pt: function (new_ref_pt)
#> clone: function (deep = FALSE)
#> compute_conns: function ()
#> compute_fmean: function (tol = 0.05, max_iter = 20, lr = 0.2)
#> compute_sample_cov: function ()
#> compute_tangents: function (ref_pt = default_ref_pt(private$p))
#> compute_unvecs: function ()
#> compute_variation: function ()
#> compute_vecs: function ()
#> connectomes: active binding
#> frechet_mean: active binding
#> initialize: function (conns = NULL, tan_imgs = NULL, vec_imgs = NULL, centered = NULL,
#> is_centered: active binding
#> matrix_size: active binding
#> mfd_dim: active binding
#> ref_point: active binding
#> riem_metric: active binding
#> sample_cov: active binding
#> sample_size: active binding
#> tangent_images: active binding
#> variation: active binding
#> vector_images: active binding
#> Private:
#> centered: FALSE
#> conns: NULL
#> d: 3
#> f_mean: NULL
#> metric_obj: rmetric
#> n: 10
#> p: 2
#> s_cov: NULL
#> tangent_handler: TangentImageHandler, R6
#> var: NULL
#> vec_imgs: 0.468154420450533 0.362951255864986 -1.30454354503478 0. ...