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.
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, as will be
discussed in §
.