summary
method for gips
class.
Arguments
- object
An object of class
gips
. Usually, a result of afind_MAP()
.- ...
Further arguments passed to or from other methods.
- x
An object of class
summary.gips
to be printed
Value
The function summary.gips()
computes and returns a list of summary
statistics of the given gips
object. Those are:
For unoptimized
gips
object:optimized
-FALSE
.start_permutation
- the permutation thisgips
represents.start_permutation_log_posteriori
- the log of the a posteriori value the start permutation has.times_more_likely_than_id
- how many more likely thestart_permutation
is over the identity permutation,()
. It can be less than 1, meaning the identity permutation is more likely. Remember that this number can big and overflow toInf
or small and underflow to 0.log_times_more_likely_than_id
- log oftimes_more_likely_than_id
.likelihood_ratio_test_statistics
,likelihood_ratio_test_p_value
- statistics and p-value of Likelihood Ratio test, where the H_0 is that the data was drawn from the normal distribution with Covariance matrix invariant under the given permutation. The p-value is calculated from the asymptotic distribution. Note that this is sensibly defined only for \(n \ge p\).n0
- the minimum number of observations needed for the covariance matrix's maximum likelihood estimator (corresponding to a MAP) to exist. See \(C\sigma\) andn0
section invignette("Theory", package = "gips")
or in its pkgdown page.S_matrix
- the underlying matrix. This matrix will be used in calculations of the posteriori value inlog_posteriori_of_gips()
.number_of_observations
- the number of observations that were observed for theS_matrix
to be calculated. This value will be used in calculations of the posteriori value inlog_posteriori_of_gips()
.was_mean_estimated
- given by the user while creating thegips
object:TRUE
means theS
parameter was the output ofstats::cov()
function;FALSE
means theS
parameter was calculated withS = t(X) %*% X / number_of_observations
.
delta
,D_matrix
- the hyperparameters of the Bayesian method. See the Hyperparameters section ofgips()
documentation.n_parameters
- number of free parameters in the covariance matrix.AIC
,BIC
- output ofAIC.gips()
andBIC.gips()
functions.
For optimized
gips
object:optimized
-TRUE
.found_permutation
- the permutation thisgips
represents. The visited permutation with the biggest a posteriori value.found_permutation_log_posteriori
- the log of the a posteriori value the found permutation has.start_permutation
- the original permutation thisgips
represented before optimization. It is the first visited permutation.start_permutation_log_posteriori
- the log of the a posteriori value the start permutation has.times_more_likely_than_start
- how many more likely thefound_permutation
is over thestart_permutation
. It cannot be a number less than 1. Remember that this number can big and overflow toInf
.log_times_more_likely_than_start
- log oftimes_more_likely_than_start
.likelihood_ratio_test_statistics
,likelihood_ratio_test_p_value
- statistics and p-value of Likelihood Ratio test, where the H_0 is that the data was drawn from the normal distribution with Covariance matrix invariant underfound_permutation
. The p-value is calculated from the asymptotic distribution. Note that this is sensibly defined only for \(n \ge p\).n0
- the minimal number of observations needed for the existence of the maximum likelihood estimator (corresponding to a MAP) of the covariance matrix (see \(C\sigma\) andn0
section invignette("Theory", package = "gips")
or in its pkgdown page).S_matrix
- the underlying matrix. This matrix will be used in calculations of the posteriori value inlog_posteriori_of_gips()
.number_of_observations
- the number of observations that were observed for theS_matrix
to be calculated. This value will be used in calculations of the posteriori value inlog_posteriori_of_gips()
.was_mean_estimated
- given by the user while creating thegips
object:TRUE
means theS
parameter was output of thestats::cov()
function;FALSE
means theS
parameter was calculated withS = t(X) %*% X / number_of_observations
.
delta
,D_matrix
- the hyperparameters of the Bayesian method. See the Hyperparameters section ofgips()
documentation.n_parameters
- number of free parameters in the covariance matrix.AIC
,BIC
- output ofAIC.gips()
andBIC.gips()
functions.optimization_algorithm_used
- all used optimization algorithms in order (one could start optimization with "MH", and then do an "HC").did_converge
- a boolean, did the last used algorithm converge.number_of_log_posteriori_calls
- how many times was thelog_posteriori_of_gips()
function called during the optimization.whole_optimization_time
- how long was the optimization process; the sum of all optimization times (when there were multiple).log_posteriori_calls_after_best
- how many times was thelog_posteriori_of_gips()
function called after thefound_permutation
; in other words, how long ago could the optimization be stopped and have the same result. If this value is small, consider runningfind_MAP()
again withoptimizer = "continue"
. Foroptimizer = "BF"
, it isNULL
.acceptance_rate
- only interesting foroptimizer = "MH"
. How often was the algorithm accepting the change of permutation in an iteration.
The function print.summary.gips()
returns an invisible NULL
.
Methods (by generic)
print(summary.gips)
: Printing method for classsummary.gips
. Prints every interesting information in a form pleasant for humans.
See also
find_MAP()
- Usually, thesummary.gips()
is called on the output offind_MAP()
.log_posteriori_of_gips()
- Calculate the likelihood of a permutation.AIC.gips()
,BIC.gips()
- Calculate Akaike's or Bayesian Information Criterionproject_matrix()
- Project the known matrix on the found permutations space.
Examples
require("MASS") # for mvrnorm()
perm_size <- 6
mu <- runif(6, -10, 10) # Assume we don't know the mean
sigma_matrix <- matrix(
data = c(
1.1, 0.8, 0.6, 0.4, 0.6, 0.8,
0.8, 1.1, 0.8, 0.6, 0.4, 0.6,
0.6, 0.8, 1.1, 0.8, 0.6, 0.4,
0.4, 0.6, 0.8, 1.1, 0.8, 0.6,
0.6, 0.4, 0.6, 0.8, 1.1, 0.8,
0.8, 0.6, 0.4, 0.6, 0.8, 1.1
),
nrow = perm_size, byrow = TRUE
) # sigma_matrix is a matrix invariant under permutation (1,2,3,4,5,6)
number_of_observations <- 13
Z <- MASS::mvrnorm(number_of_observations, mu = mu, Sigma = sigma_matrix)
S <- cov(Z) # Assume we have to estimate the mean
g <- gips(S, number_of_observations)
unclass(summary(g))
#> $optimized
#> [1] FALSE
#>
#> $start_permutation
#> [1] ()
#>
#> $start_permutation_log_posteriori
#> [1] -31.54222
#>
#> $times_more_likely_than_id
#> [1] 1
#>
#> $log_times_more_likely_than_id
#> [1] 0
#>
#> $likelihood_ratio_test_statistics
#> [1] 0
#>
#> $likelihood_ratio_test_p_value
#> NULL
#>
#> $n0
#> [1] 7
#>
#> $S_matrix
#> [,1] [,2] [,3] [,4] [,5] [,6]
#> [1,] 1.0494842 1.1827957 1.0811047 0.6491538 0.5910505 0.7578313
#> [2,] 1.1827957 1.5722816 1.1559233 0.5854755 0.2377610 0.7524728
#> [3,] 1.0811047 1.1559233 1.5841572 0.9470600 0.7940677 0.5350399
#> [4,] 0.6491538 0.5854755 0.9470600 1.0954129 0.9148409 0.6746779
#> [5,] 0.5910505 0.2377610 0.7940677 0.9148409 1.5101372 0.7777238
#> [6,] 0.7578313 0.7524728 0.5350399 0.6746779 0.7777238 1.0100209
#>
#> $number_of_observations
#> [1] 13
#>
#> $was_mean_estimated
#> [1] TRUE
#>
#> $delta
#> [1] 3
#>
#> $D_matrix
#> [,1] [,2] [,3] [,4] [,5] [,6]
#> [1,] 1.303582 0.000000 0.000000 0.000000 0.000000 0.000000
#> [2,] 0.000000 1.303582 0.000000 0.000000 0.000000 0.000000
#> [3,] 0.000000 0.000000 1.303582 0.000000 0.000000 0.000000
#> [4,] 0.000000 0.000000 0.000000 1.303582 0.000000 0.000000
#> [5,] 0.000000 0.000000 0.000000 0.000000 1.303582 0.000000
#> [6,] 0.000000 0.000000 0.000000 0.000000 0.000000 1.303582
#>
#> $n_parameters
#> [1] 21
#>
#> $AIC
#> [1] 163.442
#>
#> $BIC
#> [1] 175.3059
#>
g_map <- find_MAP(g, max_iter = 10, show_progress_bar = FALSE, optimizer = "Metropolis_Hastings")
unclass(summary(g_map))
#> $optimized
#> [1] TRUE
#>
#> $found_permutation
#> [1] (12)(45)
#>
#> $found_permutation_log_posteriori
#> [1] -28.4427
#>
#> $start_permutation
#> [1] ()
#>
#> $start_permutation_log_posteriori
#> [1] -31.54222
#>
#> $times_more_likely_than_start
#> [1] 22.18745
#>
#> $log_times_more_likely_than_start
#> [1] 3.099527
#>
#> $likelihood_ratio_test_statistics
#> [1] 17.4246
#>
#> $likelihood_ratio_test_p_value
#> [1] 0.0259792
#>
#> $n0
#> [1] 5
#>
#> $S_matrix
#> [,1] [,2] [,3] [,4] [,5] [,6]
#> [1,] 1.0494842 1.1827957 1.0811047 0.6491538 0.5910505 0.7578313
#> [2,] 1.1827957 1.5722816 1.1559233 0.5854755 0.2377610 0.7524728
#> [3,] 1.0811047 1.1559233 1.5841572 0.9470600 0.7940677 0.5350399
#> [4,] 0.6491538 0.5854755 0.9470600 1.0954129 0.9148409 0.6746779
#> [5,] 0.5910505 0.2377610 0.7940677 0.9148409 1.5101372 0.7777238
#> [6,] 0.7578313 0.7524728 0.5350399 0.6746779 0.7777238 1.0100209
#>
#> $number_of_observations
#> [1] 13
#>
#> $was_mean_estimated
#> [1] TRUE
#>
#> $delta
#> [1] 3
#>
#> $D_matrix
#> [,1] [,2] [,3] [,4] [,5] [,6]
#> [1,] 1.303582 0.000000 0.000000 0.000000 0.000000 0.000000
#> [2,] 0.000000 1.303582 0.000000 0.000000 0.000000 0.000000
#> [3,] 0.000000 0.000000 1.303582 0.000000 0.000000 0.000000
#> [4,] 0.000000 0.000000 0.000000 1.303582 0.000000 0.000000
#> [5,] 0.000000 0.000000 0.000000 0.000000 1.303582 0.000000
#> [6,] 0.000000 0.000000 0.000000 0.000000 0.000000 1.303582
#>
#> $n_parameters
#> [1] 13
#>
#> $AIC
#> [1] 164.8666
#>
#> $BIC
#> [1] 172.211
#>
#> $optimization_algorithm_used
#> [1] "Metropolis_Hastings"
#>
#> $did_converge
#> NULL
#>
#> $number_of_log_posteriori_calls
#> [1] 10
#>
#> $whole_optimization_time
#> Time difference of 0.01470804 secs
#>
#> $log_posteriori_calls_after_best
#> [1] 0
#>
#> $acceptance_rate
#> [1] 0.2
#>
g_map2 <- find_MAP(g, max_iter = 10, show_progress_bar = FALSE, optimizer = "hill_climbing")
summary(g_map2)
#> The optimized `gips` object.
#>
#> Permutation:
#> (3,6)(4,5)
#>
#> Log_posteriori:
#> -25.37572
#>
#> Times more likely than starting permutation:
#> 476.515
#>
#> The p-value of Likelihood-Ratio test:
#> 0.2636
#>
#> The number of observations:
#> 13
#>
#> The mean in the `S` matrix was estimated.
#> Therefore, one degree of freedom was lost.
#> There are 12 degrees of freedom left.
#>
#> n0:
#> 5
#>
#> The number of observations is bigger than n0 for this permutation,
#> so the gips model based on the found permutation does exist.
#>
#> The number of free parameters in the covariance matrix:
#> 13
#>
#> BIC:
#> 164.8062
#>
#> AIC:
#> 157.4618
#>
#> --------------------------------------------------------------------------------
#> Optimization algorithm:
#> hill_climbing did converge
#>
#> The number of log_posteriori calls:
#> 46
#>
#> Optimization time:
#> 0.06176329 secs
#>
#> Log_posteriori calls after the found permutation:
#> 17
# ================================================================================
S <- matrix(c(1, 0.5, 0.5, 2), nrow = 2, byrow = TRUE)
g <- gips(S, 10)
print(summary(g))
#> The unoptimized `gips` object.
#>
#> Permutation:
#> ()
#>
#> Log_posteriori:
#> -15.4837
#>
#> The current permutation is id, so Likelihood-Ratio test cannot be performed (there is nothing to compare)
#>
#> The number of observations:
#> 10
#>
#> The mean in the `S` matrix was estimated.
#> Therefore, one degree of freedom was lost.
#> There are 9 degrees of freedom left.
#>
#> n0:
#> 3
#>
#> The number of observations is bigger than n0 for this permutation,
#> so the gips model based on the found permutation does exist.
#>
#> The number of free parameters in the covariance matrix:
#> 3
#>
#> BIC:
#> 63.02608
#>
#> AIC:
#> 62.11833