fanova.tests {fdANOVA} | R Documentation |
Tests for FANOVA Problem
Description
Performs the testing procedures for the one-way analysis of variance for (univariate) functional data (FANOVA). See Section 2.1 of the vignette file (vignette("fdANOVA", package = "fdANOVA")
), for details of the tests.
We consider the l
groups of independent random functions X_{ij}(t)
, i=1,\dots,l,
j=1,\dots,n_i
defined over a closed and bounded interval I=[a,b]
. Let n=n_1+\dots+n_l
. These groups may differ in mean functions, i.e., we assume that X_{ij}(t)
, j=1,\dots,n_i
are stochastic processes with mean function \mu_i(t)
, t\in I
and covariance function \gamma(s, t)
, s,t\in I
, for i=1,\dots,l
. Of interest is to test the following null hypothesis
H_0:\mu_1(t)=\dots=\mu_l(t),\ t\in I.
The alternative is the negation of the null hypothesis. We assume that each functional observation is observed on a common grid of \mathcal{T}
design time points equally spaced in I
(see Section 3.1 of the vignette file, vignette("fdANOVA", package = "fdANOVA")
).
Usage
fanova.tests(x = NULL, group.label, test = "ALL",
params = NULL,
parallel = FALSE, nslaves = NULL)
# more detailed usage of params:
# params = list(paramFP = list(int, B.FP = 1000,
# basis = c("Fourier", "b-spline", "own"),
# own.basis, own.cross.prod.mat,
# criterion = c("BIC", "eBIC", "AIC", "AICc", "NO"),
# commonK = c("mode", "min", "max", "mean"),
# minK = NULL, maxK = NULL, norder = 4, gamma.eBIC = 0.5)
# paramCH = 10000,
# paramCS = 10000,
# paramL2b = 10000,
# paramFb = 10000,
# paramFmaxb = 10000,
# paramTRP = list(k = 30, projection = c("GAUSS", "BM"),
# permutation = FALSE, B.TRP = 10000,
# independent.projection.tests = TRUE))
Arguments
x |
a |
group.label |
a vector containing group labels. |
test |
a kind of indicator which establishes a choice of FANOVA tests to be performed. Its default value means that all testing procedures of Section 2.1 of the vignette file will be used. When we want to use only some tests, the parameter |
params |
a list of additional parameters for the FP, CH, CS, L |
paramFP |
a list containing the parameters for the FP test. |
int |
a vector of two elements representing the interval |
B.FP |
a number of permutation replicates for the FP tests. |
basis |
a choice of basis of functions used in the basis function representation of the data. |
own.basis |
if |
own.cross.prod.mat |
if |
criterion |
a choice of information criterion for selecting the optimum value of
and
where
|
commonK |
a choice of method for selecting the common value for all observations from the values of |
minK |
a minimum value of |
maxK |
a maximum value of |
norder |
if |
gamma.eBIC |
a |
paramCH |
a number of discretized artificial trajectories for generating Gaussian processes for the CH test. |
paramCS |
a number of discretized artificial trajectories for generating Gaussian processes for the CS test. |
paramL2b |
a number of bootstrap samples for the L |
paramFb |
a number of bootstrap samples for the Fb test. |
paramFmaxb |
a number of bootstrap samples for the Fmaxb test. |
paramTRP |
a list containing the parameters of the tests based on random projections. |
k |
a vector of numbers of projections. |
projection |
a method of generating Gaussian processes in step 1 of the tests based on random projections presented in Section 2 of the vignette file. If |
permutation |
a logical indicating whether to compute p-values of the tests based on random projections by permutation method. |
B.TRP |
a number of permutation replicates for the tests based on random projections. |
independent.projection.tests |
a logical indicating whether to generate the random projections independently or dependently for different elements of vector |
parallel |
a logical indicating whether to use parallelization. |
nslaves |
if |
Details
To perform step 3 of the projection procedure given in Section 2.1 of the vignette file, we use five tests: the standard (paramTRP$permutation = FALSE
) and permutation (paramTRP$permutation
= TRUE
) tests based on ANOVA F-test statistic and ANOVA-type statistic (ATS) proposed by Brunner et al. (1997), as well as the testing procedure based on Wald-type permutation statistic (WTPS) of Pauly et al. (2015).
Value
A list with class "fanovatests" containing the following components (|k
| denotes the length of vector k
):
FP |
a list containing value of test statistic |
CH |
a list containing value of test statistic |
CS |
a list containing value of test statistic |
L2N |
a list containing value of test statistic |
L2B |
a list containing value of test statistic |
L2b |
a list containing value of test statistic |
FN |
a list containing value of test statistic |
FB |
a list containing value of test statistic |
Fb |
a list containing value of test statistic |
GPF |
a list containing value of test statistic |
Fmaxb |
a list containing value of test statistic |
TRP |
a list containing the following elements: vectors |
and the values of other used parameters: data = x
, group.label
, etc.
Author(s)
Tomasz Gorecki, Lukasz Smaga
References
Brunner E, Dette H, Munk A (1997). Box-Type Approximations in Nonparametric Factorial Designs. Journal of the American Statistical Association 92, 1494-1502.
Cuesta-Albertos JA, Febrero-Bande M (2010). A Simple Multiway ANOVA for Functional Data. Test 19, 537-557.
Cuevas A, Febrero M, Fraiman R (2004). An Anova Test for Functional Data. Computational Statistics & Data Analysis 47, 111-122.
Faraway J (1997). Regression Analysis for a Functional Response. Technometrics 39, 254-261.
Gorecki T, Smaga L (2015). A Comparison of Tests for the One-Way ANOVA Problem for Functional Data. Computational Statistics 30, 987-1010.
Gorecki T, Smaga L (2017). Multivariate Analysis of Variance for Functional Data. Journal of Applied Statistics 44, 2172-2189.
Pauly M, Brunner E, Konietschke F (2015). Asymptotic Permutation Tests in General Factorial Designs. Journal of the Royal Statistical Society Series B 77, 461-473.
Shen Q, Faraway J (2004). An F Test for Linear Models with Functional Responses. Statistica Sinica 14, 1239-1257.
Zhang JT (2011). Statistical Inferences for Linear Models with Functional Responses. Statistica Sinica 21, 1431-1451.
Zhang JT (2013). Analysis of Variance for Functional Data. Chapman & Hall, London.
Zhang JT, Chen JW (2007). Statistical Inferences for Functional Data. The Annals of Statistics 35, 1052-1079.
Zhang JT, Cheng MY, Wu HT, Zhou B (2018). A New Test for Functional One-way ANOVA with Applications to Ischemic Heart Screening. Computational Statistics and Data Analysis https://doi.org/10.1016/j.csda.2018.05.004
Zhang JT, Liang X (2014). One-Way ANOVA for Functional Data via Globalizing the Pointwise F-Test. Scandinavian Journal of Statistics 41, 51-71.
See Also
fmanova.ptbfr
, fmanova.trp
, plotFANOVA
, plot.fanovatests
Examples
# Some of the examples may run some time.
# gait data (the first feature)
library(fda)
gait.data.frame <- as.data.frame(gait)
x.gait <- as.matrix(gait.data.frame[, 1:39])
# vector of group labels
group.label.gait <- rep(1:3, each = 13)
# all FANOVA tests with default parameters
set.seed(123)
(fanova1 <- fanova.tests(x = x.gait, group.label = group.label.gait))
summary(fanova1)
# data projections generated in the test based on random projections
fanova1$TRP$data.projections
# only three tests with non-default parameters
set.seed(123)
fanova2 <- fanova.tests(x.gait, group.label.gait,
test = c("FP", "GPF", "Fmaxb"),
params = list(paramFP = list(int = c(0.025, 0.975),
B.FP = 1000, basis = "b-spline",
criterion = "eBIC",
commonK = "mean",
minK = 5, maxK = 20,
norder = 4, gamma.eBIC = 0.7),
paramFmaxb = 1000))
summary(fanova2)
# the FP test with predefined basis function representation
library(fda)
fbasis <- create.bspline.basis(rangeval = c(0.025, 0.975), 19, norder = 4)
own.basis <- Data2fd(seq(0.025, 0.975, length = 20), x.gait, fbasis)$coefs
own.cross.prod.mat <- inprod(fbasis, fbasis)
set.seed(123)
fanova3 <- fanova.tests(group.label = group.label.gait, test = "FP",
params = list(paramFP = list(B.FP = 1000, basis = "own",
own.basis = own.basis,
own.cross.prod.mat = own.cross.prod.mat)))
summary(fanova3)
# the tests based on random projections with the Gaussian white noise generated for projections
set.seed(123)
fanova4 <- fanova.tests(x.gait, group.label.gait, test = "TRP",
parallel = TRUE, nslaves = 2,
params = list(paramTRP = list(k = c(10, 20, 30), B.TRP = 1000)))
summary(fanova4)
set.seed(123)
fanova5 <- fanova.tests(x.gait, group.label.gait, test = "TRP",
parallel = TRUE, nslaves = 2,
params = list(paramTRP = list(k = c(10, 20, 30),
permutation = TRUE, B.TRP = 1000)))
summary(fanova5)
# the tests based on random projections with the Brownian motion generated for projections
set.seed(123)
fanova6 <- fanova.tests(x.gait, group.label.gait, test = "TRP",
parallel = TRUE, nslaves = 2,
params = list(paramTRP = list(k = c(10, 20, 30), projection = "BM",
B.TRP = 1000)))
summary(fanova6)
set.seed(123)
fanova7 <- fanova.tests(x.gait, group.label.gait, test = "TRP",
parallel = TRUE, nslaves = 2,
params = list(paramTRP = list(k = c(10, 20, 30), projection = "BM",
permutation = TRUE, B.TRP = 1000)))
summary(fanova7)