# Penalized Smooth Convex Regression.

### Description

This function provides an estimate of the non-parametric regression function with a shape constraint of convexity and smoothness constraint provided through square integral of second derivative.

### Usage

1 2 3 4 5 6 7 8 9 | ```
cvx.pen.reg(x, y, lambda, w = NULL, tol = 1e-05, maxit = 1000,...)
## Default S3 method:
cvx.pen.reg(x, y, lambda, w = NULL, tol = 1e-05, maxit = 1000,...)
## S3 method for class 'cvx.pen.reg'
plot(x,...)
## S3 method for class 'cvx.pen.reg'
print(x,...)
## S3 method for class 'cvx.pen.reg'
predict(object, newdata = NULL,...)
``` |

### Arguments

`x` |
a numeric vector giving the values of the predictor variable. For |

`y` |
a numeric vector giving the values of the response variable. |

`lambda` |
a numeric value giving the penalty value. |

`w` |
an optional numeric vector of the same length as x; Defaults to all 1. |

`maxit` |
an integer giving the maxmimum number of steps taken by the algorithm; defaults to 1000. |

`tol` |
a numeric providing the tolerance level for convergence. |

`...` |
any additional arguments. |

`object` |
An object of class ‘cvx.pen.reg’. This is for predict function. |

`newdata` |
a vector of new data points to be used in the predict function. |

### Details

The function minimizes

*∑_{i=1}^n w_i(y_i - f(x_i))^2 + λ\int\{f''(x)\}^2dx*

subject to convexity constraint on *f*. `plot`

function provides the scatterplot along with fitted curve; it also includes some diagnostic plots for residuals. Predict function returns a matrix containing the inputted newdata along with the function values, derivatives and second derivatives.

### Value

An object of class ‘cvx.pen.reg’, basically a list including the elements

`x.values` |
sorted ‘x’ values provided as input. |

`y.values` |
corresponding ‘y’ 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’. |

`iter` |
number of steps taken to complete the iterations. |

`residuals` |
residuals obtained from the fit. |

`minvalue` |
minimum value of the objective function attained. |

`convergence` |
a numeric indicating the convergence of the code. |

`alpha` |
a numeric vector of length 2 less than ‘x’. This represents the coefficients of the B-splines in the second derivative of the estimator. |

`AlphaMVal` |
a numeric vector needed for predict function. |

`lower` |
a numeric vector needed for predict function. |

`upper` |
a numeric vector needed for predict function. |

### Author(s)

Arun Kumar Kuchibhotla, arunku@wharton.upenn.edu, Rohit Kumar Patra, rohit@stat.columbia.edu.

### Source

Elfving, T. and Andersson, L. (1988). An Algorithm for Computing Constrained Smoothing Spline Functions. Numer. Math., 52(5):583–595.

Dontchev, A. L., Qi, H. and Qi, L. (2003). Quadratic Convergence of Newton's Method for Convex Interpolation and Smoothing. Constructive Approximation, 19(1):123-143.

### Examples

1 2 3 4 5 6 7 | ```
args(cvx.pen.reg)
x <- runif(50,-1,1)
y <- x^2 + rnorm(50,0,0.3)
tmp <- cvx.pen.reg(x, y, lambda = 0.01)
print(tmp)
plot(tmp)
predict(tmp, newdata = rnorm(10,0,0.1))
``` |