modereg | R Documentation |
This function provides the nonparametric estimators (Zhou and Huang, 2016; Zhou and Huang, 2019) for nonparametric modal regression. The corresponding estimators in the absence of measurement error are also provided.
modereg(Y, W, bw, xgrid=NULL, sig=NULL, nstart=4, p.order=0, maxiter = 500, tol=.Machine$double.eps^0.25, mesh=NULL, PLOT=FALSE, ...)
Y |
an n by 1 response vector. |
W |
an n by 1 predictor vector. |
bw |
bandwidth. |
xgrid |
the grid values to estimate the responses. |
sig |
standard deviation of the measurement error; |
nstart |
the starting number of modes for each grid value. |
p.order |
the order of polynomial, up to 1; |
maxiter |
the maximum number of iterations performed for the mean shift algorithm if not converage. |
tol |
the deisered accurary (convergence tolerrance). |
mesh |
a matrix of initial mode points, where each row corresponds a mode in |
PLOT |
a logical value indicating whether the estimated modes will be plotted. |
... |
further arguments to be passed to or from other methods. |
The results include the grid points xgrid
for predictor, the number of modes for each grid x.num
, the initial mesh points mesh
, and corresponding fitted modes mode
.
Haiming Zhou and Xianzheng Huang
Zhou. H. and Huang, X. (2016). Nonparametric modal regression in the presence of measurement error. Electronic Journal of Statistics, 10: 3579-3620.
Zhou, H. and Huang, X. (2019). Bandwidth selection for nonparametric modal regression. Communications in Statistics - Simulation and Computation, 48(4): 968-984.
moderegbwSIMEX,moderegbw
library(lpme) rlaplace=function (use.n, location = 0, scale = 1) { location <- rep(location, length.out = use.n) scale <- rep(scale, length.out = use.n) rrrr <- runif(use.n) location - sign(rrrr - 0.5) * scale * (log(2) + ifelse(rrrr < 0.5, log(rrrr), log1p(-rrrr))) } ## sample size: n =100; ## Function m(x) to estimate# gofx1 = function(x){ (x+x^2) } gofx2 = function(x){ (x+x^2)-6 } xgrid = seq(-2, 2, length.out=100); ngrid = length(xgrid) ## Sample X X = rnorm(n, 0, 1); sigma_x=1; ## Sample Y Y = rep(0, n); U = runif(n); for(i in 1:n){ if(U[i]<0.5){ Y[i] = rnorm(1, gofx1(X[i]), 1); }else{ Y[i] = rnorm(1, gofx2(X[i]), 1); } } ## reliability ratio lambda=0.9; sigma_u = sqrt(1/lambda-1)*sigma_x; W=X+rlaplace(n,0,sigma_u/sqrt(2)); ## mode estimates hhxy = c(0.15, 1) ## Note you needs to use the following code to calculate bandwidth ## It is not run here due to the time constrain of runing examples. #hhxy = moderegbwSIMEX(Y, W, method="CV-density", p.order=0, # sig=sigma_u, B=5, length.h=10)$bw; fit = modereg(Y, W, xgrid=xgrid, bw=hhxy, sig=sigma_u, p.order=0, PLOT=TRUE); ## Plot plot(xgrid, gofx1(xgrid), "l", lwd="2", ylim=c(-9,7), xlim=c(-2,2)); lines(xgrid, gofx2(xgrid), "l", lwd="2"); points(rep(fit$xgrid,fit$x.num), fit$mode, col="3",lwd="2")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.