[Mboost-commits] r864 - / pkg/mboostDevel pkg/mboostDevel/R pkg/mboostDevel/inst pkg/mboostDevel/man pkg/mboostDevel/src pkg/mboostDevel/tests pkg/mboostDevel/tests/Examples pkg/mboostPatch pkg/mboostPatch/R pkg/mboostPatch/inst pkg/mboostPatch/man

noreply at r-forge.r-project.org noreply at r-forge.r-project.org
Wed Sep 16 13:22:22 CEST 2015


Author: hofner
Date: 2015-09-16 13:22:21 +0200 (Wed, 16 Sep 2015)
New Revision: 864

Added:
   pkg/mboostDevel/man/plot.Rd
   pkg/mboostDevel/src/mboost.o
   pkg/mboostDevel/src/mboostDevel.so
   pkg/mboostDevel/tests/Examples/mboost-Ex.Rout.save
Modified:
   .travis.yml
   README.md
   pkg/mboostDevel/DESCRIPTION
   pkg/mboostDevel/R/bkronecker.R
   pkg/mboostDevel/R/bl.R
   pkg/mboostDevel/R/bmono.R
   pkg/mboostDevel/R/family.R
   pkg/mboostDevel/R/helpers.R
   pkg/mboostDevel/R/mboost.R
   pkg/mboostDevel/R/methods.R
   pkg/mboostDevel/R/plot.R
   pkg/mboostDevel/inst/CITATION
   pkg/mboostDevel/inst/NEWS.Rd
   pkg/mboostDevel/man/Family.Rd
   pkg/mboostDevel/man/baselearners.Rd
   pkg/mboostDevel/man/confint.Rd
   pkg/mboostDevel/man/glmboost.Rd
   pkg/mboostDevel/man/mboost.Rd
   pkg/mboostDevel/man/mboost_package.Rd
   pkg/mboostDevel/man/methods.Rd
   pkg/mboostDevel/man/stabsel.Rd
   pkg/mboostDevel/tests/bugfixes.R
   pkg/mboostPatch/DESCRIPTION
   pkg/mboostPatch/NAMESPACE
   pkg/mboostPatch/R/bl.R
   pkg/mboostPatch/R/btree.R
   pkg/mboostPatch/R/helpers.R
   pkg/mboostPatch/inst/NEWS.Rd
   pkg/mboostPatch/man/mboost_package.Rd
   svn_release.txt
Log:
Merge latest changes of github to r-forge

Modified: .travis.yml
===================================================================
--- .travis.yml	2015-09-07 14:33:55 UTC (rev 863)
+++ .travis.yml	2015-09-16 11:22:21 UTC (rev 864)
@@ -1,17 +1,23 @@
 ## check development version of mboost
 ## see http://docs.travis-ci.com/user/languages/r/
 
+## test multiple directories 
+## (see https://lord.io/blog/2014/travis-multiple-subdirs/)
+env:
+ - TEST_DIR=pkg/mboostPatch
+ - TEST_DIR=pkg/mboostDevel
+
 language: r
-
 sudo: required
 
 before_install:
   - sudo apt-get update -qq
-  - sudo apt-get install latex-xcolor
-  - cd pkg/mboostPatch
+  - sudo apt-get install latex-xcolor texlive-generic-recommended texlive-fonts-recommended texlive-fonts-extra texlive-extra-utils texlive-latex-recommended texlive-latex-extra
+  - cd $TEST_DIR
 
 r_github_packages:
   - hofnerb/stabs
+  - hofnerb/gamboostLSS/patch
   
 after_failure:
   - ./travis-tool.sh dump_logs

