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 |
Details
A weighted distance between subspaces and
with ranks
and
is given by
,
where
denotes the weight function.
The possible weights are defined as
constant
:
,
inverse
: and
sq.inverse
: . 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
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")