[R] Two ?'s:Permuting a data matrix and projection operator

Douglas Bates bates at stat.wisc.edu
Thu Sep 20 16:37:44 CEST 2001


"J. Wan" <jyw at u.washington.edu> writes:

> 2.  Is there a function which helps find a matrix... projection operator
> from p dimensional to p-1 dimensional subspace orthogonal to x, a real
> number?

A real number or a real vector?

Least squares calculations in R are done (for the most part) with QR
decompositions.  In these decompositions the matrix Q is an orthogonal
matrix that can be partitioned into an orthogonal basis for the column
span of X and an orthogonal basis for its complement.  In most
applications Q is not formed explicitly.  Instead operations such as
multiplication by Q or t(Q), projection onto the span of X, or
projection orthogonal to X are performed by special purpose functions
qr.qy, qr.qty, qr.fitted, and qr.resid.

If you want to project a vector v onto the subspace orthogonal to the
vector x use qr.resid(qr(x), v).  For example

 > vv <- rnorm(6)
 > x <- rep(1, 6)
 > vv
 [1]  0.001020799 -0.317638744  0.426937684  0.917568111 -1.350210885
 [6]  0.608166124
 > vproj <- qr.resid(qr(x), vv)
 > vproj
 [1] -0.04661972 -0.36527926  0.37929717  0.86992760 -1.39785140  0.56052561
 > vproj %*% x
               [,1]
 [1,] -1.804112e-16

If you want the projection matrix itself you would need to use qr.Q to
generate the matrix Q then manipulate that to form the projection
matrix.  For example

 > Q1 <- qr.Q(qr(x))
 > Q1
            [,1]
 [1,] -0.4082483
 [2,] -0.4082483
 [3,] -0.4082483
 [4,] -0.4082483
 [5,] -0.4082483
 [6,] -0.4082483
 > proj <- diag(6) - Q1 %*% t(Q1)
 > proj
            [,1]       [,2]       [,3]       [,4]       [,5]       [,6]
 [1,]  0.8333333 -0.1666667 -0.1666667 -0.1666667 -0.1666667 -0.1666667
 [2,] -0.1666667  0.8333333 -0.1666667 -0.1666667 -0.1666667 -0.1666667
 [3,] -0.1666667 -0.1666667  0.8333333 -0.1666667 -0.1666667 -0.1666667
 [4,] -0.1666667 -0.1666667 -0.1666667  0.8333333 -0.1666667 -0.1666667
 [5,] -0.1666667 -0.1666667 -0.1666667 -0.1666667  0.8333333 -0.1666667
 [6,] -0.1666667 -0.1666667 -0.1666667 -0.1666667 -0.1666667  0.8333333

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._



More information about the R-help mailing list