Pdist {LDRTools}R Documentation

Function to Compute the Distances Between Orthogonal Projection Matrices

Description

The function computes distances between orthogonal projection matrices that might have different ranks. Different weight functions for the ranks are available.

Usage

Pdist(x, weights = "constant")

Arguments

x

List of othogonal projection matrices (can have different ranks).

weights

The weight function used for the individual ranks. Possible inputs are constant, inverse and sq.inverse (see details).

Details

A weighted distance between subspaces P_1 and P_2 with ranks k_1 and k_2 is given by D_{w}^2(P_1,P_2)=\frac{1}{2} ||w(k_1)P_1-w(k_2)P_2||^2, where w denotes the weight function. The possible weights are defined as constant: w(k)=1, inverse: w(k)=1/k and sq.inverse: w(k)=1/\sqrt k. The constant weight corresponds to the so called Crone & Crosby distance. Orthogonal projection matrices of zero rank are also possible inputs for the function.

Value

an object of class dist having the attributes:

Size

number of orthogonal projection matrices.

Labels

names of orthogonal projection matrices if available.

Diag

FALSE.

Upper

FALSE.

methods

The name of the weights used.

Author(s)

Eero Liski and Klaus Nordhausen

References

Crone, L. J., and Crosby, D. S. (1995), Statistical Applications of a Metric on Subspaces to Satellite Meteorology, Technometrics 37, 324-328.

Liski E., Nordhausen K., Oja H., and Ruiz-Gazen A. (2016), Combining Linear Dimension Reduction Subspaces. In: Agostinelli C., Basu A., Filzmoser P., Mukherjee D. (eds) Recent Advances in Robust Statistics: Theory and Applications. doi:10.1007/978-81-322-3643-6_7.

See Also

AOP

Examples

# Ex.1
X.1 <- tcrossprod(matrix(rnorm(16),ncol=4))
X.2 <- tcrossprod(matrix(rnorm(16),ncol=4))
X.3 <- tcrossprod(matrix(rnorm(16),ncol=4))
U1 <- eigen(X.1)$vectors
U2 <- eigen(X.2)$vectors
U3 <- eigen(X.3)$vectors

PRO <- list(P1=O2P(U1),P2=O2P(U2),P3=O2P(U3))

DIST.MAT<-Pdist(PRO)
str(DIST.MAT)
as.matrix(DIST.MAT)
print(DIST.MAT, diag=TRUE)
print(DIST.MAT, diag=TRUE, upper=TRUE)

PRO2 <- list(O2P(U1),O2P(U2),O2P(U3))
Pdist(PRO2, weights="inverse")

#############################
# Ex.2
a <- c(1,1,rep(0,8))
A <- diag(a)
b <- c(1,1,1,1,rep(0,6))
B <- diag(b)
P.A <- O2P(A[,1:2])
P.B <- O2P(B[,1:4])

proj.list <- list(P.A,P.B)
Pdist(proj.list, weights="constant")
Pdist(proj.list, weights="inverse")
Pdist(proj.list, weights="sq.inverse")


[Package LDRTools version 0.2-2 Index]