I have subspace of vectors w
whose elements sum to 0.
I would like to find a projection matrix Z
such that it projects any x
vector onto the subspace w (i.e., a subspace where the vector sums to 0).
Is there an R function to do this?
The question did not specify how w
is provided but if w
is a matrix with full rank spanning the space w then
Z <- w %*% solve(crossprod(w), t(w))
If w
has orthogonal columns then the above line reduces to:
Z <- tcrossprod(w)
Another possibility is to use the pracma
package in which case w
need not be of full rank:
library(pracma)
Z <- tcrossprod(orth(w))
If w
were the space of all n-vectors that sum to zero then:
Z <- diag(n) - matrix(1, n, n) / n
Note Have revised after re-reading question.