Type: | Package |
Title: | Nonlinear Nonparametric Statistics |
Version: | 11.4.1 |
Date: | 2025-07-15 |
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-07-15 14:40:17 UTC; fredv |
Author: | Fred Viole [aut, cre], Roberto Spadim [ctb] |
Repository: | CRAN |
Date/Publication: | 2025-07-15 16:10:02 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 Viole ovvo.financial.systems@gmail.com
Other contributors:
Roberto Spadim [contributor]
See Also
Useful links:
Report bugs at https://github.com/OVVO-Financial/NNS/issues
Co-Lower Partial Moment (Lower Left Quadrant 4)
Description
This function generates a co-lower partial moment for between two equal length variables for any degree or target.
Usage
Co.LPM(degree_lpm, x, y, target_x, target_y)
Arguments
degree_lpm |
integer; Degree for lower deviations of both variable X and Y. |
x |
a numeric vector. data.frame or list type objects are not permissible. |
y |
a numeric vector of equal length to |
target_x |
numeric; Target for lower deviations of variable X. Typically the mean of Variable X for classical statistics equivalences, but does not have to be. |
target_y |
numeric; Target for lower deviations of variable Y. Typically the mean of Variable Y for classical statistics equivalences, but does not have to be. |
Value
Co-LPM of two variables
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) ; y <- rnorm(100)
Co.LPM(0, x, y, mean(x), mean(y))
Co-Upper Partial Moment (Upper Right Quadrant 1)
Description
This function generates a co-upper partial moment between two equal length variables for any degree or target.
Usage
Co.UPM(degree_upm, x, y, target_x, target_y)
Arguments
degree_upm |
integer; Degree for upper variations of both variable X and Y. |
x |
a numeric vector. data.frame or list type objects are not permissible. |
y |
a numeric vector of equal length to |
target_x |
numeric; Target for upside deviations of variable X. Typically the mean of Variable X for classical statistics equivalences, but does not have to be. |
target_y |
numeric; Target for upside deviations of variable Y. Typically the mean of Variable Y for classical statistics equivalences, but does not have to be. |
Value
Co-UPM of two variables
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) ; y <- rnorm(100)
Co.UPM(0, x, y, mean(x), mean(y))
Divergent-Lower Partial Moment (Lower Right Quadrant 3)
Description
This function generates a divergent lower partial moment between two equal length variables for any degree or target.
Usage
D.LPM(degree_lpm, degree_upm, x, y, target_x, target_y)
Arguments
degree_lpm |
integer; Degree for lower deviations of variable Y. |
degree_upm |
integer; Degree for upper deviations of variable X. |
x |
a numeric vector. data.frame or list type objects are not permissible. |
y |
a numeric vector of equal length to |
target_x |
numeric; Target for upside deviations of variable X. Typically the mean of Variable X for classical statistics equivalences, but does not have to be. |
target_y |
numeric; Target for lower deviations of variable Y. Typically the mean of Variable Y for classical statistics equivalences, but does not have to be. |
Value
Divergent LPM of two variables
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) ; y <- rnorm(100)
D.LPM(0, 0, x, y, mean(x), mean(y))
Divergent-Upper Partial Moment (Upper Left Quadrant 2)
Description
This function generates a divergent upper partial moment between two equal length variables for any degree or target.
Usage
D.UPM(degree_lpm, degree_upm, x, y, target_x, target_y)
Arguments
degree_lpm |
integer; Degree for lower deviations of variable X. |
degree_upm |
integer; Degree for upper deviations of variable Y. |
x |
a numeric vector. data.frame or list type objects are not permissible. |
y |
a numeric vector of equal length to |
target_x |
numeric; Target for lower deviations of variable X. Typically the mean of Variable X for classical statistics equivalences, but does not have to be. |
target_y |
numeric; Target for upper deviations of variable Y. Typically the mean of Variable Y for classical statistics equivalences, but does not have to be. |
Value
Divergent UPM of two variables
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) ; y <- rnorm(100)
D.UPM(0, 0, x, y, mean(x), mean(y))
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 |
integer; |
target |
numeric; Set to |
variable |
a numeric vector. data.frame or list 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 of x
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-tail
LPM.VaR(0.05, 0, x)
## End(Not run)
Lower Partial Moment RATIO
Description
This function generates a standardized univariate lower partial moment for any degree or target.
Usage
LPM.ratio(degree, target, variable)
Arguments
degree |
integer; |
target |
numeric; Typically set to mean, but does not have to be. (Vectorized) |
variable |
a numeric vector. |
Value
Standardized 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)
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:
## Empirical CDF (degree = 0)
lpm_cdf <- LPM.ratio(0, sort(x), x)
plot(sort(x), lpm_cdf)
## Continuous CDF (degree = 1)
lpm_cdf_1 <- LPM.ratio(1, sort(x), x)
plot(sort(x), lpm_cdf_1)
## Joint CDF
x <- rnorm(5000) ; y <- rnorm(5000)
plot3d(x, y, Co.LPM(0, sort(x), sort(y), x, y), col = "blue", xlab = "X", ylab = "Y",
zlab = "Probability", box = FALSE)
## End(Not run)
NNS ANOVA
Description
Analysis of variance (ANOVA) based on lower partial moment CDFs for multiple variables, evaluated at multiple quantiles (or means only). Returns a degree of certainty to whether the population distributions (or sample means) are identical, not a p-value.
Usage
NNS.ANOVA(
control,
treatment,
means.only = FALSE,
medians = FALSE,
confidence.interval = 0.95,
tails = "Both",
pairwise = FALSE,
plot = TRUE,
robust = FALSE
)
Arguments
control |
a numeric vector, matrix or data frame, or list if unequal vector lengths. |
treatment |
|
means.only |
logical; |
medians |
logical; |
confidence.interval |
numeric [0, 1]; The confidence interval surrounding the |
tails |
options: ("Left", "Right", "Both"). |
pairwise |
logical; |
plot |
logical; |
robust |
logical; |
Value
Returns the following:
"Control Mean"
control
mean."Treatment Mean"
treatment
mean."Grand Mean"
mean of means."Control CDF"
CDF of thecontrol
from the grand mean."Treatment CDF"
CDF of thetreatment
from the grand mean."Certainty"
the certainty of the same population statistic."Lower Bound Effect"
and"Upper Bound Effect"
the effect size of thetreatment
for the specified confidence interval."Robust Certainty Estimate"
and"Lower 95 CI"
,"Upper 95 CI"
are the robust certainty estimate and its 95 percent confidence interval after permutations ifrobust = TRUE
.
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 size
set.seed(123)
x <- rnorm(100) ; y <- rnorm(100)
NNS.ANOVA(control = x, treatment = y)
### Two variable analysis with no control variable
A <- cbind(x, y)
NNS.ANOVA(A)
### Medians test
NNS.ANOVA(A, means.only = TRUE, medians = TRUE)
### Multiple variable analysis with no control variable
set.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 list
x <- 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 no pred.int
specified. Else, returns a data.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 lags
NNS.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 lag
NNS.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 given seasonal.factor
vector in NNS.ARMA. Minimum sum of squared errors (forecast-actual) is used to determine optimum across all NNS.ARMA methods.
Usage
NNS.ARMA.optim(
variable,
h = NULL,
training.set = NULL,
seasonal.factor,
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 for NNS.ARMA model, i.e. |
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 bootstrap NNS.meboot on the final estimates. |
print.trace |
logical; |
plot |
logical; |
Value
Returns a list containing:
$period
a vector of optimal seasonal periods$weights
the optimal weights of each seasonal period between an equal weight or NULL weighting$obj.fn
the objective function value$method
the method identifying which NNS.ARMA method was used.$shrink
whether to use theshrink
parameter in NNS.ARMA.$nns.regress
whether to smooth the variable via NNS.reg before forecasting.$bias.shift
a numerical result of the overall bias of the optimum objective function result. To be added to the final result when using the NNS.ARMA with the derived parameters.$errors
a vector of model errors from internal calibration.$results
a vector of lengthh
.$lower.pred.int
a vector of lower prediction intervals per forecast point.$upper.pred.int
a 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.factor
containing 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 ratios LPM.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 |
integer; |
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 thetarget
argument.
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 CDF
x <- rnorm(5000) ; y <- rnorm(5000)
A <- cbind(x,y)
NNS.CDF(A, 0)
## Joint CDF with target
NNS.CDF(A, 0, target = c(0,0))
## 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 routine NNS.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 to NNS.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 AirPassengers
MC_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 applies NNS.SD.efficient.set
iteratively, peeling off the SD-efficient set at each step
if it meets or exceeds min_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 meets
the min_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
, anhclust
object 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 cluster
results <- NNS.SD.cluster(data = A, degree = 1, min_cluster = 2)
print(results$Clusters)
# Produce a dendrogram as well
results_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 incorporating NNS.ARMA estimates of variables into NNS.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 via NNS.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 subroutine NNS.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.frame
of the linear interpolated and NNS.ARMA extrapolated values to replaceNA
values in the originalvariables
argument. This is required for working with variables containing different frequencies, e.g. whereNA
would 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 univariate NNS.ARMA forecasts."multivariate"
Returns the multi-variate NNS.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 regression NNS.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)
## 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)
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; |
Value
Returns the directional causation (x —> y) or (y —> x) and net quantity of association. For causal matrix, directional causation is returned as ([column variable] —> [row variable]). Negative numbers represent causal direction attributed to [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:
## x causes y...
set.seed(123)
x <- rnorm(1000) ; y <- x ^ 2
NNS.caus(x, y, tau = "cs")
## Causal matrix without per factor causation
NNS.caus(iris, tau = 0)
## Causal matrix with per factor causation
NNS.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 0
NNS.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 Matrix
x <- 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 steps h
, 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) / x
NNS.diff(f, 4.1)
## End(Not run)
NNS Distance
Description
Internal kernel function for NNS multivariate regression NNS.reg parallel instances.
Usage
NNS.distance(rpm, dist.estimate, k, class)
Arguments
rpm |
REGRESSION.POINT.MATRIX from NNS.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 from meboot
https://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
Vectorized rho
and drift
parameters will not vectorize both simultaneously. Also, do not specify target_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 AirPassengers
boots <- NNS.meboot(AirPassengers, reps = 100, rho = 0, xmin = 0)
# Verify correlation of replicates ensemble to original
cor(boots["ensemble",]$ensemble, AirPassengers, method = "spearman")
# Plot all replicates
matplot(boots["replicates",]$replicates , type = 'l')
# Plot ensemble
lines(boots["ensemble",]$ensemble, lwd = 3)
### Vectorized drift with a single rho
boots <- 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 drift
boots <- 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 scale
boots <- 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 a data.frame of normalized values.
Note
Unequal vectors provided in a list will only generate linear=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 lengths
vec1 <- 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 autoregression NNS.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 subroutine NNS.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.frame
of the linear interpolated and NNS.ARMA extrapolated values to replaceNA
values in the originalvariables
argument. This is required for working with variables containing different frequencies, e.g. whereNA
would 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 univariate NNS.ARMA forecasts."multivariate"
Returns the multi-variate NNS.reg forecasts."ensemble"
Returns the ensemble of both"univariate"
and"multivariate"
forecasts.
Note
Specific regressors include:
-
PAYEMS
– Payroll Employment -
JTSJOL
– Job Openings -
CPIAUCSL
– Consumer Price Index -
DGORDER
– Durable Goods Orders -
RSAFS
– Retail Sales -
UNRATE
– Unemployment Rate -
HOUST
– Housing Starts -
INDPRO
– Industrial Production -
DSPIC96
– Personal Income -
BOPTEXP
– Exports -
BOPTIMP
– Imports -
TTLCONS
– Construction Spending -
IR
– Import Price Index -
CPILFESL
– Core Consumer Price Index -
PCEPILFE
– Core PCE Price Index -
PCEPI
– PCE Price Index -
PERMIT
– Building Permits -
TCU
– Capacity Utilization Rate -
BUSINV
– Business Inventories -
ULCNFB
– Unit Labor Cost -
IQ
– Export Price Index -
GACDISA066MSFRBNY
– Empire State Mfg Index -
GACDFSA066MSFRBPHI
– Philadelphia Fed Mfg Index -
PCEC96
– Real Consumption Spending -
GDPC1
– Real Gross Domestic Product -
ICSA
– Weekly Unemployment Claims -
DGS10
– 10-year Treasury rates -
T10Y2Y
– 2-10 year Treasury rate spread -
WALCL
– Total Assets -
PALLFNFINDEXM
– Global Price Index of All Commodities -
FEDFUNDS
– Federal Funds Effective Rate -
PPIACO
– Producer Price Index All Commodities -
CIVPART
– Labor Force Participation Rate -
M2NS
– M2 Money Supply
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, dependence NNS.dep, regression NNS.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.table
ofx
andy
observations with their partition assignment"quadrant"
in the 3rd column and their prior partition assignment"prior.quadrant"
in the 4th column."regression.points"
thedata.table
of regression points for that given(order = ...)
."order"
theorder
of 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 partitions
NNS.part(x, y, order = 1)$dt
## Regression points
NNS.part(x, y, order = 1)$regression.points
## Voronoi style plot
NNS.part(x, y, Voronoi = TRUE)
## Examine final counts by quadrant
DT <- NNS.part(x, y)$dt
DT[ , 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,
stn = 0.95,
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,
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 |
stn |
numeric [0, 1]; Signal to noise parameter, sets the threshold of |
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; |
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 betweeny
andy.hat
;"Prediction.Accuracy"
returns the correct rounded"Point.est"
used in classifications versus the categoricaly
;"derivative"
for the coefficient of thex
and 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.table
ofx
,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.table
consisting of regressor and its coefficient. Denominator is simply the length of all coefficients > 0, returned in last row ofequation
data.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 eachx
used 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.table
ofx
,y
,y.hat
,gradient
, andNNS.ID
.
Note
Please ensure
point.est
is 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
Examples
## Not run:
set.seed(123)
x <- rnorm(100) ; y <- rnorm(100)
NNS.reg(x, y)
## Manual {order} selection
NNS.reg(x, y, order = 2)
## Maximum {order} selection
NNS.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) \) if type = "Terminal"
, or \( S_0 \) if type = "Discounted"
).
Author(s)
Fred Viole, OVVO Financial Systems
Examples
## Not run:
set.seed(123)
# Min-max scaling: a = lower limit, b = upper limit
x <- 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.13
prices <- 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 100
NNS.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 into NNS.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 models NNS.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,
norm = 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); |
norm |
options: ("std", "NNS", 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 subroutine NNS.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 the NNS.reg multivariate regression."SSE.reg"
returns the SSE for the NNS.reg multivariate regression."OBJfn.reg"
returns theobj.fn
for the NNS.reg regression."NNS.dim.red.threshold"
returns the optimum"threshold"
from the NNS.reg dimension reduction regression."OBJfn.dim.red"
returns theobj.fn
for the NNS.reg dimension reduction regression."probability.threshold"
returns the optimum probability threshold for classification, else 0.5 when set toFALSE
."reg"
returns NNS.reg output."reg.pred.int"
returns the prediction intervals for the regression output."dim.red"
returns NNS.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 using na.omit or complete.cases on the full dataset.
If error received:
"Error in is.data.frame(x) : object 'RP' not found"
reduce the CV.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")
## Using 'iris' dataset to determine [n.best] and [threshold] with no test set.
NNS.stack(iris[ , 1:4], iris[ , 5], type = "CLASS")
## Selecting NNS.reg and dimension reduction techniques.
NNS.stack(iris[1:140, 1:4], iris[1:140, 5], iris[141:150, 1:4], method = c(1, 2), type = "CLASS")
## End(Not run)
NNS Term Matrix
Description
Generates a term matrix for text classification use in NNS.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 Example
require(RTextTools)
data(NYTimes)
### Concatenate Columns 3 and 4 containing text, with column 5 as DV
NYT <- 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
This function generates a co-partial moment matrix for the specified co-partial moment.
Usage
PM.matrix(LPM_degree, UPM_degree, target, variable, pop_adj)
Arguments
LPM_degree |
integer; Degree for |
UPM_degree |
integer; Degree for |
target |
numeric; Typically the mean of Variable X for classical statistics equivalences, but does not have to be. (Vectorized) |
variable |
a numeric matrix or data.frame. |
pop_adj |
logical; |
Value
Matrix of partial moment quadrant values (CUPM, DUPM, DLPM, CLPM), and overall covariance matrix. Uncalled quadrants will return a matrix of zeros.
Note
For divergent asymmetrical "D.LPM" and "D.UPM"
matrices, matrix is D.LPM(column,row,...)
.
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) "Bayes' Theorem From Partial Moments" doi:10.2139/ssrn.3457377
Examples
set.seed(123)
x <- rnorm(100) ; y <- rnorm(100) ; z <- rnorm(100)
A <- cbind(x,y,z)
PM.matrix(LPM_degree = 1, UPM_degree = 1, variable = A, target = colMeans(A), pop_adj = TRUE)
## Use of vectorized numeric targets (target_x, target_y, target_z)
PM.matrix(LPM_degree = 1, UPM_degree = 1, target = c(0, 0.15, .25), variable = A, pop_adj = TRUE)
## Calling Individual Partial Moment Quadrants
cov.mtx <- PM.matrix(LPM_degree = 1, UPM_degree = 1, variable = A, target = colMeans(A),
pop_adj = TRUE)
cov.mtx$cupm
## Full covariance matrix
cov.mtx$cov.matrix
Upper 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 |
integer; |
target |
numeric; Set to |
variable |
a numeric vector. data.frame or list 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 of x
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-tail
UPM.VaR(0.05, 0, x)
Upper Partial Moment RATIO
Description
This function generates a standardized univariate upper partial moment for any degree or target.
Usage
UPM.ratio(degree, target, variable)
Arguments
degree |
integer; |
target |
numeric; Typically set to mean, but does not have to be. (Vectorized) |
variable |
a numeric vector. |
Value
Standardized 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.ratio(0, mean(x), x)
## Joint Upper CDF
## Not run:
x <- rnorm(5000) ; y <- rnorm(5000)
plot3d(x, y, Co.UPM(0, sort(x), sort(y), x, y), col = "blue", xlab = "X", ylab = "Y",
zlab = "Probability", box = FALSE)
## End(Not run)
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", 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]$First
the 1st derivativedy.d_(...)[, wrt]$Second
the 2nd derivativedy.d_(...)[, wrt]$Mixed
the mixed derivative (for two independent variables only).
Note
For binary regressors, it is suggested to use eval.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 ^ 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 = 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 CI
LPM.VaR(.025, 0, apd[,1]$First)
### Upper CI
UPM.VaR(.025, 0, apd[,1]$First)
## End(Not run)
Partial Derivative dy/dx
Description
Returns the numerical partial derivative of y
wrt x
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 a data.table
of eval.point along with both 1st and 2nd derivative.
Note
If a vector of derivatives is required, ensure (deriv.method = "FD")
.
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 derivative
dy.dx(x, y, eval.point = 1.75)[ , first.derivative]
# Second derivative
dy.dx(x, y, eval.point = 1.75)[ , second.derivative]
# Vector of derivatives
dy.dx(x, y, eval.point = c(1.75, 2.5))
## End(Not run)