stats (version 3.6.2)

# lm.fit: 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.

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

## Examples

Run this code
``````# NOT RUN {
require(utils)
# }
# NOT RUN {
<!-- %% FIXME: Do something more sensible (non-random data) !! -->
# }
# NOT RUN {
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))
# }
# NOT RUN {
if(require("microbenchmark")) {
mb <- microbenchmark(lm(y~X), lm.fit(X,y), .lm.fit(X,y))
print(mb)
boxplot(mb, notch=TRUE)
}
# }
# NOT RUN {
<!-- %% do an example which sets 'tol' and gives a difference! -->
# }
``````

Run the code above in your browser using DataCamp Workspace