Code Catalog

A one-page catalog of working scripts and quickstarts for np, npRmpi, and crs.
Keywords

np, npRmpi, crs, code examples, scripts, quickstart

This page is meant to be the quickest route to working scripts. It groups the existing code by package, task, and runtime mode so that you can scan, copy, and then drill down only if you need more context.

How to use this page

  • If you want only the smallest starter scripts, go first to Quickstarts.
  • If you want something you can paste into R immediately, start with the short blocks below.
  • If you want a fuller script, use the tables further down.
  • If you know a function name, use the site search box or the Reference page.

Minimal starters you can copy immediately

np: kernel regression

Source file: np_regression_quickstart.R

## Minimal np regression example.
##
## The intended workflow is:
## 1. compute a bandwidth object,
## 2. fit the regression estimator,
## 3. inspect the result and a simple fitted curve.

library(np)
options(np.messages = FALSE)

data(cps71, package = "np")
dat <- cps71[, c("logwage", "age")]

## Select the bandwidth object, then fit the regression.
bw <- npregbw(logwage ~ age, data = dat, regtype = "ll", bwmethod = "cv.aic")
fit <- npreg(bws = bw, data = dat)

## Review the bandwidth choice and the fitted regression.
summary(bw)
summary(fit)

## Let the plot method handle the basic fitted-curve display.
plot(fit)

Start here if you want the core np workflow in its simplest form. For more context, see Kernel Primer or Quickstarts.

np: density estimation

Source file: np_density_quickstart.R

## Minimal np density-estimation example.
##
## The intended workflow is:
## 1. compute a bandwidth object,
## 2. fit the density estimator,
## 3. inspect the result.

library(np)
options(np.messages = FALSE)

## Start with one variable so the density workflow is easy to read.
data(faithful, package = "datasets")
dat <- data.frame(waiting = faithful$waiting)

## Select the smoothing parameter, then fit the density.
bw <- npudensbw(~ waiting, data = dat, bwmethod = "cv.ml")
fhat <- npudens(bws = bw, data = dat)

## Review the bandwidth choice and the fitted density object.
summary(bw)
summary(fhat)

Start here if the object of interest is a density rather than a regression mean. For distribution, conditional-density, conditional-distribution, and quantile starters, see Quickstarts and Density, Distribution, Quantiles.

npRmpi: same workflow, MPI initialized once

Source file: nprmpi_session_quickstart.R

## Minimal modern npRmpi example.
##
## The intended workflow is:
## 1. initialize MPI once in session/spawn mode,
## 2. write ordinary np-style code,
## 3. quit cleanly at the end.

library(npRmpi)

## Initialize once, then work as if this were an ordinary np script.
npRmpi.init(nslaves = 1)

set.seed(1)
x <- runif(200)
y <- sin(2 * pi * x) + rnorm(200, sd = 0.2)
dat <- data.frame(y, x)

## Fit the bandwidth and regression objects.
bw <- npregbw(y ~ x, regtype = "ll", bwmethod = "cv.ls", data = dat)
fit <- npreg(bws = bw, data = dat)

## Review the objects, plot the fit, then exit cleanly.
summary(bw)
summary(fit)

plot(fit)

npRmpi.quit()

This is the modern default instructional path for npRmpi: initialize MPI once, run ordinary np-style code, then quit cleanly. For mode details, see MPI and Large Data.

crs: spline regression

Source file: crs_quickstart.R

## Minimal crs spline-regression example.
##
## This is the smallest useful workflow:
## 1. fit a spline model,
## 2. inspect the summary,
## 3. optionally move on to plotting or tighter search control.

library(crs)
options(crs.messages = FALSE)

## Generate a simple nonlinear surface with two predictors.
set.seed(42)
n <- 250
x1 <- runif(n)
x2 <- runif(n)
y <- sin(2 * pi * x1) + x2 + rnorm(n, sd = 0.2)
dat <- data.frame(y, x1, x2)

## Fit the spline model and inspect the summary.
fit <- crs(y ~ x1 + x2, data = dat)

summary(fit)

Use this when regression splines are the natural first tool. For the conceptual route, see Spline Primer.

np: kernel methods in serial

