A principal component analysis is done in real geometry (i.e. cpt-transform) of the simplex. Some gimics simplify the interpretation of the obtained components.
# S3 method for rcomp
princomp(x,…,scores=TRUE,center=attr(covmat,"center"),
covmat=var(x,robust=robust,giveCenter=TRUE),
robust=getOption("robust"))
# S3 method for princomp.rcomp
print(x,…)
# S3 method for princomp.rcomp
plot(x,y=NULL,…,npcs=min(10,length(x$sdev)),
type=c("screeplot","variance","biplot","loadings","relative"),
main=NULL,scale.sdev=1)
# S3 method for princomp.rcomp
predict(object,newdata,…)
an rcomp dataset (for princomp) or a result from princomp.rcomp
not used
a logical indicating whether scores should be computed or not
the number of components to be drawn in the scree plot
type of the plot: "screeplot"
is a lined screeplot,
"variance"
is a boxplot-like screeplot, "biplot"
is a
biplot, "loadings"
displays the loadings as a
barplot
the multiple of sigma to use when plotting the loadings
title of the plot
a fitted princomp.rcomp object
another compositional dataset of class rcomp
further arguments to pass to internally-called functions
provides the covariance matrix to be used for the principle component analysis
provides the be used for the computation of scores
Gives the robustness type for the calculation of the
covariance matrix. See var.rmult
for details.
princomp
gives an object of type
c("princomp.rcomp","princomp")
with the following content:
the standard deviation of the principal components.
the matrix of variable loadings (i.e., a matrix which
columns contain the eigenvectors). This is of class
"loadings"
. The last eigenvalue is removed since it should
contain the irrelevant scaling.
the loadings as an rmult-object
the cpt-transformed vector of means used to center the dataset
the rcomp
vector of means used to center the dataset
the scaling applied to each variable
number of observations
if scores = TRUE
, the scores of the supplied data
on the principal components. Scores are coordinates in a basis given by the principal
components and thus not compositions
the matched call
not clearly understood
Mainly a princomp(cpt(x))
is performed. To avoid confusion, the
meaningless last principal component is removed.
The plot routine provides screeplots (type = "s"
,type=
"v"
), biplots (type = "b"
), plots of the effect of
loadings (type = "b"
) in scale.sdev*sdev
-spread, and
loadings of pairwise differences (type = "r"
).
The interpretation of a screeplot does not differ from ordinary screeplots. It shows the eigenvalues of the covariance matrix, which represent the portions of variance explained by the principal components.
The interpretation of the biplot strongly differs from a classical one. The relevant variables are not the arrows drawn (one for each component), but rather the links (i.e., the differences) between two arrow heads, which represents the difference between the two components represented by the arrows, or the transfer of mass from one to the other.
The compositional loading plot is more or less a standard one. The loadings are displayed by a barplot as positve and negative changes of amounts.
The loading plot can work in
two different modes: If
scale.sdev
is set to NA
it displays the composition
being represented by the unit vector of loadings in cpt-transformed space. If
scale.sdev
is numeric we use this composition scaled by the
standard deviation of the respective component.
The relative plot displays the relativeLoadings
as a
barplot. The deviation from a unit bar shows the effect of each
principal component on the respective differences.
# NOT RUN {
data(SimulatedAmounts)
pc <- princomp(rcomp(sa.lognormals5))
pc
summary(pc)
plot(pc) #plot(pc,type="screeplot")
plot(pc,type="v")
plot(pc,type="biplot")
plot(pc,choice=c(1,3),type="biplot")
plot(pc,type="loadings")
plot(pc,type="loadings",scale.sdev=-1) # Downward
plot(pc,type="relative",scale.sdev=NA) # The directions
plot(pc,type="relative",scale.sdev=1) # one sigma Upward
plot(pc,type="relative",scale.sdev=-1) # one sigma Downward
biplot(pc)
screeplot(pc)
loadings(pc)
relativeLoadings(pc,mult=FALSE)
relativeLoadings(pc)
relativeLoadings(pc,scale.sdev=1)
relativeLoadings(pc,scale.sdev=2)
pc$sdev^2
cov(predict(pc,sa.lognormals5))
# }
Run the code above in your browser using DataLab