unfold {munfold} | R Documentation |
Metric Unfolding
Description
unfold
computes a metric unfolding solution
based on a rectangular matrix, that is, reconstructs
two sets of points from the distances between points
of the first set and the points of the second set.
uapply
applies a function
the two point sets that are reconstructed by unfold
.
Usage
unfold(x,...)
## S3 method for class 'matrix'
unfold(x, ndims=NULL, squared=FALSE, tol=1e-7,
method=c("Schoenemann", "CG"), ...)
## S3 method for class 'formula'
unfold(x,data=parent.frame(), ...)
## S3 method for class 'unfolding'
biplot(x, dimen=c(1,2), type=attr(x,"biplot_type"),
xlim, ylim, tpos=c(4,2), tposdim=1,
asp=1, lty=c(1,2), lwd=c(1,1), pch=c(1,3), cex=c(1,1),
col=c("black","black"), contour.col="black", contour.lty=1,
xlab=paste("Dimension ",dimen[1]),
ylab=paste("Dimension ",dimen[2]),
...)
## S3 method for class 'unfolding'
plot(x, y=NULL ,dimen=1, discrete=attr(x,"plot_discrete"),
use.rownames=discrete, xlab=paste("Dimension ",dimen), ...)
uapply(x,FUN)
Arguments
x |
for |
data |
a data frame or an environment that contains variables specified in the formula given as first argument. |
ndims |
an optional integer value that specifies the
dimensionality of the solution. If |
squared |
a logical value; does the matrix |
tol |
a tolerance value for the convergence of the conjugate gradients method. |
method |
a method for the iterative computation of the unfolding solution. |
y |
a dummy argument for compatibility with default methods, ignored. |
dimen |
for |
type |
a character vector of length less then or equal to 2. Determines how each of the two point sets of the unfolding solutions are represented in the biplot. Valid choices are
|
tpos |
a two-element integer vector; specifies
the position of text labels relative
to the points. For the meaning of these integer values
see |
tposdim |
an integer value; specifies which how elements of |
xlab , ylab , xlim , ylim , asp , lty , lwd , pch , cex , col |
arguments passed to base graphics functions |
.
contour.col , contour.lty |
colour and line type for contour lines,
see |
discrete |
a logical vector of lenght 2;
if |
use.rownames |
logical; should row names used for annotation? |
... |
further arguments passed to |
FUN |
a function applied to the two sets of points that result from the unfolding. |
Details
unfold
first computes an unfolding solution according to
Schoenemanns metric unfolding algorithm that uses only
linear algebra operations. This preliminary solution is
then refined by minimizing the stress using a conjugate-gradients
method.
uapply
applies a given function to the two sets of points
recovered by an unfolding solution. It applies the function
to the components A
and B
of an object
of class "unfolding"
.
Value
unfold
returns an object of class "unfolding"
with components
A |
a numeric matrix representing the first set of points. Each row contains the coordinate of one point of the first set. |
B |
a numeric matrix representing the second set of points. Each row contains the coordinate of one point of the second set. |
fitted |
a numeric matrix that contains the fitted squared distances. |
stress |
A stress value, denotes the "badness of fit". |
Examples
r <- seq(from=0,to=2*pi,length=24)
a1 <- cos(r)*4 + 0.00001*rnorm(r)
a2 <- sin(r)*4 + 0.00001*rnorm(r)
b1 <- c(.5,-.5,-.5,.5)*3 + 5
b2 <- c(.5,.5,-.5,-.5)*3 + 1
D1 <- outer(b1,a1,"-")
D2 <- outer(b2,a2,"-")
Dsq <- D1^2+D2^2
Dsq.uf<-unfold(sqrt(Dsq),squared=FALSE)
oldpar <- par(mfrow=c(1,2))
A <- cbind(a1,a2)
B <- cbind(b1,b2)
ltype <- c(rep(1,NROW(A)),rep(2,NROW(A)))
orig <- rbind(A,B)
unfolded <- rbind(Dsq.uf$A,Dsq.uf$B)
xlim <- ylim <- range(orig)#*1.5
plot(A,type="b",pch=1,
xlim=xlim,ylim=ylim,
xlab="Dimension 1",ylab="Dimension 2",main=expression("Original data"),asp=1)
lines(B,type="b",pch=3,lty=2)
abline(h=0,v=0,lty=3)
biplot(Dsq.uf,type="b",
xlim=xlim,ylim=ylim,
main=expression(paste(italic(unfold)," solution")),asp=1)
par(oldpar)