[Mboost-commits] r850 - pkg/mboostDevel/R

noreply at r-forge.r-project.org noreply at r-forge.r-project.org
Wed Apr 22 14:35:23 CEST 2015


Author: hofner
Date: 2015-04-22 14:35:22 +0200 (Wed, 22 Apr 2015)
New Revision: 850

Modified:
   pkg/mboostDevel/R/bl.R
Log:
(X_bbs) make sure to compute design matrix only once; issue warnings/errors if data outside boundary knots

Modified: pkg/mboostDevel/R/bl.R
===================================================================
--- pkg/mboostDevel/R/bl.R	2015-04-22 12:35:20 UTC (rev 849)
+++ pkg/mboostDevel/R/bl.R	2015-04-22 12:35:22 UTC (rev 850)
@@ -216,13 +216,14 @@
 
     stopifnot(is.data.frame(mf))
     mm <- lapply(which(colnames(mf) != vary), function(i) {
-        X <- bsplines(mf[[i]],
-                      knots = args$knots[[i]]$knots,
-                      boundary.knots = args$knots[[i]]$boundary.knots,
-                      degree = args$degree,
-                      Ts_constraint = args$Ts_constraint,
-                      deriv = args$deriv)
-        if (args$cyclic) {
+        if (!args$cyclic) {
+            X <- bsplines(mf[[i]],
+                          knots = args$knots[[i]]$knots,
+                          boundary.knots = args$knots[[i]]$boundary.knots,
+                          degree = args$degree,
+                          Ts_constraint = args$Ts_constraint,
+                          deriv = args$deriv)
+        } else { ## if cyclic spline
             X <- cbs(mf[[i]],
                      knots = args$knots[[i]]$knots,
                      boundary.knots = args$knots[[i]]$boundary.knots,
@@ -565,8 +566,13 @@
 }
 
 ### cyclic B-splines
-### adapted version of mgcv:cSplineDes from S.N. Wood
+### adapted version of mgcv::cSplineDes from S.N. Wood
 cbs <- function (x, knots, boundary.knots, degree = 3, deriv = 0L) {
+
+    if (any(x < boundary.knots[1]) | any(x > boundary.knots[2]))
+        stop("some ", sQuote("x"), " values are beyond ",
+             sQuote("boundary.knots"))
+
     nx <- names(x)
     x <- as.vector(x)
     ## handling of NAs
@@ -607,6 +613,11 @@
 
 bsplines <- function(x, knots, boundary.knots, degree,
                      Ts_constraint = "none", deriv = 0L){
+
+    if (any(x < boundary.knots[1]) | any(x > boundary.knots[2]))
+        warning("some ", sQuote("x"), " values are beyond ",
+                sQuote("boundary.knots"))
+
     nx <- names(x)
     x <- as.vector(x)
     ## handling of NAs



More information about the Mboost-commits mailing list