| Type: | Package |
| Title: | Nonlinear Nonparametric Statistics |
| Version: | 11.6.3 |
| Date: | 2025-11-26 |
| Maintainer: | Fred Viole <ovvo.financial.systems@gmail.com> |
| Description: | NNS (Nonlinear Nonparametric Statistics) leverages partial moments – the fundamental elements of variance that asymptotically approximate the area under f(x) – to provide a robust foundation for nonlinear analysis while maintaining linear equivalences. NNS delivers a comprehensive suite of advanced statistical techniques, including: Numerical integration, Numerical differentiation, Clustering, Correlation, Dependence, Causal analysis, ANOVA, Regression, Classification, Seasonality, Autoregressive modeling, Normalization, Stochastic dominance and Advanced Monte Carlo sampling. All routines based on: Viole, F. and Nawrocki, D. (2013), Nonlinear Nonparametric Statistics: Using Partial Moments (ISBN: 1490523995). |
| License: | GPL-3 |
| BugReports: | https://github.com/OVVO-Financial/NNS/issues |
| Depends: | R (≥ 3.6.0) |
| Imports: | data.table, doParallel, foreach, quantmod, Rcpp, RcppParallel,Rfast, rgl, xts, zoo |
| Suggests: | knitr, rmarkdown, testthat (≥ 3.0.0) |
| VignetteBuilder: | knitr |
| LinkingTo: | Rcpp, RcppParallel |
| SystemRequirements: | GNU make |
| Config/testthat/edition: | 3 |
| RoxygenNote: | 7.2.3 |
| Encoding: | UTF-8 |
| NeedsCompilation: | yes |
| Packaged: | 2025-11-26 14:56:56 UTC; fredv |
| Author: | Fred Viole [aut, cre], Roberto Spadim [ctb] |
| Repository: | CRAN |
| Date/Publication: | 2025-11-28 13:30:09 UTC |
NNS: Nonlinear Nonparametric Statistics
Description
Nonlinear nonparametric statistics using partial moments. Partial moments are the elements of variance and asymptotically approximate the area of f(x). These robust statistics provide the basis for nonlinear analysis while retaining linear equivalences. NNS offers: Numerical integration, Numerical differentiation, Clustering, Correlation, Dependence, Causal analysis, ANOVA, Regression, Classification, Seasonality, Autoregressive modeling, Normalization and Stochastic dominance. All routines based on: Viole, F. and Nawrocki, D. (2013), Nonlinear Nonparametric Statistics: Using Partial Moments (ISBN: 1490523995).
Author(s)
Maintainer: Fred Violeovvo.financial.systems@gmail.com
Other contributors:
Roberto Spadim [contributor]
See Also
Useful links:
Report bugs athttps://github.com/OVVO-Financial/NNS/issues
Co‑Lower Partial Moment
Description
Computes the co‑lower partial moment (lower‑left quadrant 4) between twoequal‑length numeric vectors at any degree and target.
Usage
Co.LPM(degree_lpm, x, y, target_x, target_y)Arguments
degree_lpm | numeric; degree = 0 gives frequency, degree = 1 gives area. |
x | numeric vector of observations. |
y | numeric vector of the same length as x. |
target_x | numeric vector; thresholds for x (defaults to mean(x)). |
target_y | numeric vector; thresholds for y (defaults to mean(y)). |
Value
Numeric vector of co‑LPM values.
Author(s)
Fred Viole, OVVO Financial Systems
References
Viole, F. & Nawrocki, D. (2013) *Nonlinear Nonparametric Statistics: Using Partial Moments* (ISBN:1490523995)
Examples
set.seed(123) x <- rnorm(100); y <- rnorm(100) Co.LPM(0, x, y, mean(x), mean(y))Co‑Lower Partial Moment nD
Description
This function generates an n‑dimensional co‑lower partial moment (n >= 2) for any degree or target.
Usage
Co.LPM_nD(data, target, degree = 0, norm = TRUE)Arguments
data | A numeric matrix with observations in rows and variables in columns. |
target | A numeric vector, length equal to ncol(data). |
degree | numeric; degree for lower deviations (0 = frequency, 1 = area). |
norm | logical; if |
Value
Numeric; the n‑dimensional co‑lower partial moment.
Examples
## Not run: mat <- matrix(rnorm(200), ncol = 4)Co.LPM_nD(mat, rep(0, ncol(mat)), degree = 1, norm = FALSE)## End(Not run)Co‑Upper Partial Moment
Description
Computes the co‑upper partial moment (upper‑right quadrant 1) between twoequal‑length numeric vectors at any degree and target.
Usage
Co.UPM(degree_upm, x, y, target_x, target_y)Arguments
degree_upm | numeric; degree = 0 gives frequency, degree = 1 gives area. |
x | numeric vector of observations. |
y | numeric vector of the same length as x. |
target_x | numeric vector; thresholds for x (defaults to mean(x)). |
target_y | numeric vector; thresholds for y (defaults to mean(y)). |
Value
Numeric vector of co‑UPM values.
Author(s)
Fred Viole, OVVO Financial Systems
References
Viole, F. & Nawrocki, D. (2013) *Nonlinear Nonparametric Statistics: Using Partial Moments* (ISBN:1490523995)
Examples
set.seed(123) x <- rnorm(100); y <- rnorm(100) Co.UPM(0, x, y, mean(x), mean(y))Co‑Upper Partial Moment nD
Description
This function generates an n‑dimensional co‑upper partial moment (n >= 2) for any degree or target.
Usage
Co.UPM_nD(data, target, degree = 0, norm = TRUE)Arguments
data | A numeric matrix with observations in rows and variables in columns. |
target | A numeric vector, length equal to ncol(data). |
degree | numeric; degree for upper deviations (0 = frequency, 1 = area). |
norm | logical; if |
Value
Numeric; the n‑dimensional co‑upper partial moment.
Examples
## Not run: mat <- matrix(rnorm(200), ncol = 4)Co.UPM_nD(mat, rep(0, ncol(mat)), degree = 1, norm = FALSE)## End(Not run)Divergent‑Lower Partial Moment
Description
Computes the divergent lower partial moment (lower‑right quadrant 3)between two equal‑length numeric vectors.
Usage
D.LPM(degree_lpm, degree_upm, x, y, target_x, target_y)Arguments
degree_lpm | numeric; LPM degree = 0 gives frequency, = 1 gives area. |
degree_upm | numeric; UPM degree = 0 gives frequency, = 1 gives area. |
x | numeric vector of observations. |
y | numeric vector of the same length as x. |
target_x | numeric vector; thresholds for x (defaults to mean(x)). |
target_y | numeric vector; thresholds for y (defaults to mean(y)). |
Value
Numeric vector of divergent LPM values.
Author(s)
Fred Viole, OVVO Financial Systems
References
Viole, F. & Nawrocki, D. (2013) *Nonlinear Nonparametric Statistics: Using Partial Moments* (ISBN:1490523995)
Examples
set.seed(123) x <- rnorm(100); y <- rnorm(100) D.LPM(0, 0, x, y, mean(x), mean(y))Divergent‑Upper Partial Moment
Description
Computes the divergent upper partial moment (upper‑left quadrant 2)between two equal‑length numeric vectors.
Usage
D.UPM(degree_lpm, degree_upm, x, y, target_x, target_y)Arguments
degree_lpm | numeric; LPM degree = 0 gives frequency, = 1 gives area. |
degree_upm | numeric; UPM degree = 0 gives frequency, = 1 gives area. |
x | numeric vector of observations. |
y | numeric vector of the same length as x. |
target_x | numeric vector; thresholds for x (defaults to mean(x)). |
target_y | numeric vector; thresholds for y (defaults to mean(y)). |
Value
Numeric vector of divergent UPM values.
Author(s)
Fred Viole, OVVO Financial Systems
References
Viole, F. & Nawrocki, D. (2013) *Nonlinear Nonparametric Statistics: Using Partial Moments* (ISBN:1490523995)
Examples
set.seed(123) x <- rnorm(100); y <- rnorm(100) D.UPM(0, 0, x, y, mean(x), mean(y))Divergent Partial Moment nD
Description
This function generates the aggregate n‑dimensional divergent partial moment (n >= 2) for any degree or target.
Usage
DPM_nD(data, target, degree = 0, norm = TRUE)Arguments
data | A numeric matrix with observations in rows and variables in columns. |
target | A numeric vector, length equal to ncol(data). |
degree | numeric; degree for upper deviations (0 = frequency, 1 = area). |
norm | logical; if |
Value
Numeric; the n‑dimensional co‑upper partial moment.
Examples
## Not run: mat <- matrix(rnorm(200), ncol = 4)DPM_nD(mat, rep(0, ncol(mat)), degree = 1, norm = FALSE)## End(Not run)Lower Partial Moment
Description
This function generates a univariate lower partial moment for any degree or target.
Usage
LPM(degree, target, variable, excess_ret = FALSE)Arguments
degree | numeric; |
target | numeric; Set to |
variable | a numeric vector.data.frame orlist type objects are not permissible. |
excess_ret | logical; |
Value
LPM of variable
Author(s)
Fred Viole, OVVO Financial Systems
References
Viole, F. and Nawrocki, D. (2013) "Nonlinear Nonparametric Statistics: Using Partial Moments" (ISBN: 1490523995)
Examples
set.seed(123)x <- rnorm(100)LPM(0, mean(x), x)LPM VaR
Description
Generates a value at risk (VaR) quantile based on the Lower Partial Moment ratio.
Usage
LPM.VaR(percentile, degree, x)Arguments
percentile | numeric [0, 1]; The percentile for left-tail VaR (vectorized). |
degree | integer; |
x | a numeric vector. |
Value
Returns a numeric value representing the point at which"percentile" of the area ofx is below.
Author(s)
Fred Viole, OVVO Financial Systems
References
Viole, F. and Nawrocki, D. (2013) "Nonlinear Nonparametric Statistics: Using Partial Moments" (ISBN: 1490523995)
Examples
## Not run: set.seed(123)x <- rnorm(100)## For 5th percentile, left-tailLPM.VaR(0.05, 0, x)## End(Not run)Lower Partial Moment Ratio
Description
This function generates a standardized univariate lower partial momentof any non‑negative degree for a given target.
Usage
LPM.ratio(degree, target, variable)Arguments
degree | numeric; degree = 0 gives frequency (CDF), degree = 1 gives area. |
target | numeric vector; threshold(s). Defaults to mean(variable). |
variable | numeric vector or data‑frame column to evaluate. |
Value
Numeric vector of standardized lower partial moments.
Author(s)
Fred Viole, OVVO Financial Systems
References
Viole, F. & Nawrocki, D. (2013) *Nonlinear Nonparametric Statistics: Using Partial Moments* (ISBN:1490523995)
Viole, F. (2017) Continuous CDFs and ANOVA with NNS.doi:10.2139/ssrn.3007373
Examples
set.seed(123) x <- rnorm(100) LPM.ratio(0, mean(x), x)## Not run: plot(sort(x), LPM.ratio(0, sort(x), x)) plot(sort(x), LPM.ratio(1, sort(x), x))## End(Not run)NNS ANOVA: Nonparametric Analysis of Variance
Description
Performs a distribution-free ANOVA using partial-moment statistics to assessdifferences between control and treatment groups. Depending on the setting ofmeans.only, the procedure tests either differences in central tendency(means or medians) or differences across the full empirical distributions.
Usage
NNS.ANOVA( control, treatment, means.only = FALSE, medians = FALSE, confidence.interval = 0.95, tails = "Both", pairwise = FALSE, plot = TRUE, robust = FALSE)Arguments
control | Numeric vector of control group observations |
treatment | Numeric vector of treatment group observations |
means.only | Logical; |
medians | Logical; |
confidence.interval | Numeric [0,1]; confidence level for effect size bounds (e.g., 0.95) |
tails | Character; specifies CI tail(s): "both", "left", or "right" |
pairwise | logical; |
plot | Logical; |
robust | logical; |
Details
The key output is theCertainty metric, a calibrated probability in[0, 1] representing the likelihood that the groups being compared arethe *same* with respect to the chosen comparison mode:
If
means.only = TRUE:Certaintyis the probability thatthe groupmeans (or medians, ifmedians = TRUE) are the same.If
means.only = FALSE:Certaintyis the probability thatthe twoentire distributions are the same.
This makesCertainty the conceptual inverse of a classical p-value.A *low* Certainty (e.g., < 0.10) indicates strong evidence of difference,while a *high* Certainty (e.g., > 0.90) indicates strong evidence of similarity.
Value
Returns a list containing:
Control_Statistic: Mean/median of control groupTreatment_Statistic: Mean/median of treatment groupGrand_Statistic: Grand mean/medianControl_CDF: CDF value at grand statistic (control)Treatment_CDF: CDF value at grand statistic (treatment)Certainty: Probability that the groups are thesame(means-only or full distribution depending onmeans.only).Effect_Size_LB: Lower bound of treatment effect (if CI requested)Effect_Size_UB: Upper bound of treatment effect (if CI requested)Confidence_Level: Confidence level used (if CI requested)
Author(s)
Fred Viole, OVVO Financial Systems
References
Viole, F. and Nawrocki, D. (2013) "Nonlinear Nonparametric Statistics: Using Partial Moments" (ISBN: 1490523995)
Viole, F. (2017) "Continuous CDFs and ANOVA with NNS"doi:10.2139/ssrn.3007373
Examples
## Not run: ### Binary analysis and effect sizeset.seed(123)x <- rnorm(100) ; y <- rnorm(100)NNS.ANOVA(control = x, treatment = y)### Two variable analysis with no control variableA <- cbind(x, y)NNS.ANOVA(A)### Medians testNNS.ANOVA(A, means.only = TRUE, medians = TRUE)### Multiple variable analysis with no control variableset.seed(123)x <- rnorm(100) ; y <- rnorm(100) ; z <- rnorm(100)A <- cbind(x, y, z)NNS.ANOVA(A)### Different length vectors used in a listx <- rnorm(30) ; y <- rnorm(40) ; z <- rnorm(50)A <- list(x, y, z)NNS.ANOVA(A)## End(Not run)NNS ARMA
Description
Autoregressive model incorporating nonlinear regressions of component series.
Usage
NNS.ARMA( variable, h = 1, training.set = NULL, seasonal.factor = TRUE, weights = NULL, best.periods = 1, modulo = NULL, mod.only = TRUE, negative.values = FALSE, method = "nonlin", dynamic = FALSE, shrink = FALSE, plot = TRUE, seasonal.plot = TRUE, pred.int = NULL)Arguments
variable | a numeric vector. |
h | integer; 1 (default) Number of periods to forecast. |
training.set | numeric;
|
seasonal.factor | logical or integer(s); |
weights | numeric or |
best.periods | integer; [2] (default) used in conjunction with |
modulo | integer(s); NULL (default) Used to find the nearest multiple(s) in the reported seasonal period. |
mod.only | logical; |
negative.values | logical; |
method | options: ("lin", "nonlin", "both", "means"); |
dynamic | logical; |
shrink | logical; |
plot | logical; |
seasonal.plot | logical; |
pred.int | numeric [0, 1]; |
Value
Returns a vector of forecasts of length(h) if nopred.int specified. Else, returns adata.table with the forecasts as well as lower and upper prediction intervals per forecast point.
Note
For monthly data series, increased accuracy may be realized from forcing seasonal factors to multiples of 12. For example, if the best periods reported are: {37, 47, 71, 73} use(seasonal.factor = c(36, 48, 72)).
(seasonal.factor = FALSE) can be a very computationally expensive exercise due to the number of seasonal periods detected.
Author(s)
Fred Viole, OVVO Financial Systems
References
Viole, F. and Nawrocki, D. (2013) "Nonlinear Nonparametric Statistics: Using Partial Moments" (ISBN: 1490523995)
Viole, F. (2019) "Forecasting Using NNS"doi:10.2139/ssrn.3382300
Examples
## Nonlinear NNS.ARMA using AirPassengers monthly data and 12 period lag## Not run: NNS.ARMA(AirPassengers, h = 45, training.set = 100, seasonal.factor = 12, method = "nonlin")## Linear NNS.ARMA using AirPassengers monthly data and 12, 24, and 36 period lagsNNS.ARMA(AirPassengers, h = 45, training.set = 120, seasonal.factor = c(12, 24, 36), method = "lin")## Nonlinear NNS.ARMA using AirPassengers monthly data and 2 best periods lagNNS.ARMA(AirPassengers, h = 45, training.set = 120, seasonal.factor = FALSE, best.periods = 2)## End(Not run)NNS ARMA Optimizer
Description
Wrapper function for optimizing any combination of a givenseasonal.factor vector inNNS.ARMA. Minimum sum of squared errors (forecast-actual) is used to determine optimum across allNNS.ARMA methods.
Usage
NNS.ARMA.optim( variable, h = NULL, training.set = NULL, seasonal.factor, lin.only = FALSE, negative.values = FALSE, obj.fn = expression(mean((predicted - actual)^2)/(NNS::Co.LPM(1, predicted, actual, target_x = mean(predicted), target_y = mean(actual)) + NNS::Co.UPM(1, predicted, actual, target_x = mean(predicted), target_y = mean(actual)))), objective = "min", linear.approximation = TRUE, ncores = NULL, pred.int = 0.95, print.trace = TRUE, plot = FALSE)Arguments
variable | a numeric vector. |
h | integer; |
training.set | integer; |
seasonal.factor | integers; Multiple frequency integers considered forNNS.ARMA model, i.e. |
lin.only | logical; |
negative.values | logical; |
obj.fn | expression; |
objective | options: ("min", "max") |
linear.approximation | logical; |
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. |
pred.int | numeric [0, 1]; 0.95 (default) Returns the associated prediction intervals for the final estimate. Constructed using the maximum entropy bootstrapNNS.meboot on the final estimates. |
print.trace | logical; |
plot | logical; |
Value
Returns a list containing:
$perioda vector of optimal seasonal periods$weightsthe optimal weights of each seasonal period between an equal weight or NULL weighting$obj.fnthe objective function value$methodthe method identifying whichNNS.ARMA method was used.$shrinkwhether to use theshrinkparameter inNNS.ARMA.$nns.regresswhether to smooth the variable viaNNS.reg before forecasting.$bias.shifta numerical result of the overall bias of the optimum objective function result. To be added to the final result when using theNNS.ARMA with the derived parameters.$errorsa vector of model errors from internal calibration.$resultsa vector of lengthh.$lower.pred.inta vector of lower prediction intervals per forecast point.$upper.pred.inta vector of upper prediction intervals per forecast point.
Note
Typically,
(training.set = 0.8 * length(variable))is used for optimization. Smaller samples could use(training.set = 0.9 * length(variable))(or larger) in order to preserve information.The number of combinations will grow prohibitively large, they should be kept as small as possible.
seasonal.factorcontaining an element too large will result in an error. Please reduce the maximumseasonal.factor.Set
(ncores = 1)if routine is used within a parallel architecture.
Author(s)
Fred Viole, OVVO Financial Systems
References
Viole, F. and Nawrocki, D. (2013) "Nonlinear Nonparametric Statistics: Using Partial Moments" (ISBN: 1490523995)
Examples
## Nonlinear NNS.ARMA period optimization using 2 yearly lags on AirPassengers monthly data## Not run: nns.optims <- NNS.ARMA.optim(AirPassengers[1:132], training.set = 120,seasonal.factor = seq(12, 24, 6))## To predict out of sample using best parameters:NNS.ARMA.optim(AirPassengers[1:132], h = 12, seasonal.factor = seq(12, 24, 6))## Incorporate any objective function from external packages (such as \code{Metrics::mape})NNS.ARMA.optim(AirPassengers[1:132], h = 12, seasonal.factor = seq(12, 24, 6),obj.fn = expression(Metrics::mape(actual, predicted)), objective = "min")## End(Not run)NNS CDF
Description
This function generates an empirical CDF using partial moment ratiosLPM.ratio, and resulting survival, hazard and cumulative hazard functions.
Usage
NNS.CDF(variable, degree = 0, target = NULL, type = "CDF", plot = TRUE)Arguments
variable | a numeric vector or data.frame of >= 2 variables for joint CDF. |
degree | numeric; |
target | numeric; |
type | options("CDF", "survival", "hazard", "cumulative hazard"); |
plot | logical; plots CDF. |
Value
Returns:
"Function"a data.table containing the observations and resulting CDF of the variable."target.value"value from thetargetargument.
Author(s)
Fred Viole, OVVO Financial Systems
References
Viole, F. and Nawrocki, D. (2013) "Nonlinear Nonparametric Statistics: Using Partial Moments" (ISBN: 1490523995)
Viole, F. (2017) "Continuous CDFs and ANOVA with NNS"doi:10.2139/ssrn.3007373
Examples
## Not run: set.seed(123)x <- rnorm(100)NNS.CDF(x)## Empirical CDF (degree = 0)NNS.CDF(x)## Continuous CDF (degree = 1)NNS.CDF(x, 1)## Joint CDFx <- rnorm(5000) ; y <- rnorm(5000)A <- cbind(x,y)NNS.CDF(A, 0)## Joint CDF with targetNNS.CDF(A, 0, target = rep(0, ncol(A)))## End(Not run)NNS FSD Test
Description
Bi-directional test of first degree stochastic dominance using lower partial moments.
Usage
NNS.FSD(x, y, type = "discrete", plot = TRUE)Arguments
x | a numeric vector. |
y | a numeric vector. |
type | options: ("discrete", "continuous"); |
plot | logical; |
Value
Returns one of the following FSD results:"X FSD Y","Y FSD X", or"NO FSD EXISTS".
Author(s)
Fred Viole, OVVO Financial Systems
References
Viole, F. and Nawrocki, D. (2016) "LPM Density Functions for the Computation of the SD Efficient Set." Journal of Mathematical Finance, 6, 105-126.doi:10.4236/jmf.2016.61012.
Viole, F. (2017) "A Note on Stochastic Dominance."doi:10.2139/ssrn.3002675.
Examples
## Not run: set.seed(123)x <- rnorm(100) ; y <- rnorm(100)NNS.FSD(x, y)## End(Not run)NNS FSD Test uni-directional
Description
Uni-directional test of first degree stochastic dominance using lower partial moments used in SD Efficient Set routine.
Usage
NNS.FSD.uni(x, y, type = "discrete")Arguments
x | a numeric vector. |
y | a numeric vector. |
type | options: ("discrete", "continuous"); |
Value
Returns (1) if"X FSD Y", else (0).
Author(s)
Fred Viole, OVVO Financial Systems
References
Viole, F. and Nawrocki, D. (2016) "LPM Density Functions for the Computation of the SD Efficient Set." Journal of Mathematical Finance, 6, 105-126.doi:10.4236/jmf.2016.61012
Viole, F. (2017) "A Note on Stochastic Dominance."doi:10.2139/ssrn.3002675
Examples
## Not run: set.seed(123)x <- rnorm(100) ; y <- rnorm(100)NNS.FSD.uni(x, y)## End(Not run)NNS Monte Carlo Sampling
Description
Monte Carlo sampling from the maximum entropy bootstrap routineNNS.meboot, ensuring the replicates are sampled from the full [-1,1] correlation space.
Usage
NNS.MC( x, reps = 30, lower_rho = -1, upper_rho = 1, by = 0.01, exp = 1, type = "spearman", drift = TRUE, target_drift = NULL, target_drift_scale = NULL, xmin = NULL, xmax = NULL, ...)Arguments
x | vector of data. |
reps | numeric; number of replicates to generate, |
lower_rho | numeric |
upper_rho | numeric |
by | numeric; |
exp | numeric; |
type | options("spearman", "pearson", "NNScor", "NNSdep"); |
drift | logical; |
target_drift | numerical; |
target_drift_scale | numerical; instead of calculating a |
xmin | numeric; the lower limit for the left tail. |
xmax | numeric; the upper limit for the right tail. |
... | possible additional arguments to be passed toNNS.meboot. |
Value
ensemble average observation over all replicates as a vector.
replicates maximum entropy bootstrap replicates as a list for each
rho.
References
Vinod, H.D. and Viole, F. (2020) Arbitrary Spearman's Rank Correlations in Maximum Entropy Bootstrap and Improved Monte Carlo Simulations.doi:10.2139/ssrn.3621614
Examples
## Not run: # To generate a set of MC sampled time-series to AirPassengersMC_samples <- NNS.MC(AirPassengers, reps = 10, lower_rho = -1, upper_rho = 1, by = .5, xmin = 0)## End(Not run)NNS SD-based Clustering
Description
Clusters a set of variables by iteratively extracting Stochastic Dominance (SD)-efficient sets,subject to a minimum cluster size.
Usage
NNS.SD.cluster( data, degree = 1, type = "discrete", min_cluster = 1, dendrogram = FALSE)Arguments
data | A numeric matrix or data frame of variables to be clustered. |
degree | Numeric options: (1, 2, 3). Degree of stochastic dominance test. |
type | Character, either |
min_cluster | Integer. The minimum number of elements required for a valid cluster. |
dendrogram | Logical; |
Details
The function appliesNNS.SD.efficient.set iteratively, peeling off the SD-efficient set at each stepif it meets or exceedsmin_cluster in size, until no more subsets can be extracted or all variables are exhausted.Variables in each SD-efficient set form a cluster, with any remaining variables aggregated into the final cluster if it meetsthemin_cluster threshold.
Value
A list with the following components:
Clusters: A named list of cluster memberships where each element is the set of variable names belonging to that cluster.Dendrogram(optional): Ifdendrogram = TRUE, anhclustobject is also returned.
Author(s)
Fred Viole, OVVO Financial Systems
References
Viole, F. and Nawrocki, D. (2016) "LPM Density Functions for the Computation of the SD Efficient Set." Journal of Mathematical Finance, 6, 105-126.doi:10.4236/jmf.2016.61012.
Viole, F. (2017) "A Note on Stochastic Dominance."doi:10.2139/ssrn.3002675
Examples
## Not run: set.seed(123)x <- rnorm(100)y <- rnorm(100)z <- rnorm(100)A <- cbind(x, y, z)# Perform SD-based clustering (degree 1), requiring at least 2 elements per clusterresults <- NNS.SD.cluster(data = A, degree = 1, min_cluster = 2)print(results$Clusters)# Produce a dendrogram as wellresults_with_dendro <- NNS.SD.cluster(data = A, degree = 1, min_cluster = 2, dendrogram = TRUE)## End(Not run)NNS SD Efficient Set
Description
Determines the set of stochastic dominant variables for various degrees.
Usage
NNS.SD.efficient.set(x, degree, type = "discrete", status = TRUE)Arguments
x | a numeric matrix or data frame. |
degree | numeric options: (1, 2, 3); Degree of stochastic dominance test from (1, 2 or 3). |
type | options: ("discrete", "continuous"); |
status | logical; |
Value
Returns set of stochastic dominant variable names.
Author(s)
Fred Viole, OVVO Financial Systems
References
Viole, F. and Nawrocki, D. (2016) "LPM Density Functions for the Computation of the SD Efficient Set." Journal of Mathematical Finance, 6, 105-126.doi:10.4236/jmf.2016.61012.
Viole, F. (2017) "A Note on Stochastic Dominance."doi:10.2139/ssrn.3002675
Examples
## Not run: set.seed(123)x <- rnorm(100) ; y<-rnorm(100) ; z<-rnorm(100)A <- cbind(x, y, z)NNS.SD.efficient.set(A, 1)## End(Not run)NNS SSD Test
Description
Bi-directional test of second degree stochastic dominance using lower partial moments.
Usage
NNS.SSD(x, y, plot = TRUE)Arguments
x | a numeric vector. |
y | a numeric vector. |
plot | logical; |
Value
Returns one of the following SSD results:"X SSD Y","Y SSD X", or"NO SSD EXISTS".
Author(s)
Fred Viole, OVVO Financial Systems
References
Viole, F. and Nawrocki, D. (2016) "LPM Density Functions for the Computation of the SD Efficient Set." Journal of Mathematical Finance, 6, 105-126.doi:10.4236/jmf.2016.61012.
Examples
## Not run: set.seed(123)x <- rnorm(100) ; y <- rnorm(100)NNS.SSD(x, y)## End(Not run)NNS SSD Test uni-directional
Description
Uni-directional test of second degree stochastic dominance using lower partial moments used in SD Efficient Set routine.
Usage
NNS.SSD.uni(x, y)Arguments
x | a numeric vector. |
y | a numeric vector. |
Value
Returns (1) if"X SSD Y", else (0).
Author(s)
Fred Viole, OVVO Financial Systems
References
Viole, F. and Nawrocki, D. (2016) "LPM Density Functions for the Computation of the SD Efficient Set." Journal of Mathematical Finance, 6, 105-126.doi:10.4236/jmf.2016.61012.
Examples
## Not run: set.seed(123)x <- rnorm(100) ; y <- rnorm(100)NNS.SSD.uni(x, y)## End(Not run)NNS TSD Test
Description
Bi-directional test of third degree stochastic dominance using lower partial moments.
Usage
NNS.TSD(x, y, plot = TRUE)Arguments
x | a numeric vector. |
y | a numeric vector. |
plot | logical; |
Value
Returns one of the following TSD results:"X TSD Y","Y TSD X", or"NO TSD EXISTS".
Author(s)
Fred Viole, OVVO Financial Systems
References
Viole, F. and Nawrocki, D. (2016) "LPM Density Functions for the Computation of the SD Efficient Set." Journal of Mathematical Finance, 6, 105-126.doi:10.4236/jmf.2016.61012.
Examples
## Not run: set.seed(123)x <- rnorm(100) ; y <- rnorm(100)NNS.TSD(x, y)## End(Not run)NNS TSD Test uni-directional
Description
Uni-directional test of third degree stochastic dominance using lower partial moments used in SD Efficient Set routine.
Usage
NNS.TSD.uni(x, y)Arguments
x | a numeric vector. |
y | a numeric vector. |
Value
Returns (1) if"X TSD Y", else (0).
Author(s)
Fred Viole, OVVO Financial Systems
References
Viole, F. and Nawrocki, D. (2016) "LPM Density Functions for the Computation of the SD Efficient Set." Journal of Mathematical Finance, 6, 105-126.doi:10.4236/jmf.2016.61012.
Examples
## Not run: set.seed(123)x <- rnorm(100) ; y <- rnorm(100)NNS.TSD.uni(x, y)## End(Not run)NNS VAR
Description
Nonparametric vector autoregressive model incorporatingNNS.ARMA estimates of variables intoNNS.reg for a multi-variate time-series forecast.
Usage
NNS.VAR( variables, h, tau = 1, dim.red.method = "cor", naive.weights = TRUE, obj.fn = expression(mean((predicted - actual)^2)/(NNS::Co.LPM(1, predicted, actual, target_x = mean(predicted), target_y = mean(actual)) + NNS::Co.UPM(1, predicted, actual, target_x = mean(predicted), target_y = mean(actual)))), objective = "min", status = TRUE, ncores = NULL, nowcast = FALSE)Arguments
variables | a numeric matrix or data.frame of contemporaneous time-series to forecast. |
h | integer; 1 (default) Number of periods to forecast. |
tau | positive integer [ > 0]; 1 (default) Number of lagged observations to consider for the time-series data. Vector for single lag for each respective variable or list for multiple lags per each variable. |
dim.red.method | options: ("cor", "NNS.dep", "NNS.caus", "all") method for reducing regressors viaNNS.stack. |
naive.weights | logical; |
obj.fn | expression; |
objective | options: ("min", "max") |
status | logical; |
ncores | integer; value specifying the number of cores to be used in the parallelized subroutineNNS.ARMA.optim. If NULL (default), the number of cores to be used is equal to the number of cores of the machine - 1. |
nowcast | logical; |
Value
Returns the following matrices of forecasted variables:
"interpolated_and_extrapolated"Returns adata.frameof the linear interpolated andNNS.ARMA extrapolated values to replaceNAvalues in the originalvariablesargument. This is required for working with variables containing different frequencies, e.g. whereNAwould be reported for intra-quarterly data when indexed with monthly periods."relevant_variables"Returns the relevant variables from the dimension reduction step."univariate"Returns the univariateNNS.ARMA forecasts."multivariate"Returns the multi-variateNNS.reg forecasts."ensemble"Returns the ensemble of both"univariate"and"multivariate"forecasts.
Note
"Error in { : task xx failed -}"should be re-run withNNS.VAR(..., ncores = 1).Not recommended for factor variables, even after transformed to numeric.NNS.reg is better suited for factor or binary regressor extrapolation.
Author(s)
Fred Viole, OVVO Financial Systems
References
Viole, F. and Nawrocki, D. (2013) "Nonlinear Nonparametric Statistics: Using Partial Moments" (ISBN: 1490523995)
Viole, F. (2019) "Multi-variate Time-Series Forecasting: Nonparametric Vector Autoregression Using NNS"doi:10.2139/ssrn.3489550
Viole, F. (2020) "NOWCASTING with NNS"doi:10.2139/ssrn.3589816
Viole, F. (2019) "Forecasting Using NNS"doi:10.2139/ssrn.3382300
Vinod, H. and Viole, F. (2017) "Nonparametric Regression Using Clusters"doi:10.1007/s10614-017-9713-5
Vinod, H. and Viole, F. (2018) "Clustering and Curve Fitting by Line Segments"doi:10.20944/preprints201801.0090.v1
Examples
## Not run: #################################################### ### Standard Nonparametric Vector Autoregression ### #################################################### set.seed(123) x <- rnorm(100) ; y <- rnorm(100) ; z <- rnorm(100) A <- cbind(x = x, y = y, z = z) ### Using lags 1:4 for each variable NNS.VAR(A, h = 12, tau = 4, status = TRUE) ### Using lag 1 for variable 1, lag 3 for variable 2 and lag 3 for variable 3 NNS.VAR(A, h = 12, tau = c(1,3,3), status = TRUE) ### Using lags c(1,2,3) for variables 1 and 3, while using lags c(4,5,6) for variable 2 NNS.VAR(A, h = 12, tau = list(c(1,2,3), c(4,5,6), c(1,2,3)), status = TRUE) ### PREDICTION INTERVALS # Store NNS.VAR output nns_estimate <- NNS.VAR(A, h = 12, tau = 4, status = TRUE) # Create bootstrap replicates using NNS.meboot replicates <- NNS.meboot(nns_estimate$ensemble[,1], rho = seq(-1,1,.25))["replicates",] replicates <- do.call(cbind, replicates) # Apply UPM.VaR and LPM.VaR for desired prediction interval...95 percent illustrated # Tail percentage used in first argument per {LPM.VaR} and {UPM.VaR} functions lower_CIs <- apply(replicates, 1, function(z) LPM.VaR(0.025, 0, z)) upper_CIs <- apply(replicates, 1, function(z) UPM.VaR(0.025, 0, z)) # View results cbind(nns_estimate$ensemble[,1], lower_CIs, upper_CIs) ######################################### ### NOWCASTING with Mixed Frequencies ### ######################################### library(Quandl) econ_variables <- Quandl(c("FRED/GDPC1", "FRED/UNRATE", "FRED/CPIAUCSL"),type = 'ts', order = "asc", collapse = "monthly", start_date = "2000-01-01") ### Note the missing values that need to be imputed head(econ_variables) tail(econ_variables) NNS.VAR(econ_variables, h = 12, tau = 12, status = TRUE) ## End(Not run)NNS Boost
Description
Ensemble method for classification using the NNS multivariate regressionNNS.reg as the base learner instead of trees.
Usage
NNS.boost( IVs.train, DV.train, IVs.test = NULL, type = NULL, depth = NULL, learner.trials = 100, epochs = NULL, CV.size = NULL, balance = FALSE, ts.test = NULL, folds = 5, threshold = NULL, obj.fn = expression(sum((predicted - actual)^2)), objective = "min", extreme = FALSE, features.only = FALSE, feature.importance = TRUE, pred.int = NULL, status = TRUE)Arguments
IVs.train | a matrix or data frame of variables of numeric or factor data types. |
DV.train | a numeric or factor vector with compatible dimensions to |
IVs.test | a matrix or data frame of variables of numeric or factor data types with compatible dimensions to |
type |
|
depth | options: (integer, NULL, "max"); |
learner.trials | integer; 100 (default) Sets the number of trials to obtain an accuracy |
epochs | integer; |
CV.size | numeric [0, 1]; |
balance | logical; |
ts.test | integer; NULL (default) Sets the length of the test set for time-series data; typically |
folds | integer; 5 (default) Sets the number of |
threshold | numeric; |
obj.fn | expression; |
objective | options: ("min", "max") |
extreme | logical; |
features.only | logical; |
feature.importance | logical; |
pred.int | numeric [0,1]; |
status | logical; |
Value
Returns a vector of fitted values for the dependent variable test set$results, prediction intervals$pred.int, and the final feature loadings$feature.weights, along with final feature frequencies$feature.frequency.
Note
Like a logistic regression, the
(type = "CLASS")setting is not necessary for target variable of two classes e.g. [0, 1]. The response variable base category should be 1 for classification problems.Incorporate any objective function from external packages (such as
Metrics::mape) viaNNS.boost(..., obj.fn = expression(Metrics::mape(actual, predicted)), objective = "min")
Author(s)
Fred Viole, OVVO Financial Systems
References
Viole, F. (2016) "Classification Using NNS Clustering Analysis"doi:10.2139/ssrn.2864711
Examples
## Using 'iris' dataset where test set [IVs.test] is 'iris' rows 141:150. ## Not run: a <- NNS.boost(iris[1:140, 1:4], iris[1:140, 5], IVs.test = iris[141:150, 1:4], epochs = 100, learner.trials = 100, type = "CLASS", depth = NULL, balance = TRUE) ## Test accuracy mean(a$results == as.numeric(iris[141:150, 5])) ## End(Not run)NNS Causation
Description
Returns the causality from observational data between two variables.
Usage
NNS.caus( x, y = NULL, factor.2.dummy = FALSE, tau = 0, plot = FALSE, p.value = FALSE, nperm = 100L, permute = c("y", "x", "both"), seed = NULL, conf.int = 0.95)Arguments
x | a numeric vector, matrix or data frame. |
y |
|
factor.2.dummy | logical; |
tau | options: ("cs", "ts", integer); 0 (default) Number of lagged observations to consider (for time series data). Otherwise, set |
plot | logical; |
p.value | logical; |
nperm | integer; number of permutations to use when |
permute | one of "both", "y", or "x"; which variable(s) to shuffle when constructing the null distribution. |
seed | optional integer seed for reproducibility of the permutation test. |
conf.int | numeric; 0.95 (default) confidence level for the partial-moment based interval computed on the permutation null distribution. |
Value
Ifp.value=FALSE returns the original causation vector of length 3 (directional given/received and net), named either "C(x—>y)" or "C(y—>x)" in the third slot. Ifp.value=TRUE returns a list with components:*causation: the original causation vector as above.*p.value: a list with empirical two-sided and one-sided p-values (x_causes_y, y_causes_x), the null distribution, the observed signed statistic, and metadata (permute, nperm).Ifp.value=TRUE for a matrix, the function returns a list with components:*causality: the causality matrix.*lower_CI: matrix of lower confidence bounds (partial-moment based).*upper_CI: matrix of upper confidence bounds (partial-moment based).*p.value: matrix of empirical two-sided p-values.
Author(s)
Fred Viole, OVVO Financial Systems
References
Viole, F. and Nawrocki, D. (2013) "Nonlinear Nonparametric Statistics: Using Partial Moments" (ISBN: 1490523995)
Examples
## Not run: ## x causes y...set.seed(123)x <- rnorm(1000) ; y <- x ^ 2NNS.caus(x, y, tau = "cs")## Causal matrix without per factor causationNNS.caus(iris, tau = 0)## Causal matrix with per factor causationNNS.caus(iris, factor.2.dummy = TRUE, tau = 0)## End(Not run)NNS Co-Partial Moments Higher Dimension Dependence
Description
Determines higher dimension dependence coefficients based on co-partial moment matrices ratios.
Usage
NNS.copula( X, target = NULL, continuous = TRUE, plot = FALSE, independence.overlay = FALSE)Arguments
X | a numeric matrix or data frame. |
target | numeric; Typically the mean of Variable X for classical statistics equivalences, but does not have to be. (Vectorized) |
continuous | logical; |
plot | logical; |
independence.overlay | logical; |
Value
Returns a multivariate dependence value [0,1].
Author(s)
Fred Viole, OVVO Financial Systems
References
Viole, F. (2016) "Beyond Correlation: Using the Elements of Variance for Conditional Means and Probabilities"doi:10.2139/ssrn.2745308.
Examples
## Not run: set.seed(123)x <- rnorm(1000) ; y <- rnorm(1000) ; z <- rnorm(1000)A <- data.frame(x, y, z)NNS.copula(A, target = colMeans(A), plot = TRUE, independence.overlay = TRUE)### Target 0NNS.copula(A, target = rep(0, ncol(A)), plot = TRUE, independence.overlay = TRUE)## End(Not run)NNS Dependence
Description
Returns the dependence and nonlinear correlation between two variables based on higher order partial moment matrices measured by frequency or area.
Usage
NNS.dep(x, y = NULL, asym = FALSE, p.value = FALSE, print.map = FALSE)Arguments
x | a numeric vector, matrix or data frame. |
y |
|
asym | logical; |
p.value | logical; |
print.map | logical; |
Value
Returns the bi-variate"Correlation" and"Dependence" or correlation / dependence matrix for matrix input.
Note
For asymmetrical(asym = TRUE) matrices, directional dependence is returned as ([column variable] —> [row variable]).
Author(s)
Fred Viole, OVVO Financial Systems
References
Viole, F. and Nawrocki, D. (2013) "Nonlinear Nonparametric Statistics: Using Partial Moments" (ISBN: 1490523995)
Examples
## Not run: set.seed(123)x <- rnorm(100) ; y <- rnorm(100)NNS.dep(x, y)## Correlation / Dependence Matrixx <- rnorm(100) ; y <- rnorm(100) ; z <- rnorm(100)B <- cbind(x, y, z)NNS.dep(B)## End(Not run)NNS Numerical Differentiation
Description
Determines numerical derivative of a given univariate function using projected secant lines on the y-axis. These projected points infer finite stepsh, in the finite step method.
Usage
NNS.diff(f, point, h = 0.1, tol = 1e-10, digits = 12, print.trace = FALSE)Arguments
f | an expression or call or a formula with no lhs. |
point | numeric; Point to be evaluated for derivative of a given function |
h | numeric [0, ...]; Initial step for secant projection. Defaults to |
tol | numeric; Sets the tolerance for the stopping condition of the inferred |
digits | numeric; Sets the number of digits specification of the output. Defaults to |
print.trace | logical; |
Value
Returns a matrix of values, intercepts, derivatives, inferred step sizes for multiple methods of estimation.
Author(s)
Fred Viole, OVVO Financial Systems
References
Viole, F. and Nawrocki, D. (2013) "Nonlinear Nonparametric Statistics: Using Partial Moments" (ISBN: 1490523995)
Examples
## Not run: f <- function(x) sin(x) / xNNS.diff(f, 4.1)## End(Not run)NNS Distance
Description
Internal kernel function for NNS multivariate regressionNNS.reg parallel instances.
Usage
NNS.distance(rpm, dist.estimate, k = "all", class = NULL)Arguments
rpm | REGRESSION.POINT.MATRIX fromNNS.reg |
dist.estimate | Vector to generate distances from. |
k |
|
class | if classification problem. |
Value
Returns sum of weighted distances.
NNS gravity
Description
Alternative central tendency measure more robust to outliers.
Usage
NNS.gravity(x, discrete = FALSE)Arguments
x | vector of data. |
discrete | logical; |
Value
Returns a numeric value representing the central tendency of the distribution.
Author(s)
Fred Viole, OVVO Financial Systems
Examples
## Not run: set.seed(123)x <- rnorm(100)NNS.gravity(x)## End(Not run)NNS meboot
Description
Adapted maximum entropy bootstrap routine frommeboothttps://cran.r-project.org/package=meboot.
Usage
NNS.meboot( x, reps = 999, rho = NULL, type = "spearman", drift = TRUE, target_drift = NULL, target_drift_scale = NULL, trim = 0.1, xmin = NULL, xmax = NULL, reachbnd = TRUE, expand.sd = TRUE, force.clt = TRUE, scl.adjustment = FALSE, sym = FALSE, elaps = FALSE, digits = 6, colsubj, coldata, coltimes, ...)Arguments
x | vector of data. |
reps | numeric; number of replicates to generate. |
rho | numeric [-1,1] (vectorized); A |
type | options("spearman", "pearson", "NNScor", "NNSdep"); |
drift | logical; |
target_drift | numerical; |
target_drift_scale | numerical; instead of calculating a |
trim | numeric [0,1]; The mean trimming proportion, defaults to |
xmin | numeric; the lower limit for the left tail. |
xmax | numeric; the upper limit for the right tail. |
reachbnd | logical; If |
expand.sd | logical; If |
force.clt | logical; If |
scl.adjustment | logical; If |
sym | logical; If |
elaps | logical; If |
digits | integer; 6 (default) number of digits to round output to. |
colsubj | numeric; the column in |
coldata | numeric; the column in |
coltimes | numeric; an optional argument indicating the column that contains the times at which the observations for each individual are observed. It is ignored if the input data |
... | possible argument |
Value
Returns the following row names in a matrix:
x original data provided as input.
replicates maximum entropy bootstrap replicates.
ensemble average observation over all replicates.
xx sorted order stats (xx[1] is minimum value).
z class intervals limits.
dv deviations of consecutive data values.
dvtrim trimmed mean of dv.
xmin data minimum for ensemble=xx[1]-dvtrim.
xmax data x maximum for ensemble=xx[n]+dvtrim.
desintxb desired interval means.
ordxx ordered x values.
kappa scale adjustment to the variance of ME density.
elaps elapsed time.
Note
Vectorizedrho anddrift parameters will not vectorize both simultaneously. Also, do not specifytarget_drift = NULL.
References
Vinod, H.D. and Viole, F. (2020) Arbitrary Spearman's Rank Correlations in Maximum Entropy Bootstrap and Improved Monte Carlo Simulations.doi:10.2139/ssrn.3621614
Vinod, H.D. (2013), Maximum Entropy Bootstrap Algorithm Enhancements.doi:10.2139/ssrn.2285041
Vinod, H.D. (2006), Maximum Entropy Ensembles for Time Series Inference in Economics,Journal of Asian Economics,17(6), pp. 955-978.
Vinod, H.D. (2004), Ranking mutual funds using unconventional utility theory and stochastic dominance,Journal of Empirical Finance,11(3), pp. 353-377.
Examples
## Not run: # To generate an orthogonal rank correlated time-series to AirPassengersboots <- NNS.meboot(AirPassengers, reps = 100, rho = 0, xmin = 0)# Verify correlation of replicates ensemble to originalcor(boots["ensemble",]$ensemble, AirPassengers, method = "spearman")# Plot all replicatesmatplot(boots["replicates",]$replicates , type = 'l')# Plot ensemblelines(boots["ensemble",]$ensemble, lwd = 3)# Plot originallines(1:length(AirPassengers), AirPassengers, lwd = 3, col = "red")### Vectorized drift with a single rhoboots <- NNS.meboot(AirPassengers, reps = 10, rho = 0, xmin = 0, target_drift = c(1,7))matplot(do.call(cbind, boots["replicates", ]), type = "l")lines(1:length(AirPassengers), AirPassengers, lwd = 3, col = "red")### Vectorized rho with a single target driftboots <- NNS.meboot(AirPassengers, reps = 10, rho = c(0, .5, 1), xmin = 0, target_drift = 3)matplot(do.call(cbind, boots["replicates", ]), type = "l")lines(1:length(AirPassengers), AirPassengers, lwd = 3, col = "red")### Vectorized rho with a single target drift scaleboots <- NNS.meboot(AirPassengers, reps = 10, rho = c(0, .5, 1), xmin = 0, target_drift_scale = 0.5)matplot(do.call(cbind, boots["replicates", ]), type = "l")lines(1:length(AirPassengers), AirPassengers, lwd = 3, col = "red") ## End(Not run)NNS mode
Description
Mode of a distribution, either continuous or discrete.
Usage
NNS.mode(x, discrete = FALSE, multi = TRUE)Arguments
x | vector of data. |
discrete | logical; |
multi | logical; |
Value
Returns a numeric value representing the mode of the distribution.
Author(s)
Fred Viole, OVVO Financial Systems
Examples
## Not run: set.seed(123)x <- rnorm(100)NNS.mode(x)## End(Not run)NNS moments
Description
This function returns the first 4 moments of the distribution.
Usage
NNS.moments(x, population = TRUE)Arguments
x | a numeric vector. |
population | logical; |
Value
Returns:
"$mean"mean of the distribution."$variance"variance of the distribution."$skewness"skewness of the distribution."$kurtosis"excess kurtosis of the distribution.
Author(s)
Fred Viole, OVVO Financial Systems
References
Viole, F. and Nawrocki, D. (2013) "Nonlinear Nonparametric Statistics: Using Partial Moments" (ISBN: 1490523995)
Examples
## Not run: set.seed(123)x <- rnorm(100)NNS.moments(x)## End(Not run)NNS Normalization
Description
Normalizes a matrix of variables based on nonlinear scaling normalization method.
Usage
NNS.norm(X, linear = FALSE, chart.type = NULL, location = "topleft")Arguments
X | a numeric matrix or data frame, or a list. |
linear | logical; |
chart.type | options: ("l", "b"); |
location | Sets the legend location within the plot, per the |
Value
Returns adata.frame of normalized values.
Note
Unequal vectors provided in a list will only generatelinear=TRUE normalized values.
Author(s)
Fred Viole, OVVO Financial Systems
References
Viole, F. and Nawrocki, D. (2013) "Nonlinear Nonparametric Statistics: Using Partial Moments" (ISBN: 1490523995)
Examples
## Not run: set.seed(123)x <- rnorm(100) ; y <- rnorm(100)A <- cbind(x, y)NNS.norm(A)### Normalize list of unequal vector lengthsvec1 <- c(1, 2, 3, 4, 5, 6, 7)vec2 <- c(10, 20, 30, 40, 50, 60)vec3 <- c(0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3)vec_list <- list(vec1, vec2, vec3)NNS.norm(vec_list)## End(Not run)NNS Nowcast
Description
Wrapper function for NNS nowcasting method using the nonparametric vector autoregressionNNS.VAR, and Federal Reserve Nowcasting variables.
Usage
NNS.nowcast( h = 1, additional.regressors = NULL, additional.sources = NULL, naive.weights = FALSE, specific.regressors = NULL, start.date = "2000-01-03", keep.data = FALSE, status = TRUE, ncores = NULL)Arguments
h | integer; |
additional.regressors | character; |
additional.sources | character; |
naive.weights | logical; |
specific.regressors | integer; |
start.date | character; |
keep.data | logical; |
status | logical; |
ncores | integer; value specifying the number of cores to be used in the parallelized subroutineNNS.ARMA.optim. If NULL (default), the number of cores to be used is equal to the number of cores of the machine - 1. |
Value
Returns the following matrices of forecasted variables:
"interpolated_and_extrapolated"Returns adata.frameof the linear interpolated andNNS.ARMA extrapolated values to replaceNAvalues in the originalvariablesargument. This is required for working with variables containing different frequencies, e.g. whereNAwould be reported for intra-quarterly data when indexed with monthly periods."relevant_variables"Returns the relevant variables from the dimension reduction step."univariate"Returns the univariateNNS.ARMA forecasts."multivariate"Returns the multi-variateNNS.reg forecasts."ensemble"Returns the ensemble of both"univariate"and"multivariate"forecasts.
Note
Specific regressors include:
PAYEMS– Payroll EmploymentJTSJOL– Job OpeningsCPIAUCSL– Consumer Price IndexDGORDER– Durable Goods OrdersRSAFS– Retail SalesUNRATE– Unemployment RateHOUST– Housing StartsINDPRO– Industrial ProductionDSPIC96– Personal IncomeBOPTEXP– ExportsBOPTIMP– ImportsTTLCONS– Construction SpendingIR– Import Price IndexCPILFESL– Core Consumer Price IndexPCEPILFE– Core PCE Price IndexPCEPI– PCE Price IndexPERMIT– Building PermitsTCU– Capacity Utilization RateBUSINV– Business InventoriesULCNFB– Unit Labor CostIQ– Export Price IndexGACDISA066MSFRBNY– Empire State Mfg IndexGACDFSA066MSFRBPHI– Philadelphia Fed Mfg IndexPCEC96– Real Consumption SpendingGDPC1– Real Gross Domestic ProductICSA– Weekly Unemployment ClaimsDGS10– 10-year Treasury ratesT10Y2Y– 2-10 year Treasury rate spreadWALCL– Total AssetsPALLFNFINDEXM– Global Price Index of All CommoditiesFEDFUNDS– Federal Funds Effective RatePPIACO– Producer Price Index All CommoditiesCIVPART– Labor Force Participation RateM2NS– M2 Money SupplyADPMNUSNERNSA– ADP Payrolls
Author(s)
Fred Viole, OVVO Financial Systems
References
Viole, F. and Nawrocki, D. (2013) "Nonlinear Nonparametric Statistics: Using Partial Moments" (ISBN: 1490523995)
Viole, F. (2019) "Multi-variate Time-Series Forecasting: Nonparametric Vector Autoregression Using NNS"doi:10.2139/ssrn.3489550
Viole, F. (2020) "NOWCASTING with NNS"doi:10.2139/ssrn.3589816
Examples
## Not run: ## Interpolates / Extrapolates all variables to current month NNS.nowcast(h = 0) ## Additional regressors and sources specified NNS.nowcast(h = 0, additional.regressors = c("SPY", "USO"), additional.sources = c("yahoo", "yahoo")) ### PREDICTION INTERVALS ## Store NNS.nowcast output nns_estimates <- NNS.nowcast(h = 12) # Create bootstrap replicates using NNS.meboot (GDP Variable) gdp_replicates <- NNS.meboot(nns_estimates$ensemble$GDPC1, rho = seq(0,1,.25), reps = 100)["replicates",] replicates <- do.call(cbind, gdp_replicates) # Apply UPM.VaR and LPM.VaR for desired prediction interval...95 percent illustrated # Tail percentage used in first argument per {LPM.VaR} and {UPM.VaR} functions lower_GDP_CIs <- apply(replicates, 1, function(z) LPM.VaR(0.025, 0, z)) upper_GDP_CIs <- apply(replicates, 1, function(z) UPM.VaR(0.025, 0, z)) # View results cbind(nns_estimates$ensemble$GDPC1, lower_GDP_CIs, upper_GDP_CIs) ## End(Not run)NNS Partition Map
Description
Creates partitions based on partial moment quadrant centroids, iteratively assigning identifications to observations based on those quadrants (unsupervised partitional and hierarchial clustering method). Basis for correlation, dependenceNNS.dep, regressionNNS.reg routines.
Usage
NNS.part( x, y, Voronoi = FALSE, type = NULL, order = NULL, obs.req = 8, min.obs.stop = TRUE, noise.reduction = "off")Arguments
x | a numeric vector. |
y | a numeric vector with compatible dimensions to |
Voronoi | logical; |
type |
|
order | integer; Number of partial moment quadrants to be generated. |
obs.req | integer; (8 default) Required observations per cluster where quadrants will not be further partitioned if observations are not greater than the entered value. Reduces minimum number of necessary observations in a quadrant to 1 when |
min.obs.stop | logical; |
noise.reduction | the method of determining regression points options for the dependent variable |
Value
Returns:
"dt"adata.tableofxandyobservations with their partition assignment"quadrant"in the 3rd column and their prior partition assignment"prior.quadrant"in the 4th column."regression.points"thedata.tableof regression points for that given(order = ...)."order"theorderof the final partition given"min.obs.stop"stopping condition.
Note
min.obs.stop = FALSE will not generate regression points due to unequal partitioning of quadrants from individual cluster observations.
Author(s)
Fred Viole, OVVO Financial Systems
References
Viole, F. and Nawrocki, D. (2013) "Nonlinear Nonparametric Statistics: Using Partial Moments" (ISBN: 1490523995)
Examples
## Not run: set.seed(123)x <- rnorm(100) ; y <- rnorm(100)NNS.part(x, y)## Data.table of observations and partitionsNNS.part(x, y, order = 1)$dt## Regression pointsNNS.part(x, y, order = 1)$regression.points## Voronoi style plotNNS.part(x, y, Voronoi = TRUE)## Examine final counts by quadrantDT <- NNS.part(x, y)$dtDT[ , counts := .N, by = quadrant]DT## End(Not run)NNS Regression
Description
Generates a nonlinear regression based on partial moment quadrant means.
Usage
NNS.reg( x, y, factor.2.dummy = TRUE, order = NULL, dim.red.method = NULL, tau = NULL, type = NULL, point.est = NULL, location = "top", return.values = TRUE, plot = TRUE, plot.regions = FALSE, residual.plot = TRUE, confidence.interval = NULL, threshold = 0, n.best = NULL, smooth = FALSE, noise.reduction = "off", dist = "L2", ncores = NULL, point.only = FALSE, multivariate.call = FALSE)Arguments
x | a vector, matrix or data frame of variables of numeric or factor data types. |
y | a numeric or factor vector with compatible dimensions to |
factor.2.dummy | logical; |
order | integer; Controls the number of partial moment quadrant means. Users are encouraged to try different |
dim.red.method | options: ("cor", "NNS.dep", "NNS.caus", "all", "equal", |
tau | options("ts", NULL); |
type |
|
point.est | a numeric or factor vector with compatible dimensions to |
location | Sets the legend location within the plot, per the |
return.values | logical; |
plot | logical; |
plot.regions | logical; |
residual.plot | logical; |
confidence.interval | numeric [0, 1]; |
threshold | numeric [0, 1]; |
n.best | integer; |
smooth | logical; |
noise.reduction | the method of determining regression points options: ("mean", "median", "mode", "off"); In low signal:noise situations, |
dist | options:("L1", "L2", "FACTOR") the method of distance calculation; Selects the distance calculation used. |
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. |
point.only | Internal argument for abbreviated output. |
multivariate.call | Internal argument for multivariate regressions. |
Value
UNIVARIATE REGRESSION RETURNS THE FOLLOWING VALUES:
"R2"provides the goodness of fit;"SE"returns the overall standard error of the estimate betweenyandy.hat;"Prediction.Accuracy"returns the correct rounded"Point.est"used in classifications versus the categoricaly;"derivative"for the coefficient of thexand its applicable range;"Point.est"for the predicted value generated;"pred.int"lower and upper prediction intervals for the"Point.est"returned using the"confidence.interval"provided;"regression.points"provides the points used in the regression equation for the given order of partitions;"Fitted.xy"returns adata.tableofx,y,y.hat,resid,NNS.ID,gradient;
MULTIVARIATE REGRESSION RETURNS THE FOLLOWING VALUES:
"R2"provides the goodness of fit;"equation"returns the numerator of the synthetic X* dimension reduction equation as adata.tableconsisting of regressor and its coefficient. Denominator is simply the length of all coefficients > 0, returned in last row ofequationdata.table."x.star"returns the synthetic X* as a vector;"rhs.partitions"returns the partition points for each regressorx;"RPM"provides the Regression Point Matrix, the points for eachxused in the regression equation for the given order of partitions;"Point.est"returns the predicted value generated;"pred.int"lower and upper prediction intervals for the"Point.est"returned using the"confidence.interval"provided;"Fitted.xy"returns adata.tableofx,y,y.hat,gradient, andNNS.ID.
Note
Please ensure
point.estis of compatible dimensions tox, error message will ensue if not compatible.Like a logistic regression, the
(type = "CLASS")setting is not necessary for target variable of two classes e.g. [0, 1]. The response variable base category should be 1 for classification problems.For low signal:noise instances, increasing the dimension may yield better results using
NNS.stack(cbind(x,x), y, method = 1, ...).
Author(s)
Fred Viole, OVVO Financial Systems
References
Viole, F. and Nawrocki, D. (2013) "Nonlinear Nonparametric Statistics: Using Partial Moments" (ISBN: 1490523995)
Vinod, H. and Viole, F. (2017) "Nonparametric Regression Using Clusters"doi:10.1007/s10614-017-9713-5
Vinod, H. and Viole, F. (2018) "Clustering and Curve Fitting by Line Segments"doi:10.20944/preprints201801.0090.v1
Viole, F. (2020) "Partitional Estimation Using Partial Moments"doi:10.2139/ssrn.3592491
Dana, J., and Dawes, R. M. (2004). The Superiority of Simple Alternatives to Regression for Social Science Predictions. Journal of Educational and Behavioral Statistics, 29(3), 317–331.
Examples
## Not run: set.seed(123)x <- rnorm(100) ; y <- rnorm(100)NNS.reg(x, y)## Manual {order} selectionNNS.reg(x, y, order = 2)## Maximum {order} selectionNNS.reg(x, y, order = "max")## x-only paritioning (Univariate only)NNS.reg(x, y, type = "XONLY")## For Multiple Regression:x <- cbind(rnorm(100), rnorm(100), rnorm(100)) ; y <- rnorm(100)NNS.reg(x, y, point.est = c(.25, .5, .75))## For Multiple Regression based on Synthetic X* (Dimension Reduction):x <- cbind(rnorm(100), rnorm(100), rnorm(100)) ; y <- rnorm(100)NNS.reg(x, y, point.est = c(.25, .5, .75), dim.red.method = "cor", ncores = 1)## IRIS dataset examples:# Dimension Reduction:NNS.reg(iris[,1:4], iris[,5], dim.red.method = "cor", order = 5, ncores = 1)# Dimension Reduction using causal weights:NNS.reg(iris[,1:4], iris[,5], dim.red.method = "NNS.caus", order = 5, ncores = 1)# Multiple Regression:NNS.reg(iris[,1:4], iris[,5], order = 2, noise.reduction = "off")# Classification:NNS.reg(iris[,1:4], iris[,5], point.est = iris[1:10, 1:4], type = "CLASS")$Point.est## To call fitted values:x <- rnorm(100) ; y <- rnorm(100)NNS.reg(x, y)$Fitted## To call partial derivative (univariate regression only):NNS.reg(x, y)$derivative## End(Not run)NNS rescale
Description
Rescale a vector using either min-max scaling or risk-neutral adjustment.
Usage
NNS.rescale(x, a, b, method = "minmax", T = NULL, type = "Terminal")Arguments
x | numeric vector; data to rescale (e.g., terminal prices for risk-neutral method). |
a | numeric; defines the scaling target:- For |
b | numeric; defines the scaling range or rate:- For |
method | character; scaling method: |
T | numeric; time to maturity in years (required for |
type | character; for |
Value
Returns a rescaled distribution:- For"minmax": values scaled linearly to the range[a, b].- For"riskneutral": values scaled multiplicatively to a risk-neutral mean (\( S_0 e^(rT) \) iftype = "Terminal", or \( S_0 \) iftype = "Discounted").
Author(s)
Fred Viole, OVVO Financial Systems
Examples
## Not run: set.seed(123)# Min-max scaling: a = lower limit, b = upper limitx <- rnorm(100)NNS.rescale(x, a = 5, b = 10, method = "minmax") # Scales to [5, 10]# Risk-neutral scaling (Terminal): a = S_0, b = r # Mean approx 105.13prices <- 100 * exp(cumsum(rnorm(100, 0.001, 0.02)))NNS.rescale(prices, a = 100, b = 0.05, method = "riskneutral", T = 1, type = "Terminal")# Risk-neutral scaling (Discounted): a = S_0, b = r # Mean approx 100NNS.rescale(prices, a = 100, b = 0.05, method = "riskneutral", T = 1, type = "Discounted")## End(Not run)NNS Seasonality Test
Description
Seasonality test based on the coefficient of variation for the variable and lagged component series. A result of 1 signifies no seasonality present.
Usage
NNS.seas(variable, modulo = NULL, mod.only = TRUE, plot = TRUE)Arguments
variable | a numeric vector. |
modulo | integer(s); NULL (default) Used to find the nearest multiple(s) in the reported seasonal period. |
mod.only | logical; |
plot | logical; |
Value
Returns a matrix of all periods exhibiting less coefficient of variation than the variable with"all.periods"; and the single period exhibiting the least coefficient of variation versus the variable with"best.period"; as well as a vector of"periods" for easy call intoNNS.ARMA.optim. If no seasonality is detected,NNS.seas will return ("No Seasonality Detected").
Author(s)
Fred Viole, OVVO Financial Systems
References
Viole, F. and Nawrocki, D. (2013) "Nonlinear Nonparametric Statistics: Using Partial Moments" (ISBN: 1490523995)
Examples
## Not run: set.seed(123)x <- rnorm(100)## To call strongest period based on coefficient of variation:NNS.seas(x, plot = FALSE)$best.period## Using modulos for logical seasonal inference:NNS.seas(x, modulo = c(2,3,5,7), plot = FALSE)## End(Not run)NNS Stack
Description
Prediction model using the predictions of the NNS base modelsNNS.reg as features (i.e. meta-features) for the stacked model.
Usage
NNS.stack( IVs.train, DV.train, IVs.test = NULL, type = NULL, obj.fn = expression(sum((predicted - actual)^2)), objective = "min", optimize.threshold = TRUE, dist = "L2", CV.size = NULL, balance = FALSE, ts.test = NULL, folds = 5, order = NULL, method = c(1, 2), stack = TRUE, dim.red.method = "cor", pred.int = NULL, status = TRUE, ncores = NULL)Arguments
IVs.train | a vector, matrix or data frame of variables of numeric or factor data types. |
DV.train | a numeric or factor vector with compatible dimensions to |
IVs.test | a vector, matrix or data frame of variables of numeric or factor data types with compatible dimensions to |
type |
|
obj.fn | expression; |
objective | options: ("min", "max") |
optimize.threshold | logical; |
dist | options:("L1", "L2", "DTW", "FACTOR") the method of distance calculation; Selects the distance calculation used. |
CV.size | numeric [0, 1]; |
balance | logical; |
ts.test | integer; NULL (default) Sets the length of the test set for time-series data; typically |
folds | integer; |
order | options: (integer, "max", NULL); |
method | numeric options: (1, 2); Select the NNS method to include in stack. |
stack | logical; |
dim.red.method | options: ("cor", "NNS.dep", "NNS.caus", "equal", "all") method for determining synthetic X* coefficients. |
pred.int | numeric [0,1]; |
status | logical; |
ncores | integer; value specifying the number of cores to be used in the parallelized subroutineNNS.reg. If NULL (default), the number of cores to be used is equal to the number of cores of the machine - 1. |
Value
Returns a vector of fitted values for the dependent variable test set for all models.
"NNS.reg.n.best"returns the optimum"n.best"parameter for theNNS.reg multivariate regression."SSE.reg"returns the SSE for theNNS.reg multivariate regression."OBJfn.reg"returns theobj.fnfor theNNS.reg regression."NNS.dim.red.threshold"returns the optimum"threshold"from theNNS.reg dimension reduction regression."OBJfn.dim.red"returns theobj.fnfor theNNS.reg dimension reduction regression."probability.threshold"returns the optimum probability threshold for classification, else 0.5 when set toFALSE."reg"returnsNNS.reg output."reg.pred.int"returns the prediction intervals for the regression output."dim.red"returnsNNS.reg dimension reduction regression output."dim.red.pred.int"returns the prediction intervals for the dimension reduction regression output."stack"returns the output of the stacked model."pred.int"returns the prediction intervals for the stacked model.
Note
Incorporate any objective function from external packages (such as
Metrics::mape) viaNNS.stack(..., obj.fn = expression(Metrics::mape(actual, predicted)), objective = "min")Like a logistic regression, the
(type = "CLASS")setting is not necessary for target variable of two classes e.g. [0, 1]. The response variable base category should be 1 for multiple class problems.Missing data should be handled prior as well usingna.omit orcomplete.cases on the full dataset.
If error received:
"Error in is.data.frame(x) : object 'RP' not found"
reduce theCV.size.
Author(s)
Fred Viole, OVVO Financial Systems
References
Viole, F. (2016) "Classification Using NNS Clustering Analysis"doi:10.2139/ssrn.2864711
Examples
## Using 'iris' dataset where test set [IVs.test] is 'iris' rows 141:150. ## Not run: NNS.stack(iris[1:140, 1:4], iris[1:140, 5], IVs.test = iris[141:150, 1:4], type = "CLASS", balance = TRUE) ## Using 'iris' dataset to determine [n.best] and [threshold] with no test set. NNS.stack(iris[ , 1:4], iris[ , 5], type = "CLASS") ## End(Not run)NNS Term Matrix
Description
Generates a term matrix for text classification use inNNS.reg.
Usage
NNS.term.matrix(x, oos = NULL)Arguments
x | mixed data.frame; character/numeric; A two column dataset should be used. Concatenate text from original sources to comply with format. Also note the possibility of factors in |
oos | mixed data.frame; character/numeric; Out-of-sample text dataset to be classified. |
Value
Returns the text as independent variables"IV" and the classification as the dependent variable"DV". Out-of-sample independent variables are returned with"OOS".
References
Viole, F. and Nawrocki, D. (2013) "Nonlinear Nonparametric Statistics: Using Partial Moments" (ISBN: 1490523995)
Examples
## Not run: x <- data.frame(cbind(c("sunny", "rainy"), c(1, -1)))NNS.term.matrix(x)### Concatenate Text with space separator, cbind with "DV"x <- data.frame(cbind(c("sunny", "rainy"), c("windy", "cloudy"), c(1, -1)))x <- data.frame(cbind(paste(x[ , 1], x[ , 2], sep = " "), as.numeric(as.character(x[ , 3]))))NNS.term.matrix(x)### NYT Examplerequire(RTextTools)data(NYTimes)### Concatenate Columns 3 and 4 containing text, with column 5 as DVNYT <- data.frame(cbind(paste(NYTimes[ , 3], NYTimes[ , 4], sep = " "), as.numeric(as.character(NYTimes[ , 5]))))NNS.term.matrix(NYT)## End(Not run)Partial Moment Matrix
Description
Builds a list containing CUPM, DUPM, DLPM, CLPM and the overall covariance matrix.
Usage
PM.matrix(LPM_degree, UPM_degree, target, variable, pop_adj, norm = FALSE)Arguments
LPM_degree | numeric; lower partial moment degree (0 = freq, 1 = area). |
UPM_degree | numeric; upper partial moment degree (0 = freq, 1 = area). |
target | numeric vector; thresholds for each column (defaults to colMeans). |
variable | numeric matrix or data.frame. |
pop_adj | logical; TRUE adjusts population vs. sample moments. |
norm | logical; default FALSE. If TRUE, each quadrant matrix is cell-wise normalized so their sum is 1 at each (i,j). |
Details
Partial Moment Matrix
Value
A list: $cupm, $dupm, $dlpm, $clpm, $cov.matrix.
Examples
set.seed(123)A <- cbind(rnorm(100), rnorm(100), rnorm(100))PM.matrix(1, 1, NULL, A, TRUE) # uses norm = FALSE by defaultPM.matrix(1, 1, NULL, A, TRUE, TRUE) # enable normalizationUpper Partial Moment
Description
This function generates a univariate upper partial moment for any degree or target.
Usage
UPM(degree, target, variable, excess_ret = FALSE)Arguments
degree | numeric; |
target | numeric; Set to |
variable | a numeric vector.data.frame orlist type objects are not permissible. |
excess_ret | logical; |
Value
UPM of variable
Author(s)
Fred Viole, OVVO Financial Systems
References
Viole, F. and Nawrocki, D. (2013) "Nonlinear Nonparametric Statistics: Using Partial Moments" (ISBN: 1490523995)
Examples
set.seed(123)x <- rnorm(100)UPM(0, mean(x), x)UPM VaR
Description
Generates an upside value at risk (VaR) quantile based on the Upper Partial Moment ratio
Usage
UPM.VaR(percentile, degree, x)Arguments
percentile | numeric [0, 1]; The percentile for right-tail VaR (vectorized). |
degree | integer; |
x | a numeric vector. |
Value
Returns a numeric value representing the point at which"percentile" of the area ofx is above.
Author(s)
Fred Viole, OVVO Financial Systems
References
Viole, F. and Nawrocki, D. (2013) "Nonlinear Nonparametric Statistics: Using Partial Moments" (ISBN: 1490523995)
Examples
set.seed(123)x <- rnorm(100)## For 5th percentile, right-tailUPM.VaR(0.05, 0, x)Upper Partial Moment Ratio
Description
This function generates a standardized univariate upper partial momentof any non‑negative degree for a given target.
Usage
UPM.ratio(degree, target, variable)Arguments
degree | numeric; degree = 0 gives frequency, degree = 1 gives area. |
target | numeric vector; threshold(s). Defaults to mean(variable). |
variable | numeric vector or data‑frame column to evaluate. |
Value
Numeric vector of standardized upper partial moments.
Author(s)
Fred Viole, OVVO Financial Systems
References
Viole, F. & Nawrocki, D. (2013) *Nonlinear Nonparametric Statistics: Using Partial Moments* (ISBN:1490523995)
Examples
set.seed(123) x <- rnorm(100) UPM.ratio(0, mean(x), x)## Not run: plot3d(x, y, Co.UPM(0, sort(x), sort(y), x, y), …)## End(Not run)Partial Derivative dy/d_[wrt]
Description
Returns the numerical partial derivative ofy with respect to [wrt] any regressor for a point of interest. Finite difference method is used withNNS.reg estimates asf(x + h) andf(x - h) values.
Usage
dy.d_(x, y, wrt, eval.points = "obs", mixed = FALSE, messages = TRUE)Arguments
x | a numeric matrix or data frame. |
y | a numeric vector with compatible dimensions to |
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.
|
mixed | logical; |
messages | logical; |
Value
Returns column-wise matrix of wrt regressors:
dy.d_(...)[, wrt]$Firstthe 1st derivativedy.d_(...)[, wrt]$Secondthe 2nd derivativedy.d_(...)[, wrt]$Mixedthe mixed derivative (for two independent variables only).
Note
For binary regressors, it is suggested to useeval.points = seq(0, 1, .05) for a better resolution around the midpoint.
Author(s)
Fred Viole, OVVO Financial Systems
References
Viole, F. and Nawrocki, D. (2013) "Nonlinear Nonparametric Statistics: Using Partial Moments" (ISBN: 1490523995)
Vinod, H. and Viole, F. (2020) "Comparing Old and New Partial Derivative Estimates from Nonlinear Nonparametric Regressions"doi:10.2139/ssrn.3681104
Examples
## Not run: set.seed(123) ; x_1 <- runif(1000) ; x_2 <- runif(1000) ; y <- x_1 ^ 2 * x_2 ^ 2B <- cbind(x_1, x_2)## To find derivatives of y wrt 1st regressor for specific points of both regressorsdy.d_(B, y, wrt = 1, eval.points = t(c(.5, 1)))## 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 observation 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 CILPM.VaR(.025, 0, apd[,1]$First)### Upper CIUPM.VaR(.025, 0, apd[,1]$First)## End(Not run)Partial Derivative dy/dx
Description
Returns the numerical partial derivative ofy wrtx for a point of interest.
Usage
dy.dx(x, y, eval.point = NULL)Arguments
x | a numeric vector. |
y | a numeric vector. |
eval.point | numeric or ("overall"); |
Value
Returns adata.table of eval.point along with both 1st and 2nd derivative.
Author(s)
Fred Viole, OVVO Financial Systems
References
Viole, F. and Nawrocki, D. (2013) "Nonlinear Nonparametric Statistics: Using Partial Moments" (ISBN: 1490523995)
Vinod, H. and Viole, F. (2017) "Nonparametric Regression Using Clusters"doi:10.1007/s10614-017-9713-5
Examples
## Not run: x <- seq(0, 2 * pi, pi / 100) ; y <- sin(x)dy.dx(x, y, eval.point = 1.75)# First derivativedy.dx(x, y, eval.point = 1.75)[ , first.derivative]# Second derivativedy.dx(x, y, eval.point = 1.75)[ , second.derivative]# Vector of derivativesdy.dx(x, y, eval.point = c(1.75, 2.5))## End(Not run)