- Changed: grpreg()$loss is no longer returned
- New: plot_spline() now has “add” option so that splines can be added to existing plot
- Fixed: Loss/deviance now used consistently throughout; see #52
- Fixed: Fixed some broken URLs
- Fixed: Fixed bug in which mean was added twice for cv.grpreg()
- Fixed: Bug in which SNR could be infinite
- Fixed: Passing seed no longer affects global environment
- Fixed: cv.grpsurv() now sets default group if not supplied
- Fixed: No more error if response is constant; see #46
- Fixed: No more error if single lambda supplied
- Internal: Updated citation format to bibentry()
- Internal: Now using R_Calloc for
*R_USE_STRICT_R_HEADERS*compatibility - Documentation: Now using roxygen
- Documentation: Updated online documentation on penalties

- New: Suite of tools for additive modeling, most notably expand_spline() and plot_spline() (thank you to Ryan Kurth for her work on this project)
- New: grpreg() now returns linear.predictors object
- New: grpreg() and grpsurv() now have residuals() methods
- New: predict.grpsurv() can now predict cumulative hazard (type=“hazard”)
- New: Can now perform cross-validation with group bridge in cv.grpreg()
- Changed: fit$y now returns original y, not centered y
- Changed: grpsurv() now consistent with grpreg() in terms of returning deviance (2*loss) and groups as factors
- Fixed: predict() no longer converts factors to strings if type=“groups”
- Fixed: grpsurv() works correctly if a single feature is supplied

- Fixed: AUC() now compatible with survival 3.2.10
- Fixed: predict() now works correctly for cv.grpsurv objects
- Internal: Fixed memory leak
- Documentation: Better formatting of references, with DOIs

- Fixed: sqrt(K) no longer hard-coded into discarding rules (thank you to Dan Kessler for pointing this out)
- Testing: Now uses the tinytest package
- Documentation: Removing references to grpregOverlap (hope to merge)

- Change: Better error detection for ill-conditioned, unpenalized matrices
- Fixed: loss.grpsurv now works for total=FALSE
- Internal: Lots of internal changes for cleaner, more reliable code
- New version numbering system

- Change: Cross-validation now balances censoring across folds for survival models
- Fixed: Leave-one-out cross-validation now works correctly for logistic regression

- New: cv.grpsurv now calculates SE, with bootstrap option
- Change: R^2 now consistently uses the Cox-Snell definition for all types of models
- Change: Survival loss now uses deviance
- Change: cv.grpsurv now uses ‘fold’, not ‘cv.ind’, to declare assignments
- Fixed: cv.grpreg now correctly handles out-of-order groups for Poisson
- Fixed: cv.grpsurv now correctly standardizes out-of-order groups
- Fixed: grpreg no longer returns loss=NA with family=‘binomial’ for some lambda values
- Internal: SSR-BEDPP optimization reinstated after bug fix
- Internal: C code for binom/pois combined into gdfit_glm, lcdfit_glm
- Documentation: Lots of updates
- Documentation: vignette now html (used to be pdf)
- Documentation: pkgdown website

- Fixed: Works with arbitrarily “messy” group structures now (constant columns, out of order groups, etc.) due to restructuring of standardization/ orthogonalization
- Internal: SSR-BEDPP rule turned off due to bug

- Internal: C code now uses || instead of |

- Fixed: Bug in applying screening rules with group lasso for linear regression with user-specified lambda sequence (thank you very much to Natasha Sahr for pointing this out)

- Fixed: Cross-validation no longer fails when constant columns are present (thank you to Matthew Rosenberg for pointing this out)
- Fixed: Cross-validation no longer fails when group.multiplier is specified

- New: Additional tests and support for coersion of various types with respect to both X and y
- Change: Convergence criterion now based on RMSD of linear predictors
- Change: ‘Lung’ and ‘Birthwt’ data sets now use factor representation of group, as character vectors are inherently ambiguous with respect to order
- Change: max.iter now based on total number of iterations for entire path
- Internal: ‘X’, ‘group’, and ‘group.multiplier’ now bundled together in an object called ‘XG’ to enforce agreement at all times
- Internal: new SSR-BEDPP feature screening rule for group lasso
- Internal: Registration of native routines
- Internal: Changing PROTECT/UNPROTECT to conform to new coding standards
- Fixed: The binding of X and G fixes several potential bugs, including Issue #12 (GitHub)

- Fixed bug involving mismatch between group.multiplier and group if group is given out of order.

- Fixed: memory allocation bug
- Deprecation: Re-introduced ‘birthwt.grpreg’ for backwards compatibility, but this is deprecated

- New: methods for survival analysis (Cox modeling): grpsurv, cv.grpsurv, AUC, predict.grpsurv
- New: option to return fitted values from cross-validation folds (returnY=TRUE) to cv.grpreg and cv.grpsurv
- New: Added user interrupt checking
- Change: Reformatted (and renamed) example data set ‘Birthwt’; added example data set ‘Lung’ for survival
- Internal: Greatly expanded suite of tests; various bugs identified and fixed as a result
- Documentation: Added vignettes (a quick-start guide and a detailed description of available penalties)

