mregnn function

Regression with Linear Inequality Restrictions on Predicted Values

Regression with Linear Inequality Restrictions on Predicted Values

The package contains three functions for fitting regressions with inequality restrictions: mregnn is the most general one, allowing basically for any partial orders, mregnnM poses a monotone restriction on the fitted values, mregnnP restricts the predicted values to be positive. Monre details can be found below.

mregnn(x, y, a) mregnnM(x, y) mregnnP(x, y)

Arguments

  • x: Can be a spline basis.
  • y: Response.
  • a: Matrix containing order restrictions.

Details

These functions solve the problem

f(b)=12(yXb)(yXb) f(b) = \frac{1}{2}(y - Xb)'(y - Xb)

over all bb for which AXb0A'Xb \geq 0. AA can be used require the transformation to be non-negative, or increasing, or satisfying any partial order.

Returns

  • xb: Predicted values.

  • lb: Solution of the dual problem.

  • f: Value of the target function

References

de Leeuw, J. (2015). Regression with Linear Inequality Restrictions on Predicted Values. http://rpubs.com/deleeuw/78897.

Examples

## Compute the best fitting quadratic polynomial (in black) ## and monotone quadratic polynomial (in blue) set.seed(12345) x <- outer(1:10,1:3,"^") x <- apply(x,2,function(x) x - mean(x)) x <- apply (x,2,function(x) x / sqrt (sum(x ^ 2))) y <- rowSums(x) + rnorm(10) plot(x[,1], y, lwd = 3, col = "RED", xlab = "x", ylab = "P(x)") o <- mregnnM(x,y) lines(x[,1], o$xb, col = "BLUE", lwd = 2) xb <- drop(x %*% qr.solve(x,y)) lines(x[,1],xb,col="BLACK", lwd = 2) ## same monotone model through basic mregnn() difmat <- function (n) { m1 <- ifelse(outer(1:(n - 1),1:n,"-") == -1, 1, 0) m2 <- ifelse(outer(1:(n - 1),1:n,"-") == 0,-1, 0) return (m1 + m2) } a <- difmat(nrow(x)) ## order restriction o2 <- mregnn(x, y, a)