R: Fitter Functions for Linear Models

lm.fit {stats} | R Documentation

## Fitter Functions for Linear Models

### Description

These are the basic computing engines called by `lm` used to fit linear models. These should usually not be used directly unless by experienced users. `.lm.fit()` is bare bone wrapper to the innermost QR-based C code, on which `glm.fit` and `lsfit` are based as well, for even more experienced users.

### Usage

    lm.fit (x, y,    offset = NULL, method = "qr", tol = 1e-7,
           singular.ok = TRUE, ...)

    lm.wfit(x, y, w, offset = NULL, method = "qr", tol = 1e-7,
            singular.ok = TRUE, ...)

    .lm.fit(x, y, tol = 1e-7)

### Arguments

`x` | design matrix of dimension `n * p`.
`y` | vector of observations of length `n`, or a matrix with `n` rows.
`w` | vector of weights (length `n`) to be used in the fitting process for the `wfit` functions. Weighted least squares is used with weights `w`, i.e., `sum(w * e^2)` is minimized.
`offset` | numeric of length `n`). This can be used to specify an a priori known component to be included in the linear predictor during fitting.
`method` | currently, only `method = "qr"` is supported.
`tol` | tolerance for the `qr` decomposition. Default is 1e-7.
`singular.ok` | logical. If `FALSE`, a singular model is an error.
`...` | currently disregarded.

### Value

a `list` with components (for `lm.fit` and `lm.wfit`)

`coefficients` | `p` vector
`residuals` | `n` vector or matrix
`fitted.values` | `n` vector or matrix
`effects` | `n` vector of orthogonal single-df effects. The first `rank` of them correspond to non-aliased coefficients, and are named accordingly.
`weights` | `n` vector — only for the `*wfit*` functions.
`rank` | integer, giving the rank
`df.residual` | degrees of freedom of residuals
`qr` | the QR decomposition, see `qr`.

Fits without any columns or non-zero weights do not have the `effects` and `qr` components.

`.lm.fit()` returns a subset of the above, the `qr` part unwrapped, plus a logical component `pivoted` indicating if the underlying QR algorithm did pivot.

### See Also

`lm` which you should use for linear least squares regression, unless you know better.

### Examples

    require(utils)

    set.seed(129)

    n <- 7 ; p <- 2
    X <- matrix(rnorm(n * p), n, p) # no intercept!
    y <- rnorm(n)
    w <- rnorm(n)^2

    str(lmw <- lm.wfit(x = X, y = y, w = w))

    str(lm. <- lm.fit (x = X, y = y))

    if(require("microbenchmark")) {
      mb <- microbenchmark(lm(y~X), lm.fit(X,y), .lm.fit(X,y))
      print(mb)
      boxplot(mb, notch=TRUE)
    }

[Package stats version 3.1.2 Index]