[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