Script Main topic Functions/features Start reading here
np_regression_quickstart.R Minimal kernel-regression workflow npregbw, npreg Kernel Primer
np_regression_nomad_quickstart.R Minimal LP NOMAD workflow npreg, nomad = TRUE Kernel Primer
np_density_quickstart.R Minimal density-estimation workflow npudensbw, npudens Density, Distribution, Quantiles
np_distribution_quickstart.R Minimal distribution-estimation workflow npudistbw, npudist Density, Distribution, Quantiles
np_conditional_density_quickstart.R Minimal conditional-density workflow npcdensbw, npcdens Density, Distribution, Quantiles
np_conditional_distribution_quickstart.R Minimal conditional-distribution workflow npcdistbw, npcdist Density, Distribution, Quantiles
np_quantile_quickstart.R Minimal quantile-regression workflow npcdistbw, npqreg Density, Distribution, Quantiles
np_copula_quickstart.R Minimal copula-estimation workflow npudistbw, npcopula Density, Distribution, Quantiles
np_classification_quickstart.R Minimal classification / conditional-mode workflow npconmode Classification and Modes
np_plotting_quickstart.R Minimal plotting and interval workflow npreg, plot, predict Plotting and Intervals
np_entropy_quickstart.R Minimal entropy/testing workflow npunitest Entropy and Testing
np_semiparametric_quickstart.R Minimal semiparametric workflow npplreg Semiparametric Models
np_instrumental_regression_quickstart.R Minimal instrumental-regression workflow npregiv Kernel Methods
np_significance_quickstart.R Minimal significance-testing workflow npreg, npsigtest Significance and Specification
np_specification_quickstart.R Minimal model-specification workflow lm, npcmstest Significance and Specification

Additional serial scripts

Script Main topic Functions/features Start reading here
regression_intro_a.R Univariate regression and plotting npreg, local constant, local linear Kernel Primer
regression_intro_b.R Derivative estimation npreg, derivative output Plotting and Intervals
regression_intro_c.R Plotting fitted objects and intervals plot(), asymptotic and bootstrap error handling Plotting and Intervals
regression_multivar_a.R Multivariate regression mixed predictors, multivariate fit Multivariate Regression and Prediction

np: practitioner-oriented extras

These are compact workflows drawn from the practitioner-oriented material in the Cambridge manuscript. They are useful when the applied task is not just regression fitting.

Script Main topic Functions/features Start reading here
np_probability_quickstart.R Smooth probability estimation on discrete support npudens, Aitchison-Aitken kernel Density, Distribution, Quantiles
np_density_resample_quickstart.R Smooth resampling from a fitted density npudensbw, npudens, Gaussian-kernel resampling Density, Distribution, Quantiles
np_conditional_density_resample_quickstart.R Smooth resampling from a fitted conditional density npcdensbw, npcdens, weighted conditional resampling Density, Distribution, Quantiles

npRmpi: modern session-mode quick start

If you want one current downloadable script before anything else, start here.

Script Main topic Functions/features Start reading here
nprmpi_session_quickstart.R Modern session / spawn workflow npRmpi.init, npregbw, npreg MPI and Large Data
nprmpi_session_nomad_quickstart.R Modern session LP NOMAD workflow npRmpi.init, npreg, nomad = TRUE MPI and Large Data
nprmpi_attach_quickstart.R Modern attach-mode workflow npRmpi.init(mode = \attach\), npregbw, npreg MPI and Large Data
nprmpi_profile_quickstart.R Modern profile/manual-broadcast workflow mpi.bcast.cmd, np.mpi.initialize, npregbw, npreg MPI and Large Data

Inline source for common scripts

The blocks below are pulled directly from the script files in www/, so they stay aligned with the downloadable versions.

Source file: np_regression_quickstart.R

## Minimal np regression example.
##
## The intended workflow is:
## 1. compute a bandwidth object,
## 2. fit the regression estimator,
## 3. inspect the result and a simple fitted curve.

library(np)
options(np.messages = FALSE)

data(cps71, package = "np")
dat <- cps71[, c("logwage", "age")]

## Select the bandwidth object, then fit the regression.
bw <- npregbw(logwage ~ age, data = dat, regtype = "ll", bwmethod = "cv.aic")
fit <- npreg(bws = bw, data = dat)

## Review the bandwidth choice and the fitted regression.
summary(bw)
summary(fit)

## Let the plot method handle the basic fitted-curve display.
plot(fit)

Source file: np_regression_nomad_quickstart.R

library(np)
data(cps71, package = "np")

