npbr (version 1.6)

kern_smooth_bw: Bandwidth selection for kernel smoothing frontier estimators


The function kern_smooth_bw provides two bandwidth selection methods. One is the least squares cross-validation developed by Parmeter and Racine (2013). The other is the BIC developed in Noh (2014).


kern_smooth_bw(xtab, ytab, method="u", technique="noh", bw_method="bic", 
 control = list("tm_limit" = 700))



a numeric vector containing the observed inputs \(x_1,\ldots,x_n\).


a numeric vector of the same length as xtab containing the observed outputs \(y_1,\ldots,y_n\).


a character equal to "u" (unconstrained estimator), "m" (under the monotonicity constraint) or "mc" (under simultaneous monotonicity and concavity constraints).


which estimation technique to use: "Noh" specifies the use of the method in Noh (2014), while "pr" is for the method in Parameter and Racine (2013).


which bandwidth selection method to use: "cv" returns the bandwidth that minimizes the least squares cross-validation criterion, and "bic" returns the bandwidth minimizing the BIC.


a list of parameters to the GLPK solver. See *Details* of help(Rglpk_solve_LP).


Returns an optimal bandwidth depending on the specified selection method.


As with any smoothed techniques, the bandwidth selection is critical to the quality of the frontier estimator. Parmeter and Racine (2013)'s recommendation is to use the least squares cross-validation method implemented with bw\_method="cv" in the function kern\_smooth\_bw. Instead, Noh (2014) proposed to select the bandwidth which minimizes the following criterion: $$ BIC(h) = \log \left( \sum_{i=1}^n (\hat \varphi(x_i|\hat p(h))-y_i)\right)+\frac {\log n \cdot tr(S(h))}{2n},$$ where \(\hat p(h)\) is the chosen weight vector associated to the bandwidth \(h\), and \(tr(S(h))\) is the trace of the smoothing matrix $$ S(h) = \left( \begin{array}{ccc} A_1(x_1) & \cdots & A_n(x_1) \\ \vdots & \ddots& \vdots \\ A_1(x_n) & \cdots & A_n(x_n) \end{array} \right). $$ The function kern\_smooth\_bw computes the optimal bandwidth from this criterion with option bw\_method="bic".


Noh, H. (2014). Frontier estimation using kernel smoothing estimators with data transformation. Journal of the Korean Statistical Society, 43, 503-512.

Parmeter, C.F. and Racine, J.S. (2013). Smooth constrained frontier analysis in Recent Advances and Future Directions in Causality, Prediction, and Specification Analysis, Springer-Verlag, New York, 463-488.

See Also



data("green") <- seq(min(log(green$COST)), max(log(green$COST)),length.out=101)
options(np.tree=TRUE,crs.messages=FALSE,np.messages=FALSE)<-kern_smooth_bw(log(green$COST),log(green$OUTPUT), method="m", 
 technique="pr", bw_method="cv")<-kern_smooth_bw(log(green$COST),log(green$OUTPUT), method="m", 
 technique="noh", bw_method="bic")<-kern_smooth(log(green$COST),log(green$OUTPUT),,, method="m", technique="pr")<-kern_smooth(log(green$COST),log(green$OUTPUT),,, method="m", technique="noh")
plot(log(OUTPUT)~log(COST), data=green, xlab="log(COST)",ylab="log(OUTPUT)") 
lines(,, lwd=4, lty=3, col="red") 
lines(,, lwd=4, lty=3, col="blue")  
legend("topleft", col=c("blue","red"),lty=3, legend=c("noh","pr"), 
 lwd=4, cex=0.8)
# }