# Fitted Matrix in NMF Models

## Description

Computes the estimated target matrix based on a given NMF model. The estimation depends on the underlying NMF model. For example in the standard model `V ~ W H`, the target matrix is estimated by the matrix product `W H`. In other models, the estimate may depend on extra parameters/matrix (cf. Non-smooth NMF in `NMFns-class`).

## Usage

```fitted(object, ...)

S4 (NMFstd)
`fitted`(object, W, H, ...)

S4 (NMFOffset)
`fitted`(object, W, H, offset = object@offset)

S4 (NMFns)
`fitted`(object, W, H, S, ...)```

## Arguments

object
an object that inherit from class `NMF`
...
extra arguments to allow extension
W
a matrix to use in the computation as the basis matrix in place of `basis(object)`. It must be compatible with the coefficient matrix used in the computation (i.e. number of columns in `W` = number of rows in `H`).
H
a matrix to use in the computation as the coefficient matrix in place of `coef(object)`. It must be compatible with the basis matrix used in the computation (i.e. number of rows in `H` = number of columns in `W`).
offset
offset vector
S
smoothing matrix to use instead of `smoothing(object)` It must be a square matrix compatible with the basis and coefficient matrices used in the computation.

## Value

the target matrix estimate as fitted by the model `object`

## Details

This function is a S4 generic function imported from fitted in the package stats. It is implemented as a pure virtual method for objects of class `NMF`, meaning that concrete NMF models must provide a definition for their corresponding class (i.e. sub-classes of class `NMF`). See `NMF-class` for more details.

## Methods

1. fitted`signature(object = "NMF")`: Pure virtual method for objects of class `NMF-class`, that should be overloaded by sub-classes, and throws an error if called.

2. fitted`signature(object = "NMFstd")`: Compute the target matrix estimate in standard NMF models.

The estimate matrix is computed as the product of the two matrix slots `W` and `H`:

```V ~ W H

```
3. fitted`signature(object = "NMFOffset")`: Computes the target matrix estimate for an NMFOffset object.

The estimate is computed as:

``` W H + offset

```
4. fitted`signature(object = "NMFns")`: Compute estimate for an NMFns object, according to the Nonsmooth NMF model (cf. `NMFns-class`).

Extra arguments in `...` are passed to method `smoothing`, and are typically used to pass a value for `theta`, which is used to compute the smoothing matrix instead of the one stored in `object`.

5. fitted`signature(object = "NMFfit")`: Computes and return the estimated target matrix from an NMF model fitted with function `nmf`.

It is a shortcut for `fitted(fit(object), ...)`, dispatching the call to the `fitted` method of the actual NMF model.

## Examples

``````
# random standard NMF model
x <- rnmf(3, 10, 5)
all.equal(fitted(x), basis(x) %*% coef(x))
``````
``````##  TRUE
``````
``````
``````