## Use the shortest modern LP route: fit directly with nomad = TRUE.
fit_lp <- npreg(logwage ~ age, data = cps71, nomad = TRUE)

## Plot first, then inspect the fitted object in text form.
plot(fit_lp)
summary(fit_lp)

Source file: np_density_quickstart.R

## Minimal np density-estimation example.
##
## The intended workflow is:
## 1. compute a bandwidth object,
## 2. fit the density estimator,
## 3. inspect the result.

library(np)
options(np.messages = FALSE)

## Start with one variable so the density workflow is easy to read.
data(faithful, package = "datasets")
dat <- data.frame(waiting = faithful$waiting)

## Select the smoothing parameter, then fit the density.
bw <- npudensbw(~ waiting, data = dat, bwmethod = "cv.ml")
fhat <- npudens(bws = bw, data = dat)

## Review the bandwidth choice and the fitted density object.
summary(bw)
summary(fhat)

Source file: np_distribution_quickstart.R

## Minimal np distribution example.
##
## This mirrors the usual density workflow but targets the
## unconditional distribution function instead.

library(np)
options(np.messages = FALSE)

## Mirror the basic density setup, but target the distribution instead.
data(faithful, package = "datasets")
dat <- data.frame(waiting = faithful$waiting)

## Select the bandwidth, then fit the unconditional distribution.
bw <- npudistbw(~ waiting, data = dat, nmulti = 1)
Fhat <- npudist(bws = bw, data = dat)

## Review the smoothing choice and the fitted distribution object.
summary(bw)
summary(Fhat)

Source file: np_conditional_density_quickstart.R

## Minimal np conditional-density example.
##
## This keeps the first run small enough to be practical while still
## showing the standard two-step workflow:
## 1. compute a bandwidth object,
## 2. fit the conditional-density estimator.

library(np)
options(np.messages = FALSE)

## Keep the first run small enough that the two-step workflow stays quick.
data(faithful, package = "datasets")
dat <- faithful[seq_len(120), c("eruptions", "waiting")]

## Select the bandwidth first, then fit the conditional density.
bw <- npcdensbw(eruptions ~ waiting, data = dat, nmulti = 1)
fhat <- npcdens(bws = bw, data = dat)

## Review both the smoothing choice and the fitted object.
summary(bw)
summary(fhat)

Source file: np_conditional_distribution_quickstart.R

## Minimal np conditional-distribution example.
##
## This uses a small first run so the standard two-step workflow stays
## copyable and practical.

library(np)
options(np.messages = FALSE)

## Work on a smaller slice so the first run stays easy to inspect.
data(faithful, package = "datasets")
dat <- faithful[seq_len(120), c("eruptions", "waiting")]

## Select the bandwidth, then fit the conditional distribution.
bw <- npcdistbw(eruptions ~ waiting, data = dat, nmulti = 1)
Fhat <- npcdist(bws = bw, data = dat)

## Review the bandwidth object and the fitted distribution.
summary(bw)
summary(Fhat)

Source file: np_quantile_quickstart.R

## Minimal np quantile-regression example.
##
## The key idea is to compute/select the conditional distribution once
## and then extract one or more quantiles from it.

library(np)
options(np.messages = FALSE)

## Keep the first quantile run compact and reproducible.
data(faithful, package = "datasets")
dat <- faithful[seq_len(120), c("eruptions", "waiting")]

## Build one conditional-distribution fit and request several quantiles.
qfit <- npqreg(eruptions ~ waiting,
               data = dat,
               tau = c(0.25, 0.50, 0.75),
               nmulti = 1)

## Review the bandwidth choice and one representative fitted quantile.
summary(qfit$bws)
summary(qfit)

## Plot the overlaid fitted quantile curves.
plot(qfit)

Source file: np_copula_quickstart.R

## Minimal np copula example.
##
## This uses the direct formula interface and lets npcopula() build
## the corresponding marginal distribution bandwidth object internally.

library(np)
library(MASS)

set.seed(42)
n <- 1000
rho <- 0.95
Sigma <- matrix(c(1, rho, rho, 1), 2, 2)

## Simulate a simple bivariate sample with strong dependence.
dat <- as.data.frame(mvrnorm(n = n, mu = c(0, 0), Sigma = Sigma))
names(dat) <- c("x", "y")

## Let npcopula() create a small default probability grid.
copula_fit <- npcopula(~ x + y, data = dat, neval = 20)

