aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mvlmm.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/mvlmm.cpp b/src/mvlmm.cpp
index eb23900..1f64c3a 100644
--- a/src/mvlmm.cpp
+++ b/src/mvlmm.cpp
@@ -210,6 +210,31 @@ void MVLMM::WriteFiles() {
}
// Below are functions for EM algorithm.
+
+/*
+ src/mvlmm.cpp
+> describe `EigenProc`
+
+The EigenProc function performs the following steps:
+
+ 1 Eigen Decomposition of V_e: It computes the eigen decomposition of the matrix V_e to obtain the eigenvectors
+ and eigenvalues. This is used to transform V_e into a diagonal form.
+ 2 Calculate V_e_h and V_e_hi: It calculates the matrices V_e_h and V_e_hi, which are used to transform the
+ original matrices into a space where the eigenvalues are more manageable. V_e_h is a scaled version of the
+ eigenvectors, and V_e_hi is the inverse of V_e_h.
+ 3 Calculate Lambda: It computes the matrix Lambda as V_ehi * V_g * V_ehi, which is a transformed version of
+ V_g in the space defined by the eigenvectors of V_e.
+ 4 Eigen Decomposition of Lambda: It performs an eigen decomposition on Lambda to obtain the eigenvectors and
+ eigenvalues, which are used to further transform the matrices.
+ 5 Calculate UltVeh and UltVehi: It calculates UltVeh and UltVehi, which are used in subsequent calculations to
+ transform vectors and matrices into the space defined by the eigenvectors of Lambda.
+ 6 Return logdet_Ve: The function returns the logarithm of the determinant of V_e, which is used in likelihood
+ calculations.
+
+This function is crucial for transforming the problem into a space where the matrices are diagonal, simplifying
+many calculations in the context of mixed models.
+
+ */
double EigenProc(const gsl_matrix *V_g, const gsl_matrix *V_e, gsl_vector *D_l,
gsl_matrix *UltVeh, gsl_matrix *UltVehi) {
size_t d_size = V_g->size1;