R/alfa.R

Defines functions alfa

Documented in alfa

alfa <- function(x, a, h = TRUE) {
  ## x contains the compositional data
  ## a is the power parameter, usually between -1 and 1
  ## if h is TRUE the multiplication with the Helmert matrix takes place
  x <- as.matrix(x)
  D <- dim(x)[2] ## number of components
  if ( D == 1 )   x <- t(x)
  D <- dim(x)[2] ## number of components
  
  if ( abs(a) > 1e-9 ) {
    z <- x^a
    ta <- Rfast::rowsums(z)
    z <- D / a * z / ta - 1/a
    sa <- sum( log(ta) )
  } else {  ## if a = 0 the ilr is calculated
    xa <- Rfast::Log(x)
    z <- xa - Rfast::rowmeans( xa )   ## this is the clr
    sa <- dim(x)[1] * log(D)
  }

  if ( h ) {
    aff <- tcrossprod(z, helm( D ) ) ## multiply by the Helmert sub-matrix
    res <- list(sa = sa, aff = aff)
  } else  res <- list(sa = sa, aff = z)

  res
}

Try the Compositional package in your browser

Any scripts or data that you put into this service are public.

Compositional documentation built on Oct. 23, 2023, 5:09 p.m.