Learn R Programming

compositions (version 2.0-0)

balance: Compute balances for a compositional dataset.

Description

Compute balances in a compositional dataset.

Usage

balance(X,...)
# S3 method for acomp
balance(X,expr,...)
# S3 method for rcomp
balance(X,expr,...)
# S3 method for aplus
balance(X,expr,...)
# S3 method for rplus
balance(X,expr,...)
balance01(X,...)
# S3 method for acomp
balance01(X,expr,...)
# S3 method for rcomp
balance01(X,expr,...)
balanceBase(X,...)
# S3 method for acomp
balanceBase(X,expr,...)
# S3 method for rcomp
balanceBase(X,expr,...)
# S3 method for acomp
balanceBase(X,expr,...)
# S3 method for rcomp
balanceBase(X,expr,...)

Arguments

X

compositional dataset (or optionally just its column names for balanceBase)

expr

a ~ formula using the column names of X as variables and seperating them by / and organize by paranthesis (). : and * can be used instead of / when the corresponding balance should not be created. - can be used as an synonym to / in the real geometries. 1 can be used in the unclosed geometries to level against a constant.

for future perposes

Value

balance

a matrix (or vector) with the corresponding balances of the dataset.

balance01

a matrix (or vector) with the corresponding balances in the dataset transformed in the given geometry to a value between 0 and 1.

balanceBase

a matrix (or vector) with column vectors giving the transform in the cdt-transform used to achiev the correponding balances.

Details

For acomp-compositions balances are defined as orthogonal projections representing the log ratio of the geometric means of subsets of elements. Based on a recursive subdivision (provided by the expr=) this projections provide a (complete or incomplete) basis of the clr-plane. The basis is given by the balanceBase functions. The transform is given by the balance functions. The balance01 functions are a backtransform of the balances to the amount of the first portion if this was the only balance in a 2 element composition, providing an "interpretation" for the values of the balances.

The package tries to give similar concepts for the other scales. For rcomp objects the concept is mainly unchanges but augmented by a virtual component 1, which always has portion 1.

For rcomp objects, we choose not a "orthogonal" transformation since such a concept anyway does not really exist in the given space, but merily use the difference of one subset to the other. The balance01 is than not really a transform of the balance but simply the portion of the first group of parts in all contrasted parts.

For rplus objects we just used an analog to generalisation from the rcomp defintion as aplus is generalized from acomp. However at this time we have no idea wether this has any usefull interpretation.

References

http://ima.udg.es/Activitats/CoDaWork08 Papers of Boogaart and Tolosana http://ima.udg.es/Activitats/CoDaWork05 Paper of Egozcue

See Also

clr,ilr,ipt, ilrBase

Examples

Run this code
# NOT RUN {
X <- rnorm(100)
Y <- rnorm.acomp(100,acomp(c(A=1,B=1,C=1)),0.1*diag(3))+acomp(t(outer(c(0.2,0.3,0.4),X,"^")))
colnames(Y) <- c("A","B","C")

subComps <- function(X,...,all=list(...)) {
  X <- oneOrDataset(X)
  nams <- sapply(all,function(x) paste(x[[2]],x[[3]],sep=","))
  val  <- sapply(all,function(x){
              a = X[,match(as.character(x[[2]]),colnames(X)) ]
              b = X[,match(as.character(x[[2]]),colnames(X)) ]
              c = X[,match(as.character(x[[3]]),colnames(X)) ] 
              return(a/(b+c))
             }) 
  colnames(val)<-nams
  val
}
pairs(cbind(ilr(Y),X),panel=function(x,y,...) {points(x,y,...);abline(lm(y~x))})
pairs(cbind(balance(Y,~A/B/C),X),panel=function(x,y,...) {points(x,y,...);abline(lm(y~x))})

pairwisePlot(balance(Y,~A/B/C),X)
pairwisePlot(X,balance(Y,~A/B/C),panel=function(x,y,...) {plot(x,y,...);abline(lm(y~x))})
pairwisePlot(X,balance01(Y,~A/B/C))
pairwisePlot(X,subComps(Y,A~B,A~C,B~C))



balance(rcomp(Y),~A/B/C)
balance(aplus(Y),~A/B/C)
balance(rplus(Y),~A/B/C)



# }

Run the code above in your browser using DataLab