Transforming from Mixed-sign to Nonnegative Data
nneg is a generic function to transform a data
objects that contains negative values into a similar
object that only contains values that are nonnegative or
greater than a given threshold.
posneg is a shortcut for nneg(...,
method='posneg'), to split mixed-sign data into its
positive and negative part. See description for method
"posneg", in nneg.
rposneg performs the "reverse" transformation of
the posneg function.
nneg(object, ...)
## S4 method for signature 'matrix'
nneg(object,
method = c("pmax", "posneg", "absolute", "min"),
threshold = 0, shift = TRUE)
posneg(...)
rposneg(object, ...)
## S4 method for signature 'matrix'
rposneg(object, unstack = TRUE)object |
The data object to transform |
... |
extra arguments to allow extension or passed
down to |
method |
Name of the transformation method to use, that is partially matched against the following possible methods:
|
threshold |
Nonnegative lower threshold value
(single numeric). See argument |
shift |
a logical indicating whether the entries
below the threshold value |
unstack |
Logical indicating whether the positive
and negative parts should be unstacked and combined into
a matrix as |
an object of the same class as argument object.
an object of the same type of object
signature(object = "matrix"):
Transforms a mixed-sign matrix into a nonnegative matrix,
optionally apply a lower threshold. This is the workhorse
method, that is eventually called by all other methods
defined in the NMF package.
signature(object = "NMF"): Apply
nneg to the basis matrix of an NMF
object (i.e. basis(object)). All extra arguments
in ... are passed to the method
nneg,matrix.
signature(object = "NMF"): Apply
rposneg to the basis matrix of an
NMF object.
Other transforms: t.NMF
#---------- # nneg,matrix-method #---------- # random mixed sign data (normal distribution) set.seed(1) x <- rmatrix(5,5, rnorm, mean=0, sd=5) x # pmax (default) nneg(x) # using a threshold nneg(x, threshold=2) # without shifting the entries lower than threshold nneg(x, threshold=2, shift=FALSE) # posneg: split positive and negative part nneg(x, method='posneg') nneg(x, method='pos', threshold=2) # absolute nneg(x, method='absolute') nneg(x, method='abs', threshold=2) # min nneg(x, method='min') nneg(x, method='min', threshold=2) #---------- # nneg,NMF-method #---------- # random M <- nmfModel(x, rmatrix(ncol(x), 3)) nnM <- nneg(M) basis(nnM) # mixture coefficients are not affected identical( coef(M), coef(nnM) ) #---------- # posneg #---------- # shortcut for the "posneg" transformation posneg(x) posneg(x, 2) #---------- # rposneg,matrix-method #---------- # random mixed sign data (normal distribution) set.seed(1) x <- rmatrix(5,5, rnorm, mean=0, sd=5) x # posneg-transform: split positive and negative part y <- posneg(x) dim(y) # posneg-reverse z <- rposneg(y) identical(x, z) rposneg(y, unstack=FALSE) # But posneg-transformation with a non zero threshold is not reversible y1 <- posneg(x, 1) identical(rposneg(y1), x) #---------- # rposneg,NMF-method #---------- # random mixed signed NMF model M <- nmfModel(rmatrix(10, 3, rnorm), rmatrix(3, 4)) # split positive and negative part nnM <- posneg(M) M2 <- rposneg(nnM) identical(M, M2)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.