princomp.aplus         package:compositions         R Documentation

_P_r_i_n_c_i_p_a_l _c_o_m_p_o_n_e_n_t _a_n_a_l_y_s_i_s _f_o_r _a_m_o_u_n_t_s _i_n _l_o_g _g_e_o_m_e_t_r_y

_D_e_s_c_r_i_p_t_i_o_n:

     A principal component analysis is done in the Aitchison geometry
     (i.e. ilt-transform). Some gimics simplify the interpretation of
     the computed components as perturbations of amounts.

_U_s_a_g_e:

     ## S3 method for class 'aplus':
     princomp(x,...,scores=TRUE)
     ## S3 method for class 'princomp.aplus':
     print(x,...)
     ## S3 method for class 'princomp.aplus':
     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 class 'princomp.aplus':
     predict(object,newdata,...)

_A_r_g_u_m_e_n_t_s:

       x: an aplus dataset (for princomp) or a result from
          princomp.aplus

       y: not used

  scores: a logical indicating whether scores should be computed or not

    npcs: the number of components to be drawn in the scree plot

    type: 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.acomp'

scale.sdev: the multiple of sigma to use when plotting the loadings

    main: title of the plot

  object: a fitted princomp.aplus object

 newdata: another amount dataset of class aplus

     ...: further arguments to pass to internally-called functions

_D_e_t_a_i_l_s:

     As a metric euclidean space, the positive real space described in
     'aplus' has its own principal component analysis, that can be
     performed either in terms of the covariance matrix or the
     correlation matrix. However, since all parts in a composition  or
     in an amount vector share a natural scaling, they do not need the 
     standardization (which in fact would produce a loss of important
     information).  For this reason, 'princomp.aplus' works on the
     covariance matrix. 
      To aid the interpretation we added some extra functionality to a
     normal 'princomp(ilt(x))'. First of all the result contains as
     additional information the amount representation of returned
     vectors in the space of the data: the center as an amount
     'Center', and the loadings in terms of amounts to perturbe with,
     either positively ('Loadings') or negatively ('DownLoadings'). The
     Up- and DownLoadings are normalized to the number of parts   and
     not to one to simplify the interpretation. A value of about one
     means no change in the specific component.  
      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
     (log-)ratios ('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 the biplot uses, additionally to the
     classical one, a compositional concept: The differences between
     two arrowheads can be interpreted as log-ratios between the two
     components represented by the arrows.  
      The amount loading plot is introduced with this package. The
     loadings of all component can be seen as an orthogonal basis in
     the space of 'ilt'-transformed data. These vectors are displayed
     by a barplot with their corresponding amounts. A portion of one
     means no change of this part. This is equivalent to a zero loading
     in a real principal component analysis.  
      The loadings plot can work in two different modes. If
     'scale.sdev' is set to 'NA' it displays the amount vector being
     represented by the unit vector of loadings in the ilt-transformed
     space. If 'scale.sdev' is numeric we use this amount vector 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 ratio. The interpretation of the
     ratios plot may only be done in an Aitchison-compositional
     framework  (see 'princomp.acomp').

_V_a_l_u_e:

     'princomp' gives an object of type
     'c("princomp.acomp","princomp")' with the following content: 

    sdev: the standard deviation of the principal components

loadings: the matrix of variable loadings (i.e., a matrix which columns
          contain the eigenvectors). This is of class '"loadings"'. 

  center: the ilt-transformed vector of means used to center the
          dataset

  Center: the 'aplus' vector of means used to center the dataset

   scale: the scaling applied to each variable

   n.obs: number of observations

  scores: 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

    call: the matched call

na.action: not clearly understood

Loadings: vectors of amounts that represent a perturbation with the
          vectors represented by the loadings of each of the factors

DownLoadings: vectors of amounts that represent a perturbation with the
          inverses of the vectors represented by the loadings of each
          of the factors

     'predict' returns a matrix of scores of the observations in the
     'newdata' dataset 
     . The other routines are mainly called for their side effect of
     plotting or printing and return the object 'x'.

_A_u_t_h_o_r(_s):

     K.Gerald v.d. Boogaart <URL: http://www.stat.boogaart.de>

_S_e_e _A_l_s_o:

     'ilt','aplus', 'relativeLoadings'  'princomp.acomp',
     'princomp.rplus', 'barplot.aplus', 'mean.aplus',

_E_x_a_m_p_l_e_s:

     data(SimulatedAmounts)
     pc <- princomp(aplus(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$Loadings
     pc$DownLoadings
     barplot(pc$Loadings)
     pc$sdev^2
     cov(predict(pc,sa.lognormals5))

