###
### Note: The "CovarianceMatrix", "Variance" and "VarCovar" classes were
### deprecated in 1.4-0. To be removed in 2.0-0.
### Covariance matrix
setClass("CovarianceMatrix",
slots = c(
covariance = "matrix"
)
)
### Variance only
setClass("Variance",
slots = c(
variance = "numeric"
)
)
### Virtual class for covariance and variance
setClassUnion("VarCovar",
members = c("CovarianceMatrix", "Variance")
)
###
### Class for raw data: a set of 'x' variables and a set of 'y' variables,
### possibly blocked and with weights
setClass("IndependenceProblem",
slots = c(
x = "data.frame",
y = "data.frame",
block = "factor",
weights = "numeric" ### this should be integer
),
validity = function(object) {
dims <- ((nrow(object@x) == nrow(object@y)) &&
(nrow(object@x) == length(object@block)))
dims <- dims && (length(object@block) == length(object@weights))
Wint <- max(abs(object@weights - floor(object@weights))) < sqrt_eps
block <- all(table(object@block) > 1L)
NAs <- all(complete.cases(object@x) & complete.cases(object@y))
(dims && block) && (NAs && Wint)
}
)
### Class for transformed data, the 'x' variables are transformed
### to a (n x p) matrix 'xtrans' and the 'y' variables to 'ytrans' (n x q).
### 'scores' is a matrix of scores
setClass("IndependenceTestProblem",
contains = "IndependenceProblem",
slots = c(
xtrans = "matrix",
ytrans = "matrix",
xtrafo = "function",
ytrafo = "function"
),
validity = function(object)
(storage.mode(object@xtrans) == "double" &&
storage.mode(object@ytrans) == "double")
)
### Linear statistic, expectation and covariance according to
### Strasser & Weber (1999)
setClass("IndependenceLinearStatistic",
contains = "IndependenceTestProblem",
slots = c(
linearstatistic = "matrix",
expectation = "matrix",
covariance = "matrix"
)
)
### Tests based on linear statistics
setClass("IndependenceTestStatistic",
contains = c("VIRTUAL", "IndependenceLinearStatistic"),
slots = c(
teststatistic = "numeric",
standardizedlinearstatistic = "numeric"
)
)
### teststatistic = standardizedlinearstatistic
setClass("ScalarIndependenceTestStatistic",
contains = "IndependenceTestStatistic",
slots = c(
alternative = "character",
paired = "logical"
),
validity = function(object)
object@alternative %in% c("two.sided", "less", "greater")
)
### teststatistic = max(abs(standardizedlinearstatistic))
setClass("MaxTypeIndependenceTestStatistic",
contains = "IndependenceTestStatistic",
slots = c(
alternative = "character"
),
validity = function(object)
object@alternative %in% c("two.sided", "less", "greater")
)
### teststatistic = quadform(linearstatistic)
setClass("QuadTypeIndependenceTestStatistic",
contains = "IndependenceTestStatistic",
slots = c(
covarianceplus = "numeric",
df = "numeric",
paired = "logical"
)
)
### p-values
setClass("PValue",
slots = c(
pvalue = "function",
p = "function",
name = "character"
),
prototype = list(
pvalue = function(q) NA,
p = function(q) NA,
name = NA_character_
)
)
### Null distribution
setClass("NullDistribution",
contains = "PValue",
slots = c(
size = "function",
pvalueinterval = "function",
midpvalue = "function",
q = "function",
d = "function",
support = "function",
parameters = "list"
),
prototype = list(
size = function(alpha, type) NA,
pvalueinterval = function(q) NA,
midpvalue = function(q) NA,
q = function(p) NA,
d = function(x) NA,
support = function() NA,
parameters = list()
)
)
### There are essentially three types of null distributions:
setClass("AsymptNullDistribution",
contains = "NullDistribution",
slots = c(
seed = "integer"
)
)
setClass("ApproxNullDistribution",
contains = "NullDistribution",
slots = c(
seed = "integer",
nresample = "numeric"
)
)
setClass("ExactNullDistribution",
contains = "NullDistribution"
)
### the "fitted" test including data and everything
setClass("IndependenceTest",
slots = c(
distribution = "PValue", # was: "NullDistribution",
statistic = "IndependenceTestStatistic",
estimates = "list",
method = "character",
call = "call"
),
prototype = list(method = "General Independence Test")
)
### the "fitted" test for scalar linear statistics
setClass("ScalarIndependenceTest",
contains = "IndependenceTest",
slots = c(
parameter = "character",
nullvalue = "numeric"
),
prototype = list(parameter = "mu"),
validity = function(object)
inherits(object@statistic, "ScalarIndependenceTestStatistic")
)
### possibly with confidence intervals
setClass("ScalarIndependenceTestConfint",
contains = "ScalarIndependenceTest",
slots = c(
confint = "function",
conf.level = "numeric"
)
)
### max type test statistics
setClass("MaxTypeIndependenceTest",
contains = "IndependenceTest",
validity = function(object)
inherits(object@statistic, "MaxTypeIndependenceTestStatistic")
)
### quad form test statistics
setClass("QuadTypeIndependenceTest",
contains = "IndependenceTest",
validity = function(object)
inherits(object@statistic, "QuadTypeIndependenceTestStatistic")
)
### SymmetryProblems
setClass("SymmetryProblem",
contains = "IndependenceProblem",
validity = function(object) {
if (ncol(object@x) != 1L || !is.factor(object@x[[1L]]))
stop(sQuote("x"), " slot does not contain a single factor")
if (!is_completeblock(object))
stop(sQuote("object"),
" is not a an unreplicated complete block design")
TRUE
}
)