## Inspect the fitted copula object and the retained bandwidth object.
summary(copula_fit)
summary(attr(copula_fit, "bws"))

Source file: np_classification_quickstart.R

## Minimal np classification / conditional-mode example.
##
## This keeps the first run compact while still showing the basic
## nonparametric classification route.

library(np)
data(birthwt, package = "MASS")

## Class the discrete fields the way the estimator expects them.
birthwt$low <- factor(birthwt$low)
birthwt$smoke <- factor(birthwt$smoke)
birthwt$race <- factor(birthwt$race)

## Fit the conditional-mode classifier on a small practical formula.
fit <- npconmode(low ~ smoke + race + age + lwt, data = birthwt, nmulti = 1)

## Inspect the fitted object, then the implied confusion matrix.
summary(fit)
fit$confusion.matrix

Source file: np_plotting_quickstart.R

## Minimal np plotting and interval example.
##
## This fits a simple local-linear model and then shows the
## modern bootstrap plotting route with all interval/band types.

library(np)
options(np.messages = FALSE)

data(cps71, package = "np")

## Fit a simple local-linear regression object.
model.ll <- npreg(logwage ~ age, regtype = "ll", data = cps71)

## Save one example plot so the script works in non-interactive sessions too.
plot_path <- file.path(tempdir(), "np_plotting_quickstart.png")
png(plot_path, width = 700, height = 500)
plot(model.ll,
  errors = "bootstrap",
  bootstrap = "inid",
  band = "all")
dev.off()

## Report where the rendered image landed.
cat("Saved plot to:", plot_path, "\n")

Source file: np_entropy_quickstart.R

## Minimal np entropy/testing example.
##
## This uses the univariate density-equality test because it is a
## compact, fast first run.

library(np)
options(np.messages = FALSE)

## Generate two simple samples so the test output is easy to interpret.
set.seed(1234)
n <- 300
x <- rnorm(n)
y <- rnorm(n)

## Run a compact first test without bootstrap overhead.
test_out <- npunitest(x, y, bootstrap = FALSE)

## Inspect the test summary.
summary(test_out)

Source file: np_semiparametric_quickstart.R

## Minimal np semiparametric example.
##
## This uses a partially linear model because it is the clearest
## lightweight entry point into the semiparametric family.

library(np)
options(np.messages = FALSE)

## Build a small partially linear data-generating setup.
set.seed(42)
n <- 200
x1 <- rnorm(n)
z <- runif(n)
y <- 1 + 2 * x1 + sin(2 * pi * z) + rnorm(n, sd = 0.2)
dat <- data.frame(y, x1, z)

## Fit the partially linear model.
fit <- npplreg(y ~ x1 | z, data = dat)

## Inspect the fitted semiparametric object.
summary(fit)

Source file: np_instrumental_regression_quickstart.R

## Minimal np instrumental-regression example.
##
## This mirrors the basic one-endogenous-regressor setup used in the
## package demos while keeping the first run compact.

library(np)

## Build a small one-endogenous-regressor example with one instrument.
set.seed(42)
n <- 80
v <- rnorm(n, sd = 0.27)
eps <- rnorm(n, sd = 0.05)
u <- -0.5 * v + eps
w <- rnorm(n)
z <- 0.2 * w + v
y <- z^2 + u

## Fit the nonparametric IV regression.
fit_iv <- npregiv(y = y, z = z, w = w, method = "Tikhonov", nmulti = 1)

## Inspect the fitted IV object.
summary(fit_iv)

Source file: np_significance_quickstart.R

## Minimal np significance-testing example.
##
## The idea is to fit a model with one irrelevant regressor and then
## ask whether the nonparametric significance test detects that.

library(np)
options(np.messages = FALSE)

## Generate one relevant and one irrelevant regressor on purpose.
set.seed(42)
n <- 200
z <- factor(rbinom(n, 1, 0.5))
x1 <- rnorm(n)
x2 <- runif(n, -2, 2)
y <- x1 + x2 + rnorm(n)
dat <- data.frame(z, x1, x2, y)

## Fit the model before asking the significance question.
fit <- npreg(y ~ z + x1 + x2,
  regtype = "ll",
  bwmethod = "cv.aic",
  data = dat)

## Test the fitted object and inspect both summaries.
test_out <- npsigtest(fit)

summary(fit)
summary(test_out)

Source file: np_specification_quickstart.R

