This class implements the Nonnegative Matrix Factorization with Offset model, required by the NMF with Offset algorithm.
S4 (NMFOffset)
`initialize`(.Object, ..., offset)
The NMF with Offset algorithm is defined by Badea (2008) as a modification
of the euclidean based NMF algorithm from Lee2001
(see section Details and
references below).
It aims at obtaining 'cleaner' factor matrices, by the introduction of an
offset matrix, explicitly modelling a feature specific baseline
-- constant across samples.
signature(object = "NMFOffset")
: Computes the target matrix estimate for an NMFOffset object.
The estimate is computed as:
W H + offset
signature(object = "NMFOffset")
: The function offset
returns the offset vector from an NMF model
that has an offset, e.g. an NMFOffset
model.
signature(x = "NMFOffset", target = "numeric")
: Generates a random NMF model with offset, from class NMFOffset
.
The offset values are drawn from a uniform distribution between 0 and
the maximum entry of the basis and coefficient matrices, which are drawn
by the next suitable rnmf
method, which is the workhorse
method rnmf,NMF,numeric
.
signature(object = "NMFOffset")
: Show method for objects of class NMFOffset
Object of class NMFOffset
can be created using the standard way with
operator new
However, as for all NMF model classes -- that extend class
NMF-class
, objects of class NMFOffset
should be
created using factory method nmfModel
:
new('NMFOffset')
nmfModel(model='NMFOffset')
nmfModel(model='NMFOffset', W=w, offset=rep(1, nrow(w)))
See nmfModel
for more details on how to use the factory
method.
The initialize method for NMFOffset
objects tries to correct the initial
value passed for slot offset
, so that it is consistent with the dimensions
of the NMF
model:
it will pad the offset vector with NA values to get the length equal to the
number of rows in the basis matrix.
Badea L (2008). "Extracting gene expression profiles common to colon and pancreatic adenocarcinoma using simultaneous
nonnegative matrix factorization." _Pacific Symposium on Biocomputing. Pacific Symposium on Biocomputing_, *290*, pp. 267-78.
ISSN 1793-5091,
# create a completely empty NMF object
new('NMFOffset')
## <Object of class:NMFOffset>
## features: 0
## basis/rank: 0
## samples: 0
## offset: none
# create a NMF object based on random (compatible) matrices
n <- 50; r <- 3; p <- 20
w <- rmatrix(n, r)
h <- rmatrix(r, p)
nmfModel(model='NMFOffset', W=w, H=h, offset=rep(0.5, nrow(w)))
## <Object of class:NMFOffset>
## features: 50
## basis/rank: 3
## samples: 20
## offset: none
# apply Nonsmooth NMF algorithm to a random target matrix
V <- rmatrix(n, p)
## Not run: nmf(V, r, 'offset')
# random NMF model with offset
rnmf(3, 10, 5, model='NMFOffset')
## <Object of class:NMFOffset>
## features: 10
## basis/rank: 3
## samples: 5
## offset: [ 0.220364 0.8338405 0.3670245 0.1239771 0.2410916 ... ]