Modified: README.md
===================================================================
--- README.md	2015-09-07 14:33:55 UTC (rev 863)
+++ README.md	2015-09-16 11:22:21 UTC (rev 864)
@@ -2,10 +2,11 @@
 ======
 
 [![Build Status](https://travis-ci.org/hofnerb/mboost.svg?branch=master)](https://travis-ci.org/hofnerb/mboost)
+[![CRAN Status Badge](http://www.r-pkg.org/badges/version/mboost)](http://cran.r-project.org/package=mboost)
 [![](http://cranlogs.r-pkg.org/badges/mboost)](http://cran.rstudio.com/web/packages/mboost/index.html)
 
-`mboost` implements boosting algorithms for fitting generalized linear, additive and interaction models
-to potentially high-dimensional data.
+`mboost` implements boosting algorithms for fitting generalized linear, additive and interaction models 
+to potentially high-dimensional data. 
 
 This [GitHub repository](https://github.com/hofnerb/mboost) is essentially just
 a copy of the r-forge repository which is hosted at
@@ -27,39 +28,44 @@
 
 ## Installation Instructions
 
-- Current version (from CRAN):
-  ```
+- Current version (from CRAN): 
+  ```r
   install.packages("mboost")
   ```
 
 - Latest **patch version** (under development) from GitHub:
-  ```
+  ```r
   library("devtools")
   install_github("hofnerb/mboost/pkg/mboostPatch")
   library("mboost")
   ```
 
 - Latest **development version** from GitHub:
-  ```
+  ```r
   library("devtools")
   install_github("hofnerb/mboost/pkg/mboostDevel")
   library("mboostDevel")
   ```
 
   To be able to use the `install_github()` command, one needs to install `devtools` first:
-  ```
+  ```r
   install.packages("devtools")
   ```
 
-- Alternatively, both the current patch and development versions of `mboost` (or `mboostDevel` respectively)
+- Alternatively, both the current patch and development versions of `mboost` (or `mboostDevel` respectively) 
   can be downloaded from R-forge if it was successfully built:
-  ```
+  ```r
   install.packages("mboost", repos = "http://r-forge.r-project.org")
   ## or
   install.packages("mboostDevel", repos = "http://r-forge.r-project.org")
   ```
   However, currently these builds often don't succeed and furthermore are only available
   for recent versions of R.
-
+  
 [inst]: inst
 
+Instructions on how to use `mboost` can be found in various places:
+- Have a look at the tutorials:
+  - [mboost tutorial](http://cran.r-project.org/web/packages/mboost/vignettes/mboost_tutorial.pdf)
+  - [mboost 2.0](http://cran.r-project.org/web/packages/mboost/vignettes/mboost.pdf)
+- Visit the [project homepage](http://mboost.r-forge.r-project.org/) and see further tutorials and references there.

Modified: pkg/mboostDevel/DESCRIPTION
===================================================================
--- pkg/mboostDevel/DESCRIPTION	2015-09-07 14:33:55 UTC (rev 863)
+++ pkg/mboostDevel/DESCRIPTION	2015-09-16 11:22:21 UTC (rev 864)
@@ -1,13 +1,13 @@
 Package: mboostDevel
 Title: Model-Based Boosting
-Version: 2.5-0
+Version: 2.6-0
 Date: 2015-xx-yy
-Authors at R: c(person("Torsten", "Hothorn", role = c("aut", "cre"),
-                    email = "Torsten.Hothorn at R-project.org"),
+Authors at R: c(person("Torsten", "Hothorn", role = "aut"),
              person("Peter", "Buehlmann", role = "aut"),
              person("Thomas", "Kneib", role = "aut"),
              person("Matthias", "Schmid", role = "aut"),
-             person("Benjamin", "Hofner", role = "aut"),
+             person("Benjamin", "Hofner", role = c("aut", "cre"),
+	            email = "benjamin.hofner at fau.de"),
              person("Fabian", "Sobotka", role = "ctb"),
              person("Fabian", "Scheipl", role = "ctb"))
 Description: Functional gradient descent algorithm
@@ -17,9 +17,10 @@
   and interaction models to potentially high-dimensional data.
 Depends: R (>= 2.14.0), methods, stats, parallel, stabs (>= 0.5-0)
 Imports: Matrix, survival, splines, lattice, nnls, quadprog, utils,
- 	graphics, grDevices
+	graphics, grDevices
 Suggests: party (>= 1.0-3), TH.data, MASS, fields, BayesX, gbm, mlbench,
         RColorBrewer, rpart (>= 4.0-3), randomForest, nnet
 LazyData: yes
 License: GPL-2
-URL: http://mboost.r-forge.r-project.org/
+BugReports: https://github.com/hofnerb/mboost/issues
+URL: http://mboost.r-forge.r-project.org/, https://github.com/hofnerb/mboost

Modified: pkg/mboostDevel/R/bkronecker.R
===================================================================
--- pkg/mboostDevel/R/bkronecker.R	2015-09-07 14:33:55 UTC (rev 863)
+++ pkg/mboostDevel/R/bkronecker.R	2015-09-16 11:22:21 UTC (rev 864)
@@ -10,14 +10,7 @@
 
     newX <- function(newdata = NULL, prediction = FALSE) {
         if (!is.null(newdata)) {
-            if (!all(names(blg) %in% names(newdata)))
-                stop("Variable(s) missing in ", sQuote("newdata"), ":\n\t",
-                     names(blg)[!names(blg) %in% names(newdata)])
-            # stopifnot(all(class(newdata) == class(mf)))
-            nm <- names(blg)
-            if (any(duplicated(nm)))  ## removes duplicates
-                nm <- unique(nm)
-            mf <- newdata[nm]
+            mf <- check_newdata(newdata, blg, mf, to.data.frame = FALSE)
         }
         ## this argument is currently only used in X_bbs --> bsplines
         args$prediction <- prediction
@@ -41,7 +34,7 @@
 
     dpp <- function(weights) {
 
-        if (!is.null(attr(X$X1, "deriv")) || !is.null(attr(X$X2, "deriv")))
+        if (!is.null(attr(X$X1, "deriv")) || !is.null(attr(X$X2, "deriv"))) 
             stop("fitting of derivatives of B-splines not implemented")
 
         W <- matrix(weights, nrow = n1, ncol = n2)
@@ -53,7 +46,7 @@
         XtX <- array(XtX, c(c1, c1, c2, c2))
         XtX <- mymatrix(aperm(XtX, c(1, 3, 2, 4)), nrow = c1 * c2)
 
-        ### If lambda was given in both baselearners, we
+        ### If lambda was given in both baselearners, we 
         ### directly multiply the marginal penalty matrices by lambda
         ### and then compute the total penalty as the kronecker sum.
         ### args$lambda is NA in this case and we don't compute
@@ -74,10 +67,10 @@
         XtX <- XtX + K
 
         ### nnls
-        constr <- (!is.null(attr(X$X1, "constraint"))) +
+        constr <- (!is.null(attr(X$X1, "constraint"))) + 
                   (!is.null(attr(X$X2, "constraint")))
 
-        if (constr == 2)
+        if (constr == 2) 
             stop("only one dimension may be subject to constraints")
         constr <- constr > 0
 
@@ -142,8 +135,6 @@
             cf <- lapply(bm, function(x) x$model)
             if(!is.null(newdata)) {
                 index <- NULL
-                nm <- names(blg)
-                newdata <- newdata[nm]
                 X <- newX(newdata, prediction = TRUE)$X
             }
             ncfprod <- function(b)
@@ -234,7 +225,7 @@
     l1 <- args1$lambda
     l2 <- args2$lambda
     if (xor(is.null(l1), is.null(l2)))
-        stop("lambda needs to be given in both baselearners combined with ",
+        stop("lambda needs to be given in both baselearners combined with ", 
              sQuote("%O%"))
     if (!is.null(l1) && !is.null(l2)) {
         ### there is no common lambda!

Modified: pkg/mboostDevel/R/bl.R
===================================================================
--- pkg/mboostDevel/R/bl.R	2015-09-07 14:33:55 UTC (rev 863)
+++ pkg/mboostDevel/R/bl.R	2015-09-16 11:22:21 UTC (rev 864)
@@ -228,11 +228,11 @@
     stopifnot(is.data.frame(mf))
     mm <- lapply(which(colnames(mf) != vary), function(i) {
         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,
+        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, extrapolation = args$prediction)
         } else { ## if cyclic spline
             X <- cbs(mf[[i]],
@@ -714,17 +714,7 @@
 
     newX <- function(newdata = NULL, prediction = FALSE) {
         if (!is.null(newdata)) {
-            if (!all(names(blg) %in% names(newdata)))
-                stop("Variable(s) missing in ", sQuote("newdata"), ":\n\t",
-                     names(blg)[!names(blg) %in% names(newdata)])
-            if (!all(class(newdata) == class(mf)))
-                stop(sQuote("newdata"),
-                     " must have the same class as the original data:\n\t",
-                     class(mf))
-            nm <- names(blg)
-            if (any(duplicated(nm)))  ## removes duplicates
-                nm <- unique(nm)
-            mf <- newdata[, nm, drop = FALSE]
+            mf <- check_newdata(newdata, blg, mf)
         }
         ## this argument is currently only used in X_bbs --> bsplines
         args$prediction <- prediction
@@ -806,15 +796,13 @@
         ### prepare for computing predictions
         predict <- function(bm, newdata = NULL, aggregate = c("sum", "cumsum", "none")) {
             cf <- sapply(bm, coef)
-            if (!is.matrix(cf)) cf <- matrix(cf, nrow = 1)
+            if (!is.matrix(cf))
+                cf <- matrix(cf, nrow = 1)
             if(!is.null(newdata)) {
                 index <- NULL
-                nm <- names(blg)
-                if (any(duplicated(nm)))  ## removes duplicates
-                    nm <- unique(nm)
-                newdata <- newdata[,nm, drop = FALSE]
-                ### option
-                if (nrow(newdata) > options("mboost_indexmin")[[1]]) {
+                ## Use sparse data represenation if data set is huge
+                ## and a data.frame
+                if (is.data.frame(newdata) && nrow(newdata) > options("mboost_indexmin")[[1]]) {
                     index <- get_index(newdata)
                     newdata <- newdata[index[[1]],,drop = FALSE]
                     index <- index[[2]]
@@ -829,7 +817,8 @@
                                PACKAGE = "mboostDevel"), "matrix")
             },
             "none" = as(X %*% cf, "matrix"))
-            if (is.null(index)) return(pr[,,drop = FALSE])
+            if (is.null(index))
+                return(pr[ , , drop = FALSE])
             return(pr[index,,drop = FALSE])
         }
 

Modified: pkg/mboostDevel/R/bmono.R
===================================================================
--- pkg/mboostDevel/R/bmono.R	2015-09-07 14:33:55 UTC (rev 863)
+++ pkg/mboostDevel/R/bmono.R	2015-09-16 11:22:21 UTC (rev 864)
@@ -158,17 +158,7 @@
 
     newX <- function(newdata = NULL, prediction = FALSE) {
         if (!is.null(newdata)) {
-            if (!all(names(blg) %in% names(newdata)))
-                stop("Variable(s) missing in ", sQuote("newdata"), ":\n\t",
-                     names(blg)[!names(blg) %in% names(newdata)])
-            if (!all(class(newdata) == class(mf)))
-                stop(sQuote("newdata"),
-                     " must have the same class as the original data:\n\t",
-                     class(mf))
-            nm <- names(blg)
-            if (any(duplicated(nm)))  ## removes duplicates
-                nm <- unique(nm)
-            mf <- newdata[, nm, drop = FALSE]
+            mf <- check_newdata(newdata, blg, mf)
         }
         ## this argument is currently only used in X_bbs --> bsplines
         args$prediction <- prediction
@@ -346,10 +336,9 @@
             if (!is.matrix(cf)) cf <- matrix(cf, nrow = 1)
             if(!is.null(newdata)) {
                 index <- NULL
-                nm <- names(blg)
-                newdata <- newdata[,nm, drop = FALSE]
-                ### option
-                if (nrow(newdata) > options("mboost_indexmin")[[1]]) {
+                ## Use sparse data represenation if data set is huge
+                ## and a data.frame
+                if (is.data.frame(newdata) && nrow(newdata) > options("mboost_indexmin")[[1]]) {
                     index <- get_index(newdata)
                     newdata <- newdata[index[[1]],,drop = FALSE]
                     index <- index[[2]]
@@ -364,7 +353,8 @@
                                PACKAGE = "mboostDevel"), "matrix")
             },
             "none" = as(X %*% cf, "matrix"))
-            if (is.null(index)) return(pr[,,drop = FALSE])
+            if (is.null(index))
+                return(pr[, , drop = FALSE])
             return(pr[index,,drop = FALSE])
         }
 

Modified: pkg/mboostDevel/R/family.R
===================================================================
--- pkg/mboostDevel/R/family.R	2015-09-07 14:33:55 UTC (rev 863)
+++ pkg/mboostDevel/R/family.R	2015-09-16 11:22:21 UTC (rev 864)
@@ -71,8 +71,8 @@
            check_y = function(y) {
                if (!is.numeric(y) || !is.null(dim(y)))
                    stop("response is not a numeric vector but ",
-                        sQuote("family = Gaussian()")) 
-		       y
+                        sQuote("family = Gaussian()"))
+               y
            },
            name = "Squared Error (Regression)",
            fW = function(f) return(rep(1, length = length(f))),
@@ -397,9 +397,6 @@
     }
 
     offset <- function(y, w = 1) {
-        delta <<- seq(from = nuirange[1], to = nuirange[2],
-                      length = nlevels(y) - 1)
-        sigma <<- d2s(delta)
         optimize(risk, interval = offrange, y = y, w = w)$minimum
     }
 
@@ -412,14 +409,21 @@
                1 / (1 + exp(f - sigma[i - 1])))
             })
             ret
-        }
+    }
 
+    check_y <- function(y) {
+        if (!is.ordered(y))
+            stop("response must be an ordered factor")
+        ## initialize thresholds:
+        delta <<- seq(from = nuirange[1], to = nuirange[2],
+                      length = nlevels(y) - 1)
+        sigma <<- d2s(delta)
+        y
+    }
+
     Family(ngradient = ngradient,
            risk = risk, offset = offset,
-           check_y = function(y) {
-               stopifnot(is.ordered(y))
-               y
-           },
+           check_y = check_y,
            nuisance = function() return(sigma),
            response = response,
            rclass = function(f) apply(response(f), 1, which.max))
@@ -857,7 +861,7 @@
                y}, nuisance = function() return(sigma),
                name = "Hurdle model, negative binomial non-zero part",
                response = function(f) exp(f))
-} 
+}
 
 ### multinomial logit model
 ### NOTE: this family can't be applied out-of-the box
@@ -877,18 +881,18 @@
         as.vector(model.matrix(~ y - 1)[,-length(lev)])
     }
     return(Family(ngradient = function(y, f, w = 1) {
-               if (length(f) != length(y)) 
+               if (length(f) != length(y))
                    stop("predictor doesn't correspond to multinomial logit model; see ?Multinomial")
-               f <- pmin(abs(f), 36) * sign(f) 
+               f <- pmin(abs(f), 36) * sign(f)
                p <- matrix(exp(f), ncol = length(lev) - 1)
                p <- as.vector(p / (1 + rowSums(p)))
-               y - p  
+               y - p
            },
            loss = function(y, f) {
                f <- pmin(abs(f), 36) * sign(f)
                p <- matrix(exp(f), ncol = length(lev) - 1)
                p <- as.vector(p / (1 + rowSums(p)))
-               -y * log(p) 
+               -y * log(p)
            },
            offset = function(y, w) {
                return(rep(0, length(y)))

Modified: pkg/mboostDevel/R/helpers.R
===================================================================
--- pkg/mboostDevel/R/helpers.R	2015-09-07 14:33:55 UTC (rev 863)
+++ pkg/mboostDevel/R/helpers.R	2015-09-16 11:22:21 UTC (rev 864)
@@ -235,3 +235,31 @@
                    bvec = rep(0, nrow(D)))$solution
     cf
 }
+
+check_newdata <- function(newdata, blg, mf, to.data.frame = TRUE) {
+    nm <- names(blg)
+    if (!all(nm %in% names(newdata)))
+        stop(sQuote("newdata"),
+             " must contain all predictor variables,",
+             " which were used to specify the model.")
+    if (!class(newdata) %in% c("list", "data.frame"))
+        stop(sQuote("newdata"), " must be either a data.frame or a list")
+    if (any(duplicated(nm)))  ## removes duplicates
+        nm <- unique(nm)
+    cl1 <- sapply(newdata[nm], class)
+    cl2 <- sapply(mf, class)
+    if (!all(cl1 == cl2)) {
+        idx <- which(cl1 != cl2)
+        ## classes can be different when one is integer and the other is double
+        if (!all(sapply(newdata[nm][idx], is.numeric)) ||
+            !all(sapply(mf[idx], is.numeric)))
+            warning("Some variables in ", sQuote("newdata"),
+                    " do not have the same class as in the original data set",
+                    call. = FALSE)
+    }
+    ## subset data
+    mf <- newdata[nm]
+    if (is.list(mf) && to.data.frame)
+        mf <- as.data.frame(mf)
+    return(mf)
+}

Modified: pkg/mboostDevel/R/mboost.R
===================================================================
--- pkg/mboostDevel/R/mboost.R	2015-09-07 14:33:55 UTC (rev 863)
+++ pkg/mboostDevel/R/mboost.R	2015-09-16 11:22:21 UTC (rev 864)
@@ -589,9 +589,9 @@
     ### this function will be used for predictions later
     newX <- function(newdata) {
         mf <- model.frame(delete.response(attr(mf, "terms")),
-            data = newdata, na.action = na.pass)
-        X <- model.matrix(delete.response(attr(mf, "terms")), data = mf,
-                          contrasts.arg = contrasts.arg)
+                          data = newdata, na.action = na.pass)
+        X <- model.matrix(delete.response(attr(mf, "terms")),
+                          data = mf, contrasts.arg = contrasts.arg)
         scale(X, center = cm, scale = FALSE)
     }
 

Modified: pkg/mboostDevel/R/methods.R
===================================================================
--- pkg/mboostDevel/R/methods.R	2015-09-07 14:33:55 UTC (rev 863)
+++ pkg/mboostDevel/R/methods.R	2015-09-16 11:22:21 UTC (rev 864)
@@ -369,8 +369,11 @@
     cat("\n")
     cat("\t Model-based Boosting\n")
     cat("\n")
-    if (!is.null(x$call))
-    cat("Call:\n", deparse(x$call), "\n\n", sep = "")
+    if (!is.null(x$call)) {
+        if(length(deparse(x$call$data)) > 20)
+            x$call$data <- deparse(x$call$data, nlines = 1)
+        cat("Call:\n", deparse(x$call), "\n\n", sep = "")
+    }
     show(x$family)
     cat("\n")
     cat("Number of boosting iterations: mstop =", mstop(x), "\n")
@@ -387,8 +390,11 @@
     cat("\n")
     cat("\t Generalized Linear Models Fitted via Gradient Boosting\n")
     cat("\n")
-    if (!is.null(x$call))
-    cat("Call:\n", deparse(x$call), "\n\n", sep = "")
+    if (!is.null(x$call)) {
+        if(length(deparse(x$call$data)) > 20)
+            x$call$data <- deparse(x$call$data, nlines = 1)
+        cat("Call:\n", deparse(x$call), "\n\n", sep = "")
+    }
     show(x$family)
     cat("\n")
     cat("Number of boosting iterations: mstop =", mstop(x), "\n")

Modified: pkg/mboostDevel/R/plot.R
===================================================================
--- pkg/mboostDevel/R/plot.R	2015-09-07 14:33:55 UTC (rev 863)
+++ pkg/mboostDevel/R/plot.R	2015-09-16 11:22:21 UTC (rev 864)
@@ -41,8 +41,13 @@
         data <- model.frame(x, which = w)[[1]]
         get_vary <- x$baselearner[[w]]$get_vary
         vary <- ""
-        if (!is.null(get_vary)) vary <- get_vary()
-        if (!is.null(newdata)) data <- newdata[, colnames(data), drop = FALSE]
+        if (!is.null(get_vary))
+            vary <- get_vary()
+        if (!is.null(newdata)) {
+            data <- newdata[colnames(data)]
+            if (is.list(data))
+                data <- as.data.frame(data)
+        }
         if (vary != "") {
             v <- data[[vary]]
             if (is.factor(v)) v <- factor(levels(v)[-1], levels = levels(v))

Modified: pkg/mboostDevel/inst/CITATION
===================================================================
--- pkg/mboostDevel/inst/CITATION	2015-09-07 14:33:55 UTC (rev 863)
+++ pkg/mboostDevel/inst/CITATION	2015-09-16 11:22:21 UTC (rev 864)
@@ -1,6 +1,4 @@
 
-citHeader("To cite package 'mboost' in publications use:")
-
 year <- sub(".*(2[[:digit:]]{3})-.*", "\\1", meta$Date)
 vers <- paste("R package version", meta$Version)
 
@@ -14,27 +12,32 @@
          year = year,
          note = paste("{R} package version", vers),
          url = "http://CRAN.R-project.org/package=mboost",
-         textVersion =
-             paste("T. Hothorn, P. Buehlmann, T. Kneib, M. Schmid, and B. Hofner (",
-                   year,
-                   "). mboost: Model-Based Boosting, ",
-                   paste("R package version", vers),
-                   ", http://CRAN.R-project.org/package=mboost", ".",
-                   sep=""))
+         header = "To cite the package 'mboost' itself use:",
+         textVersion = paste(
+             "T. Hothorn, P. Buehlmann, T. Kneib, M. Schmid, and B. Hofner (",
+             year, "). mboost: Model-Based Boosting, ",
+             paste("R package version", vers),
+             ", http://CRAN.R-project.org/package=mboost", ".", sep = ""
+             )
+         )
 
 citEntry(entry="Article",
-         title = "Boosting Algorithms: Regularization, Prediction and Model Fitting (with Discussion)",
-         author = personList(as.person("Peter Buehlmann"), as.person("Torsten Hothorn")),
-         journal      = "Statistical Science",
-         year         = "2007",
-         volume       = "22",
-         number       = "4",
-         pages        = "477--505",
-
-         textVersion =
-         paste("Peter Buehlmann and Torsten Hothorn (2007).",
-               "Boosting Algorithms: Regularization, Prediction and Model Fitting (with Discussion).",
-               "Statistical Science, 22(4), 477-505."),
+         title = "Model-based Boosting in {R}: A Hands-on Tutorial Using the {R} Package mboost",
+         author = personList(as.person("Benjamin Hofner"),
+                             as.person("Andreas Mayr"),
+                             as.person("Nikolay Robinzonov"),
+                             as.person("Matthias Schmid")),
+         journal      = "Computational Statistics",
+         year         = "2014",
+         volume       = "29",
+         pages        = "3--35",
+         header = "A comprehensive tutorial is given in:",
+         textVersion = paste(
+             "Benjamin Hofner, Andreas Mayr, Nikolay Robinzonov,",
+             "Matthias Schmid (2014).",
+             "Model-based Boosting in R: A Hands-on Tutorial Using the R Package mboost.",
+             "Computational Statistics, 29, 3-35."
+             )
          )
 
 citEntry(entry="Article",
@@ -48,14 +51,29 @@
          year         = "2010",
          volume       = "11",
          pages        = "2109--2113",
+         header = "An overview of the implementation is given in:",
+         textVersion = paste(
+             "Torsten Hothorn, Peter Buehlmann, Thomas Kneib,",
+             "Matthias Schmid and Benjamin Hofner (2010).",
+             "Model-based Boosting 2.0.",
+             "Journal of Machine Learning Research, 11, 2109-2113."
+             )
+         )
 
-         textVersion =
-         paste("Torsten Hothorn, Peter Buehlmann, Thomas Kneib,",
-               "Matthias Schmid and Benjamin Hofner (2010).",
-               "Model-based Boosting 2.0.",
-               "Journal of Machine Learning Research, 11, 2109-2113."
-               ),
+citEntry(entry="Article",
+         title = "Boosting Algorithms: Regularization, Prediction and Model Fitting (with Discussion)",
+         author = personList(as.person("Peter Buehlmann"), as.person("Torsten Hothorn")),
+         journal      = "Statistical Science",
+         year         = "2007",
+         volume       = "22",
+         number       = "4",
+         pages        = "477--505",
+         header = "The theory and the package (until version 2.0) are described in:",
+         textVersion = paste(
+             "Peter Buehlmann and Torsten Hothorn (2007).",
+             "Boosting Algorithms: Regularization, Prediction and Model Fitting (with Discussion).",
+             "Statistical Science, 22(4), 477-505."
+             )
          )
 
-
-citFooter('Use ', sQuote('toBibtex(citation("mboost"))'), ' to extract BibTeX references.')
+citFooter('\nUse ', sQuote('toBibtex(citation("mboost"))'), ' to extract BibTeX references.')

Modified: pkg/mboostDevel/inst/NEWS.Rd
===================================================================
--- pkg/mboostDevel/inst/NEWS.Rd	2015-09-07 14:33:55 UTC (rev 863)
+++ pkg/mboostDevel/inst/NEWS.Rd	2015-09-16 11:22:21 UTC (rev 864)
@@ -1,31 +1,53 @@
 \name{NEWS}
 \title{News for Package 'mboost'}
 
-\section{Changes in mboost version 2.5-0 (2015-xx-yy)}{
+\section{Changes in mboost version 2.6-0 (2015-xx-yy)}{
   \subsection{User-visible changes}{
     \itemize{
       \item Strong speed-up of \code{stabsel.mboost}: We now only compute
       the model on each subsample until \code{q} variables were selected
       (or \code{mstop} is reached)
-      \item Better handling of errors in (single) folds of \code{cvrisk}:
-      results of folds without errors are used and a \code{warning} is
-      issued.
+    }
+  }
+}
+
+
+\section{Changes in mboost version 2.5-0 (2015-08-13)}{
+  \subsection{User-visible changes}{
+    \itemize{
+      \item Added documentation for \code{plot.mboost} function and moved
+      documentation of \code{plot.glmboost} to the same help page.
+      Resolves issue \href{https://github.com/hofnerb/mboost/issues/14}{#14}.
       \item \code{bbs} and \code{bmono} no longer allow data outside of
       the \code{boundary.knots} during model fitting.
       \item Predictions for \code{bbs} and \code{bmono} now use linear
       extrapolation (user request inspired by
       \code{mgcv::Predict.matrix.pspline.smooth}).
+      \item Better handling of errors in (single) folds of \code{cvrisk}:
+      results of folds without errors are used and a \code{warning} is
+      issued.
       \item Parallel computing via \code{mclapply}: Set
       \code{mc.preschedule = FALSE} per default.
+      \item Added new option \code{options(mboost_check_df2lambda =
+	TRUE)}, which controls if a stability check in \code{df2lambda}
+      is performed. If set to \code{FALSE} this might speed up the
+      computation of \code{df2lambda} especially with large design
+      matrices.
+      \item Prediction now also possible with \code{newdata = list()}.
+      Resolves issue
+      \href{https://github.com/hofnerb/mboost/issues/15}{#15}.
     }
   }
   \subsection{Miscellaneous}{
     \itemize{
-      \item Added new option \code{options(mboost_check_df2lambda =
-	TRUE)}, which controlls if a stability check in \code{df2lambda}
-      is performed. If set to \code{FALSE} this might speed up the
-      computation of \code{df2lambda} especially with large design
-      matrices.
+      \item \code{PropOdds()}: Updated manual for proportional odds model.
+      \item \code{Multinomial()}: Updated manual for multinomial logit
+      model. Predictions for new data are now
+      possible (resolves issue
+      \href{https://github.com/hofnerb/mboost/issues/13}{#13}, thanks to
+      Sarah Brockhaus).
+      \item \file{inst/CITATION}: Added subheadings and
+      tutorial paper.
       \item Stopped computing the singular vectors in \code{df2lambda}
       as the singular values are sufficient and as
       \dQuote{computing the singular vectors is the slow part for large
@@ -34,20 +56,26 @@
   }
   \subsection{Bug-fixes}{
     \itemize{
-      \item \code{PropOdds()}: fixed bug if \code{offset} was specified
-      (spotted by Madlene Nussbaum).
-      \item Bug in \code{plot.mboost()} fixed which occured if a factor
+      \item Fixed bug in \code{PropOdds()} which occurred if
+      \code{offset} was specified: nuisance parameters \code{delta}
+      and \code{sigma} were not properly initialized (spotted by Madlene Nussbaum).
+      \item Bug in \code{plot.mboost()} fixed which occurred if a factor
       with equal effect estimates for different categories was plotted.
       \item Bug in \code{df2lambda} fixed: Make sure that \code{A} is
       symmetric if it is \code{Matrix}-object (spotted by Souhaib Ben
       Taieb).
       \item Bug in \code{df2lambda} fixed. Design matrices were always
       assumed to be of full rank.
+      \item Truncate output of complete data structure when model is
+      printed. Resolves issue
+      \href{https://github.com/hofnerb/mboost/issues/11}{#11}.
+      \item  Adhere to CRAN policies regarding import of base packages
+      (closes \href{https://github.com/hofnerb/mboost/issues/9}{#9}).
     }
   }
 }
 
-\section{Changes in mboost version 2.4-2 (2014-02-12)}{
+\section{Changes in mboost version 2.4-2 (2015-02-12)}{
   \subsection{User-visible changes}{
     \itemize{
       \item Export \code{df2lambda}, \code{hyper_bbs} and \code{bl_lin}

Modified: pkg/mboostDevel/man/Family.Rd
===================================================================
--- pkg/mboostDevel/man/Family.Rd	2015-09-07 14:33:55 UTC (rev 863)
+++ pkg/mboostDevel/man/Family.Rd	2015-09-16 11:22:21 UTC (rev 864)
@@ -174,15 +174,17 @@
 
   Families with an additional scale parameter can be used for fitting
   models as well: \code{PropOdds()} leads to proportional odds models
-  for ordinal outcome variables. When using this family, an ordered set of
-  threshold parameters is re-estimated in each boosting iteration.
-  \code{NBinomial()} leads to regression models with a negative binomial
-  conditional distribution of the response. \code{Weibull()}, \code{Loglog()},
-  and \code{Lognormal()} implement the negative log-likelihood functions
-  of accelerated failure time models with Weibull, log-logistic, and
-  lognormal distributed outcomes, respectively. Hence, parametric survival
-  models can be boosted using these families. For details see Schmid and
-  Hothorn (2008) and Schmid et al. (2010).
+  for ordinal outcome variables (Schmid et al., 2011). When using this
+  family, an ordered set of threshold parameters is re-estimated in each
+  boosting iteration. An example is given below which also shows how to
+  obtain the thresholds. \code{NBinomial()} leads to regression models with
+  a negative binomial conditional distribution of the response.
+  \code{Weibull()}, \code{Loglog()}, and \code{Lognormal()} implement
+  the negative log-likelihood functions of accelerated failure time
+  models with Weibull, log-logistic, and lognormal distributed outcomes,
+  respectively. Hence, parametric survival models can be boosted using
+  these families. For details see Schmid and Hothorn (2008) and Schmid
+  et al. (2010).
 
   \code{Gehan()} implements rank-based estimation of survival data in an
   accelerated failure time model. The loss function is defined as the sum
@@ -204,8 +206,8 @@
   model specification (see example).  More specifically, the predictor must
   be in the form of a linear array model (see \code{\link{\%O\%}}).  Note
   that this family does not work with tree-based base-learners at the
-  moment.  The class corresponding to the last level of the factor coding
-  the response is uses as reference class.
+  moment. The class corresponding to the last level of the factor coding
+  of the response is used as reference class.
 
 }
 \section{Warning}{
@@ -250,8 +252,13 @@
     Matthias Schmid, Sergej Potapov, Annette Pfahlberg,
     and Torsten Hothorn (2010). Estimation and regularization techniques for
     regression models with multidimensional prediction functions.
-    \emph{Statistics and Computing}, \bold{20}, 139-150.
+    \emph{Statistics and Computing}, \bold{20}, 139--150.
 
+    Schmid, M., T. Hothorn, K. O. Maloney, D. E. Weller and S. Potapov
+    (2011): Geoadditive regression modeling of stream biological
+    condition. \emph{Environmental and Ecological Statistics},
+    \bold{18}(4), 709--733.
+
     Benjamin Hofner, Andreas Mayr, Nikolay Robinzonov and Matthias Schmid
     (2014). Model-based Boosting in R: A Hands-on Tutorial Using the R
     Package mboost. \emph{Computational Statistics}, \bold{29}, 3--35.\cr
@@ -271,31 +278,74 @@
     \code{AUC()} was donated by Fabian Scheipl.
 }
 \examples{
+### Define a new family
+MyGaussian <- function(){
[TRUNCATED]

To get the complete diff run:
    svnlook diff /svnroot/mboost -r 864


More information about the Mboost-commits mailing list