- New: cv.grpreg now allows user to specify lambda (thanks to Vincent Arel-Bundock for suggesting this change)
- Fixed: bug for predict.grpreg(fit, type=“nvars”) or type=“ngroups” when scalar lambda value is passed
- Documentation: Updated citations

- New: More flexible interface through the ‘group’ argument; groups may now be out of order, and may be named rather than only consecutive integers
- New: ‘X’ can now be a matrix of integers (previously this would result in the passing of an incompatible storage type to C)
- New: Additional error checks to prevent cryptic error messages
- Internal: modifications to convergence monitoring
- New: Added corrected AIC and extended BIC as options with select()
- Change: summary.cv.grpreg now describes multitask learning models more accurately
- Fixed: bug for multitask learning when number of outcomes = 2 (thank you to Aluma Dembo for pointing this out)
- Fixed: Cross-validation for multitask learning now respects the multivariate structure of the response matrix
- Fixed: bug in cv.grpreg when attempting to use leave-one-out cross-validation

- Fixed: More rigorous initialization at C level to prevent possible memory access problems
- Fixed: predict() for types ‘vars’, ‘nvars’, and ‘ngroups’ with multivariate outcomes
- Fixed: As a consequence of the above fix, summary(cvfit) now works for multivariate outcomes (thank you to Cajo ter Braak for pointing out that this was broken)

- New: support for Poisson regression
- Internal: .Call now used instead of .C
- Fixed: bug in cv.grpreg when attempting to use leave-one-out cross-validation (thank you to Cajo ter Braak for pointing this out)

- Internal: Various internal changes to make the package more efficient for large data sets

- New: group exponential lasso ‘gel’ method
- New: ‘gmax’ option
- New: ‘nvars’ and ‘ngroups’ options for predict
- Change: appearance of summary.cv.grpreg display

- New: options in plot.cv.grpreg to plot estimates of r-squared, signal-to-noise ratio, scale parameter, and prediction error in addition to cross-validation error (deviance)
- New: grpreg and cv.grpreg now allow matrix y to facilitation group penalized methods for seemingly unrelated regressions/multitask learning. This is something of a ‘beta’ release at this point, and will be developed and refined further in future releases.
- New: ‘summary’ method for cv.grpreg objects
- New: ‘coef’ and ‘predict’ methods for cv.grpreg objects
- Change: Brought gBridge up to date so that it now handles constant columns, etc. (see # grpreg 2.2-0)
- Fixed: bug in predict type=‘coefficients’ when ‘lambda’ argument specified
- Fixed: bug in cv.grpreg with user-defined lambda values

- Internal: Switched to SVD-based orthogonalization to allow for linear dependency within groups

- Fixed: compilation error for 32-bit Windows
- Fixed: bug in calculation of binomial deviance when fitted probabilities are close to 0 or 1

- New: select now Now allows ‘…’ options to be passed to logLik
- New: Added option to plot norm of each group, rather than individual coefficients
- New: ‘vars’, ‘groups’, and ‘norm’ options added to ‘predict’
- Change: cv.grpreg now returns full data fit as well as CV errors; this allows cv.grpreg to handle constant columns and fixes some bugs
- Fixed: logLik no longer calculates (meaningless) log-likelihoods for saturated models (thank you to Xiaowei Ren for pointing this out)
- Fixed: bug for returning group when some groups were eliminated due to constant columns

- New: grpreg can now handle constant columns (they produce beta=0)
- Fixed: Bug involving orthogonalization with unpenalized groups
- Internal: restructuring of C code

- New: Group MCP, group SCAD methods added
- New: Added ‘cv.grpreg’ to facilitate cross-validation
- New: ‘dfmax’ option
- New: ‘group.multiplier’ option
- New: Allows specification of unpenalized groups
- Change: gBridge now divorced from grpreg and given separate function
- Internal: New algorithm for group lasso
- Internal: Extensive internal refactoring of code
- Internal: standardize and orthogonalize functions added
- Internal: Much more extensive and reproducible code testing

- New: grpreg now returns ‘loss’
- New: Added logLik method
- Change: Syntax of ‘select’ modified (no longer requires X, y to be passed)
- Change: ‘plot.grpreg’ function more flexible
- Change: ‘n.lambda’ to ‘nlambda’ in grpreg
- Change: ‘a’ to ‘gamma’ for MCP tuning parameter
- Change: ‘lambda2’ to ‘alpha’
- Removed: ‘monitor’ no longer an option in grpreg
- Removed: ‘criteria’ option for select
- Fixed: Bug in calculation of df for gLasso (grpreg.c)
- Documendation: Updated citation and contact information