Learn R Programming

kader (version 0.0.8)

weights_ES2012: Weights \(W_{ni}\) of Eichner & Stute (2012)

Description

Function, vectorized in its first argument sigma, to compute the ``updated'' weights \(W_{ni}\) in eq. (2.1) of Eichner & Stute (2012) for the kernel adjusted regression estimator.

Usage

weights_ES2012(sigma, xXh, thetaXh, K, h)

Arguments

sigma

Numeric vector \((\sigma_1, \ldots, \sigma_s)\) with \(s \ge 1\) with values of the scale parameter \(\sigma\).

xXh

Numeric vector expecting the pre-computed h-scaled differences \((x - X_1)/h\), …, \((x - X_n)/h\) where \(x\) is the single (!) location for which the weights are to be computed, the \(X_i\)'s are the data values, and \(h\) is the numeric bandwidth scalar.

thetaXh

Numeric vector expecting the pre-computed h-scaled differences \((\theta - X_1)/h\), …, \((\theta - X_n)/h\) where \(\theta\) is the numeric scalar location parameter, and the \(X_i\)'s and \(h\) are as in xXh.

K

A kernel function (with vectorized in- & output) to be used for the estimator.

h

Numeric scalar for bandwidth \(h\) (as ``contained'' in thetaXh and xXh).

Value

If length(sigma) > 1 a numeric matrix of the dimension length(sigma) by length(xXh) with elements \((W_{ni}(x; h, \theta, \sigma_r))\) for \(r = 1, \ldots,\) length(sigma) and \(i = 1, \ldots,\) length(xXh); otherwise a numeric vector of the same length as xXh.

Details

Note that it is not immediately obvious that \(W_{ni}\) in eq. (2.1) of Eichner & Stute (2012) is a function of \(\sigma\). In fact, \(W_{ni} = W_{ni}(x; h, \theta, \sigma)\) as can be seen on p. 2542 ibid. The computational version implemented here, however, is given in (15.19) of Eichner (2017). Pre-computed \((x - X_i)/h\) and \((\theta - X_i)/h\), \(i = 1, \ldots, n\) are expected for efficiency reasons (and are currently prepared in function kare).

References

Eichner & Stute (2012) and Eichner (2017): see kader.

See Also

bias_ES2012 and var_ES2012 which both call this function, and kare which currently does the pre-computing.

Examples

Run this code
# NOT RUN {
require(stats)

 # Regression function:
m <- function(x, x1 = 0, x2 = 8, a = 0.01, b = 0) {
 a * (x - x1) * (x - x2)^3 + b
}
 # Note: For a few details on m() see examples in ?nadwat.

n <- 100       # Sample size.
set.seed(42)   # To guarantee reproducibility.
X <- runif(n, min = -3, max = 15)      # X_1, ..., X_n   # Design.
Y <- m(X) + rnorm(length(X), sd = 5)   # Y_1, ..., Y_n   # Response.

h <- n^(-1/5)
Sigma <- seq(0.01, 10, length = 51)   # sigma-grid for minimization.
x0 <- 5   # Location at which the estimator of m should be computed.

 # Weights (W_{ni}(x; \sigma_r))_{1<=r<=length(Sigma), 1<=i<=n} for
 # Var_n(sigma) and Bias_n(sigma) each at x0 on the sigma-grid:
weights_ES2012(sigma = Sigma, xXh = (x0 - X) / h,
  thetaXh = (mean(X) - X) / h, K = dnorm, h = h)

# }

Run the code above in your browser using DataLab