loocv.discrimin | R Documentation |
discrimin
analysis
Leave-one-out cross-validation to test the existence of groups in a discrimin
analysis.
## S3 method for class 'discrimin' loocv(x, nax = 0, progress = FALSE, ...) ## S3 method for class 'discloocv' print(x, ...) ## S3 method for class 'discloocv' plot(x, xax = 1, yax = 2, ...)
x |
the |
nax |
list of axes for mean overlap index computation (0 = all axes) |
progress |
logical to display a progress bar during computations (see the |
xax, yax |
the numbers of the x-axis and the y-axis |
... |
further arguments passed to or from other methods |
This function returns a list containing the cross-validated coordinates of the rows. The analysis on which the discrimin
was computed is redone after removing each row of the data table, one at a time. A discrimin
analysis is done on this new analysis and the coordinates of the missing row are computed by projection as supplementary element in the new discrimin
analysis. This can be useful to check that the groups evidenced by the discrimin
analysis are supported.
A list with:
- XValCoord
:
the cross-validated row coordinates
- PRESS
:
the Predicted Residual Error Sum for each row
- PRESSTot
:
the sum of PRESS
for each bca
axis
- Oij_disc
:
the mean overlap index for the discriminant analysis
- Oij_XVal
:
the mean overlap index for cross-validation
- DeltaOij
:
the spuriousness index
Jean Thioulouse
loocv.dudi loocv.between
## Not run: # Data = skulls data(skulls) pcaskul <- dudi.pca(skulls, scan = FALSE) facskul <- gl(5,30) diskul <- discrimin(pcaskul, facskul, scan = FALSE) xdiskul <- loocv(diskul, progress = TRUE) oijdisc <- xdiskul$Oij_disc oijxval <- xdiskul$Oij_XVal Doij <- (oijxval - oijdisc)/0.5*100 pst1 <- paste0("Skulls discrimin randtest: p=", round(randtest(diskul)$pvalue, 4), ", Oij = ", round(oijdisc,2)) pst2 <- paste0("Skulls cross-validation: Oij = ", round(oijxval,2), ", dOij = ", round(Doij), "%") if (adegraphicsLoaded()) { sc1 <- s.class(diskul$li, facskul, col = TRUE, psub.text = pst1, ellipseSize=0, chullSize=1, plot = FALSE) sc2 <- s.class(xdiskul$XValCoord, facskul, col = TRUE, psub.text = pst2, ellipseSize=0, chullSize=1, plot = FALSE) ADEgS(list(sc1, sc2), layout=c(2,2)) } else { par(mfrow=c(2,2)) s.class(diskul$li, facskul, sub = pst1) s.class(xdiskul$XValCoord, facskul, sub = pst2) } data(chazeb) pcacz <- dudi.pca(chazeb$tab, scan = FALSE) discz <- discrimin(pcacz, chazeb$cla, scan = FALSE) xdiscz <- loocv(discz, progress = TRUE) oijdiscz <- xdiscz$Oij_disc oijxvalz <- xdiscz$Oij_XVal Doijz <- (oijxvalz - oijdiscz)/0.5*100 pst1 <- paste0("Chazeb discrimin randtest: p=", round(randtest(discz)$pvalue, 4), ", Oij = ", round(oijdiscz,2)) pst2 <- paste0("Chazeb cross-validation: Oij = ", round(oijxvalz,2), ", dOij = ", round(Doijz), "%") if (adegraphicsLoaded()) { tabi <- cbind(discz$li, pcacz$tab) gr1 <- s.class(tabi, xax=1, yax=2:7, chazeb$cla, col = TRUE, plot = FALSE) for (i in 1:6) gr1[[i]] <- update(gr1[[i]], psub.text = names(tabi)[i+1], plot = FALSE) pos1 <- gr1@positions pos1[,1] <- c(0, .3333, .6667, 0, .3333, .6667) pos1[,2] <- c(.6667, .6667, .6667, .3333, .3333, .3333) pos1[,3] <- c(.3333, .6667, 1, .3333, .6667, 1) pos1[,4] <- c(1, 1, 1, .6667, .6667, .6667) gr1@positions <- pos1 sc1 <- s1d.gauss(discz$li, chazeb$cla, col = TRUE, psub.text = pst1, plot = FALSE) sc2 <- s1d.gauss(xdiscz$XValCoord, chazeb$cla, col = TRUE, psub.text = pst2, plot = FALSE) ADEgS(list(gr1[[1]], gr1[[2]], gr1[[3]], gr1[[4]], gr1[[5]], gr1[[6]], sc1, sc2)) } else { dev.new() sco.gauss(discz$li[,1], as.data.frame(chazeb$cla), sub = pst1) dev.new() sco.gauss(xdiscz$XValCoord[,1], as.data.frame(chazeb$cla), sub = pst2) } ## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.