# fixDependence: Detect linear dependencies of one matrix on another In mgcv: Mixed GAM Computation Vehicle with Automatic Smoothness Estimation

## Description

Identifies columns of a matrix `X2` which are linearly dependent on columns of a matrix `X1`. Primarily of use in setting up identifiability constraints for nested GAMs.

## Usage

 `1` ```fixDependence(X1,X2,tol=.Machine\$double.eps^.5,rank.def=0,strict=FALSE) ```

## Arguments

 `X1` A matrix. `X2` A matrix, the columns of which may be partially linearly dependent on the columns of `X1`. `tol` The tolerance to use when assessing linear dependence. `rank.def` If the degree of rank deficiency in `X2`, given `X1`, is known, then it can be supplied here, and `tol` is then ignored. Unused unless positive and not greater than the number of columns in `X2`. `strict` if `TRUE` then only columns individually dependent on `X1` are detected, if `FALSE` then enough columns to make the reduced `X2` full rank and independent of `X1` are detected.

## Details

The algorithm uses a simple approach based on QR decomposition: see Wood (2017, section 5.6.3) for details.

## Value

A vector of the columns of `X2` which are linearly dependent on columns of `X1` (or which need to be deleted to acheive independence and full rank if `strict==FALSE`). `NULL` if the two matrices are independent.

## Author(s)

Simon N. Wood simon.wood@r-project.org

## References

Wood S.N. (2017) Generalized Additive Models: An Introduction with R (2nd edition). Chapman and Hall/CRC Press.

## Examples

 ```1 2 3 4 5 6 7 8``` ```library(mgcv) n<-20;c1<-4;c2<-7 X1<-matrix(runif(n*c1),n,c1) X2<-matrix(runif(n*c2),n,c2) X2[,3]<-X1[,2]+X2[,4]*.1 X2[,5]<-X1[,1]*.2+X1[,2]*.04 fixDependence(X1,X2) fixDependence(X1,X2,strict=TRUE) ```

mgcv documentation built on June 1, 2021, 5:11 p.m.