Learn R Programming

simest (version 0.4)

cvx.lip.reg:

Description

This function provides an estimate of the non-parametric regression function with a shape constraint of convexity and a smoothness constraint via a Lipschitz bound.

Usage

cvx.lip.reg(t, z, w = NULL, L,...)
# S3 method for default
cvx.lip.reg(t, z, w = NULL, L, ...)
# S3 method for cvx.lip.reg
plot(x,...)
# S3 method for cvx.lip.reg
print(x,...)
# S3 method for cvx.lip.reg
predict(object, newdata = NULL, deriv = 0, ...)

Arguments

t
a numeric vector giving the values of the predictor variable.
z
a numeric vector giving the values of the response variable.
w
an optional numeric vector of the same length as x; Defaults to all elements \(1/n\).
L
a numeric value providing the Lipschitz bound on the function.
...
additional arguments.
x
an object of class `cvx.lip.reg'.
object
An object of class `cvx.lip.reg'.
newdata
a matrix of new data points in the predict function.
deriv
a numeric either 0 or 1 representing which derivative to evaluate.

Value

An object of class `cvx.lip.reg', basically a list including the elements
x.values
sorted `t' values provided as input.
y.values
corresponding `z' values in input.
fit.values
corresponding fit values of same length as that of `x.values'.
deriv
corresponding values of the derivative of same length as that of `x.values'.
residuals
residuals obtained from the fit.
minvalue
minimum value of the objective function attained.
iter
Always set to 1.
convergence
a numeric indicating the convergence of the code.

Details

The function minimizes $$\sum_{i=1}^n w_i(z_i - \theta_i)^2$$ subject to $$-L\le\frac{\theta_2 - \theta_1}{t_2 - t_1}\le\cdots\le\frac{\theta_n - \theta_{n-1}}{t_n - t_{n-1}}\le L$$ for sorted \(t\) values and \(z\) reorganized such that \(z_i\) corresponds to the new sorted \(t_i\). This function uses the nnls function from the nnls package to perform the constrained minimization of least squares. plot function provides the scatterplot along with fitted curve; it also includes some diagnostic plots for residuals. Predict function now allows calculating the first derivative also.

References

Chen, D. and Plemmons, R. J. (2009). Non-negativity Constraints in Numerical Analysis. Symposium on the Birth of Numerical Analysis.

See Also

See also the function nnls.

Examples

Run this code
args(cvx.lip.reg)
x <- runif(50,-1,1)
y <- x^2 + rnorm(50,0,0.3)
tmp <- cvx.lip.reg(x, y, L = 10)
print(tmp)
plot(tmp)
predict(tmp, newdata = rnorm(10,0,0.1))

Run the code above in your browser using DataLab