gips 1.3.0

Multi-sample support

gips() now accepts a list of covariance matrices and a vector of sample sizes, enabling Bayesian model selection with a shared permutation symmetry across G independent groups:

g <- gips(list(S1, S2, S3), c(n1, n2, n3))
g_MAP <- find_MAP(g, optimizer = "BF")

Each group has its own covariance matrix Sigma_g and can have its own prior hyperparameters D_matrix_g and delta_g, but all share the same symmetry group Gamma. The MLE exists when min(n_g) >= n0. All existing single-sample usage is fully unchanged.

gips 1.2.4

Performance gain

project_matrix() is now implemented in C++ internally. Additionally, several internal calculations used by log_posteriori_of_gips() and find_MAP(optimizer = "BF") were optimized.

For Brute Force optimization:

permutation size 6 7 8 9 10
v1.2.3 1.26 s 4.06 s 30.19 s 4.35 min 1 h 46 min
v1.2.4 0.52 s 1.89 s 10.34 s 1.21 min 12.14 min

For log_posteriori_of_gips() evaluated on 1000 random permutations of a given size:

permutation size 30 50 100 200 300
v1.2.3 2.31 s 2.31 s 11.70 s 46.49 s 110.17 s
v1.2.4 0.84 s 1.26 s 3.24 s 15.73 s 39.47 s

The above tables are based on the code from Pull Request #99.

Update to functions

Bugfixes:

gips 1.2.3

Performance gain

There was a significant speed improvement in get_structure_constants(), which is used internally by posterior calculations. For 1000 random permutations of a given size:

permutation size 30 50 100 200 300
v1.2.2 0.09 s 0.10 s 0.25 s ~10 s ~25 s
v1.2.3 0.07 s 0.08 s 0.10 s 0.17 s ~0.20 s

This change consequently improved log_posteriori_of_gips(). For 1000 random permutations of a given size:

permutation size 30 50 100 200 300
v1.2.2 1.50 s 2.49 s 7.08 s 55.25 s 169.77 s
v1.2.3 1.29 s 2.24 s 6.84 s 31.73 s 85.10 s

Update to functions

gips 1.2.2

Bugfixes:

gips 1.2.1

Bugfix:

gips 1.2.0

New functions

Update to functions

Bugfixes:

gips 1.0.0

mirror server hosted at Truenetwork, Russian Federation.