[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 @@
======
[](https://travis-ci.org/hofnerb/mboost)
+[](http://cran.r-project.org/package=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