Learn R Programming

ade4 (version 1.2-2)

dudi.pca: Principal Component Analysis

Description

dudi.pca performs a principal component analysis of a data frame and returns the results as objects of class pca and dudi.

Usage

dudi.pca(df, row.w = rep(1, nrow(df))/nrow(df), 
    col.w = rep(1, ncol(df)), center = TRUE, scale = TRUE, 
    scannf = TRUE, nf = 2)

Arguments

df
a data frame with n rows (individuals) and p columns (numeric variables)
row.w
an optional row weights (by default, uniform row weights)
col.w
an optional column weights (by default, unit column weights)
center
a logical or numeric value, centring option if TRUE, centring by the mean if FALSE no centring if a numeric vector, its length must be equal to the number of columns of df (p) and gives the decentring
scale
a logical value indicating whether the column vectors should be normed for the row.w weighting
scannf
a logical value indicating whether the eigenvalues bar plot should be displayed
nf
if scannf FALSE, an integer indicating the number of kept axes

Value

  • Returns a list of classes pca and dudi (see dudi) containing also :
  • centa vector with p components
  • norma vector with p components
  • if $x_{ij}$ is the value of the table df and $y_{ij}$ is the value of the table $tab, we have: $$y_{ij}=\frac{x_{ij}-cent_j}{norm_j}$$ $$x_{ij}=y_{ij} \ast norm_j + cent_j$$

See Also

prcomp, princomp in the mva library

Examples

Run this code
data(deug)
deug.dudi <- dudi.pca(deug$tab, center = deug$cent, 
    scale = FALSE, scan = FALSE)
par(mfrow = c(2,2))
s.class(deug.dudi$li, deug$result, cpoint = 1)
s.arrow(deug.dudi$c1, lab = names(deug$tab))
deug.dudi1 <- dudi.pca(deug$tab, center = TRUE, 
    scale = TRUE, scan = FALSE)
s.class(deug.dudi1$li, deug$result, cpoint = 1)
s.corcircle(deug.dudi1$co, lab = names(deug$tab), 
    full = FALSE, box = TRUE)
par(mfrow = c(1,1))

# for interpretations
par(mfrow = c(3,3))
par(mar = c(2.1,2.1,2.1,1.1))
for(i in 1:9) { 
hist(deug.dudi$tab[,i], xlim = c(-40,40), breaks = seq(-45, 35, by = 5), 
    prob = TRUE, right = FALSE, main = names(deug$tab)[i], xlab = "", 
    ylim = c(0,0.10))
abline(v = 0, lwd = 3)
}
par(mfrow = c(1,1))

Run the code above in your browser using DataLab