This section provides details on the construction and manipulation of these objects, including matrix facilities that are different from typical element-wise operations.
Matrices
Least squares fitting and the QR decomposition
The function lsfit()
returns a list giving results of a least
squares fitting procedure. An assignment such as
> ans <- lsfit(X, y)
gives the results of a least squares fit where y
is the vector of
observations and X
is the design matrix. See the help facility
for more details, and also for the follow-up function ls.diag()
for, among other things, regression diagnostics. Note that a grand mean
term is automatically included and need not be included explicitly as a
column of X
. Further note that you almost always will prefer
using lm(.)
Another closely related function is qr()
and its allies.
Consider the following assignments
> Xplus <- qr(X) > b <- qr.coef(Xplus, y) > fit <- qr.fitted(Xplus, y) > res <- qr.resid(Xplus, y)
These compute the orthogonal projection of y
onto the range of
X
in fit
, the projection onto the orthogonal complement in
res
and the coefficient vector for the projection in b
,
that is, b
is essentially the result of the MATLAB
'backslash' operator.
It is not assumed that X
has full column rank. Redundancies will
be discovered and removed as they are found.
This alternative is the older, low-level way to perform least squares calculations. Although still useful in some contexts, it would now generally be replaced by the statistical models features.