R code for Density Estimation using Shape-Restricted Regression Splines

# DENSITY ESTIMATION USING SHAPE-RESTRICTED REGRESSION SPLINES

Non-parametric estimation of probability distributions with shape and smoothness assumptions concerning the density or the hazard function

If monotonicity is imposed, the quadratic B-spline basis functions are used. If the constraints include convexity, the cubic B-spline basis functions are used.

For decreasing density estimation, the arguments are sorted data, number of interior knots

The algorithm returns a pair ans\$xpl, ans\$theta that are the x and y coordinates for the density estimate, and the knot placement values

### R code for decreasing smooth density estimation using quadratic regression splines

Here is an example implementation, fitting a density to a dataset generated from an exponential function.

xdat=sort(abs(rnorm(50)))

ans=dspl(xdat,4)

plot(c(0,max(xdat)),c(0,max(ans\$theta)),pch=" ")

lines(ans\$xpl,ans\$theta)

points(xdat,1:50*0,pch="|")

points(ans\$knots,1:6*0,pch="X",col=2)

For hazard function estimation, the arguments are the sorted observations, the censoring indicator vector where del=0 if an observation is censored and del=1 if not, the weight vector, and the number of interior knots.

The algorithm returns a pair ans\$xpl and ans \$theta that are the x and y coordinates of the hazard function estimate, and the knot placement values.

### R code for increasing smooth hazard estimation using quadratic regression splines

Hint: The values of observed times should be distinct and not *very* close to one another. Binning might be necessary if adjacent values are less than 1/1000 or so of the range of values. Use the weight vector to specify how many observations per bin.

meyer@stat.colostate.edu