knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) options(crs.messages = FALSE)
This vignette is meant to be the minimal package-side introduction to crs.
It focuses on one clean first run and a simple reminder of where spline
methods fit relative to the rest of the ecosystem.
Longer conceptual and tuning material is better carried by the gallery site:
library(crs) set.seed(42) n <- 250 x1 <- runif(n) x2 <- runif(n) y <- sin(2 * pi * x1) + x2 + rnorm(n, sd = 0.2) dat <- data.frame(y, x1, x2) fit <- crs(y ~ x1 + x2, data = dat) summary(fit)
plot(x1, y, cex = 0.35, col = "grey") grid_x1 <- seq(min(x1), max(x1), length.out = 200) newdata <- data.frame( x1 = grid_x1, x2 = mean(x2) ) pred <- predict(fit, newdata = newdata) lines(grid_x1, pred, col = 2, lwd = 2)
crsUse crs when regression splines, derivative structure, or shape restrictions
are the natural tool. For kernel-based workflows, see the np package
instead.
Two common next stops after this first vignette are:
?crssigtest for spline significance testing,If cross-validated spline search feels expensive, begin by confirming the modeling problem on a smaller example first. Then narrow the search only if needed by restricting options such as degree or knot complexity.
It is also useful to remember that crs contains simple linear-regression-style
specifications as special cases when the basis is restricted appropriately.
?crs and ?crssigtest for help pagesdemo(package = "crs")Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.