Fits the current model-averaged local polynomial smoother (MALPS) on a supplied coordinate matrix. MALPS fits local polynomial regressions around observed anchor points and averages all positive-weight local predictions at each training point. The current implementation supports supplied coordinates, observed or supplied coordinate anchors, fixed support parameters, deterministic cross-validation and exact dense GCV over support parameters, local PCA chart coordinates, ordinary and weighted new-response refits, coordinate-space new-point prediction, linear-smoother diagnostics, and fixed-selection bootstrap uncertainty summaries. Graph-geodesic supports are available for training and refit; graph-geodesic new-point prediction is deferred.
Usage
fit.malps(
X,
y,
graph = NULL,
adj.list = NULL,
weight.list = NULL,
graph.stage = "final",
anchor.index = NULL,
anchor.coordinates = NULL,
degree = 2L,
degree.grid = NULL,
support.type = c("adaptive.radius", "knn", "fixed.radius"),
support.size = NULL,
support.grid = NULL,
radius = NULL,
radius.grid = NULL,
min.support = NULL,
min.support.grid = NULL,
support.buffer = 3L,
kernel = c("epanechnikov", "triangular", "gaussian", "tricube"),
kernel.grid = NULL,
model.weight.rule = c("none", "condition", "support", "boundary", "quality"),
duplicate.action = c("keep", "error"),
coordinate.method = c("coordinates", "local.pca"),
chart.dim = NULL,
support.metric = c("auto", "coordinates", "graph.geodesic"),
auto.chart.support.metric = c("coordinates", "operator", "both"),
auto.chart.selection.metric = c("coordinates", "operator"),
support.selection = c("fixed", "cv", "gcv"),
foldid = NULL,
cv.folds = 5L,
cv.loss = c("rmse", "mae", "mse"),
cv.repeats = 1L,
cv.seed = NULL,
cv.one.se = FALSE,
gcv.exact.max.n = 1000L,
local.solver = c("auto", "normal.equations", "qr", "svd"),
normal.equations.max.condition = 1e+08,
robust.iterations = 0L,
robust.tuning.constant = 6,
verbose = FALSE,
...
)Arguments
- X
Numeric coordinate matrix with one row per observation.
- y
Numeric response vector with length
nrow(X).- graph
Optional supported dgraphs graph object, for example from
dgraphs::create.rknn.graph(). Whensupport.metric = "graph.geodesic"or"auto"with a graph supplied, weighted shortest-path distances from this graph are used for support construction.- adj.list
Optional 1-based undirected adjacency list. Must be supplied together with
weight.listwhen using a supplied graph payload.- weight.list
Optional positive edge-length list parallel to
adj.list. Edge weights are interpreted as graph lengths.- graph.stage
Graph lifecycle stage used when
graphis a dgraphs graph object. Supported stages include"final","raw", and"pruned"when those payloads are available on the supplied graph.- anchor.index
Optional integer vector of observed rows used as local model anchors. Defaults to all rows when
anchor.coordinatesisNULL.- anchor.coordinates
Optional numeric coordinate matrix of off-sample local model anchors with the same number of columns as
X. This option is currently supported only with coordinate support distances, not withsupport.metric = "graph.geodesic".- degree
Local polynomial degree, one of
0L,1L, or2L.- degree.grid
Optional degree grid used when
support.selectionis"cv"or"gcv".- support.type
Support construction rule.
"knn"uses exactlysupport.sizenearest observations including the anchor itself for full-data local fitting supports. Prediction supports are then rebuilt from the induced local radius, so tied targets at the kNN boundary can be covered even when they were not part of the exact-size fitting support."adaptive.radius"uses a radius large enough to include at leastmin.supportobservations."fixed.radius"uses the suppliedradius.- support.size
Number of nearest observations for
support.type = "knn". IfNULL, defaults tomin.support.- support.grid
Optional kNN support-size grid used when
support.selectionis"cv"or"gcv".- radius
Radius for
support.type = "fixed.radius"and optional base radius forsupport.type = "adaptive.radius".- radius.grid
Optional radius grid used when
support.selectionis"cv"or"gcv".- min.support
Minimum positive-weight support size. If
NULL, defaults to the local polynomial design size plussupport.buffer.- min.support.grid
Optional minimum-support grid used when
support.selectionis"cv"or"gcv".- support.buffer
Nonnegative integer added to the local design size when deriving the default
min.support.- kernel
Kernel used for local fitting and model averaging.
- kernel.grid
Optional kernel grid used when
support.selectionis"cv"or"gcv".- model.weight.rule
Optional per-anchor model-quality multiplier applied to the ordinary kernel averaging weights.
"none"preserves the kernel-only averaging from earlier phases."condition"downweights poorly conditioned local designs with \(q_u^{\mathrm{cond}}=1/\max(\kappa_u,1)\)."support"upweights anchors with larger positive fitting supports using support size divided by the maximum support size."boundary"downweights asymmetric boundary-like supports with \(q_u^{\mathrm{bdry}}=1/(1+b_u)\)."quality"multiplies these three component weights. For every non-"none"rule,diagnostics$model.weight.rawstores the selected unnormalized rule multiplier, whilemodel.weightsanddiagnostics$model.weightstore the final multipliers after median-one normalization over positive raw values. Raw zero or non-finite multipliers are retained diagnostically but are replaced by a tiny positive final floor before prediction averaging, so model-quality rules reweight existing prediction support rather than removing anchors from support membership. These weights affect prediction averaging only; they do not change local supports or local coefficient estimation.- duplicate.action
How duplicate coordinate rows should be handled.
"keep"allows duplicates, records duplicate diagnostics, and preserves observed-anchor self-inclusion."error"rejects duplicate rows. Jittering duplicates is deliberately not implemented.- coordinate.method
Coordinate system used for each local polynomial design.
"coordinates"uses supplied coordinates centered at the anchor."local.pca"uses a deterministic local PCA chart estimated from the anchor support.- chart.dim
Local chart dimension for
coordinate.method = "local.pca". IfNULL, defaults toncol(X). The special value"auto"estimates a single observed-data local PCA dimension without using responses, truth values, latent coordinates, or labels. Forcoordinate.method = "coordinates",chart.dimmust beNULL.- support.metric
Distance system used for support construction.
"coordinates"uses Euclidean distances inX."graph.geodesic"uses weighted shortest-path distances fromgraphoradj.list/weight.list."auto"uses graph geodesic distances when graph input is supplied and coordinate distances otherwise.- auto.chart.support.metric
Support system used when
chart.dim = "auto"."coordinates"uses Euclidean coordinate neighborhoods,"operator"uses the resolved MALPS support metric, and"both"computes both diagnostics side by side.- auto.chart.selection.metric
Which auto chart-dimension diagnostic to use for the fitted MALPS model when both diagnostics are available. The default
"coordinates"preserves historical behavior.- support.selection
"fixed"for a single support profile,"cv"to tune support parameters by cross-validation, or"gcv"to tune support parameters by exact dense generalized cross-validation. The GCV path is cached across candidates and is exact for fixed-weight linear MALPS fits; it rejects robust residual reweighting.- foldid
Optional integer fold assignments. If supplied,
cv.repeatsis forced to one.- cv.folds
Number of folds generated when
foldid = NULL.- cv.loss
Cross-validation loss.
- cv.repeats
Number of independent fold assignments generated when
foldid = NULL.- cv.seed
Optional seed for generated folds.
- cv.one.se
Logical; use a one-standard-error rule for support selection.
- gcv.exact.max.n
Maximum number of observations allowed for exact dense GCV support selection. Larger datasets should use
"cv"until a sparse or trace-estimated GCV path is implemented.- local.solver
Local weighted least-squares solver.
"auto"uses normal equations only for full-rank, well-conditioned local designs and otherwise falls back to SVD.- normal.equations.max.condition
Maximum local design condition number for normal equations under
local.solver = "auto".- robust.iterations
Number of Cleveland-style robust residual reweighting iterations applied inside each local polynomial fit. The default
0Lpreserves ordinary MALPS. Positive values multiply the geometric fitting weights by Tukey bisquare residual weights recomputed from the local fit.- robust.tuning.constant
Positive bisquare tuning constant. The default
6matches the usual LOWESS convention in which residuals are scaled by6 * median(abs(residuals)).- verbose
Logical; reserved for future progress messages.
- ...
Reserved for future extensions. Supplying unused arguments is an error.
Value
A list of class "malps" with fitted values, local model
coefficients, supports, averaging weights, diagnostics, and selection
metadata.
Details
Current development benchmarks suggest using the plain MALPS defaults for
production-style fits unless a specific diagnostic motivates a non-default
option: support.selection = "cv", robust.iterations = 0L,
model.weight.rule = "none", and observed anchors
(anchor.coordinates = NULL). Exact GCV selection
(support.selection = "gcv") is a useful faster option for
fixed-weight, non-robust MALPS fits, especially exploratory continuous
smoothing runs, but it is not yet the universal default. Binary responses
are treated as numeric conditional-expectation targets; fitted values are not
clipped inside the smoother. Grid anchors, empirical-Bayes shrinkage, robust
local residual reweighting, and conservative/smoothed GCV selection remain
experimental controls rather than default recommendations.
Graph construction is supplied by dgraphs or by explicit
adj.list/weight.list payloads. Coordinate MALPS paths and
graph-geodesic payload validation are package-local; shortest-path distances
are computed through dgraphs.
Choosing controls
First fit: supply X, y, degree, and support.type with a suitable
support.size or radius. Coordinate-distance fits support new predictions.
Selection: support and degree grids, foldid, and cv.folds govern
held-out selection. Robust refits recompute residual weights; selection is
not automatically repeated by refit.
Geometry: support.metric, graph inputs, anchors, and chart controls
determine the local models. Graph-geodesic fits require aligned vertices
and do not currently predict at new targets.
Numerics: local.solver, conditioning controls, and robust weighting
have distinct meanings. Keep their defaults until diagnostics identify a need.
Diagnostics: inspect selected, model weights, and stored local fits.
smoother.matrix allocates a dense matrix and applies only to fixed
weighting; its max.n guard makes that cost explicit.