RcppGSL (version 0.3.6)

fastLm: Bare-bones linear model fitting function

Description

fastLm estimates the linear model using the gsl_multifit_linear function of the GNU GSL library.

Usage

fastLmPure(X, y)

fastLm(X, …) # S3 method for default fastLm(X, y, …) # S3 method for formula fastLm(formula, data = list(), …)

Arguments

y

a vector containing the explained variable.

X

a model matrix.

formula

a symbolic description of the model to be fit.

data

an optional data frame containing the variables in the model.

not used

Value

fastLmPure returns a list with three components:

coefficients

a vector of coefficients

stderr

a vector of the (estimated) standard errors of the coefficient estimates

df

a scalar denoting the degrees of freedom in the model

fastLm returns a richer object which also includes the residuals and call similar to the lm or rlm functions..

Details

Linear models should be estimated using the lm function. In some cases, lm.fit may be appropriate.

The fastLmPure function provides a reference use case of the GSL library via the wrapper functions in the RcppGSL package.

The fastLm function provides a more standard implementation of a linear model fit, offering both a default and a formula interface as well as print, summary and predict methods.

Lastly, one must be be careful in timing comparisons of lm and friends versus this approach based on GSL or Armadillo. The reason that GSL or Armadillo can do something like lm.fit faster than the functions in the stats package is because they use the Lapack version of the QR decomposition while the stats package uses a modified Linpack version. Hence GSL and Armadillo uses level-3 BLAS code whereas the stats package uses level-1 BLAS. However, GSL or Armadillo will choke on rank-deficient model matrices whereas the functions from the stats package will handle them properly due to the modified Linpack code. Statisticians want a pivoting scheme of “pivot only on (apparent) rank deficiency” and numerical analysts have no idea why statisticians want this so it is not part of conventional linear algebra software.

References

GNU GSL project: http://www.gnu.org/software/gsl

See Also

lm, lm.fit

Examples

Run this code
# NOT RUN {
  data(trees, package="datasets")

  ## bare-bones direct interface
  flm <- fastLmPure( cbind(1, log(trees$Girth)), log(trees$Volume) )
  print(flm)

  ## standard R interface for formula or data returning object of class fastLm
  flmmod <- fastLm( log(Volume) ~ log(Girth), data=trees)
  summary(flmmod)

# }

Run the code above in your browser using DataCamp Workspace