1
2context("PCA")
3
4test_that("general data conversions", {
5    irisData <- as(iris[, 1:4], "dimRedData")
6    expect_equal(class(irisData)[1], "dimRedData")
7
8    irisParsCS <- list(center = TRUE,  scale. = TRUE)
9    irisParsC  <- list(center = TRUE,  scale. = FALSE)
10    irisParsS  <- list(center = FALSE, scale. = TRUE)
11    irisPars   <- list(center = FALSE, scale. = FALSE)
12
13    irisResCS <- do.call(function(...) embed(irisData, "PCA", ...), irisParsCS)
14    irisResS  <- do.call(function(...) embed(irisData, "PCA", ...), irisParsS)
15    irisResC  <- do.call(function(...) embed(irisData, "PCA", ...), irisParsC)
16    irisRes   <- do.call(function(...) embed(irisData, "PCA", ...), irisPars)
17
18    expect_equal(2, getNDim(irisResCS))
19    expect_equal(2, getNDim(irisResS))
20    expect_equal(2, getNDim(irisResC))
21    expect_equal(2, getNDim(irisRes))
22
23    expect_equal(class(irisResCS)[1], "dimRedResult")
24    expect_equal(class(irisResS)[1],  "dimRedResult")
25    expect_equal(class(irisResC)[1],  "dimRedResult")
26    expect_equal(class(irisRes)[1],   "dimRedResult")
27
28    expect_equal(irisResCS@apply(irisData), irisResCS@data)
29    expect_equal(irisResS@apply(irisData),  irisResS@data)
30    expect_equal(irisResC@apply(irisData),  irisResC@data)
31    expect_equal(irisRes@apply(irisData),   irisRes@data)
32
33    expect(sqrt(mean(
34            (irisResCS@inverse(irisResCS@data)@data - irisData@data) ^ 2
35        )) < 0.3,
36        "error too large"
37    )
38    expect(sqrt(mean(
39            (irisResS@inverse(irisResS@data)@data   - irisData@data) ^ 2
40        )) < 0.3,
41        "error too large"
42    )
43    expect(sqrt(mean(
44            (irisResC@inverse(irisResC@data)@data   - irisData@data) ^ 2
45        )) < 0.3,
46        "error too large"
47    )
48    expect(sqrt(mean(
49            (irisRes@inverse(irisRes@data)@data     - irisData@data) ^ 2
50        )) < 0.3,
51        "error too large"
52    )
53
54    scale2 <- function(x, center, scale.) scale(x, center, scale.)
55    expect_equal(
56      do.call(function(...) scale2(iris[1:4], ...) %*% getRotationMatrix(irisResCS), irisParsCS),
57      getData( getDimRedData(irisResCS) )
58    )
59    expect_equal(
60      do.call(function(...) scale2(iris[1:4], ...) %*% getRotationMatrix(irisResS), irisParsS),
61      getData( getDimRedData(irisResS) )
62    )
63    expect_equal(
64      do.call(function(...) scale2(iris[1:4], ...) %*% getRotationMatrix(irisResC), irisParsC),
65      getData( getDimRedData(irisResC) )
66    )
67    expect_equal(
68      do.call(function(...) scale2(iris[1:4], ...) %*% getRotationMatrix(irisRes), irisPars),
69      getData( getDimRedData(irisRes) )
70    )
71})
72