Title: | Compute least squares estimates of one bounded or two ordered isotonic regression curves |
---|---|
Description: | We consider the problem of estimating two isotonic regression curves g1* and g2* under the constraint that they are ordered, i.e. g1* <= g2*. Given two sets of n data points y_1, ..., y_n and z_1, ..., z_n that are observed at (the same) deterministic design points x_1, ..., x_n, the estimates are obtained by minimizing the Least Squares criterion L(a, b) = sum_{i=1}^n (y_i - a_i)^2 w1(x_i) + sum_{i=1}^n (z_i - b_i)^2 w2(x_i) over the class of pairs of vectors (a, b) such that a and b are isotonic and a_i <= b_i for all i = 1, ..., n. We offer two different approaches to compute the estimates: a projected subgradient algorithm where the projection is calculated using a PAVA as well as Dykstra's cyclical projection algorithm. |
Authors: | Fadoua Balabdaoui, Kaspar Rufibach, Filippo Santambrogio |
Maintainer: | Kaspar Rufibach <[email protected]> |
License: | GPL (>= 2) |
Version: | 1.0.3 |
Built: | 2025-01-22 04:56:00 UTC |
Source: | https://github.com/cran/OrdMonReg |
We consider the problem of estimating two isotonic regression curves and
under the
constraint that
. Given two sets of
data points
and
that are observed at (the same) deterministic design points
, the estimates are obtained by
minimizing the Least Squares criterion
over the class of pairs of vectors such that
and
are isotonic and
for all
. We offer two different approaches to compute the estimates: a
projected subgradient algorithm where the projection is calculated using a pool-adjacent-violaters algorithm (PAVA)
as well as Dykstra's cyclical projection algorithm..
Additionally, functions to solve the bounded isotonic regression problem described in Barlow et al. (1972, p. 57) are provided.
Package: | OrdMonReg |
Type: | Package |
Version: | 1.0.3 |
Date: | 2011-11-30 |
License: | GPL (>=2) |
Fadoua Balabdaoui [email protected]
http://www.ceremade.dauphine.fr/~fadoua
Kaspar Rufibach (maintainer) [email protected]
http://www.kasparrufibach.ch
Filippo Santambrogio [email protected]
http://www.math.u-psud.fr/~santambr/
Balabdaoui, F., Rufibach, K., Santambrogio, F. (2009). Least squares estimation of two ordered monotone regression curves. Preprint.
Barlow, R. E., Bartholomew, D. J., Bremner, J. M., Brunk, H. D. (1972). Statistical inference under order restrictions. The theory and application of isotonic regression. John Wiley and Sons, London - New York - Sydney.
Dykstra, R.L. (1983). An Algorithm for Restricted Least Squares Regression. J. Amer. Statist. Assoc., 78, 837–842.
Other versions of bounded regression are implemented in the packages cir,
Iso, monreg. The function
BoundedIsoMean
is a generalization of the function isoMean
in the package
logcondens.
## examples are provided in the help files of the main functions of this package: ?BoundedAntiMean ?BoundedAntiMeanTwo
## examples are provided in the help files of the main functions of this package: ?BoundedAntiMean ?BoundedAntiMeanTwo
These functions compute the values and
, the value of the estimate of the
upper function at
and the value of the lower estimated function at
in the two ordered
antitonic regression functions problem. These values can be computed via explicit formulas, unlike the values at
, which are received via a projected subgradient algorithm. However,
enters this algorithm as an auxiliary quantity.
astar_1(g1, w1, g2, w2) bstar_n(g1, w1, g2, w2)
astar_1(g1, w1, g2, w2) bstar_n(g1, w1, g2, w2)
g1 |
Vector in |
w1 |
Vector in |
g2 |
Vector in |
w2 |
Vector in |
Values of and
are returned.
Fadoua Balabdaoui [email protected]
http://www.ceremade.dauphine.fr/~fadoua
Kaspar Rufibach (maintainer) [email protected]
http://www.kasparrufibach.ch
Filippo Santambrogio [email protected]
http://www.math.u-psud.fr/~santambr/
Balabdaoui, F., Rufibach, K., Santambrogio, F. (2009). Least squares estimation of two ordered monotone regression curves. Preprint.
This function is used by BoundedAntiMeanTwo
.
This function computes the bounded least squares isotonic regression estimate, where the bounds are two functions such that the estimate is above the lower and below the upper function. To find the solution, we use the pool-adjacent-violaters algorithm for a suitable set function M, as discussed in Balabdaoui et al. (2009). The problem was initially posed in Barlow et al. (1972), including a remark (on p. 57) that the PAVA can be used to solve it. However, a formal proof is not given in Barlow et al. (1972). A short note detailing this proof is available from the authors of Balabdaoui et al. (2009) on request.
BoundedIsoMean(y, w, a = NA, b = NA) BoundedAntiMean(y, w, a = NA, b = NA)
BoundedIsoMean(y, w, a = NA, b = NA) BoundedAntiMean(y, w, a = NA, b = NA)
y |
Vector in |
w |
Vector in |
a |
Vector in |
b |
Vector in |
The bounded isotonic regression problem is given by: For
let
be measurements of some quantity at the
's, with true mean function
.
The goal is to estimate
using least squares, i.e. to minimize
over the class of vectors that are isotonic and satisfy
and two fixed isotonic vectors and
.
This problem can be solved using a suitable modification of the pool-adjacent-violaters algorithm, see
Barlow et al. (1972, p. 57) and Balabdaoui et al. (2009).
The function BoundedAntiMean
solves the same problem for antitonic curves, by simply invoking BoundedIsoMean
flipping some of the arguments.
The bounded isotonic (antitonic) estimate .
Fadoua Balabdaoui [email protected]
http://www.ceremade.dauphine.fr/~fadoua
Kaspar Rufibach (maintainer) [email protected]
http://www.kasparrufibach.ch
Filippo Santambrogio [email protected]
http://www.math.u-psud.fr/~santambr/
Balabdaoui, F., Rufibach, K., Santambrogio, F. (2009). Least squares estimation of two ordered monotone regression curves. Preprint.
Barlow, R. E., Bartholomew, D. J., Bremner, J. M., Brunk, H. D. (1972). Statistical inference under order restrictions. The theory and application of isotonic regression. John Wiley and Sons, London - New York - Sydney.
The functions BoundedAntiMeanTwo
and BoundedIsoMeanTwo
for the problem of
estimating two ordered antitonic (isotonic) regression
functions. The function BoundedIsoMean
depends on the function MA
.
## -------------------------------------------------------- ## generate data ## -------------------------------------------------------- set.seed(23041977) n <- 35 x <- 1:n / n f0 <- - 3 * x + 5 g0 <- 1 / (x + 0.5) ^ 2 + 1 g <- g0 + 3 * rnorm(n) ## -------------------------------------------------------- ## compute estimate ## -------------------------------------------------------- g_est <- BoundedAntiMean(g, w = rep(1 / n, n), a = -rep(Inf, n), b = f0) ## -------------------------------------------------------- ## plot observations and estimate ## -------------------------------------------------------- par(mar = c(4.5, 4, 3, 0.5)) plot(0, 0, type = 'n', main = "Observations, upper bound and estimate for bounded antitonic regression", xlim = c(0, max(x)), ylim = range(c(f0, g)), xlab = expression(x), ylab = "observations and estimate") points(x, g, col = 1) lines(x, g0, col = 1, lwd = 2, lty = 2) lines(x, f0, col = 2, lwd = 2, lty = 2) lines(x, g_est, col = 3, lwd = 2) legend("bottomleft", c("truth", "data", "upper bound", "estimate"), lty = c(1, 0, 1, 1), lwd = c(2, 1, 2, 2), pch = c(NA, 1, NA, NA), col = c(1, 1:3), bty = 'n') ## Not run: ## -------------------------------------------------------- ## 'BoundedIsoMean' is a generalization of 'isoMean' in the ## package 'logcondens' ## -------------------------------------------------------- library(logcondens) n <- 50 y <- sort(runif(n, 0, 1)) ^ 2 + rnorm(n, 0, 0.2) isoMean(y, w = rep(1 / n, n)) BoundedIsoMean(y, w = rep(1 / n, n), a = -rep(Inf, n), b = rep(Inf, n)) ## End(Not run)
## -------------------------------------------------------- ## generate data ## -------------------------------------------------------- set.seed(23041977) n <- 35 x <- 1:n / n f0 <- - 3 * x + 5 g0 <- 1 / (x + 0.5) ^ 2 + 1 g <- g0 + 3 * rnorm(n) ## -------------------------------------------------------- ## compute estimate ## -------------------------------------------------------- g_est <- BoundedAntiMean(g, w = rep(1 / n, n), a = -rep(Inf, n), b = f0) ## -------------------------------------------------------- ## plot observations and estimate ## -------------------------------------------------------- par(mar = c(4.5, 4, 3, 0.5)) plot(0, 0, type = 'n', main = "Observations, upper bound and estimate for bounded antitonic regression", xlim = c(0, max(x)), ylim = range(c(f0, g)), xlab = expression(x), ylab = "observations and estimate") points(x, g, col = 1) lines(x, g0, col = 1, lwd = 2, lty = 2) lines(x, f0, col = 2, lwd = 2, lty = 2) lines(x, g_est, col = 3, lwd = 2) legend("bottomleft", c("truth", "data", "upper bound", "estimate"), lty = c(1, 0, 1, 1), lwd = c(2, 1, 2, 2), pch = c(NA, 1, NA, NA), col = c(1, 1:3), bty = 'n') ## Not run: ## -------------------------------------------------------- ## 'BoundedIsoMean' is a generalization of 'isoMean' in the ## package 'logcondens' ## -------------------------------------------------------- library(logcondens) n <- 50 y <- sort(runif(n, 0, 1)) ^ 2 + rnorm(n, 0, 0.2) isoMean(y, w = rep(1 / n, n)) BoundedIsoMean(y, w = rep(1 / n, n), a = -rep(Inf, n), b = rep(Inf, n)) ## End(Not run)
See details below.
BoundedIsoMeanTwo(g1, w1, g2, w2, K1 = 1000, K2 = 400, delta = 10^(-4), errorPrec = 10, output = TRUE) BoundedAntiMeanTwo(g1, w1, g2, w2, K1 = 1000, K2 = 400, delta = 10^(-4), errorPrec = 10, output = TRUE)
BoundedIsoMeanTwo(g1, w1, g2, w2, K1 = 1000, K2 = 400, delta = 10^(-4), errorPrec = 10, output = TRUE) BoundedAntiMeanTwo(g1, w1, g2, w2, K1 = 1000, K2 = 400, delta = 10^(-4), errorPrec = 10, output = TRUE)
g1 |
Vector in |
w1 |
Vector in |
g2 |
Vector in |
w2 |
Vector in |
K1 |
Upper bound on number of iterations. |
K2 |
Number of iterations where step length is changed from the inverse of the norm of the subgradient to a diminishing function of the norm of the subgradient. |
delta |
Upper bound on the error, defines stopping criterion. |
errorPrec |
Computation of stopping criterion is expensive. Therefore, the stopping criterion is
only evaluated at every |
output |
Should intermediate results be output? |
We consider the problem of estimating two isotonic (antitonic) regression curves and
under the
constraint that
. Given two sets of
data points
and
that are observed at (the same) deterministic design points
with weights
and
, respectively, the estimates are obtained by
minimizing the Least Squares criterion
over the class of pairs of vectors such that
and
are isotonic (antitonic) and
for all
. The estimates are computed with a projected
subgradient algorithm where the projection is calculated using a suitable version of the pool-adjacent-violaters
algorithm (PAVA).
The algorithm is implemented for antitonic curves in the function BoundedAntiMeanTwo
.
The function BoundedIsoMeanTwo
solves the same problem for isotonic curves, by simply invoking
BoundedAntiMeanTwo
and suitably flipping some of the arguments.
g1 |
The estimated function |
g2 |
The estimated function |
L |
Value of the least squares criterion at the minimum. |
error |
Value of error. |
k |
Number of iterations performed. |
tau |
Step length at final iteration. |
Fadoua Balabdaoui [email protected]
http://www.ceremade.dauphine.fr/~fadoua
Kaspar Rufibach (maintainer) [email protected]
http://www.kasparrufibach.ch
Filippo Santambrogio [email protected]
http://www.math.u-psud.fr/~santambr/
Balabdaoui, F., Rufibach, K., Santambrogio, F. (2009). Least squares estimation of two ordered monotone regression curves. Preprint.
The functions BoundedAntiMean
and BoundedIsoMean
for the problem of
estimating one antitonic (isotonic) regression
function bounded above and below by fixed functions. The function BoundedAntiMeanTwo
depends
on the functions BoundedAntiMean
, bstar_n
,
LSfunctional
, and Subgradient
.
## ======================================================== ## The first example uses simulated data ## For the analysis of the mechIng dataset see below ## ======================================================== ## -------------------------------------------------------- ## initialization ## -------------------------------------------------------- set.seed(23041977) n <- 100 x <- 1:n g1 <- 1 / x^2 + 2 g1 <- g1 + 3 * rnorm(n) g2 <- 1 / log(x+3) + 2 g2 <- g2 + 4 * rnorm(n) w1 <- runif(n) w1 <- w1 / sum(w1) w2 <- runif(n) w2 <- w2 / sum(w2) ## -------------------------------------------------------- ## compute estimates ## -------------------------------------------------------- shor <- BoundedAntiMeanTwo(g1, w1, g2, w2, errorPrec = 20, delta = 10^(-10)) ## corresponding isotonic problem shor2 <- BoundedIsoMeanTwo(-g2, w2, -g1, w1, errorPrec = 20, delta = 10^(-10)) ## the following vectors are equal shor$g1 - -shor2$g2 shor$g2 - -shor2$g1 ## -------------------------------------------------------- ## for comparison, compute estimates via cyclical projection ## algorithm due to Dykstra (1983) (isotonic problem) ## -------------------------------------------------------- dykstra1 <- BoundedIsoMeanTwoDykstra(-g2, w2, -g1, w1, delta = 10^(-10)) ## the following vectors are equal shor2$g1 - dykstra1$g1 shor2$g2 - dykstra1$g2 ## -------------------------------------------------------- ## Checking of solution ## -------------------------------------------------------- # This compares the first component of shor$g1 with a^*_1: c(shor$g1[1], astar_1(g1, w1, g2, w2)) ## -------------------------------------------------------- ## plot original functions and estimates ## -------------------------------------------------------- par(mfrow = c(1, 1), mar = c(4.5, 4, 3, 0.5)) plot(x, g1, col = 2, main = "Original observations and estimates in problem two ordered antitonic regression functions", xlim = c(0, max(x)), ylim = range(c(shor$g1, shor$g2, g1, g2)), xlab = expression(x), ylab = "measurements and estimates") points(x, g2, col = 3) lines(x, shor$g1 + 0.01, col = 2, type = 's', lwd = 2) lines(x, shor$g2 - 0.01, col = 3, type = 's', lwd = 2) legend("bottomleft", c(expression("upper estimated function g"[1]*"*"), expression("lower estimated function g"[2]*"*")), lty = 1, col = 2:3, lwd = 2, bty = "n") ## ======================================================== ## Analysis of the mechIng dataset ## ======================================================== ## -------------------------------------------------------- ## input data ## -------------------------------------------------------- data(mechIng) x <- mechIng$x n <- length(x) g1 <- mechIng$g1 g2 <- mechIng$g2 w1 <- rep(1, n) w2 <- w1 ## -------------------------------------------------------- ## compute unordered estimates ## -------------------------------------------------------- g1_pava <- BoundedIsoMean(y = g1, w = w1, a = NA, b = NA) g2_pava <- BoundedIsoMean(y = g2, w = w2, a = NA, b = NA) ## -------------------------------------------------------- ## compute estimates via cyclical projection algorithm due to ## Dysktra (1983) ## -------------------------------------------------------- dykstra1 <- BoundedIsoMeanTwoDykstra(g1, w1, g2, w2, delta = 10^-10, output = TRUE) ## -------------------------------------------------------- ## compute smoothed versions ## -------------------------------------------------------- g1_mon <- dykstra1$g1 g2_mon <- dykstra1$g2 kernel <- function(x, X, h, Y){ tmp <- dnorm((x - X) / h) res <- sum(Y * tmp) / sum(tmp) return(res) } h <- 0.1 * n^(-1/5) g1_smooth <- rep(NA, n) g2_smooth <- g1_smooth for (i in 1:n){ g1_smooth[i] <- kernel(x[i], X = x, h, g1_mon) g2_smooth[i] <- kernel(x[i], X = x, h, g2_mon) } ## -------------------------------------------------------- ## plot original functions and estimates ## -------------------------------------------------------- par(mfrow = c(2, 1), oma = c(0, 0, 2, 0), mar = c(4.5, 4, 2, 0.5), cex.main = 0.8, las = 1) plot(0, 0, type = 'n', xlim = c(0, max(x)), ylim = range(c(g1, g2, g1_mon, g2_mon)), xlab = "x", ylab = "measurements and estimates", main = "ordered antitonic estimates") points(x, g1, col = grey(0.3), pch = 20, cex = 0.8) points(x, g2, col = grey(0.6), pch = 20, cex = 0.8) lines(x, g1_mon + 0.1, col = 2, type = 's', lwd = 3) lines(x, g2_mon - 0.1, col = 3, type = 's', lwd = 3) legend(0.2, 10, c(expression("upper isotonic function g"[1]*"*"), expression("lower isotonic function g"[2]*"*")), lty = 1, col = 2:3, lwd = 3, bty = "n") plot(0, 0, type = 'n', xlim = c(0, max(x)), ylim = range(c(g1, g2, g1_mon, g2_mon)), xlab = "x", ylab = "measurements and estimates", main = "smoothed ordered antitonic estimates") points(x, g1, col = grey(0.3), pch = 20, cex = 0.8) points(x, g2, col = grey(0.6), pch = 20, cex = 0.8) lines(x, g1_smooth + 0.1, col = 2, type = 's', lwd = 3) lines(x, g2_smooth - 0.1, col = 3, type = 's', lwd = 3) legend(0.2, 10, c(expression("upper isotonic smoothed function "*tilde(g)[1]*"*"), expression("lower isotonic smoothed function "*tilde(g)[2]*"*")), lty = 1, col = 2:3, lwd = 3, bty = "n") par(cex.main = 1) title("Original observations and estimates in mechanical engineering example", line = 0, outer = TRUE)
## ======================================================== ## The first example uses simulated data ## For the analysis of the mechIng dataset see below ## ======================================================== ## -------------------------------------------------------- ## initialization ## -------------------------------------------------------- set.seed(23041977) n <- 100 x <- 1:n g1 <- 1 / x^2 + 2 g1 <- g1 + 3 * rnorm(n) g2 <- 1 / log(x+3) + 2 g2 <- g2 + 4 * rnorm(n) w1 <- runif(n) w1 <- w1 / sum(w1) w2 <- runif(n) w2 <- w2 / sum(w2) ## -------------------------------------------------------- ## compute estimates ## -------------------------------------------------------- shor <- BoundedAntiMeanTwo(g1, w1, g2, w2, errorPrec = 20, delta = 10^(-10)) ## corresponding isotonic problem shor2 <- BoundedIsoMeanTwo(-g2, w2, -g1, w1, errorPrec = 20, delta = 10^(-10)) ## the following vectors are equal shor$g1 - -shor2$g2 shor$g2 - -shor2$g1 ## -------------------------------------------------------- ## for comparison, compute estimates via cyclical projection ## algorithm due to Dykstra (1983) (isotonic problem) ## -------------------------------------------------------- dykstra1 <- BoundedIsoMeanTwoDykstra(-g2, w2, -g1, w1, delta = 10^(-10)) ## the following vectors are equal shor2$g1 - dykstra1$g1 shor2$g2 - dykstra1$g2 ## -------------------------------------------------------- ## Checking of solution ## -------------------------------------------------------- # This compares the first component of shor$g1 with a^*_1: c(shor$g1[1], astar_1(g1, w1, g2, w2)) ## -------------------------------------------------------- ## plot original functions and estimates ## -------------------------------------------------------- par(mfrow = c(1, 1), mar = c(4.5, 4, 3, 0.5)) plot(x, g1, col = 2, main = "Original observations and estimates in problem two ordered antitonic regression functions", xlim = c(0, max(x)), ylim = range(c(shor$g1, shor$g2, g1, g2)), xlab = expression(x), ylab = "measurements and estimates") points(x, g2, col = 3) lines(x, shor$g1 + 0.01, col = 2, type = 's', lwd = 2) lines(x, shor$g2 - 0.01, col = 3, type = 's', lwd = 2) legend("bottomleft", c(expression("upper estimated function g"[1]*"*"), expression("lower estimated function g"[2]*"*")), lty = 1, col = 2:3, lwd = 2, bty = "n") ## ======================================================== ## Analysis of the mechIng dataset ## ======================================================== ## -------------------------------------------------------- ## input data ## -------------------------------------------------------- data(mechIng) x <- mechIng$x n <- length(x) g1 <- mechIng$g1 g2 <- mechIng$g2 w1 <- rep(1, n) w2 <- w1 ## -------------------------------------------------------- ## compute unordered estimates ## -------------------------------------------------------- g1_pava <- BoundedIsoMean(y = g1, w = w1, a = NA, b = NA) g2_pava <- BoundedIsoMean(y = g2, w = w2, a = NA, b = NA) ## -------------------------------------------------------- ## compute estimates via cyclical projection algorithm due to ## Dysktra (1983) ## -------------------------------------------------------- dykstra1 <- BoundedIsoMeanTwoDykstra(g1, w1, g2, w2, delta = 10^-10, output = TRUE) ## -------------------------------------------------------- ## compute smoothed versions ## -------------------------------------------------------- g1_mon <- dykstra1$g1 g2_mon <- dykstra1$g2 kernel <- function(x, X, h, Y){ tmp <- dnorm((x - X) / h) res <- sum(Y * tmp) / sum(tmp) return(res) } h <- 0.1 * n^(-1/5) g1_smooth <- rep(NA, n) g2_smooth <- g1_smooth for (i in 1:n){ g1_smooth[i] <- kernel(x[i], X = x, h, g1_mon) g2_smooth[i] <- kernel(x[i], X = x, h, g2_mon) } ## -------------------------------------------------------- ## plot original functions and estimates ## -------------------------------------------------------- par(mfrow = c(2, 1), oma = c(0, 0, 2, 0), mar = c(4.5, 4, 2, 0.5), cex.main = 0.8, las = 1) plot(0, 0, type = 'n', xlim = c(0, max(x)), ylim = range(c(g1, g2, g1_mon, g2_mon)), xlab = "x", ylab = "measurements and estimates", main = "ordered antitonic estimates") points(x, g1, col = grey(0.3), pch = 20, cex = 0.8) points(x, g2, col = grey(0.6), pch = 20, cex = 0.8) lines(x, g1_mon + 0.1, col = 2, type = 's', lwd = 3) lines(x, g2_mon - 0.1, col = 3, type = 's', lwd = 3) legend(0.2, 10, c(expression("upper isotonic function g"[1]*"*"), expression("lower isotonic function g"[2]*"*")), lty = 1, col = 2:3, lwd = 3, bty = "n") plot(0, 0, type = 'n', xlim = c(0, max(x)), ylim = range(c(g1, g2, g1_mon, g2_mon)), xlab = "x", ylab = "measurements and estimates", main = "smoothed ordered antitonic estimates") points(x, g1, col = grey(0.3), pch = 20, cex = 0.8) points(x, g2, col = grey(0.6), pch = 20, cex = 0.8) lines(x, g1_smooth + 0.1, col = 2, type = 's', lwd = 3) lines(x, g2_smooth - 0.1, col = 3, type = 's', lwd = 3) legend(0.2, 10, c(expression("upper isotonic smoothed function "*tilde(g)[1]*"*"), expression("lower isotonic smoothed function "*tilde(g)[2]*"*")), lty = 1, col = 2:3, lwd = 3, bty = "n") par(cex.main = 1) title("Original observations and estimates in mechanical engineering example", line = 0, outer = TRUE)
See details below.
BoundedIsoMeanTwoDykstra(g1, w1, g2, w2, K1 = 1000, delta = 10^(-8), output = TRUE)
BoundedIsoMeanTwoDykstra(g1, w1, g2, w2, K1 = 1000, delta = 10^(-8), output = TRUE)
g1 |
Vector in |
w1 |
Vector in |
g2 |
Vector in |
w2 |
Vector in |
K1 |
Upper bound on number of iterations. |
delta |
Upper bound on the error, defines stopping criterion. |
output |
Should intermediate results be output? |
See BoundedIsoMeanTwo
for a description of the problem. This function computes the estimates
via Dykstra's (see Dykstra, 1983) cyclical projection algorithm.
The algorithm is implemented for isotonic curves.
g1 |
The estimated function |
g2 |
The estimated function |
L |
Value of the least squares criterion at the minimum. |
error |
Value of error (norm of difference two consecutive projections). |
k |
Number of iterations performed. |
Note that we have chosen a very simply stopping criterion here, namely the algorithm stops
if the norm of two consecutive projections is smaller than . If
is very small, it may happen
that two consecutive projections are equal although
is not yet minimal (note that this typically happens
if
g1
= g2
). If that is the case, we suggest to set and let the algorithm run
a sufficient number of iterations (specified by
K1
) to verify that the least squares criterion value
can not be decreased anymore.
Fadoua Balabdaoui [email protected]
http://www.ceremade.dauphine.fr/~fadoua
Kaspar Rufibach (maintainer) [email protected]
http://www.kasparrufibach.ch
Filippo Santambrogio [email protected]
http://www.math.u-psud.fr/~santambr/
Balabdaoui, F., Rufibach, K., Santambrogio, F. (2009). Least squares estimation of two ordered monotone regression curves. Preprint.
Dykstra, R.L. (1983). An Algorithm for Restricted Least Squares Regression. J. Amer. Statist. Assoc., 78, 837–842.
The functions BoundedAntiMean
and BoundedIsoMean
for the problem of
estimating one antitonic (isotonic) regression
function bounded above and below by fixed functions. The function BoundedAntiMeanTwoDykstra
depends
on the functions discussed in minK
.
## examples are provided in the help file of the main function of this package: ?BoundedIsoMeanTwo
## examples are provided in the help file of the main function of this package: ?BoundedIsoMeanTwo
Computes the value of the least squares criterion in the problem of two ordered isotonic regression functions.
LSfunctional(f1, g1, w1, f2, g2, w2)
LSfunctional(f1, g1, w1, f2, g2, w2)
f1 |
Vector in |
g1 |
Vector in |
w1 |
Vector in |
f2 |
Vector in |
g2 |
Vector in |
w2 |
Vector in |
This function simply computes for the above vectors
Fadoua Balabdaoui [email protected]
http://www.ceremade.dauphine.fr/~fadoua
Kaspar Rufibach (maintainer) [email protected]
http://www.kasparrufibach.ch
Filippo Santambrogio [email protected]
http://www.math.u-psud.fr/~santambr/
Balabdaoui, F., Rufibach, K., Santambrogio, F. (2009). Least squares estimation of two ordered monotone regression curves. Preprint.
This function is used by BoundedAntiMeanTwo
.
This function computes the bounded weighted mean for any subset of indices.
MA(g, w, A = NA, a, b)
MA(g, w, A = NA, a, b)
g |
Vector in |
w |
Vector in |
A |
Subset of |
a |
Vector in |
b |
Vector in |
This function computes the bounded average
see Balabdaoui et al. (2009) for details.
The bounded weighted average is returned.
Fadoua Balabdaoui [email protected]
http://www.ceremade.dauphine.fr/~fadoua
Kaspar Rufibach (maintainer) [email protected]
http://www.kasparrufibach.ch
Filippo Santambrogio [email protected]
http://www.math.u-psud.fr/~santambr/
Balabdaoui, F., Rufibach, K., Santambrogio, F. (2009). Least squares estimation of two ordered monotone regression curves. Preprint.
This function is used by BoundedIsoMean
.
Dataset that contains the data analyzed in Balabdaoui et al. (2009).
data(mechIng)
data(mechIng)
A data frame with 1495 observations on the following 3 variables.
x
Location of measurements.
g1
Measurements of the upper isotonic curve.
g2
Measurements of the lower isotonic curve.
In Balabdaoui et al. (2009), ordered isotonic regression is illustrated using stress-strain curves from dynamical material tests.
The data was taken from Shim and Mohr (2009).
Balabdaoui, F., Rufibach, K., Santambrogio, F. (2009). Least squares estimation of two ordered monotone regression curves. Preprint.
Shim, J. and Mohr, D. (2009). Using split Hopkinson pressure bars to perform large strain compression tests on polyurea at low, intermediate and high strain rates. International Journal of Impact Engineering, 36(9), 1116–1127.
See the examples in BoundedIsoMeanTwo
for the analysis of this data.
Internal functions for Dykstra's algorithm to compute bounded monotone regression estimates.
These functions are not intended to be called by the user.
minK1
Compute projection of on the set
is increasing.}.
minK2
Compute projection of on the set
is increasing.}.
minK3
Compute projection of on the set
.
Fadoua Balabdaoui [email protected]
http://www.ceremade.dauphine.fr/~fadoua
Kaspar Rufibach (maintainer) [email protected]
http://www.kasparrufibach.ch
Filippo Santambrogio [email protected]
http://www.math.u-psud.fr/~santambr/
Balabdaoui, F., Rufibach, K., Santambrogio, F. (2009). Least squares estimation of two ordered antitonic regression curves. Preprint.
Dykstra, R.L. (1983). An Algorithm for Restricted Least Squares Regression. J. Amer. Statist. Assoc., 78, 837–842.
This functions are used by BoundedIsoMeanTwoDykstra
.
This function computes a subgradient of the function .
Subgradient(b, g1, w1, g2, w2, B, Gsi)
Subgradient(b, g1, w1, g2, w2, B, Gsi)
b |
Vector in |
g1 |
Vector in |
w1 |
Vector in |
g2 |
Vector in |
w2 |
Vector in |
B |
Value of |
Gsi |
Matrix in |
The subgradient at .
Fadoua Balabdaoui [email protected]
http://www.ceremade.dauphine.fr/~fadoua
Kaspar Rufibach (maintainer) [email protected]
http://www.kasparrufibach.ch
Filippo Santambrogio [email protected]
http://www.math.u-psud.fr/~santambr/
Balabdaoui, F., Rufibach, K., Santambrogio, F. (2009). Least squares estimation of two ordered antitonic regression curves. Preprint.
This function is used by BoundedAntiMeanTwo
.