Quickstarts
quickstart, np, npRmpi, crs, examples, starter scripts
This page is the shortest route from “I need an example” to a small runnable script. The scripts below are the modern quickstarts in the gallery, and each block is pulled directly from the underlying source file.
Choose a starting point
| If you want to… | Start here |
|---|---|
| fit a first kernel regression | np_regression_quickstart.R |
use nomad = TRUE for a first local-polynomial fit |
np_regression_nomad_quickstart.R |
estimate a density with np |
np_density_quickstart.R |
estimate a distribution with np |
np_distribution_quickstart.R |
estimate a conditional density with np |
np_conditional_density_quickstart.R |
estimate a conditional distribution with np |
np_conditional_distribution_quickstart.R |
fit nonparametric conditional quantiles with np |
np_quantile_quickstart.R |
| estimate a nonparametric copula | np_copula_quickstart.R |
| run a nonparametric classification / mode example | np_classification_quickstart.R |
| save a fitted curve with asymptotic intervals | np_plotting_quickstart.R |
run an entropy/testing function with np |
np_entropy_quickstart.R |
fit a semiparametric model with np |
np_semiparametric_quickstart.R |
| fit a nonparametric instrumental regression | np_instrumental_regression_quickstart.R |
| run a nonparametric significance test | np_significance_quickstart.R |
| run a model-specification test | np_specification_quickstart.R |
use npRmpi interactively on macOS/Linux |
nprmpi_session_quickstart.R |
| use the LP NOMAD shortcut after MPI initialization | nprmpi_session_nomad_quickstart.R |
use npRmpi under mpiexec |
nprmpi_attach_quickstart.R |
use npRmpi with explicit broadcast control |
nprmpi_profile_quickstart.R |
fit a first spline model with crs |
crs_quickstart.R |
| fit a spline instrumental-regression model | crs_iv_quickstart.R |
np quickstarts
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.matrixSource 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)npRmpi quickstarts
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()nomad = TRUE
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))crs quickstart
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)Where to go next
- Code Catalog for the broader script library
- Kernel Methods for
np - Density, Distribution, Quantiles for conditional densities, distributions, and quantiles
- MPI and Large Data for
npRmpi - Splines for
crs