library(cpr)
################################################################################
# Test that cpr reduces an inital control polygon as expected #
set.seed(42)
x <- seq(0 + 1/5000, 6 - 1/5000, length.out = 100)
bmat <- bsplines(x, iknots = c(1, 1.5, 2.3, 4, 4.5), bknots = c(0, 6))
theta <- matrix(c(1, 0, 3.5, 4.2, 3.7, -0.5, -0.7, 2, 1.5), ncol = 1)
DF <- data.frame(x = x, truth = as.numeric(bmat %*% theta))
DF$y <- as.numeric(bmat %*% theta + rnorm(nrow(bmat), sd = 0.3))
initial_cp <-
cp(y ~ bsplines(x, iknots = c(1, 1.5, 2.3, 3.0, 4, 4.5), bknots = c(0, 6))
, data = DF
, keep_fit = TRUE # default is FALSE
)
#summary(influence_of_iknots(initial_cp))
first_reduction_cp <- cp(y ~ bsplines(x, iknots = c(1, 1.5, 2.3, 3, 4.5), bknots = c(0, 6)), data = DF)
#summary(influence_of_iknots(first_reduction_cp))
second_reduction_cp <- cp(y ~ bsplines(x, iknots = c(1, 1.5, 3, 4.5), bknots = c(0, 6)), data = DF)
#summary(influence_of_iknots(second_reduction_cp))
third_reduction_cp <- cp(y ~ bsplines(x, iknots = c(1, 3, 4.5), bknots = c(0, 6)), data = DF)
#summary(influence_of_iknots(third_reduction_cp))
fourth_reduction_cp <- cp(y ~ bsplines(x, iknots = c(1, 4.5), bknots = c(0, 6)), data = DF)
#summary(influence_of_iknots(fourth_reduction_cp))
fifth_reduction_cp <- cp(y ~ bsplines(x, iknots = 4.5, bknots = c(0, 6)), data = DF)
#summary(influence_of_iknots(fifth_reduction_cp))
sixth_reduction_cp <- cp(y ~ bsplines(x, bknots = c(0, 6)), data = DF)
#summary(influence_of_iknots(sixth_reduction_cp))
cpr0 <- cpr(initial_cp)
stopifnot(isTRUE(all.equal( cpr0[[7]][["cp"]], initial_cp[["cp"]])))
stopifnot(isTRUE(all.equal( cpr0[[6]][["cp"]], first_reduction_cp[["cp"]])))
stopifnot(isTRUE(all.equal( cpr0[[5]][["cp"]], second_reduction_cp[["cp"]])))
stopifnot(isTRUE(all.equal( cpr0[[4]][["cp"]], third_reduction_cp[["cp"]])))
stopifnot(isTRUE(all.equal( cpr0[[3]][["cp"]], fourth_reduction_cp[["cp"]])))
stopifnot(isTRUE(all.equal( cpr0[[2]][["cp"]], fifth_reduction_cp[["cp"]])))
stopifnot(isTRUE(all.equal( cpr0[[1]][["cp"]], sixth_reduction_cp[["cp"]])))
################################################################################
# summary
s <- summary(cpr0)
stopifnot(identical(nrow(s), 7L))
stopifnot(identical(names(s), c("dfs", "n_iknots", "iknots", "loglik", "rss", "rse", "wiggle", "fdsc", "Pr(>w_(1))")))
stopifnot(isTRUE(all.equal(
structure(c(3, 3, 3, 3, 3, 3), dim = 2:3, dimnames = list(c("quadratic", "linear"), c("loglik", "rss", "rse")))
,
attr(s, "elbow")
)
)
)
################################################################################
# test that there is an error in the plotting method if type is not valid
e <- try(plot(cpr_run, type = "not-a-type"), silent = TRUE)
stopifnot(inherits(e, "try-error"))
################################################################################
# print method returns the object
printed <- print(cpr0)
stopifnot(identical(printed, cpr0))
################################################################################
### End of File ###
################################################################################
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.