Title: | High-Dimensional Analysis of Variance |
---|---|
Description: | Functions and datasets to support Smilde, Marini, Westerhuis and Liland (2025, ISBN: 978-1-394-21121-0) "Analysis of Variance for High-Dimensional Data - Applications in Life, Food and Chemical Sciences". This implements and imports a collection of methods for HD-ANOVA data analysis with common interfaces, result- and plotting functions, multiple real data sets and four vignettes covering a range different applications. |
Authors: | Kristian Hovde Liland [aut, cre] |
Maintainer: | Kristian Hovde Liland <[email protected]> |
License: | GPL (>= 2) |
Version: | 0.8.2 |
Built: | 2025-01-20 21:19:40 UTC |
Source: | https://github.com/khliland/hdanova |
APCA function for fitting ANOVA Principal Component Analysis models.
apca(formula, data, add_error = TRUE, contrasts = "contr.sum", ...)
apca(formula, data, add_error = TRUE, contrasts = "contr.sum", ...)
formula |
Model formula accepting a single response (block) and predictors. |
data |
The data set to analyse. |
add_error |
Add error to LS means (default = TRUE). |
contrasts |
Effect coding: "sum" (default = sum-coding), "weighted", "reference", "treatment". |
... |
Additional parameters for the asca_fit function. |
An object of class apca
, inheriting from the general asca
class.
Further arguments and plots can be found in the asca
documentation.
Harrington, P.d.B., Vieira, N.E., Espinoza, J., Nien, J.K., Romero, R., and Yergey, A.L. (2005) Analysis of variance–principal component analysis: A soft tool for proteomic discovery. Analytica chimica acta, 544 (1-2), 118–127.
Main methods: asca
, apca
, limmpca
, msca
, pcanova
, prc
and permanova
.
Workhorse function underpinning most methods: asca_fit
.
Extraction of results and plotting: asca_results
, asca_plots
, pcanova_results
and pcanova_plots
data(candies) ap <- apca(assessment ~ candy, data=candies) scoreplot(ap) # Numeric effects candies$num <- eff <- 1:165 mod <- apca(assessment ~ candy + assessor + num, data=candies) summary(mod) scoreplot(mod, factor=3, gr.col=rgb(eff/max(eff), 1-eff/max(eff),0), pch.scores="x")
data(candies) ap <- apca(assessment ~ candy, data=candies) scoreplot(ap) # Numeric effects candies$num <- eff <- 1:165 mod <- apca(assessment ~ candy + assessor + num, data=candies) summary(mod) scoreplot(mod, factor=3, gr.col=rgb(eff/max(eff), 1-eff/max(eff),0), pch.scores="x")
This is a quite general and flexible implementation of ASCA.
asca(formula, data, contrasts = "contr.sum", ...)
asca(formula, data, contrasts = "contr.sum", ...)
formula |
Model formula accepting a single response (block) and predictors. See Details for more information. |
data |
The data set to analyse. |
contrasts |
Effect coding: "sum" (default = sum-coding), "weighted", "reference", "treatment". |
... |
Additional arguments to |
ASCA is a method which decomposes a multivariate response according to one or more design
variables. ANOVA is used to split variation into contributions from factors, and PCA is performed
on the corresponding least squares estimates, i.e., Y = X1 B1 + X2 B2 + ... + E = T1 P1' + T2 P2' + ... + E
.
This version of ASCA encompasses variants of LiMM-PCA, generalized ASCA and covariates ASCA. It includes
confidence ellipsoids for the balanced crossed-effect ASCA.
The formula interface is extended with the function r() to indicate random effects and comb() to indicate effects that should be combined. See Examples for use cases.
An asca
object containing loadings, scores, explained variances, etc. The object has
associated plotting (asca_plots
) and result (asca_results
) functions.
Smilde, A., Jansen, J., Hoefsloot, H., Lamers,R., Van Der Greef, J., and Timmerman, M.(2005). ANOVA-Simultaneous Component Analysis (ASCA): A new tool for analyzing designed metabolomics data. Bioinformatics, 21(13), 3043–3048.
Liland, K.H., Smilde, A., Marini, F., and Næs,T. (2018). Confidence ellipsoids for ASCA models based on multivariate regression theory. Journal of Chemometrics, 32(e2990), 1–13.
Martin, M. and Govaerts, B. (2020). LiMM-PCA: Combining ASCA+ and linear mixed models to analyse high-dimensional designed data. Journal of Chemometrics, 34(6), e3232.
Main methods: asca
, apca
, limmpca
, msca
, pcanova
, prc
and permanova
.
Workhorse function underpinning most methods: asca_fit
.
Extraction of results and plotting: asca_results
, asca_plots
, pcanova_results
and pcanova_plots
# Load candies data data(candies) # Basic ASCA model with two factors mod <- asca(assessment ~ candy + assessor, data=candies) print(mod) # ASCA model with interaction mod <- asca(assessment ~ candy * assessor, data=candies) print(mod) # Result plotting for first factor loadingplot(mod, scatter=TRUE, labels="names") scoreplot(mod) # No backprojection scoreplot(mod, projections=FALSE) # Spider plot scoreplot(mod, spider=TRUE, projections=FALSE) # ASCA model with compressed response using 5 principal components mod.pca <- asca(assessment ~ candy + assessor, data=candies, pca.in=5) # Mixed Model ASCA, random assessor mod.mix <- asca(assessment ~ candy + r(assessor), data=candies) scoreplot(mod.mix) # Mixed Model ASCA, REML estimation mod.mix <- asca(assessment ~ candy + r(assessor), data=candies, REML=TRUE) scoreplot(mod.mix) # Load Caldana data data(caldana) # Combining effects in ASCA mod.comb <- asca(compounds ~ time + comb(light + time:light), data=caldana) summary(mod.comb) timeplot(mod.comb, factor="light", time="time", comb=2) # Permutation testing mod.perm <- asca(assessment ~ candy * assessor, data=candies, permute=TRUE) summary(mod.perm)
# Load candies data data(candies) # Basic ASCA model with two factors mod <- asca(assessment ~ candy + assessor, data=candies) print(mod) # ASCA model with interaction mod <- asca(assessment ~ candy * assessor, data=candies) print(mod) # Result plotting for first factor loadingplot(mod, scatter=TRUE, labels="names") scoreplot(mod) # No backprojection scoreplot(mod, projections=FALSE) # Spider plot scoreplot(mod, spider=TRUE, projections=FALSE) # ASCA model with compressed response using 5 principal components mod.pca <- asca(assessment ~ candy + assessor, data=candies, pca.in=5) # Mixed Model ASCA, random assessor mod.mix <- asca(assessment ~ candy + r(assessor), data=candies) scoreplot(mod.mix) # Mixed Model ASCA, REML estimation mod.mix <- asca(assessment ~ candy + r(assessor), data=candies, REML=TRUE) scoreplot(mod.mix) # Load Caldana data data(caldana) # Combining effects in ASCA mod.comb <- asca(compounds ~ time + comb(light + time:light), data=caldana) summary(mod.comb) timeplot(mod.comb, factor="light", time="time", comb=2) # Permutation testing mod.perm <- asca(assessment ~ candy * assessor, data=candies, permute=TRUE) summary(mod.perm)
This function is called by all ASCA related methods in this package. It is documented so that one can have access to a richer set of parameters from the various methods or call this function directly. The latter should be done with care as there are many possibilities and not all have been used in publications or tested thoroughly.
asca_fit( formula, data, subset, weights, na.action, family, permute = FALSE, perm.type = c("approximate", "exact"), unrestricted = FALSE, add_error = FALSE, aug_error = "denominator", use_ED = FALSE, pca.in = FALSE, contrasts = "contr.sum", coding, equal_baseline = FALSE, SStype = "II", REML = NULL )
asca_fit( formula, data, subset, weights, na.action, family, permute = FALSE, perm.type = c("approximate", "exact"), unrestricted = FALSE, add_error = FALSE, aug_error = "denominator", use_ED = FALSE, pca.in = FALSE, contrasts = "contr.sum", coding, equal_baseline = FALSE, SStype = "II", REML = NULL )
formula |
Model formula accepting a single response (block) and predictors. See Details for more information. |
data |
The data set to analyse. |
subset |
Expression for subsetting the data before modelling. |
weights |
Optional object weights. |
na.action |
How to handle NAs (no action implemented). |
family |
Error distributions and link function for Generalized Linear Models. |
permute |
Perform approximate permutation testing, default = FALSE (numeric or TRUE = 1000 permutations). |
perm.type |
Type of permutation: "approximate" (default) or "exact". |
unrestricted |
Use unrestricted ANOVA decomposition (default = FALSE). |
add_error |
Add error to LS means, e.g., for APCA. |
aug_error |
Augment score matrices in backprojection. Default = "denominator" (of F test), "residual" (force error term), nueric value (alpha-value in LiMM-PCA). |
use_ED |
Use "effective dimensions" for score rescaling in LiMM-PCA. |
pca.in |
Compress response before ASCA (number of components). |
contrasts |
Effect coding: "sum" (default = sum-coding), "weighted", "reference", "treatment". |
coding |
Defunct. Use 'contrasts' instead. |
equal_baseline |
Experimental: Set to |
SStype |
Type of sum-of-squares: "I" = sequential, "II" (default) = last term, obeying marginality, "III" = last term, not obeying marginality. |
REML |
Parameter to mixlm: NULL (default) = sum-of-squares, TRUE = REML, FALSE = ML. |
An asca
object containing loadings, scores, explained variances, etc. The object has
associated plotting (asca_plots
) and result (asca_results
) functions.
Various plotting procedures for asca
objects.
## S3 method for class 'asca' loadingplot(object, factor = 1, comps = 1:2, ...) ## S3 method for class 'asca' scoreplot( object, factor = 1, comps = 1:2, within_level = "all", pch.scores = 19, pch.projections = 1, gr.col = NULL, projections = TRUE, spider = FALSE, ellipsoids, confidence, xlim, ylim, xlab, ylab, legendpos, ... ) permutationplot(object, factor = 1, xlim, xlab = "SSQ", main, ...)
## S3 method for class 'asca' loadingplot(object, factor = 1, comps = 1:2, ...) ## S3 method for class 'asca' scoreplot( object, factor = 1, comps = 1:2, within_level = "all", pch.scores = 19, pch.projections = 1, gr.col = NULL, projections = TRUE, spider = FALSE, ellipsoids, confidence, xlim, ylim, xlab, ylab, legendpos, ... ) permutationplot(object, factor = 1, xlim, xlab = "SSQ", main, ...)
object |
|
factor |
|
comps |
|
... |
additional arguments to underlying methods. |
within_level |
MSCA parameter for chosing plot level (default = "all"). |
pch.scores |
|
pch.projections |
|
gr.col |
|
projections |
Include backprojections in score plot (default = TRUE). |
spider |
Draw lines between group centers and backprojections (default = FALSE). |
ellipsoids |
|
confidence |
|
xlim |
|
ylim |
|
xlab |
|
ylab |
|
legendpos |
|
main |
Plot title. |
Usage of the functions are shown using generics in the examples in asca
.
Plot routines are available as
scoreplot.asca
and loadingplot.asca
.
The plotting routines have no return.
Smilde, A., Jansen, J., Hoefsloot, H., Lamers,R., Van Der Greef, J., and Timmerman, M.(2005). ANOVA-Simultaneous Component Analysis (ASCA): A new tool for analyzing designed metabolomics data. Bioinformatics, 21(13), 3043–3048.
Liland, K.H., Smilde, A., Marini, F., and Næs,T. (2018). Confidence ellipsoids for ASCA models based on multivariate regression theory. Journal of Chemometrics, 32(e2990), 1–13.
Martin, M. and Govaerts, B. (2020). LiMM-PCA: Combining ASCA+ and linear mixed models to analyse high-dimensional designed data. Journal of Chemometrics, 34(6), e3232.
Main methods: asca
, apca
, limmpca
, msca
, pcanova
, prc
and permanova
.
Workhorse function underpinning most methods: asca_fit
.
Extraction of results and plotting: asca_results
, asca_plots
, pcanova_results
and pcanova_plots
Standard result computation and extraction functions for ASCA (asca
).
## S3 method for class 'asca' print(x, ...) ## S3 method for class 'asca' summary(object, extended = TRUE, df = FALSE, ...) ## S3 method for class 'summary.asca' print(x, digits = 2, ...) ## S3 method for class 'asca' loadings(object, factor = 1, ...) ## S3 method for class 'asca' scores(object, factor = 1, ...) projections(object, ...) ## S3 method for class 'asca' projections(object, factor = 1, ...)
## S3 method for class 'asca' print(x, ...) ## S3 method for class 'asca' summary(object, extended = TRUE, df = FALSE, ...) ## S3 method for class 'summary.asca' print(x, digits = 2, ...) ## S3 method for class 'asca' loadings(object, factor = 1, ...) ## S3 method for class 'asca' scores(object, factor = 1, ...) projections(object, ...) ## S3 method for class 'asca' projections(object, factor = 1, ...)
x |
|
... |
additional arguments to underlying methods. |
object |
|
extended |
Extended output in summary (default = TRUE). |
df |
Show degrees of freedom in summary (default = FALSE). |
digits |
|
factor |
|
Usage of the functions are shown using generics in the examples in asca
.
Explained variances are available (block-wise and global) through blockexpl
and print.rosaexpl
.
Object printing and summary are available through:
print.asca
and summary.asca
.
Scores and loadings have their own extensions of scores()
and loadings()
through
scores.asca
and loadings.asca
. Special to ASCA is that scores are on a
factor level basis, while back-projected samples have their own function in projections.asca
.
Returns depend on method used, e.g. projections.asca
returns projected samples,
scores.asca
return scores, while print and summary methods return the object invisibly.
Smilde, A., Jansen, J., Hoefsloot, H., Lamers,R., Van Der Greef, J., and Timmerman, M.(2005). ANOVA-Simultaneous Component Analysis (ASCA): A new tool for analyzing designed metabolomics data. Bioinformatics, 21(13), 3043–3048.
Liland, K.H., Smilde, A., Marini, F., and Næs,T. (2018). Confidence ellipsoids for ASCA models based on multivariate regression theory. Journal of Chemometrics, 32(e2990), 1–13.
Martin, M. and Govaerts, B. (2020). LiMM-PCA: Combining ASCA+ and linear mixed models to analyse high-dimensional designed data. Journal of Chemometrics, 34(6), e3232.
Main methods: asca
, apca
, limmpca
, msca
, pcanova
, prc
and permanova
.
Workhorse function underpinning most methods: asca_fit
.
Extraction of results and plotting: asca_results
, asca_plots
, pcanova_results
and pcanova_plots
This is a convenience function for making data.frame
s that are easily
indexed on a block-wise basis.
block.data.frame(X, block_inds = NULL, to.matrix = TRUE)
block.data.frame(X, block_inds = NULL, to.matrix = TRUE)
X |
Either a single |
block_inds |
Named |
to.matrix |
|
A data.frame
which can be indexed block-wise.
Main methods: asca
, apca
, limmpca
, msca
, pcanova
, prc
and permanova
.
Workhorse function underpinning most methods: asca_fit
.
Extraction of results and plotting: asca_results
, asca_plots
, pcanova_results
and pcanova_plots
# Random data M <- matrix(rnorm(200), nrow = 10) # .. with dimnames dimnames(M) <- list(LETTERS[1:10], as.character(1:20)) # A named list for indexing inds <- list(B1 = 1:10, B2 = 11:20) X <- block.data.frame(M, inds) str(X)
# Random data M <- matrix(rnorm(200), nrow = 10) # .. with dimnames dimnames(M) <- list(LETTERS[1:10], as.character(1:20)) # A named list for indexing inds <- list(B1 = 1:10, B2 = 11:20) X <- block.data.frame(M, inds) str(X)
A dataset containing 67 metabolites from plants grown under different light and temperature conditions. This subset of the data contains only the light effect and time effect for limited conditions, while the full data also contains gene expressions.
data(caldana)
data(caldana)
A data.frame having 140 rows and 3 variables:
Light levels
Time of measurement
Metabolic compounds
Caldana C, Degenkolbe T, Cuadros-Inostroza A, Klie S, Sulpice R, Leisse A, et al. High-density kinetic analysis of the metabolomic and transcriptomic response of Arabidopsis to eight environmental conditions. Plant J. 2011;67(5):869-884.
A dataset containing 9 sensory attributes for 5 candies assessed by 11 trained assessors.
data(candies)
data(candies)
A data.frame having 165 rows and 3 variables:
Matrix of sensory attributes
Factor of assessors
Factor of candies
Luciano G, Næs T. Interpreting sensory data by combining principal component analysis and analysis of variance. Food Qual Prefer. 2009;20(3):167-175.
Flexible dummy-coding allowing for all R's built-in types of contrasts and optional dropping of a factor level to reduce rank defficiency probability.
dummycode(Y, contrast = "contr.sum", drop = TRUE)
dummycode(Y, contrast = "contr.sum", drop = TRUE)
Y |
|
contrast |
Contrast type, default = "contr.sum". |
drop |
|
matrix
made by dummy-coding the input vector.
vec <- c("a","a","b","b","c","c") dummycode(vec)
vec <- c("a","a","b","b","c","c") dummycode(vec)
This function attempts to apply model.frame
and extend the
result with columns of interactions.
extended.model.frame(formula, data, ..., sep = ".")
extended.model.frame(formula, data, ..., sep = ".")
formula |
a model formula or terms object or an R object. |
data |
a data.frame, list or environment (see |
... |
further arguments to pass to |
sep |
separator in contraction of names for interactions (default = "."). |
A data.frame
that includes everything a model.frame
does plus interaction terms.
Main methods: asca
, apca
, limmpca
, msca
, pcanova
, prc
and permanova
.
Workhorse function underpinning most methods: asca_fit
.
Extraction of results and plotting: asca_results
, asca_plots
, pcanova_results
and pcanova_plots
dat <- data.frame(Y = c(1,2,3,4,5,6), X = factor(LETTERS[c(1,1,2,2,3,3)]), W = factor(letters[c(1,2,1,2,1,2)])) extended.model.frame(Y ~ X*W, dat)
dat <- data.frame(Y = c(1,2,3,4,5,6), X = factor(LETTERS[c(1,1,2,2,3,3)]), W = factor(letters[c(1,2,1,2,1,2)])) extended.model.frame(Y ~ X*W, dat)
This function mimics parts of the LiMM-PCA framework, combining ASCA+ and linear mixed models to analyse high-dimensional designed data. The default is to use REML estimation and scaling of the backprojected errors. See examples for alternatives.
limmpca( formula, data, pca.in = 5, aug_error = 0.05, use_ED = FALSE, REML = TRUE, contrasts = "contr.sum", ... )
limmpca( formula, data, pca.in = 5, aug_error = 0.05, use_ED = FALSE, REML = TRUE, contrasts = "contr.sum", ... )
formula |
Model formula accepting a single response (block) and predictors. See Details for more information. |
data |
The data set to analyse. |
pca.in |
Compress response before ASCA (number of components), default = 5. |
aug_error |
Error term of model ("denominator", "residual", numeric alpha-value). The latter implies the first with a scaling factor. |
use_ED |
Use Effective Dimensions instead of degrees of freedom when scaling. |
REML |
Use restricted maximum likelihood estimation. Alternatives: TRUE (default), FALSE (ML), NULL (least squares). |
contrasts |
Effect coding: "sum" (default = sum-coding), "weighted", "reference", "treatment". |
... |
Additional arguments to |
An object of class limmpca
, inheriting from the general asca
class.
Martin, M. and Govaerts, B. (2020). LiMM-PCA: Combining ASCA+ and linear mixed models to analyse high-dimensional designed data. Journal of Chemometrics, 34(6), e3232.
Main methods: asca
, apca
, limmpca
, msca
, pcanova
, prc
and permanova
.
Workhorse function underpinning most methods: asca_fit
.
Extraction of results and plotting: asca_results
, asca_plots
, pcanova_results
and pcanova_plots
# Load candies data data(candies) # Default LiMM-PCA model with two factors and interaction, 5 PCA components mod <- limmpca(assessment ~ candy*r(assessor), data=candies) summary(mod) scoreplot(mod, factor = "candy") # LiMM-PCA with least squares estimation and 8 PCA components modLS <- limmpca(assessment ~ candy*r(assessor), data=candies, REML=NULL, pca.in=8) summary(modLS) scoreplot(modLS, factor = "candy") # Load Caldana data data(caldana) # Combining effects in LiMM-PCA (assuming light is a random factor) mod.comb <- limmpca(compounds ~ time + comb(r(light) + r(time:light)), data=caldana, pca.in=8) summary(mod.comb)
# Load candies data data(candies) # Default LiMM-PCA model with two factors and interaction, 5 PCA components mod <- limmpca(assessment ~ candy*r(assessor), data=candies) summary(mod) scoreplot(mod, factor = "candy") # LiMM-PCA with least squares estimation and 8 PCA components modLS <- limmpca(assessment ~ candy*r(assessor), data=candies, REML=NULL, pca.in=8) summary(modLS) scoreplot(modLS, factor = "candy") # Load Caldana data data(caldana) # Combining effects in LiMM-PCA (assuming light is a random factor) mod.comb <- limmpca(compounds ~ time + comb(r(light) + r(time:light)), data=caldana, pca.in=8) summary(mod.comb)
Extraction functions to retrieve the model.frame
and model.matrix
of an asca
object.
## S3 method for class 'asca' model.frame(formula, ...) ## S3 method for class 'asca' model.matrix(object, ...)
## S3 method for class 'asca' model.frame(formula, ...) ## S3 method for class 'asca' model.matrix(object, ...)
formula |
The |
... |
Not implemented |
object |
The |
A data.frame
or matrix
object.
# Load candies data data(candies) # Basic ASCA model with two factors mod <- asca(assessment ~ candy + assessor, data=candies) # Extract model frame and model matrix mf <- model.frame(mod) head(mf) mm <- model.matrix(mod) par.old <- par(mar=c(3,3,3,1), mgp=c(1,0.7,0)) image(t(mm[seq(165,1,-1),]), main="Model Matrix", xlab="dummy values", ylab="samples", axes=FALSE) par(par.old)
# Load candies data data(candies) # Basic ASCA model with two factors mod <- asca(assessment ~ candy + assessor, data=candies) # Extract model frame and model matrix mf <- model.frame(mod) head(mf) mm <- model.matrix(mod) par.old <- par(mar=c(3,3,3,1), mgp=c(1,0.7,0)) image(t(mm[seq(165,1,-1),]), main="Model Matrix", xlab="dummy values", ylab="samples", axes=FALSE) par(par.old)
This MSCA implementation assumes a single factor to be used as between-individuals factor.
msca(formula, data, contrasts = "contr.sum", ...)
msca(formula, data, contrasts = "contr.sum", ...)
formula |
Model formula accepting a single response (block) and predictors. See Details for more information. |
data |
The data set to analyse. |
contrasts |
Effect coding: "sum" (default = sum-coding), "weighted", "reference", "treatment". |
... |
Additional arguments to |
An asca
object containing loadings, scores, explained variances, etc. The object has
associated plotting (asca_plots
) and result (asca_results
) functions.
Smilde, A., Jansen, J., Hoefsloot, H., Lamers,R., Van Der Greef, J., and Timmerman, M.(2005). ANOVA-Simultaneous Component Analysis (ASCA): A new tool for analyzing designed metabolomics data. Bioinformatics, 21(13), 3043–3048.
Liland, K.H., Smilde, A., Marini, F., and Næs,T. (2018). Confidence ellipsoids for ASCA models based on multivariate regression theory. Journal of Chemometrics, 32(e2990), 1–13.
Main methods: asca
, apca
, limmpca
, msca
, pcanova
, prc
and permanova
.
Workhorse function underpinning most methods: asca_fit
.
Extraction of results and plotting: asca_results
, asca_plots
, pcanova_results
and pcanova_plots
# Load candies data data(candies) # Basic MSCA model with a single factor mod <- msca(assessment ~ candy, data=candies) print(mod) summary(mod) # Result plotting for first factor loadingplot(mod, scatter=TRUE, labels="names") scoreplot(mod) # Within scores scoreplot(mod, factor="within") # Within scores per factor level par.old <- par(mfrow=c(3,2), mar=c(4,4,2,1), mgp=c(2,0.7,0)) for(i in 1:length(mod$scores.within)) scoreplot(mod, factor="within", within_level=i, main=paste0("Level: ", names(mod$scores.within)[i]), panel.first=abline(v=0,h=0,col="gray",lty=2)) par(par.old) # Permutation testing mod.perm <- asca(assessment ~ candy * assessor, data=candies, permute=TRUE) summary(mod.perm)
# Load candies data data(candies) # Basic MSCA model with a single factor mod <- msca(assessment ~ candy, data=candies) print(mod) summary(mod) # Result plotting for first factor loadingplot(mod, scatter=TRUE, labels="names") scoreplot(mod) # Within scores scoreplot(mod, factor="within") # Within scores per factor level par.old <- par(mfrow=c(3,2), mar=c(4,4,2,1), mgp=c(2,0.7,0)) for(i in 1:length(mod$scores.within)) scoreplot(mod, factor="within", within_level=i, main=paste0("Level: ", names(mod$scores.within)[i]), panel.first=abline(v=0,h=0,col="gray",lty=2)) par(par.old) # Permutation testing mod.perm <- asca(assessment ~ candy * assessor, data=candies, permute=TRUE) summary(mod.perm)
This is a quite general and flexible implementation of PC-ANOVA.
pcanova(formula, data, ncomp = 0.9, contrasts = "contr.sum", ...)
pcanova(formula, data, ncomp = 0.9, contrasts = "contr.sum", ...)
formula |
Model formula accepting a single response (block) and predictor names separated by + signs. |
data |
The data set to analyse. |
ncomp |
The number of components to retain, proportion of variation or default = minimum cross-validation error. |
contrasts |
Effect coding: "sum" (default = sum-coding), "weighted", "reference", "treatment". |
... |
Additional parameters for the asca_fit function. |
PC-ANOVA works in the opposite order of ASCA. First the response matrix is decomposed using ANOVA. Then the components are analysed using ANOVA with respect to a design or grouping in the data. The latter can be ordinary fixed effects modelling or mixed models.
A pcanova
object containing loadings, scores, explained variances, etc. The object has
associated plotting (pcanova_plots
) and result (pcanova_results
) functions.
Luciano G, Næs T. Interpreting sensory data by combining principal component analysis and analysis of variance. Food Qual Prefer. 2009;20(3):167-175.
Main methods: asca
, apca
, limmpca
, msca
, pcanova
, prc
and permanova
.
Workhorse function underpinning most methods: asca_fit
.
Extraction of results and plotting: asca_results
, asca_plots
, pcanova_results
and pcanova_plots
# Load candies data data(candies) # Basic PC-ANOVA model with two factors, cross-validated opt. of #components mod <- pcanova(assessment ~ candy + assessor, data = candies) print(mod) # PC-ANOVA model with interaction, minimum 90% explained variance mod <- pcanova(assessment ~ candy * assessor, data = candies, ncomp = 0.9) print(mod) summary(mod) # Tukey group letters for 'candy' per component lapply(mod$models, function(x) mixlm::cld(mixlm::simple.glht(x, effect = "candy"))) # Result plotting loadingplot(mod, scatter=TRUE, labels="names") scoreplot(mod) # Mixed Model PC-ANOVA, random assessor mod.mix <- pcanova(assessment ~ candy + r(assessor), data=candies, ncomp = 0.9) scoreplot(mod.mix) # Fixed effects summary(mod.mix)
# Load candies data data(candies) # Basic PC-ANOVA model with two factors, cross-validated opt. of #components mod <- pcanova(assessment ~ candy + assessor, data = candies) print(mod) # PC-ANOVA model with interaction, minimum 90% explained variance mod <- pcanova(assessment ~ candy * assessor, data = candies, ncomp = 0.9) print(mod) summary(mod) # Tukey group letters for 'candy' per component lapply(mod$models, function(x) mixlm::cld(mixlm::simple.glht(x, effect = "candy"))) # Result plotting loadingplot(mod, scatter=TRUE, labels="names") scoreplot(mod) # Mixed Model PC-ANOVA, random assessor mod.mix <- pcanova(assessment ~ candy + r(assessor), data=candies, ncomp = 0.9) scoreplot(mod.mix) # Fixed effects summary(mod.mix)
Various plotting procedures for pcanova
objects.
## S3 method for class 'pcanova' scoreplot(object, factor = 1, comps = 1:2, col = "factor", ...)
## S3 method for class 'pcanova' scoreplot(object, factor = 1, comps = 1:2, col = "factor", ...)
object |
|
factor |
|
comps |
|
col |
|
... |
additional arguments to underlying methods. |
Usage of the functions are shown using generics in the examples in pcanova
.
Plot routines are available as
scoreplot.pcanova
and loadingplot.pcanova
.
The plotting routines have no return.
Luciano G, Næs T. Interpreting sensory data by combining principal component analysis and analysis of variance. Food Qual Prefer. 2009;20(3):167-175.
Main methods: asca
, apca
, limmpca
, msca
, pcanova
, prc
and permanova
.
Workhorse function underpinning most methods: asca_fit
.
Extraction of results and plotting: asca_results
, asca_plots
, pcanova_results
and pcanova_plots
Standard result computation and extraction functions for ASCA (pcanova
).
## S3 method for class 'pcanova' summary(object, ...) ## S3 method for class 'summary.pcanova' print(x, digits = 2, ...) ## S3 method for class 'pcanova' print(x, ...) ## S3 method for class 'pcanova' summary(object, ...)
## S3 method for class 'pcanova' summary(object, ...) ## S3 method for class 'summary.pcanova' print(x, digits = 2, ...) ## S3 method for class 'pcanova' print(x, ...) ## S3 method for class 'pcanova' summary(object, ...)
object |
|
... |
additional arguments to underlying methods. |
x |
|
digits |
|
Usage of the functions are shown using generics in the examples in pcanova
.
Explained variances are available (block-wise and global) through blockexpl
and print.rosaexpl
.
Object printing and summary are available through:
print.pcanova
and summary.pcanova
.
Scores and loadings have their own extensions of scores()
and loadings()
through
scores.pcanova
and loadings.pcanova
. Special to ASCA is that scores are on a
factor level basis, while back-projected samples have their own function in projections.pcanova
.
Returns depend on method used, e.g. projections.pcanova
returns projected samples,
scores.pcanova
return scores, while print and summary methods return the object invisibly.
Luciano G, Næs T. Interpreting sensory data by combining principal component analysis and analysis of variance. Food Qual Prefer. 2009;20(3):167-175.
Main methods: asca
, apca
, limmpca
, msca
, pcanova
, prc
and permanova
.
Workhorse function underpinning most methods: asca_fit
.
Extraction of results and plotting: asca_results
, asca_plots
, pcanova_results
and pcanova_plots
Wrapper for the adonis2
function to allow ordinary formula input.
permanova(formula, data, ...)
permanova(formula, data, ...)
formula |
Model formula accepting a single response matrix and predictors.
See details in |
data |
The data set to analyse. |
... |
Additional arguments to |
An ANOVA table with permutation-based p-values.
data(caldana) (pr <- permanova(compounds ~ light * time, caldana))
data(caldana) (pr <- permanova(compounds ~ light * time, caldana))
Wrapper for the prc
function to allow for formula input.
prc(formula, data, ...)
prc(formula, data, ...)
formula |
Model formula accepting a single response (block) and predictors. If no predictor is called 'time', time is assumed to be the second predictor. |
data |
The data set to analyse. |
... |
Additional arguments to |
An object of class prc
.
Main methods: asca
, apca
, limmpca
, msca
, pcanova
, prc
and permanova
.
Workhorse function underpinning most methods: asca_fit
.
Extraction of results and plotting: asca_results
, asca_plots
, pcanova_results
and pcanova_plots
data(caldana) (pr <- prc(compounds ~ light * time, caldana)) summary(pr)
data(caldana) (pr <- prc(compounds ~ light * time, caldana)) summary(pr)
Timeplot for Combined Effects
timeplot( object, factor, time, comb, comp = 1, ylim, x_time = FALSE, xlab = time, ylab = paste0("Score ", comp), lwd = 2, ... )
timeplot( object, factor, time, comb, comp = 1, ylim, x_time = FALSE, xlab = time, ylab = paste0("Score ", comp), lwd = 2, ... )
object |
|
factor |
|
time |
|
comb |
|
comp |
|
ylim |
|
x_time |
|
xlab |
|
ylab |
|
lwd |
|
... |
additional arguments to |
Nothing
data("caldana") mod.comb <- asca(compounds ~ time + comb(light + light:time), data=caldana) # Default time axis timeplot(mod.comb, factor="light", time="time", comb=2) # Non-equispaced time axis (using time levels) timeplot(mod.comb, factor="light", time="time", comb=2, x_time=TRUE) # Second component timeplot(mod.comb, factor="light", time="time", comb=2, comp=2, x_time=TRUE)
data("caldana") mod.comb <- asca(compounds ~ time + comb(light + light:time), data=caldana) # Default time axis timeplot(mod.comb, factor="light", time="time", comb=2) # Non-equispaced time axis (using time levels) timeplot(mod.comb, factor="light", time="time", comb=2, x_time=TRUE) # Second component timeplot(mod.comb, factor="light", time="time", comb=2, comp=2, x_time=TRUE)
Perform a model update while removing a chosen factor. Hierarchical corresponds to type "II" sum-of-squares, i.e., obeying marginality, while non-hierarchical corresponds to type "III" sum-of-squares.
update_without_factor(model, fac, hierarchical = TRUE)
update_without_factor(model, fac, hierarchical = TRUE)
model |
|
fac |
|
hierarchical |
|
An updated model object is returned. If the supplied model is of
type lmerMod
and no random effects are left, the model is
automatically converted to a linear model before updating.