mregnn | R Documentation |
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)
x |
Can be a spline basis. |
y |
Response. |
a |
Matrix containing order restrictions. |
These functions solve the problem
f(b) = \frac{1}{2}(y - Xb)'(y - Xb)
over all b for which A'Xb ≥q 0. A can be used require the transformation to be non-negative, or increasing, or satisfying any partial order.
xb |
Predicted values. |
lb |
Solution of the dual problem. |
f |
Value of the target function |
de Leeuw, J. (2015). Regression with Linear Inequality Restrictions on Predicted Values. http://rpubs.com/deleeuw/78897.
## 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)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.