Compute sets of compositions and log ratio transformation for multilevel compositional data
Arguments
- data
A
data.frame
ordata.table
containing data of all variables used in the analysis. It must include a composition and a ID variable. Required.- parts
A character vector specifying the names of compositional variables to be used.
- sbp
A signary matrix indicating sequential binary partition.
- total
A numeric value of the total amount to which the compositions should be closed. Default is
1
.- idvar
Only for multilevel data, a character string specifying the name of the variable containing IDs.
- transform
A character value naming a log ratio transformation to be applied on compositional data. Can be either
"ilr"
(isometric logratio),"alr"
(additive logratio), or"clr"
(centered logratio). Default is"ilr"
.
Value
A complr
object with at least the following elements.
comp
A vector of class
acomp
representing one closed composition or a matrix of classacomp
representing multiple closed compositions each in one row.between_comp
A vector of class
acomp
representing one closed between-person composition or a matrix of classacomp
representing multiple closed between-person compositions each in one row.within_comp
A vector of class
acomp
representing one closed within-person composition or a matrix of classacomp
representing multiple closed within-person compositions each in one row.logratio
Log ratio transform of composition.
between_logratio
Log ratio transform of between-person composition.
within_logratio
Log ratio transform of within-person composition.
data
The user's dataset or imputed dataset if the input data contains zeros.
transform
Type of transform applied on compositional data.
parts
Names of compositional variables.
idvar
Name of the variable containing IDs.
total
Total amount to which the compositions is closed.
Details
The ilr-transform maps the D-part compositional data from the simplex into non-overlapping subgroups in the (D-1)-dimension Euclidean space isometrically by using an orthonormal basis, thereby preserving the compositional properties and yielding a full-rank covariance matrix. ilr transformation should be preferred. However, the alr and clr are alternatives. The alr-transform maps a D-part composition in the Aitchison-simplex non-isometrically to a (D-1)-dimension Euclidian vectors, commonly treating the last part as the common denominator of the others. alr transformation does not rely on distance which breaks the constraint of compositional data. clr-transform maps a D-part composition in the Aitchison-simplex isometrically to a D-dimensional Euclidian vector subspace. clr transformation is not injetive, resulting in singular covariance matrices.
Examples
cilr <- complr(data = mcompd,
parts = c("TST", "WAKE", "MVPA", "LPA", "SB"),
idvar = "ID", total = 1440)
#> A sequential binary partition (sbp), is required for ilr transform but is not supplied.
#> A default sbp, which is a pivot balance, will be applied.
str(cilr)
#> List of 13
#> $ comp : 'acomp' num [1:3540, 1:5] 542.4 458.3 270.8 525 651 99.1 49 41 76 86 297.2 117.1 488.7 259 112 460.3 653.5 624.6 398 436 41 162.1 15 182 155 ...
#> ..- attr(*, "dimnames")=List of 2
#> .. ..$ : NULL
#> .. ..$ : chr [1:5] "TST" "WAKE" "MVPA" "LPA" ...
#> $ between_comp : 'acomp' num [1:3540, 1:5] 494.2 494.2 494.2 494.2 494.2 72.3 72.3 72.3 72.3 72.3 249.3 249.3 249.3 249.3 249.3 503.9 503.9 503.9 503.9 503.| __truncated__ ...
#> ..- attr(*, "dimnames")=List of 2
#> .. ..$ : NULL
#> .. ..$ : chr [1:5] "bTST" "bWAKE" "bMVPA" "bLPA" ...
#> $ within_comp : 'acomp' num [1:3540, 1:5] 0.2233 0.1965 0.1234 0.1948 0.2578 0.279 0.1438 0.1277 0.1928 0.233 0.2426 0.0995 0.4416 0.1905 0.0879 0.1859 0.2| __truncated__ ...
#> ..- attr(*, "dimnames")=List of 2
#> .. ..$ : NULL
#> .. ..$ : chr [1:5] "wTST" "wWAKE" "wMVPA" "wLPA" ...
#> $ logratio : 'rmult' num [1:3540, 1:4] 1.1286 0.958 0.7506 0.889 1.2567 -0.5061 -1.344 -1.2117 -1.084 -0.7149 0.6298 -0.8348 1.3223 -0.0314 -0.6875 1.70| __truncated__ ...
#> ..- attr(*, "orig")= 'acomp' num [1:3540, 1:5] 0.3767 0.3183 0.1881 0.3646 0.4521 0.0688 0.0341 0.0285 0.0528 0.0597 0.2064 0.0813 0.3393 0.1799 0.0778 0.3197 0| __truncated__ ...
#> .. ..- attr(*, "dimnames")=List of 2
#> .. .. ..$ : NULL
#> .. .. ..$ : chr [1:5] "TST" "WAKE" "MVPA" "LPA" ...
#> ..- attr(*, "V")= num [1:5, 1:4] 0.894 -0.224 -0.224 -0.224 -0.224 ...
#> ..- attr(*, "dimnames")=List of 2
#> .. ..$ : NULL
#> .. ..$ : chr [1:4] "ilr1" "ilr2" "ilr3" "ilr4"
#> $ between_logratio: 'rmult' num [1:3540, 1:4] 0.89436 0.89436 0.89436 0.89436 0.89436 -1.06558 -1.06558 -1.06558 -1.06558 -1.06558 0.00968 0.00968 0.00968 0.00| __truncated__ ...
#> ..- attr(*, "orig")= 'acomp' num [1:3540, 1:5] 0.3432 0.3432 0.3432 0.3432 0.3432 0.0502 0.0502 0.0502 0.0502 0.0502 0.1731 0.1731 0.1731 0.1731 0.1731 0.3499 0| __truncated__ ...
#> .. ..- attr(*, "dimnames")=List of 2
#> .. .. ..$ : NULL
#> .. .. ..$ : chr [1:5] "bTST" "bWAKE" "bMVPA" "bLPA" ...
#> ..- attr(*, "V")= num [1:5, 1:4] 0.894 -0.224 -0.224 -0.224 -0.224 ...
#> ..- attr(*, "dimnames")=List of 2
#> .. ..$ : NULL
#> .. ..$ : chr [1:4] "bilr1" "bilr2" "bilr3" "bilr4"
#> $ within_logratio : 'rmult' num [1:3540, 1:4] 0.23428 0.06364 -0.14377 -0.00539 0.36234 0.55948 -0.27846 -0.14612 -0.01842 0.35066 0.62011 -0.84448 1.31261 -0.| __truncated__ ...
#> ..- attr(*, "orig")= 'acomp' num [1:3540, 1:5] 0.2233 0.1965 0.1234 0.1948 0.2578 0.279 0.1438 0.1277 0.1928 0.233 0.2426 0.0995 0.4416 0.1905 0.0879 0.1859 0.2| __truncated__ ...
#> .. ..- attr(*, "dimnames")=List of 2
#> .. .. ..$ : NULL
#> .. .. ..$ : chr [1:5] "wTST" "wWAKE" "wMVPA" "wLPA" ...
#> ..- attr(*, "V")= num [1:5, 1:4] 0.894 -0.224 -0.224 -0.224 -0.224 ...
#> ..- attr(*, "dimnames")=List of 2
#> .. ..$ : NULL
#> .. ..$ : chr [1:4] "wilr1" "wilr2" "wilr3" "wilr4"
#> $ data :Classes ‘data.table’ and 'data.frame': 3540 obs. of 10 variables:
#> ..$ ID : num [1:3540] 185 185 185 185 185 185 185 185 185 185 ...
#> ..$ Time : num [1:3540] 1 2 3 4 5 6 7 8 9 10 ...
#> ..$ Stress: num [1:3540] 4 7 3 2 8 8 6 2 5 0 ...
#> ..$ TST : num [1:3540] 542 458 271 525 651 431 501 518 458 510 ...
#> ..$ WAKE : num [1:3540] 99 49 41 76 86 84 29 32 72 143 ...
#> ..$ MVPA : num [1:3540] 297 117 489 259 112 264 458 111 398 145 ...
#> ..$ LPA : num [1:3540] 460 653 625 398 436 476 283 670 466 577 ...
#> ..$ SB : num [1:3540] 41 162 15 182 155 185 169 110 47 64 ...
#> ..$ Age : num [1:3540] 30 30 30 30 30 30 30 30 30 30 ...
#> ..$ Female: num [1:3540] 0 0 0 0 0 0 0 0 0 0 ...
#> ..- attr(*, ".internal.selfref")=<externalptr>
#> ..- attr(*, "index")= int(0)
#> .. ..- attr(*, "__ID")= int [1:3540] 981 982 983 984 985 986 987 988 989 990 ...
#> $ transform : chr "ilr"
#> $ psi : num [1:5, 1:4] 0.894 -0.224 -0.224 -0.224 -0.224 ...
#> ..- attr(*, "dimnames")=List of 2
#> .. ..$ : chr [1:5] "TST" "WAKE" "MVPA" "LPA" ...
#> .. ..$ : NULL
#> $ sbp : num [1:4, 1:5] 1 0 0 0 -1 1 0 0 -1 -1 ...
#> ..- attr(*, "dimnames")=List of 2
#> .. ..$ : NULL
#> .. ..$ : chr [1:5] "TST" "WAKE" "MVPA" "LPA" ...
#> $ parts : chr [1:5] "TST" "WAKE" "MVPA" "LPA" ...
#> $ idvar : chr "ID"
#> $ total : num 1440
#> - attr(*, "class")= chr "complr"
calr <- complr(data = mcompd, sbp = sbp,
parts = c("TST", "WAKE", "MVPA", "LPA", "SB"),
idvar = "ID",
transform = "alr")
str(calr)
#> List of 13
#> $ comp : 'acomp' num [1:3540, 1:5] 0.3767 0.3183 0.1881 0.3646 0.4521 0.0688 0.0341 0.0285 0.0528 0.0597 0.2064 0.0813 0.3393 0.1799 0.0778 0.3197 0| __truncated__ ...
#> ..- attr(*, "dimnames")=List of 2
#> .. ..$ : NULL
#> .. ..$ : chr [1:5] "TST" "WAKE" "MVPA" "LPA" ...
#> $ between_comp : 'acomp' num [1:3540, 1:5] 0.3432 0.3432 0.3432 0.3432 0.3432 0.0502 0.0502 0.0502 0.0502 0.0502 0.1731 0.1731 0.1731 0.1731 0.1731 0.3499 0| __truncated__ ...
#> ..- attr(*, "dimnames")=List of 2
#> .. ..$ : NULL
#> .. ..$ : chr [1:5] "bTST" "bWAKE" "bMVPA" "bLPA" ...
#> $ within_comp : 'acomp' num [1:3540, 1:5] 0.2233 0.1965 0.1234 0.1948 0.2578 0.279 0.1438 0.1277 0.1928 0.233 0.2426 0.0995 0.4416 0.1905 0.0879 0.1859 0.2| __truncated__ ...
#> ..- attr(*, "dimnames")=List of 2
#> .. ..$ : NULL
#> .. ..$ : chr [1:5] "wTST" "wWAKE" "wMVPA" "wLPA" ...
#> $ logratio : 'rmult' num [1:3540, 1:4] 2.582 1.039 2.894 1.059 1.435 0.882 -1.196 1.006 -0.873 -0.589 1.98 -0.325 3.484 0.353 -0.325 2.418 1.394 3.73 0.782 1.034 ...
#> ..- attr(*, "dimnames")=List of 2
#> .. ..$ : NULL
#> .. ..$ : chr [1:4] "alr1" "alr2" "alr3" "alr4"
#> ..- attr(*, "orig")= 'acomp' num [1:3540, 1:5] 0.3767 0.3183 0.1881 0.3646 0.4521 0.0688 0.0341 0.0285 0.0528 0.0597 0.2064 0.0813 0.3393 0.1799 0.0778 0.3197 0| __truncated__ ...
#> .. ..- attr(*, "dimnames")=List of 2
#> .. .. ..$ : NULL
#> .. .. ..$ : chr [1:5] "TST" "WAKE" "MVPA" "LPA" ...
#> ..- attr(*, "V")= num [1:5, 1:4] 0.8 -0.2 -0.2 -0.2 -0.2 ...
#> $ between_logratio: 'rmult' num [1:3540, 1:4] 1.412 1.412 1.412 1.412 1.412 -0.511 -0.511 -0.511 -0.511 -0.511 0.727 0.727 0.727 0.727 0.727 1.431 1.431 1.431 1.431 1.431 ...
#> ..- attr(*, "dimnames")=List of 2
#> .. ..$ : NULL
#> .. ..$ : chr [1:4] "balr1" "balr2" "balr3" "balr4"
#> ..- attr(*, "orig")= 'acomp' num [1:3540, 1:5] 0.3432 0.3432 0.3432 0.3432 0.3432 0.0502 0.0502 0.0502 0.0502 0.0502 0.1731 0.1731 0.1731 0.1731 0.1731 0.3499 0| __truncated__ ...
#> .. ..- attr(*, "dimnames")=List of 2
#> .. .. ..$ : NULL
#> .. .. ..$ : chr [1:5] "bTST" "bWAKE" "bMVPA" "bLPA" ...
#> ..- attr(*, "V")= num [1:5, 1:4] 0.8 -0.2 -0.2 -0.2 -0.2 ...
#> $ within_logratio : 'rmult' num [1:3540, 1:4] 1.1698 -0.3726 1.4822 -0.3525 0.0232 1.3924 -0.685 1.5163 -0.3624 -0.0783 1.2527 -1.0529 2.7568 -0.3747 -1.0524 0| __truncated__ ...
#> ..- attr(*, "dimnames")=List of 2
#> .. ..$ : NULL
#> .. ..$ : chr [1:4] "walr1" "walr2" "walr3" "walr4"
#> ..- attr(*, "orig")= 'acomp' num [1:3540, 1:5] 0.2233 0.1965 0.1234 0.1948 0.2578 0.279 0.1438 0.1277 0.1928 0.233 0.2426 0.0995 0.4416 0.1905 0.0879 0.1859 0.2| __truncated__ ...
#> .. ..- attr(*, "dimnames")=List of 2
#> .. .. ..$ : NULL
#> .. .. ..$ : chr [1:5] "wTST" "wWAKE" "wMVPA" "wLPA" ...
#> ..- attr(*, "V")= num [1:5, 1:4] 0.8 -0.2 -0.2 -0.2 -0.2 ...
#> $ data :Classes ‘data.table’ and 'data.frame': 3540 obs. of 10 variables:
#> ..$ ID : num [1:3540] 185 185 185 185 185 185 185 185 185 185 ...
#> ..$ Time : num [1:3540] 1 2 3 4 5 6 7 8 9 10 ...
#> ..$ Stress: num [1:3540] 4 7 3 2 8 8 6 2 5 0 ...
#> ..$ TST : num [1:3540] 542 458 271 525 651 431 501 518 458 510 ...
#> ..$ WAKE : num [1:3540] 99 49 41 76 86 84 29 32 72 143 ...
#> ..$ MVPA : num [1:3540] 297 117 489 259 112 264 458 111 398 145 ...
#> ..$ LPA : num [1:3540] 460 653 625 398 436 476 283 670 466 577 ...
#> ..$ SB : num [1:3540] 41 162 15 182 155 185 169 110 47 64 ...
#> ..$ Age : num [1:3540] 30 30 30 30 30 30 30 30 30 30 ...
#> ..$ Female: num [1:3540] 0 0 0 0 0 0 0 0 0 0 ...
#> ..- attr(*, ".internal.selfref")=<externalptr>
#> ..- attr(*, "index")= int(0)
#> .. ..- attr(*, "__ID")= int [1:3540] 981 982 983 984 985 986 987 988 989 990 ...
#> $ transform : chr "alr"
#> $ psi : NULL
#> $ sbp : NULL
#> $ parts : chr [1:5] "TST" "WAKE" "MVPA" "LPA" ...
#> $ idvar : chr "ID"
#> $ total : num 1
#> - attr(*, "class")= chr "complr"
cclr <- complr(data = mcompd, sbp = sbp,
parts = c("TST", "WAKE", "MVPA", "LPA", "SB"),
idvar = "ID",
transform = "clr")
str(cclr)
#> List of 13
#> $ comp : 'acomp' num [1:3540, 1:5] 0.3767 0.3183 0.1881 0.3646 0.4521 0.0688 0.0341 0.0285 0.0528 0.0597 0.2064 0.0813 0.3393 0.1799 0.0778 0.3197 0| __truncated__ ...
#> ..- attr(*, "dimnames")=List of 2
#> .. ..$ : NULL
#> .. ..$ : chr [1:5] "TST" "WAKE" "MVPA" "LPA" ...
#> $ between_comp : 'acomp' num [1:3540, 1:5] 0.3432 0.3432 0.3432 0.3432 0.3432 0.0502 0.0502 0.0502 0.0502 0.0502 0.1731 0.1731 0.1731 0.1731 0.1731 0.3499 0| __truncated__ ...
#> ..- attr(*, "dimnames")=List of 2
#> .. ..$ : NULL
#> .. ..$ : chr [1:5] "bTST" "bWAKE" "bMVPA" "bLPA" ...
#> $ within_comp : 'acomp' num [1:3540, 1:5] 0.2233 0.1965 0.1234 0.1948 0.2578 0.279 0.1438 0.1277 0.1928 0.233 0.2426 0.0995 0.4416 0.1905 0.0879 0.1859 0.2| __truncated__ ...
#> ..- attr(*, "dimnames")=List of 2
#> .. ..$ : NULL
#> .. ..$ : chr [1:5] "wTST" "wWAKE" "wMVPA" "wLPA" ...
#> $ logratio : 'rmult' num [1:3540, 1:5] 1.0095 0.8569 0.6713 0.7951 1.124 -0.6907 -1.3782 -1.2172 -1.1376 -0.9001 0.4079 -0.5078 1.2616 0.0885 -0.636 0.8| __truncated__ ...
#> ..- attr(*, "dimnames")=List of 2
#> .. ..$ : NULL
#> .. ..$ : chr [1:5] "clr1" "clr2" "clr3" "clr4" ...
#> ..- attr(*, "orig")= 'acomp' num [1:3540, 1:5] 0.3767 0.3183 0.1881 0.3646 0.4521 0.0688 0.0341 0.0285 0.0528 0.0597 0.2064 0.0813 0.3393 0.1799 0.0778 0.3197 0| __truncated__ ...
#> .. ..- attr(*, "dimnames")=List of 2
#> .. .. ..$ : NULL
#> .. .. ..$ : chr [1:5] "TST" "WAKE" "MVPA" "LPA" ...
#> $ between_logratio: 'rmult' num [1:3540, 1:5] 0.8 0.8 0.8 0.8 0.8 -1.123 -1.123 -1.123 -1.123 -1.123 0.116 0.116 0.116 0.116 0.116 0.819 0.819 0.819 0.819 0.81| __truncated__ ...
#> ..- attr(*, "dimnames")=List of 2
#> .. ..$ : NULL
#> .. ..$ : chr [1:5] "bclr1" "bclr2" "bclr3" "bclr4" ...
#> ..- attr(*, "orig")= 'acomp' num [1:3540, 1:5] 0.3432 0.3432 0.3432 0.3432 0.3432 0.0502 0.0502 0.0502 0.0502 0.0502 0.1731 0.1731 0.1731 0.1731 0.1731 0.3499 0| __truncated__ ...
#> .. ..- attr(*, "dimnames")=List of 2
#> .. .. ..$ : NULL
#> .. .. ..$ : chr [1:5] "bTST" "bWAKE" "bMVPA" "bLPA" ...
#> $ within_logratio : 'rmult' num [1:3540, 1:5] 0.20954 0.05692 -0.12859 -0.00483 0.32409 0.43214 -0.25539 -0.0944 -0.01475 0.22266 0.29243 -0.62336 1.14607 -0.0| __truncated__ ...
#> ..- attr(*, "dimnames")=List of 2
#> .. ..$ : NULL
#> .. ..$ : chr [1:5] "wclr1" "wclr2" "wclr3" "wclr4" ...
#> ..- attr(*, "orig")= 'acomp' num [1:3540, 1:5] 0.2233 0.1965 0.1234 0.1948 0.2578 0.279 0.1438 0.1277 0.1928 0.233 0.2426 0.0995 0.4416 0.1905 0.0879 0.1859 0.2| __truncated__ ...
#> .. ..- attr(*, "dimnames")=List of 2
#> .. .. ..$ : NULL
#> .. .. ..$ : chr [1:5] "wTST" "wWAKE" "wMVPA" "wLPA" ...
#> $ data :Classes ‘data.table’ and 'data.frame': 3540 obs. of 10 variables:
#> ..$ ID : num [1:3540] 185 185 185 185 185 185 185 185 185 185 ...
#> ..$ Time : num [1:3540] 1 2 3 4 5 6 7 8 9 10 ...
#> ..$ Stress: num [1:3540] 4 7 3 2 8 8 6 2 5 0 ...
#> ..$ TST : num [1:3540] 542 458 271 525 651 431 501 518 458 510 ...
#> ..$ WAKE : num [1:3540] 99 49 41 76 86 84 29 32 72 143 ...
#> ..$ MVPA : num [1:3540] 297 117 489 259 112 264 458 111 398 145 ...
#> ..$ LPA : num [1:3540] 460 653 625 398 436 476 283 670 466 577 ...
#> ..$ SB : num [1:3540] 41 162 15 182 155 185 169 110 47 64 ...
#> ..$ Age : num [1:3540] 30 30 30 30 30 30 30 30 30 30 ...
#> ..$ Female: num [1:3540] 0 0 0 0 0 0 0 0 0 0 ...
#> ..- attr(*, ".internal.selfref")=<externalptr>
#> ..- attr(*, "index")= int(0)
#> .. ..- attr(*, "__ID")= int [1:3540] 981 982 983 984 985 986 987 988 989 990 ...
#> $ transform : chr "clr"
#> $ psi : NULL
#> $ sbp : NULL
#> $ parts : chr [1:5] "TST" "WAKE" "MVPA" "LPA" ...
#> $ idvar : chr "ID"
#> $ total : num 1
#> - attr(*, "class")= chr "complr"
cilr_wide <- complr(data = mcompd[!duplicated(ID)], sbp = sbp,
parts = c("TST", "WAKE", "MVPA", "LPA", "SB"))
str(cilr_wide)
#> List of 13
#> $ comp : 'acomp' num [1:266, 1:5] 0.3767 0.3569 0.2771 0.4357 0.3678 0.0688 0.0437 0.0826 0.0368 0.05 0.2064 0.0785 0.0229 0.0716 0.0749 0.3197 0.3| __truncated__ ...
#> ..- attr(*, "dimnames")=List of 2
#> .. ..$ : NULL
#> .. ..$ : chr [1:5] "TST" "WAKE" "MVPA" "LPA" ...
#> $ between_comp : NULL
#> $ within_comp : NULL
#> $ logratio : 'rmult' num [1:266, 1:4] 0.291 -0.339 0.211 -0.218 -0.232 1.202 1.484 0.855 1.747 1.412 0.63 -0.949 -2.076 -0.943 -0.985 1.71 0.386 0.484 0.108 0.228 ...
#> ..- attr(*, "orig")= 'acomp' num [1:266, 1:5] 0.3767 0.3569 0.2771 0.4357 0.3678 0.0688 0.0437 0.0826 0.0368 0.05 0.2064 0.0785 0.0229 0.0716 0.0749 0.3197 0.3| __truncated__ ...
#> .. ..- attr(*, "dimnames")=List of 2
#> .. .. ..$ : NULL
#> .. .. ..$ : chr [1:5] "TST" "WAKE" "MVPA" "LPA" ...
#> ..- attr(*, "V")= num [1:5, 1:4] 0.548 0.548 -0.365 -0.365 -0.365 ...
#> ..- attr(*, "dimnames")=List of 2
#> .. ..$ : NULL
#> .. ..$ : chr [1:4] "ilr1" "ilr2" "ilr3" "ilr4"
#> $ between_logratio: NULL
#> $ within_logratio : NULL
#> $ data :Classes ‘data.table’ and 'data.frame': 266 obs. of 10 variables:
#> ..$ ID : num [1:266] 185 186 187 188 189 190 191 192 193 194 ...
#> ..$ Time : num [1:266] 1 1 1 1 1 1 1 1 1 1 ...
#> ..$ Stress: num [1:266] 4 3 4 0 0 2 4 4 0 2 ...
#> ..$ TST : num [1:266] 542 514 399 627 530 345 415 471 350 267 ...
#> ..$ WAKE : num [1:266] 99 63 119 53 72 204 37 179 56 50 ...
#> ..$ MVPA : num [1:266] 297 113 33 103 108 244 88 84 25 113 ...
#> ..$ LPA : num [1:266] 460 475 591 353 424 516 781 477 657 699 ...
#> ..$ SB : num [1:266] 41 275 298 303 307 131 119 229 351 311 ...
#> ..$ Age : num [1:266] 30 20 22 27 22 25 21 20 20 32 ...
#> ..$ Female: num [1:266] 0 0 0 0 0 0 0 0 0 0 ...
#> ..- attr(*, ".internal.selfref")=<externalptr>
#> $ transform : chr "ilr"
#> $ psi : num [1:5, 1:4] 0.548 0.548 -0.365 -0.365 -0.365 ...
#> ..- attr(*, "dimnames")=List of 2
#> .. ..$ : chr [1:5] "TST" "WAKE" "MVPA" "LPA" ...
#> .. ..$ : NULL
#> $ sbp : num [1:4, 1:5] 1 1 0 0 1 -1 0 0 -1 0 ...
#> ..- attr(*, "dimnames")=List of 2
#> .. ..$ : NULL
#> .. ..$ : chr [1:5] "TST" "WAKE" "MVPA" "LPA" ...
#> $ parts : chr [1:5] "TST" "WAKE" "MVPA" "LPA" ...
#> $ idvar : NULL
#> $ total : num 1
#> - attr(*, "class")= chr "complr"