bpca {bpca} | R Documentation |
Biplot of Multivariate Data Based on Principal Components Analysis
Description
Computes biplot reduction on data.frame
, matrix
or
prcomp
objects and returns a bpca
object.
Usage
bpca(x, ...)
## Default S3 method:
bpca(x,
d=1:2,
center=2,
scale=TRUE,
method=c('hj', 'sqrt', 'jk', 'gh'),
iec=FALSE,
var.rb=FALSE,
var.rd=FALSE,
limit=10, ...)
## S3 method for class 'prcomp'
bpca(x,
d=1:2, ...)
Arguments
x |
A |
d |
A vector giving the first and last eigenvalue to be considered by the biplot reduction.
It can be |
center |
Numeric.
The type of centering to be performed: |
scale |
Logical.
A value indicating whether the variables should be
scaled to have unit variance before the analysis takes place: |
method |
A vector of character strings that indicates the method of factorization: |
iec |
Logical.
If |
var.rb |
A logical value.
If |
var.rd |
A logical value.
If |
limit |
A vector giving the percentual limit to define poor representation of variables. |
... |
Additional parameters. It is necessary to be S3 method. |
Details
The biplot is a multivariate method for graphing row and column elements using a single plot (Gabriel, 1971).
The biplot of a matrix
_{n}Y_{p}
projects on the same plot: rows
(associated with n objects) and columns (associated with
p variables), markers from data that forms a two-way table
(data.frame
or matrix
object).
The markers are computed from the singular value decomposition,
svd(Y)
, and subsequent factorization.
The bi refers to the kind of information contained in a data set disposed in a two-way table. If the data are a tri-dimensional array the method will be called triplot (not still contemplated in the bpca package).
The basic idea behind the biplot method was to add the information about the variables to the principal component graph (Johnson & Wichern, 1988).
Considering the results of
svd(_{n}Y_{p})
-
d: A vector containing the singular values of Y, of length
min(n, p)
; -
u: A matrix whose columns contain the left singular vectors of Y, present if ‘nu > 0’. Dimension ‘c(n, nu)’;
-
v: A matrix whose columns contain the right singular vectors of Y, present if ‘nv > 0’. Dimension
c(p, nv)
.
and also,
s^2 = diag(d)
n = n\_objects(Y)
it is possible an approximation of Y:
_{n}Y_{p} \approx Y_{m} = g.h'
in various ways. The methods of factorization computed by the bpca
function are:
-
HJ - simetric, Galindo Villardón (1986):
g = u*s^2
h = s^2*v'
-
SQRT - squared root simetric, Gabriel (1971):
g = u*\sqrt{s^2}
h = \sqrt{s^2}*v'
-
JK - row metric preserving, Gabriel (1971):
g = u*s^2
h = v'
-
GH - column metric preserving, Gabriel (1971):
g = \sqrt{n-1}*u
h = \frac{1}{\sqrt{n-1}}*s^2*v'
Considering
_{n}Y_{p} \approx Y_{m}
it is possible to deduce that if the rank (r) of the matrix
_{n}Y_{p}
is bigger than ‘m’, the biplot representation of Y will be an approximation, and accurate only in the case of $r=m$.
Due to the need of different methods of factorization, if ‘x’ is a
prcomp
object, the method bpca.prcomp
will go back from the
prcomp
function. In other words, it will regenerates, or computes, the
inverse of the svd
decomposition of the given data
_{n}Y_{p}
After this, it will make a call to the method bpca.default
with the
adequate parameters.
The biplot is used with many multivariate methods to display relationships between objects, variables and the interrelationship between objects and variables (as prevalence, importance). There are many variations of biplots (see the references).
Value
The function bpca
returns an object of class bpca.2d
or
bpca.3d
. Both are list
objects with the slots:
call |
The call used. |
eigenvalues |
A vector of the eigenvalues. |
eigenvectors |
A vector of the eigenvectors. |
numer |
A vector of the number of eigenvalues considered in the reduction. |
importance |
A matrix with the general and partial variation explained by the reduction. |
coord |
A list with the coordinates of the two components: objects and variables. |
var.rb |
A matrix of all correlation coefficients for all variables under the biplot projection. |
var.rd |
A matrix of the diagnostic of the poor projection of variable correlations by the biplot reduction. |
Author(s)
Faria, J. C.
Allaman, I. B.
Demétrio C. G. B.
References
Gabriel, K. R. (1971) The biplot graphical display of matrices with application to principal component analysis. Biometrika 58, 453-467.
Galindo Vilardón, M. P. (1986) Una alternativa de representación simultánea: HJ-Biplot. Qüestiió, 10(1):13-23, 1986.
Johnson, R. A. and Wichern, D. W. (1988) Applied multivariate statistical analysis. Prentice-Hall, Inc., Upper Saddle River, NJ, USA, 6 ed.
Gower, J.C. and Hand, D. J. (1996) Biplots. Chapman & Hall.
Yan, B. W. and Kang, M. S. (2003) GGE biplot analysis: a graphical tool for breeders, geneticists, and agronomists. CRC Press, New York, 288p.
See Also
Examples
##
## Example 1
## Computing and ploting a bpca object with 'graphics' package - 2d
##
bp <- bpca(gabriel1971)
dev.new(w=6, h=6)
oask <- devAskNewPage(dev.interactive(orNone=TRUE))
plot(bp,
var.factor=2)
# Exploring the object 'bp' created by the function 'bpca'
class(bp)
names(bp)
str(bp)
summary(bp)
bp$call
bp$eigenval
bp$eigenvec
bp$numb
bp$import
bp$coord
bp$coord$obj
bp$coord$var
bp$var.rb
bp$var.rd
## Not run:
##
## Example 2
## Computing and plotting a bpca object with 'scatterplot3d' package - 3d
##
bp <- bpca(gabriel1971,
d=2:4)
plot(bp,
var.factor=3,
xlim=c(-2,2),
ylim=c(-2,2),
zlim=c(-2,2))
# Exploring the object 'bp' created by the function 'bpca'
class(bp)
names(bp)
str(bp)
summary(bp)
bp$call
bp$eigenval
bp$eigenvec
bp$numb
bp$import
bp$coord
bp$coord$obj
bp$coord$var
bp$var.rb
bp$var.rd
##
## Example 3
## Computing and plotting a bpca object with 'rgl' package - 3d
##
plot(bpca(gabriel1971,
d=1:3),
rgl.use=TRUE,
var.factor=2)
# Suggestion: Interact with the graphic with the mouse
# left button: press, maintain and movement it to interactive rotation;
# right button: press, maintain and movement it to interactive zoom.
# Enjoy it!
##
## Example 4
## Grouping objects with different symbols and colors - 2d and 3d
##
# 2d
plot(bpca(iris[-5]),
var.factor=.3,
var.cex=.7,
obj.names=FALSE,
obj.cex=1.5,
obj.col=c('red', 'green3', 'blue')[unclass(iris$Species)],
obj.pch=c('+', '*', '-')[unclass(iris$Species)])
# 3d static
plot(bpca(iris[-5],
d=1:3),
var.factor=.2,
var.color=c('blue', 'red'),
var.cex=1,
obj.names=FALSE,
obj.cex=1,
obj.col=c('red', 'green3', 'blue')[unclass(iris$Species)],
obj.pch=c('+', '*', '-')[unclass(iris$Species)])
# 3d dynamic
plot(bpca(iris[-5],
method='hj',
d=1:3),
rgl.use=TRUE,
var.col='brown',
var.factor=.3,
var.cex=1.2,
obj.names=FALSE,
obj.cex=.8,
obj.col=c('red', 'green3', 'orange')[unclass(iris$Species)],
simple.axes=FALSE,
box=TRUE)
## End(Not run)
devAskNewPage(oask)