## Minimal np model-specification test example.
##
## The idea is to fit a simple linear model to nonlinear data and then
## ask whether the parametric specification looks too restrictive.

library(np)
options(np.messages = FALSE)

## Simulate nonlinear data, then fit an intentionally simple linear model.
set.seed(42)
n <- 120
x <- runif(n, -2, 2)
y <- x + x^2 + rnorm(n, sd = 0.25)

model_ols <- lm(y ~ x, x = TRUE, y = TRUE)
X <- data.frame(x = x)

## Compare the parametric model to the nonparametric alternative.
test_out <- npcmstest(model = model_ols,
  xdat = X,
  ydat = y,
  nmulti = 1)

## Inspect both the linear fit and the specification test.
summary(model_ols)
summary(test_out)

Source file: regression_intro_a.R

## Here is a simple illustration to help you get started with
## univariate kernel regression.

## First, let's grab some data from the np package

## Load the np package

library(np)

## Load the cps71 dataset contained in the np package

data(cps71)

## Attach the data so that the variables `logwage' and `age' can be
## called directly

attach(cps71)

## Fit a (default) local constant model (since we do not explicitly
## call npregbw() which conducts least-squares cross-validated
## bandwidth selection by default it is automatically invoked when we
## call npreg())

model.lc <- npreg(logwage~age)

## Plot the local-constant fit. By default the plot method overlays the
## observed data, so we do not have to draw the raw sample first.

plot(model.lc)

## Fit a local linear model (we use the arguments regtype="ll" to do
## this)

model.ll <- npreg(logwage~age,regtype="ll")

## Add the local-linear fit with a different color and linetype

lines(age,fitted(model.ll),col=2,lty=2)

## Add a legend

legend("topleft",
       c("Local Constant","Local Linear"),
       lty=c(1,2),
       col=c(1,2),
       bty="n")

Source file: regression_multivar_a.R

## Here is a simple illustration to help you get started with
## multivariate kernel regression and plotting via R's `plot' function
## (which dispatches to the `plot.np' S3 method family)

## First, let's grab some data from the np package

## Load the np package

library(np)

## Load the wage1 dataset contained in the np package

data(wage1)

## Attach the data so that the variables `lwage', `female', `educ' and
## `exper' can be called directly

attach(wage1)

## Fit a local linear model (since we do not explicitly call npregbw()
## which conducts least-squares cross-validated bandwidth selection by
## default it is automatically invoked when we call npreg()). Here we
## have a `factor' (female) and two `numeric' predictors (educ and
## exper - see ?wage1 for details)

model <- npreg(lwage~female+educ+exper,regtype="ll")

## model will be an object of class `npreg'. The generic R function
## `plot' will dispatch to the `plot.np' S3 methods when it is deployed
## on an object of this type (see ?plot.np for details on supported
## plotting arguments). Calling plot on a npreg object allows you to do some
## tedious things without having to write code such as including
## confidence intervals as the following example demonstrates. Note
## also that we do not explicitly have to specify `gradients=TRUE' in
## the call to npreg() as plot.np will take care of this for
## us. Below we use the asymptotic standard error estimates and then
## take +- 1.96 standard error)

plot(model, errors = "asymptotic")

## We might also wish to use bootstrapping instead (here we bootstrap
## the standard errors and then take +- 1.96 standard error)

plot(model, errors = "bootstrap")

## Alternately, we might compare the modern pointwise, Bonferroni, and
## simultaneous bootstrap error bounds on the same plot.

plot(model, errors = "bootstrap", band = "all")

## Note that adding the argument `gradients=TRUE' to the plot call
## will automatically plot the derivatives instead

plot(model, errors = "bootstrap", band = "all", gradients = TRUE)

Source file: nprmpi_session_quickstart.R

## Minimal modern npRmpi example.
##
## The intended workflow is:
## 1. initialize MPI once in session/spawn mode,
## 2. write ordinary np-style code,
## 3. quit cleanly at the end.

library(npRmpi)

## Initialize once, then work as if this were an ordinary np script.
npRmpi.init(nslaves = 1)

set.seed(1)
x <- runif(200)
y <- sin(2 * pi * x) + rnorm(200, sd = 0.2)
dat <- data.frame(y, x)

## Fit the bandwidth and regression objects.
bw <- npregbw(y ~ x, regtype = "ll", bwmethod = "cv.ls", data = dat)
fit <- npreg(bws = bw, data = dat)

