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)=21(y−Xb)′(y−Xb)
over all b for which A′Xb≥0. A 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 restrictiono2 <- mregnn(x, y, a)