Aliases: isoreg
Keywords: regression smooth
### ** Examples require(graphics) (ir <- isoreg(c(1,0,4,3,3,5,4,2,0)))
Isotonic regression from isoreg(x = c(1, 0, 4, 3, 3, 5, 4, 2, 0)), with 2 knots / breaks at obs.nr. 2 9 ; initially ordered 'x' and further components List of 4 $ x : num [1:9] 1 2 3 4 5 6 7 8 9 $ y : num [1:9] 1 0 4 3 3 5 4 2 0 $ yf: num [1:9] 0.5 0.5 3 3 3 3 3 3 3 $ yc: num [1:10] 0 1 1 5 8 11 16 20 22 22
plot(ir, plot.type = "row")
(ir3 <- isoreg(y3 <- c(1,0,4,3,3,5,4,2, 3))) # last "3", not "0"
Isotonic regression from isoreg(x = y3 <- c(1, 0, 4, 3, 3, 5, 4, 2, 3)), with 3 knots / breaks at obs.nr. 2 5 9 ; initially ordered 'x' and further components List of 4 $ x : num [1:9] 1 2 3 4 5 6 7 8 9 $ y : num [1:9] 1 0 4 3 3 5 4 2 3 $ yf: num [1:9] 0.5 0.5 3.33 3.33 3.33 ... $ yc: num [1:10] 0 1 1 5 8 11 16 20 22 25
(fi3 <- as.stepfun(ir3))
Step function Call: isoreg(x = y3 <- c(1, 0, 4, 3, 3, 5, 4, 2, 3)) x[1:3] = 2, 5, 9 4 plateau levels = 0.5, 0.5, 3.3333, 3.5
(ir4 <- isoreg(1:10, y4 <- c(5, 9, 1:2, 5:8, 3, 8)))
Isotonic regression from isoreg(x = 1:10, y = y4 <- c(5, 9, 1:2, 5:8, 3, 8)), with 5 knots / breaks at obs.nr. 4 5 6 9 10 ; initially ordered 'x' and further components List of 4 $ x : num [1:10] 1 2 3 4 5 6 7 8 9 10 $ y : num [1:10] 5 9 1 2 5 6 7 8 3 8 $ yf: num [1:10] 4.25 4.25 4.25 4.25 5 6 6 6 6 8 $ yc: num [1:11] 0 5 14 15 17 22 28 35 43 46 ...
cat(sprintf("R^2 = %.2f\n", 1 - sum(residuals(ir4)^2) / ((10-1)*var(y4))))
R^2 = 0.21
## If you are interested in the knots alone : with(ir4, cbind(iKnots, yf[iKnots]))
iKnots [1,] 4 4.25 [2,] 5 5.00 [3,] 6 6.00 [4,] 9 6.00 [5,] 10 8.00
## Example of unordered x[] with ties: x <- sample((0:30)/8) y <- exp(x) x. <- round(x) # ties! plot(m <- isoreg(x., y)) stopifnot(all.equal(with(m, yf[iKnots]), as.vector(tapply(y, x., mean))))