R: Accessing NMF Factors

basis {NMF} | R Documentation

## Accessing NMF Factors

### Description

`basis` and `basis<-` are S4 generic functions which respectively extract and set the matrix of basis components of an NMF model (i.e. the first matrix factor).

The methods `.basis`, `.coef` and their replacement versions are implemented as pure virtual methods for the interface class `NMF`, meaning that concrete NMF models must provide a definition for their corresponding class (i.e. sub-classes of class `NMF`). See `NMF` for more details.

`coef` and `coef<-` respectively extract and set the coefficient matrix of an NMF model (i.e. the second matrix factor). For example, in the case of the standard NMF model V ~ W H, the method `coef` will return the matrix H.

`.coef` and `.coef<-` are low-level S4 generics that simply return/set coefficient data in an object, leaving some common processing to be performed in `coef` and `coef<-`.

Methods `coefficients` and `coefficients<-` are simple aliases for methods `coef` and `coef<-` respectively.

`scoef` is similar to `coef`, but returns the mixture coefficient matrix of an NMF model, with the columns scaled so that they sum up to a given value (1 by default).

### Usage

      basis(object, ...)

      ## S4 method for signature 'NMF'
    basis(object, all = TRUE, ...)

      .basis(object, ...)

      basis(object, ...)<-value

      ## S4 replacement method for signature 'NMF'
    basis(object, use.dimnames = TRUE,
        ...)<-value

      .basis(object)<-value

      ## S4 method for signature 'NMF'
    loadings(x)

      coef(object, ...)

      ## S4 method for signature 'NMF'
    coef(object, all = TRUE, ...)

      .coef(object, ...)

      coef(object, ...)<-value

      ## S4 replacement method for signature 'NMF'
    coef(object, use.dimnames = TRUE,
        ...)<-value

      .coef(object)<-value

      coefficients(object, ...)

      ## S4 method for signature 'NMF'
    coefficients(object, all = TRUE, ...)

      scoef(object, ...)

      ## S4 method for signature 'NMF'
    scoef(object, scale = 1)

      ## S4 method for signature 'matrix'
    scoef(object, scale = 1)

### Arguments

`object` | an object from which to extract the factor matrices, typically an object of class `NMF`.
`...` | extra arguments to allow extension and passed to the low-level access functions `.coef` and `.basis`. Note that these throw an error if used in replacement functions .
`all` | a logical that indicates whether the complete matrix factor should be returned (`TRUE`) or only the non-fixed part. This is relevant only for formula-based NMF models that include fixed basis or coefficient terms.
`use.dimnames` | logical that indicates if the object's dim names should be set using those from the new value, or left unchanged – after truncating them to fit new dimensions if necessary. This is useful to only set the entries of a factor.
`value` | replacement value
`scale` | scaling factor, which indicates to the value the columns of the coefficient matrix should sum up to.
`x` | an object of class `"factanal"` or `"princomp"` or the `loadings` component of such an object.

### Details

For example, in the case of the standard NMF model V ~ W H, the method `basis` will return the matrix W.

`basis` and `basis<-` are defined for the top virtual class `NMF` only, and rely internally on the low-level S4 generics `.basis` and `.basis<-` respectively that effectively extract/set the coefficient data. These data are post/pre-processed, e.g., to extract/set only their non-fixed terms or check dimension compatibility.

`coef` and `coef<-` are S4 methods defined for the corresponding generic functions from package `stats` (See coef). Similarly to `basis` and `basis<-`, they are defined for the top virtual class `NMF` only, and rely internally on the S4 generics `.coef` and `.coef<-` respectively that effectively extract/set the coefficient data. These data are post/pre-processed, e.g., to extract/set only their non-fixed terms or check dimension compatibility.

### Methods

basis

  `signature(object = "ANY")`: Default method returns the value of S3 slot or attribute `'basis'`. It returns `NULL` if none of these are set.

  Arguments `...` are not used by this method.

