### runit.jackknife.R: test functions for jackknifing
### By Bjørn-Helge Mevik
### Started 2007-08-02
## test.var.jack: Check dimensions of var.jack return value
test.var.jack <- function() {
## Single-response model, CV:
npred <- ncol(gasoline$NIR)
nresp <- 1
mod <- mvr(octane ~ NIR, ncomp = 5, data = gasoline, validation = "CV",
jackknife = TRUE)
## Dimensions
checkEquals(dim(var.jack(mod)), c(npred, nresp, 1))
checkEquals(dim(var.jack(mod, ncomp = 1:4)), c(npred, nresp, 4))
## Dimensions, with covariance
checkEquals(dim(var.jack(mod, covariance = TRUE)),
c(npred*nresp, npred*nresp, 1))
checkEquals(dim(var.jack(mod, ncomp = 1:2, covariance = TRUE)),
c(npred*nresp, npred*nresp, 2))
## Multi-response model, LOO:
npred <- ncol(oliveoil$chemical)
nresp <- ncol(oliveoil$sensory)
mod <- mvr(sensory ~ chemical, data = oliveoil, validation = "LOO",
jackknife = TRUE, ncomp = 4)
## Dimensions
checkEquals(dim(var.jack(mod)), c(npred, nresp, 1))
checkEquals(dim(var.jack(mod, ncomp = 1:4)), c(npred, nresp, 4))
## Dimensions, with covariance
checkEquals(dim(var.jack(mod, covariance = TRUE)),
c(npred*nresp, npred*nresp, 1))
checkEquals(dim(var.jack(mod, ncomp = 1:2, covariance = TRUE)),
c(npred*nresp, npred*nresp, 2))
}
## test.jack.test: Test output from jack.test
test.jack.test <- function() {
## Single-response model, CV:
npred <- ncol(gasoline$NIR)
nresp <- 1
mod <- mvr(octane ~ NIR, ncomp = 6, data = gasoline, validation = "CV",
jackknife = TRUE)
## Things to change:
## ncomp (== object$ncomp, length > 1)
## use.mean (FALSE/TRUE)
for (nc in list(6, 4:5)) {
for (use.mean in c(FALSE, TRUE)) {
res <- if (length(nc) == 1)
jack.test(mod, use.mean = use.mean)
else
jack.test(mod, ncomp = nc, use.mean = use.mean)
## Check for all finite values:
checkTrue(all(sapply(res, function(x) all(is.finite(x)))),
paste("uniresp", length(nc), use.mean, "finite"))
}
}
## Multi-response model, LOO:
npred <- ncol(oliveoil$chemical)
nresp <- ncol(oliveoil$sensory)
mod <- mvr(sensory ~ chemical, data = oliveoil, validation = "LOO",
jackknife = TRUE, ncomp = 5)
## Things to change:
## ncomp (== object$ncomp, length > 1)
## use.mean (FALSE/TRUE)
for (nc in list(6, 3:4)) {
for (use.mean in c(FALSE, TRUE)) {
res <- if (length(nc) == 1)
jack.test(mod, use.mean = use.mean)
else
jack.test(mod, ncomp = nc, use.mean = use.mean)
## Check for all finite values:
checkTrue(all(sapply(res, function(x) all(is.finite(x)))),
paste("uniresp", length(nc), use.mean, "finite"))
}
}
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.