## Review the objects, plot the fit, then exit cleanly.
summary(bw)
summary(fit)

plot(fit)

npRmpi.quit()

Source file: nprmpi_session_nomad_quickstart.R

## Minimal modern npRmpi NOMAD example.
##
## The intended workflow is:
## 1. initialize MPI once,
## 2. use the same nomad = TRUE shortcut available in np,
## 3. inspect the normalized shortcut metadata,
## 4. quit cleanly at the end.

if (!requireNamespace("crs", quietly = TRUE)) {
  stop("This quickstart uses nomad = TRUE, which requires the 'crs' package ",
    "for NOMAD degree search. Install it with install.packages('crs').")
}

library(npRmpi)

## Initialize once, then write ordinary np-style code.
npRmpi.init(nslaves = 1)

set.seed(7)
n <- 120
x <- runif(n, -1, 1)
y <- x + 0.4 * x^2 + rnorm(n, sd = 0.18)
dat <- data.frame(y, x)

## Fit the LP shortcut and inspect the normalized metadata.
fit <- npreg(y ~ x, data = dat, nomad = TRUE, degree.max = 2L, nmulti = 1L)

fit$bws$nomad.shortcut
summary(fit)

## Plot the fitted object before quitting cleanly.
plot(fit)

npRmpi.quit()

Source file: nprmpi_attach_quickstart.R

## Minimal attach-mode npRmpi example.
##
## Launch with a pre-created MPI world, for example:
##   mpiexec -env R_PROFILE_USER "" -env R_PROFILE "" -n 2 \
##     Rscript --no-save nprmpi_attach_quickstart.R

library(npRmpi)

## Initialize under an already-created MPI world.
npRmpi.init(mode = "attach")

if (mpi.comm.rank(0L) == 0L) {
  ## Build the data and fit on the coordinator rank.
  set.seed(1)
  x <- runif(200)
  y <- sin(2 * pi * x) + rnorm(200, sd = 0.2)
  dat <- data.frame(y, x)

  bw <- npregbw(y ~ x, regtype = "ll", bwmethod = "cv.ls", data = dat)
  fit <- npreg(bws = bw, data = dat)

  ## Inspect the fitted objects, then shut down cleanly.
  summary(bw)
  summary(fit)

  npRmpi.quit(mode = "attach")
}

Source file: nprmpi_profile_quickstart.R

## Minimal profile/manual-broadcast npRmpi example.
##
## Launch with an explicit profile source, for example:
##   RPROFILE=$(Rscript --no-save -e 'cat(system.file("Rprofile", package="npRmpi"))')
##   mpiexec -env R_PROFILE_USER "$RPROFILE" -env R_PROFILE "" -n 2 \
##     Rscript --no-save nprmpi_profile_quickstart.R

## Initialize the workers through the profile route.
invisible(mpi.bcast.cmd(np.mpi.initialize(), caller.execute = TRUE))

## Build the data once on the caller and broadcast it.
set.seed(1)
x <- runif(200)
y <- sin(2 * pi * x) + rnorm(200, sd = 0.2)
dat <- data.frame(y, x)

invisible(mpi.bcast.Robj2slave(dat))

## Fit the bandwidth and regression objects on the workers.
invisible(mpi.bcast.cmd(bw <- npregbw(y ~ x, regtype = "ll", bwmethod = "cv.ls", data = dat),
  caller.execute = TRUE))

invisible(mpi.bcast.cmd(fit <- npreg(bws = bw, data = dat),
  caller.execute = TRUE))

## Inspect the results, then stop the MPI workers.
summary(bw)
summary(fit)

invisible(mpi.bcast.cmd(mpi.quit(), caller.execute = TRUE))

npRmpi: serial and MPI comparison scripts

These are older comparison scripts, but still useful if you want to see side-by-side serial and MPI routes. For new work, start with the session / spawn example above and then come back to these when you want route parity or legacy comparison.