basis

  `signature(object = "NMFfitXn")`: Returns the basis matrix of the best fit amongst all the fits stored in `object`. It is a shortcut for `basis(fit(object))`.

.basis

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

.basis

  `signature(object = "NMFstd")`: Get the basis matrix in standard NMF models

  This function returns slot `W` of `object`.

.basis

  `signature(object = "NMFfit")`: Returns the basis matrix from an NMF model fitted with function `nmf`.

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

.basis<-

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

.basis<-

  `signature(object = "NMFstd", value = "matrix")`: Set the basis matrix in standard NMF models

  This function sets slot `W` of `object`.

.basis<-

  `signature(object = "NMFfit", value = "matrix")`: Sets the the basis matrix of an NMF model fitted with function `nmf`.

  It is a shortcut for `.basis(fit(object)) <- value`, dispatching the call to the `.basis<-` method of the actual NMF model. It is not meant to be used by the user, except when developing NMF algorithms, to update the basis matrix of the seed object before returning it.

basis<-

  `signature(object = "NMF")`: Default methods that calls `.basis<-` and check the validity of the updated object.

coef

  `signature(object = "NMFfitXn")`: Returns the coefficient matrix of the best fit amongst all the fits stored in `object`. It is a shortcut for `coef(fit(object))`.

.coef

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

.coef

  `signature(object = "NMFstd")`: Get the mixture coefficient matrix in standard NMF models

  This function returns slot `H` of `object`.

.coef

  `signature(object = "NMFfit")`: Returns the the coefficient matrix from an NMF model fitted with function `nmf`.

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

.coef<-

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

.coef<-

  `signature(object = "NMFstd", value = "matrix")`: Set the mixture coefficient matrix in standard NMF models

  This function sets slot `H` of `object`.

.coef<-

  `signature(object = "NMFfit", value = "matrix")`: Sets the the coefficient matrix of an NMF model fitted with function `nmf`.

  It is a shortcut for `.coef(fit(object)) <- value`, dispatching the call to the `.coef<-` method of the actual NMF model. It is not meant to be used by the user, except when developing NMF algorithms, to update the coefficient matrix in the seed object before returning it.

coef<-

  `signature(object = "NMF")`: Default methods that calls `.coef<-` and check the validity of the updated object.

coefficients

  `signature(object = "NMF")`: Alias to `coef,NMF`, therefore also pure virtual.

loadings

  `signature(x = "NMF")`: Method loadings for NMF Models

  The method `loadings` is identical to `basis`, but do not accept any extra argument.

  The method `loadings` is provided to standardise the NMF interface against the one defined in the `stats` package, and emphasises the similarities between NMF and PCA or factorial analysis (see `loadings`).

### See Also

Other NMF-interface: `.DollarNames,NMF-method`, `misc`, `NMF-class`, `$<-,NMF-method`, `$,NMF-method`, `nmfModel`, `nmfModels`, `rnmf`

### Examples

    #----------
    # scoef
    #----------
    # Scaled coefficient matrix
    x <- rnmf(3, 10, 5)
    scoef(x)
    scoef(x, 100)

    #----------
    # .basis,NMFstd-method
    #----------
    # random standard NMF model
    x <- rnmf(3, 10, 5)
    basis(x)
    coef(x)

    # set matrix factors
    basis(x) <- matrix(1, nrow(x), nbasis(x))
    coef(x) <- matrix(1, nbasis(x), ncol(x))
    # set random factors
    basis(x) <- rmatrix(basis(x))
    coef(x) <- rmatrix(coef(x))

    # incompatible matrices generate an error:
    try( coef(x) <- matrix(1, nbasis(x)-1, nrow(x)) )
    # but the low-level method allow it
    .coef(x) <- matrix(1, nbasis(x)-1, nrow(x))
    try( validObject(x) )

[Package NMF version 0.20.6 Index]