coneB function

Cone Projection -- Constraint Cone

Cone Projection -- Constraint Cone

This routine implements the hinge algorithm for cone projection to minimize yθ2||y - \theta||^2 over the cone CC of the form {θ:θ=v+biδi,i=1,,m,b1,,bm0}\{\theta: \theta = v + \sum b_i\delta_i, i = 1,\ldots,m, b_1,\ldots, b_m \ge 0\}, vv is in VV.

coneB(y, delta, vmat = NULL, w = NULL, face = NULL, msg = TRUE)

Arguments

  • y: A vector of length nn.
  • delta: A matrix whose columns are the constraint cone edges. The columns of delta must be irreducible. Its row number must equal the length of yy. No column of delta is contained in the column space of vmat.
  • vmat: A matrix whose columns are the basis of the linear space contained in the constraint cone. Its row number must equal the length of yy. The columns of vmat must be linearly independent. The default is vmat = NULL
  • w: An optional nonnegative vector of weights of length nn. If w is not given, all weights are taken to equal 1. Otherwise, the minimization of (yθ)w(yθ)(y - \theta)'w(y - \theta) over CC is returned. The default is w = NULL.
  • face: A vector of the positions of edges, which define the initial face for the cone projection. For example, when there are mm cone edges, then face is a subset of 1,,m1,\ldots,m. The default is face = NULL.
  • msg: A logical flag. If msg is TRUE, then a warning message will be printed when there is a non-convergence problem; otherwise no warning message will be printed. The default is msg = TRUE

Details

The routine coneB dynamically loads a C++ subroutine "coneBCpp".

Returns

  • df: The dimension of the face of the constraint cone on which the projection lands.

  • yhat: The projection of yy on the constraint cone.

  • steps: The number of iterations before the algorithm converges.

  • coefs: The coefficients of the basis of the linear space and the constraint cone edges contained in the constraint cone.

  • face: A vector of the positions of edges, which define the face on which the final projection lands on. For example, when there are mm cone edges, then face is a subset of 1,,m1,\ldots,m.

References

Meyer, M. C. (1999) An extension of the mixed primal-dual bases algorithm to the case of more constraints than dimensions. Journal of Statistical Planning and Inference 81, 13--31.

Meyer, M. C. (2013b) A simple new algorithm for quadratic programming with applications in statistics. Communications in Statistics 42(5), 1126--1139.

Liao, X. and M. C. Meyer (2014) coneproj: An R package for the primal or dual cone projections with routines for constrained regression. Journal of Statistical Software 61(12), 1--22.

Author(s)

Mary C. Meyer and Xiyue Liao

See Also

coneA, shapereg

Examples

# generate y set.seed(123) n <- 50 x <- seq(-2, 2, length = 50) y <- - x^2 + rnorm(n) # create the edges of the constraint cone to make the first half of y monotonically increasing # and the second half of y monotonically decreasing amat <- matrix(0, n - 1, n) for(i in 1:(n/2 - 1)){ amat[i, i] <- -1; amat[i, i + 1] <- 1 } for(i in (n/2):(n - 1)){ amat[i, i] <- 1; amat[i, i + 1] <- -1 } # note that in coneB, the transpose of the edges of the constraint cone is provided delta <- crossprod(amat, solve(tcrossprod(amat))) # make the basis of V vmat <- matrix(rep(1, n), ncol = 1) # call coneB ans3 <- coneB(y, delta, vmat) ans4 <- coneB(y, delta, vmat, w = (1:n)/n) # make a plot to compare the unweighted fit and weighted fit par(mar = c(4, 4, 1, 1)) plot(y, cex = .7, ylab = "y") lines(fitted(ans3), col = 2, lty = 2) lines(fitted(ans4), col = 4, lty = 2) legend("topleft", bty = "n", c("unweighted fit", "weighted fit"), col = c(2, 4), lty = c(2, 2)) title("ConeB Example Plot")
  • Maintainer: Xiyue Liao
  • License: GPL (>= 2)
  • Last published: 2025-02-19

Useful links