[R] orthonormalization with weights
Douglas Bates
bates at stat.wisc.edu
Tue Feb 24 15:42:32 CET 2004
"Gabor Grothendieck" <ggrothendieck at myway.com> writes:
> Obviously the R code does not match the
> description I gave since we should be taking
> the QR decomp of sqrt(D)X, not X. Z should be:
>
> diag(1/sqrt(diag(D))) %*% qr.Q(qr(sqrt(D)%*%X))
Because R stores matrices in column-major order and repeats shorter
vectors in arithmetic operations, you can avoid the matrix
multiplications.
What you have written is equivalent to
sqrtD = sqrt(diag(D))
qr.Q(qr(sqrtD*X))/sqrtD
Also, you don't really need to store a diagonal matrix as a matrix.
>
> ---
> Date: Mon, 23 Feb 2004 21:38:15 -0500 (EST)
> From: Gabor Grothendieck <ggrothendieck at myway.com>
> To: <stephane.dray at umontreal.ca>, <r-help at stat.math.ethz.ch>
> Subject: RE: [R] orthonormalization with weights
>
> diag(1/sqrt(diag(D))) %*% qr.Q(qr(X))
>
>
>
> Let QR be such that sqrt(D)X = QR. Then letting
> solve(...) denote the inverse of ... we have
> X = solve(sqrt(D))QR which is of the form ZR
> and Z has the desired weighted orthoginality
> property.
>
> Since D is diagonal, solve(sqrt(D)) equals
> diag(1/sqrt(diag(D))) so we get this for Z:
>
> diag(1/sqrt(diag(D))) %*% qr.Q(qr(X))
>
> ---
> Date: Mon, 23 Feb 2004 18:46:34 -0500
> From: Stephane DRAY <stephane.dray at umontreal.ca>
> To: <r-help at stat.math.ethz.ch>
> Subject: [R] orthonormalization with weights
>
>
> Hello List,
> I would like to orthonormalize vectors contained in a matrix X taking into
> account row weights (matrix diagonal D). ie, I want to obtain Z=XA with
> t(Z)%*%D%*%Z=diag(1)
>
> I can do the Gram-Schmidt orthogonalization with subsequent weighted
> regressions. I know that in the case of uniform weights, qr can do the
> trick. I wonder if there is a way to do it in the case of non uniform
> weights by qr or svd ?
>
> Thanks in advances.
> Stéphane DRAY
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://www.stat.math.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
--
Douglas Bates bates at stat.wisc.edu
Statistics Department 608/262-2598
University of Wisconsin - Madison http://www.stat.wisc.edu/~bates/
More information about the R-help
mailing list