skbio.stats.composition.perturb_inv

skbio.stats.composition.perturb_inv(x, y)[source]

State: Experimental as of 0.4.0. Performs the inverse perturbation operation.

This operation is defined as

\[x \ominus y = C[x_1 y_1^{-1}, \ldots, x_D y_D^{-1}]\]

\(C[x]\) is the closure operation defined as

\[C[x] = \left[\frac{x_1}{\sum_{i=1}^{D} x_i},\ldots, \frac{x_D}{\sum_{i=1}^{D} x_i} \right]\]

for some \(D\) dimensional real vector \(x\) and \(D\) is the number of components for every composition.

Parameters
  • x (array_like) – a matrix of proportions where rows = compositions and columns = components

  • y (array_like) – a matrix of proportions where rows = compositions and columns = components

Returns

A matrix of proportions where all of the values are nonzero and each composition (row) adds up to 1

Return type

numpy.ndarray, np.float64

Examples

>>> import numpy as np
>>> from skbio.stats.composition import perturb_inv
>>> x = np.array([.1,.3,.4, .2])
>>> y = np.array([1./6,1./6,1./3,1./3])
>>> perturb_inv(x,y)
array([ 0.14285714,  0.42857143,  0.28571429,  0.14285714])