library(fda)
test_that("error for fdistmatrix", {
expect_error({
n <- 51
argvals <- seq(0, 1, len = n)
# The true curve values are sine function values with period 1/2
x <- sin(4 * pi * argvals)
# Add independent Gaussian errors with std. dev. 0.2 to the true values
sigerr <- 0.2
y <- x + rnorm(x) * sigerr
# When we ran this code, we got these values of y (rounded to two
# decimals):
y <- c(0.27, 0.05, 0.58, 0.91, 1.07, 0.98, 0.54, 0.94, 1.13, 0.64,
0.64, 0.60, 0.24, 0.15, -0.20, -0.63, -0.40, -1.22, -1.11, -0.76,
-1.11, -0.69, -0.54, -0.50, -0.35, -0.15, 0.27, 0.35, 0.65, 0.75,
0.75, 0.91, 1.04, 1.04, 1.04, 0.46, 0.30, -0.01, -0.19, -0.42,
-0.63, -0.78, -1.01, -1.08, -0.91, -0.92, -0.72, -0.84, -0.38, -0.23,
0.02)
# Set up a B-spline basis system of order 4 (piecewise cubic) and with
# knots at 0, 0.1, ..., 0.9 and 1.0, and plot the basis functions
nbasis <- 13
basisobj <- fda::create.bspline.basis(c(0, 1), nbasis)
# Smooth the data, outputting only the functional data object for the
# fitted curve. Note that in this simple case we can supply the basis
# object as the "fdParobj" parameter
ys <- fda::smooth.basis(argvals = argvals, y = y, fdParobj = basisobj)
fdistmatrix(ys)
}, "\"fd\" must be of class \"fd\"")
})
test_that("fdistmatrix is correct with usc", {
expect_equal({
# Examples taken from fda::Data2fd()
data(gait)
# Function only works on two dimensional data
gait <- gait[, 1:5, 1]
gaitbasis3 <- create.fourier.basis(nbasis = 5)
gaitfd3 <- suppressMessages(Data2fd(gait, basisobj = gaitbasis3))
a <- fdistmatrix(gaitfd3, c(0.2, 0.4), "usc")
signif(a, 7)
}, {
b <- matrix(c(0.000000, 1.508725, 2.702666, 2.959672, 6.555149,
1.508725, 0.000000, 2.089777, 3.740105, 7.326595,
2.702666, 2.089777, 0.000000, 5.570693, 9.180862,
2.959672, 3.740105, 5.570693, 0.000000, 3.643998,
6.555149, 7.326595, 9.180862, 3.643998, 0.000000), 5, 5)
colnames(b) <- rownames(b) <- paste0("boy", 1:5)
b
})
})
test_that("fdistmatrix is correct with manual", {
expect_equal({
# Examples taken from fda::Data2fd()
data(gait)
# Function only works on two dimensional data
gait <- gait[, 1:5, 1]
gaitbasis3 <- create.fourier.basis(nbasis = 5)
gaitfd3 <- suppressMessages(Data2fd(gait, basisobj = gaitbasis3))
a <- fdistmatrix(gaitfd3, c(0.2, 0.4), "manual")
signif(a, 7)
}, {
a <- matrix(c(0.000000, 1.453237, 2.703014, 2.982000, 6.553343,
1.453237, 0.000000, 2.112801, 3.733874, 7.296259,
2.703014, 2.112801, 0.000000, 5.603629, 9.191510,
2.982000, 3.733874, 5.603629, 0.000000, 3.611041,
6.553343, 7.296259, 9.191510, 3.611041, 0.000000), 5, 5)
colnames(a) <- rownames(a) <- paste0("boy", 1:5)
a
})
})
detach("package:fda")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.