Learn R Programming

NNS (version 0.5.6)

dy.d_: Partial Derivative dy/d_[wrt]

Description

Returns the numerical partial derivative of y with respect to [wrt] any regressor for a point of interest. Finite difference method is used with NNS.reg estimates as f(x + h) and f(x - h) values.

Usage

dy.d_(
  x,
  y,
  wrt,
  eval.points = "obs",
  cross.val = TRUE,
  mixed = FALSE,
  ncores = NULL,
  messages = TRUE
)

Arguments

x

a numeric matrix or data frame.

y

a numeric vector with compatible dimensions to x.

wrt

integer; Selects the regressor to differentiate with respect to (vectorized).

eval.points

numeric or options: ("obs", "apd", "mean", "median", "last"); Regressor points to be evaluated.

  • Numeric values must be in matrix or data.frame form to be evaluated for each regressor, otherwise, a vector of points will evaluate only at the wrt regressor. See examples for use cases.

  • Set to (eval.points = "obs") (defalut) to find the average partial derivative at every observation of the variable with respect to for specific tuples of given observations.

  • Set to (eval.points = "apd") to find the average partial derivative at every observation of the variable with respect to over the entire distribution of other regressors.

  • Set to (eval.points = "mean") to find the partial derivative at the mean of value of every variable.

  • Set to (eval.points = "median") to find the partial derivative at the median value of every variable.

  • Set to (eval.points = "last") to find the partial derivative at the last observation of every value (relevant for time-series data).

cross.val

logical; TRUE (default) To utilize the cross-validation regression NNS.stack for finite differences. Cross-validation is more accurate than the faster dimension reduction alternative.

mixed

logical; FALSE (default) If mixed derivative is to be evaluated, set (mixed = TRUE).

ncores

integer; value specifying the number of cores to be used in the parallelized procedure. If NULL (default), the number of cores to be used is equal to the number of cores of the machine - 1.

messages

logical; TRUE (default) Prints status messages.

Value

Returns column-wise matrix of wrt regressors:

  • dy.d_(...)[, wrt]$First the 1st derivative

  • dy.d_(...)[, wrt]$Second the 2nd derivative

  • dy.d_(...)[, wrt]$Mixed the mixed derivative (for two independent variables only).

References

Viole, F. and Nawrocki, D. (2013) "Nonlinear Nonparametric Statistics: Using Partial Moments" https://www.amazon.com/dp/1490523995/ref=cm_sw_su_dp

Vinod, H. and Viole, F. (2020) "Comparing Old and New Partial Derivative Estimates from Nonlinear Nonparametric Regressions" https://www.ssrn.com/abstract=3681104

Examples

Run this code
# NOT RUN {
set.seed(123) ; x_1 <- runif(1000) ; x_2 <- runif(1000) ; y <- x_1 ^ 2 * x_2 ^ 2
B <- cbind(x_1, x_2)

## To find derivatives of y wrt 1st regressor for specific points of both regressors
dy.d_(B, y, wrt = c(1, 2), eval.points = t(c(.5, .5)))

## To find average partial derivative of y wrt 1st regressor,
only supply 1 value in [eval.points], or a vector of [eval.points]:
dy.d_(B, y, wrt = 1, eval.points = .5)

dy.d_(B, y, wrt = 1, eval.points = fivenum(B[,1]))


## To find average partial derivative of y wrt 1st regressor,
for every oberservation of 1st regressor:
apd <- dy.d_(B, y, wrt = 1, eval.points = "apd")
plot(B[,1], apd[,1]$First)

## 95% Confidence Interval to test if 0 is within
### Lower CI
LPM.VaR(.025, 0, apd[,1]$First)

### Upper CI
UPM.VaR(.025, 0, apd[,1]$First)
# }

Run the code above in your browser using DataLab