Task Serial MPI Start reading here
Conditional density estimation npcdensls_serial.R npcdensls_npRmpi.R Density, Distribution, Quantiles
Model specification test npcmstest_serial.R npcmstest_npRmpi.R Significance and Specification
Conditional mode estimation npconmode_serial.R npconmode_npRmpi.R Classification and Modes
Density equality test npdeneqtest_serial.R npdeneqtest_npRmpi.R Entropy and Testing
Single index estimation npindexich_serial.R npindexich_npRmpi.R Semiparametric Models
Partially linear regression npplreg_serial.R npplreg_npRmpi.R Semiparametric Models
Local linear AIC bandwidth selection npregllaic_serial.R npregllaic_npRmpi.R Kernel Primer
Serial dependence test npsdeptest_serial.R npsdeptest_npRmpi.R Entropy and Testing
Significance test npsigtest_serial.R npsigtest_npRmpi.R Significance and Specification
Unconditional density estimation npudensml_serial.R npudensml_npRmpi.R Density, Distribution, Quantiles

npRmpi: local polynomial / constrained examples

The older npglpreg route is deprecated. These retained local polynomial scripts use the current npregbw() + npreghat() route instead. For the automatic LP replacement path, use npreg(..., nomad = TRUE) in np or npRmpi.

Script Main topic
lp_k1_prodfunc.R Production-function style local polynomial example
lp_k1.R Local polynomial example
lp_radial_mean.R Constrained radial mean example
lp_radial_deriv.R Constrained radial derivative example

crs: spline examples

Script Main topic Notes
crs_quickstart.R Minimal spline-regression workflow modern quickstart
radial_rgl.R Bivariate radial spline surface requires rgl
sine_rgl.R Bivariate sine spline surface requires rgl
radial_constrained_mean.R Constrained spline mean estimation uses quadprog
radial_constrained_first_partial.R Constrained first derivative uses quadprog
radial_constrained_second_partial.R Constrained second derivative uses quadprog

Source file: crs_quickstart.R

## Minimal crs spline-regression example.
##
## This is the smallest useful workflow:
## 1. fit a spline model,
## 2. inspect the summary,
## 3. optionally move on to plotting or tighter search control.

library(crs)
options(crs.messages = FALSE)

## Generate a simple nonlinear surface with two predictors.
set.seed(42)
n <- 250
x1 <- runif(n)
x2 <- runif(n)
y <- sin(2 * pi * x1) + x2 + rnorm(n, sd = 0.2)
dat <- data.frame(y, x1, x2)

## Fit the spline model and inspect the summary.
fit <- crs(y ~ x1 + x2, data = dat)

summary(fit)

Source file: crs_iv_quickstart.R

## Minimal crs instrumental-regression example.
##
## This is a compact first run for spline-based IV estimation.

library(crs)

## Build a small IV example with one endogenous regressor and one instrument.
set.seed(42)
n <- 100
v <- rnorm(n, sd = 0.27)
eps <- rnorm(n, sd = 0.05)
u <- -0.5 * v + eps
w <- rnorm(n)
z <- 0.2 * w + v
y <- z^2 + u

## Fit the spline IV model.
fit_iv <- crsiv(y = y,
  z = z,
  w = w,
  method = "Landweber-Fridman",
  cv = "exhaustive",
  nmulti = 1,
  cv.threshold = 0)

## Inspect the fitted IV object.
summary(fit_iv)

Interactive demos for teaching and exploration

Script Main topic Notes
manipulate_density.R Univariate density with sliders RStudio + manipulate
manipulate_eruptions.R Old Faithful density RStudio + manipulate
manipulate_distribution.R Univariate distribution RStudio + manipulate
manipulate_bivariate_density.R Bivariate density RStudio + manipulate
manipulate_faithful_density.R Old Faithful bivariate density RStudio + manipulate
manipulate_bivariate_distribution.R Bivariate distribution RStudio + manipulate
manipulate_wage1.R Multivariate regression partial plots RStudio + manipulate
manipulate_constrained_local_polynomial.R Constrained local polynomial regression requires quadprog
manipulate_constrained_local_polynomial_production.R Constrained production function requires quadprog
manipulate_constrained_spline.R Constrained spline surface requires quadprog
manipulate_constrained_spline_derivative.R Constrained spline derivative requires quadprog
manipulate_copula.R Copula plots requires mnormt
manipulate_socco.R SOCCO nonlinear-system demo requires data.RData and figures.R

Notes

  • The gallery still preserves the original scripts, but the site now aims to route you to them more directly.
  • The short blocks near the top are there so you can copy a minimal working pattern without downloading anything first.
  • For MPI-specific launch semantics, see MPI and Large Data.
  • For short copyable code blocks rather than full scripts, start with Worked Examples.
Back to top