| Type: | Package | 
| Title: | Metric Unfolding | 
| Version: | 0.3.5 | 
| Date: | 2016-02-08 | 
| Author: | Martin Elff | 
| Maintainer: | Martin Elff <martin@elff.eu> | 
| Description: | Multidimensional unfolding using Schoenemann's algorithm for metric and Procrustes rotation of unfolding results. | 
| License: | GPL-2 | 
| LazyLoad: | Yes | 
| Imports: | memisc, MASS, stats, graphics | 
| URL: | http://www.elff.eu/software/munfold/,http://github.com/melff/munfold/ | 
| NeedsCompilation: | no | 
| Packaged: | 2016-02-08 20:11:04 UTC; elff | 
| Repository: | CRAN | 
| Date/Publication: | 2016-02-08 23:32:37 | 
Procrustes Rotation
Description
procrustes performs procrustes rotation, at the moment only of
unfold solutions.
Usage
procrustes(x, ...)
## S3 method for class 'unfolding'
procrustes(x, use=attr(x,"procrustes_use"), target, ...)
Arguments
| x | an object the components of which to rotate. | 
,
| use | which of the components of  | 
| target | a matrix to which the rotation criterion should be brought as close as possible. | 
| ... | further arguments for future methods, currently ignored. | 
Value
a copy of x with components appropriately rotated. 
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)