Changes from Version 0.70-1 to 0.70-2 [15-May-2026] * Promoted `npqreg()` to a fully fledged MPI-aware quantile-regression front end. It now supports formula/data calls that compute `npcdistbw()` internally, scalar or vector `tau`, bandwidth reuse for additional quantiles in `plot()`, and the standard S3 workflow through `fitted()`, `predict()`, `predict(..., se.fit = TRUE)`, `se()`, `gradients()`, `summary()`, `print()`, `quantile()`, and `plot()`. * Promoted `npconmode()` to a first-class MPI-aware conditional-mode estimator with formula/data and bandwidth-object workflows, propagation of bandwidth-selection controls through `npcdensbw()`, local-polynomial/NOMAD metadata in returned objects, class-probability output, level-specific probability gradients, and `fitted()`, `predict()`, `summary()`, `print()`, `gradients()`, and `plot()` methods. * Extended `npconmode()` plotting to object-fed class-probability slices and two-dimensional probability surfaces, including optional `rgl` rendering and probability-level asymptotic intervals where defined. Surface bootstrap intervals for class probabilities remain intentionally deferred. * Promoted `npcopula()` to a first-class MPI-aware copula estimator with formula/data and bandwidth-object workflows, automatic two-dimensional probability-grid construction, explicit `u` grid evaluation, ordinary extractable object components including `$bws`, `fitted()`, `predict()`, `predict(..., se.fit = TRUE)`, `se()`, `summary()`, `print()`, `as.data.frame()`, and enhanced `plot()` methods with asymptotic and MPI-fanned bootstrap intervals where defined. * Hardened S3 prediction and evaluation contracts across the newly promoted and adjacent core/semiparametric methods. The repaired routes honor the standard `newdata` workflow, preserve native evaluation-argument precedence such as `exdat`/`eydat`, validate formula right-hand-side variables in new data, and report invalid `se.fit` or gradient controls before expensive computation or MPI fanout begins. * Expanded pre-release validation for the promoted estimator families with hostile argument tests, S3 extractor and prediction contract tests, installed/tarball proof scripts, MPI route-aware probes, and parity checks against the serial `np` implementations. * Added an explicit proper-discrete-probability contract for `npconmode()`. Local-constant conditional-mode fits remain unchanged by default because their categorical probabilities are proper by construction; non-local-constant routes now default to projecting the fitted probabilities over the discrete response support onto the probability simplex before selecting and reporting the conditional mode. Binary outcomes are handled through the complement identity, and the optional `probabilities = TRUE` return component exposes the fitted probability matrix for inspection. The MPI-aware path preserves the same contract across session dispatch. * Split restart-from-minimum controls into `powell.remin` and `nomad.remin`. Ordinary fixed-degree Powell-style searches retain `powell.remin = TRUE` by default, following the established Numerical Recipes restart convention. Local-polynomial NOMAD degree searches now expose `nomad.remin`, which optionally performs a second NOMAD pass from the best full bandwidth/degree candidate; simulation evidence supports `nomad.remin = FALSE` for routine defaults. For `search.engine = "nomad+powell"`, the Powell polish now uses `powell.remin = FALSE` by default unless explicitly supplied, avoiding an unhelpful hot start of the hot-start polish across session/attach/profile routes. * Preserved deprecated legacy `remin` compatibility for `npregbw()` and `npreg()` while steering users to the new `powell.remin` and `nomad.remin` controls. This protects downstream packages that still pass `remin` through formula/front-end wrappers. * Exposed the same `powell.remin` and `nomad.remin` controls on single-index and smooth-coefficient bandwidth searches so `npindexbw(..., nomad = TRUE)` and `npscoefbw(..., nomad = TRUE)` have the same documented MPI-aware NOMAD restart contract as the other LP-capable bandwidth selectors. * Hardened OpenMPI runtime initialization on Debian-compatible systems by probing the current `libmpi.so.40` runtime SONAME before the generic `libmpi.so` fallback, while preserving existing older OpenMPI probes and failure behavior. * Added the redesigned public plot-control interface with direct scalar controls such as `errors`, `band`, `alpha`, `bootstrap`, `B`, `behavior`, `renderer`, and `perspective`, plus validated `np_boot_control()`, `np_grid_control()`, and `np_render_control()` helpers for detailed bootstrap, grid, and rendering options. Historical `plot.errors.*` inputs remain accepted as compatibility arguments. * Hardened S3 plot argument handling so unsupported or misspelled named arguments in `...` fail fast on the master before expensive plot computation or MPI fanout begins, while preserving ordinary base-graphics pass-through arguments such as labels, limits, colors, and line widths. * Preserved documented `plot.data.overlay` compatibility under the redesigned plot argument validator: `plot.data.overlay = FALSE` remains an accepted harmless no-op on routes without observed-response overlays, while `plot.data.overlay = TRUE` still fails fast on unsupported plot families. * Added MPI-aware object-fed plot runtime support across the main S3 plot families, extending the redesigned plot-data payload paths to regression, unconditional density/distribution, conditional density/distribution, single-index, partially linear, smooth-coefficient, and quantile-regression plots while preserving standalone `npRmpi` runtime behavior. * Added `npqreg()` gradient support using the conditional-quantile delta-method relationship between the conditional distribution derivative and conditional density, with plot-data support for quantile gradients. * Exposed higher-order continuous-derivative extraction for local-polynomial conditional estimators where the selected polynomial degree supports the requested derivative order. `npreg()`, `npcdens()`, and `npcdist()` now honor `gradient.order` more consistently across fitted, evaluated, predicted, and plotted objects, including vector orders over continuous predictors and tensor/additive/Bernstein local-polynomial bases. The MPI implementation dispatches the corresponding conditional hat-apply helper work across the active worker pool where applicable. * Added asymptotic standard errors for `npqreg()` conditional quantiles and quantile gradients, and documented the implemented delta-method formulas and Nelsen-style quasi-inverse construction used by the conditional quantile solver. * Repaired `npqreg()` conditional-quantile inversion so quantile levels, standard errors, gradients, and gradient standard errors are all derived from the same selected `npcdistbw()` conditional distribution estimator, including selected local-polynomial degree and basis metadata. This removes an inconsistency where the newly degree-aware quantile-gradient path could use a higher-order conditional distribution fit while the quantile level was still extracted by the legacy degree-unaware inversion path; the repaired route is used by the MPI-aware session/attach/profile paths without cross-package fallback. * Repaired adaptive nearest-neighbor conditional density/distribution evaluation for local-polynomial fits so `npcdens()`, `npcdist()`, and downstream `npqreg()` quantiles, standard errors, gradients, and gradient standard errors honor the selected LP degree/basis metadata. The regression guard verifies that `regtype = "ll"` remains identical to `regtype = "lp", degree = 1` while higher-degree adaptive-NN LP fits are degree-sensitive, with `npRmpi` matching `np` numerically on the installed parity sentinel. * Restored/validated MPI fanout coverage for touched plot-bootstrap routes, including conditional adaptive exact helpers, conditional gradients, proper conditional projection, partially linear recomposition, and public single-index fixed-gradient bootstrap plots; paired baseline/candidate plot performance smokes showed no material slowdown in the exercised public routes. * Restored MPI fanout for fixed local-constant and fixed local-polynomial conditional density/distribution plot bootstraps in `npcdens()` and `npcdist()` objects. The repaired `plot(..., plot.errors.method = "bootstrap")` path now partitions `inid`, `fixed`, and `geom` bootstrap chunks across the active worker pool while preserving the existing bootstrap kernels, output ordering, and non-MPI local helper behavior; installed candidate traces now show worker dispatch where the previous route reported `comm_calls = 0`. * Extended that `npcdens()`/`npcdist()` plot-bootstrap fanout to the `proper = TRUE` projection pass, so the bounded-density and monotone-CDF repair matrices are partitioned across workers after the bootstrap generation step. Fixed-count projection sentinels are bit-identical to the local projection helpers, including the master-only/vector route. * Restored MPI fanout for conditional-gradient plot bootstraps by partitioning bootstrap replications across workers while preserving the existing local gradient helper for each chunk. Fixed-count sentinels are numerically identical to the local helper for conditional-gradient routes, and the same fanout wrapper is in place for the quantile-gradient helper where that route is exercised. * Restored MPI fanout for partially linear plot bootstraps in `npplreg()` objects. The per-replication residual recomposition and weighted coefficient solves are partitioned across the active worker pool, and the component bootstrap regressions now also use rank-0 master-assist chunks instead of leaving the master as a coordinator while workers perform the heavy regression bootstrap work; fixed-count parity sentinels match the local helper exactly. * Extended plot-bootstrap master-assist dispatch across the common bootstrap fanout helper and repaired smooth-coefficient local-polynomial bootstrap loops to use the same worker partitioning. Installed traces with three slaves now show active dispatch to every slave plus a rank-0 master chunk for regression, unconditional density/distribution, conditional density/distribution, partially linear, single-index, smooth-coefficient, and quantile-regression plot bootstraps when there are enough bootstrap chunks to keep all ranks busy. * Repaired additional nonfixed plot-bootstrap routes that could still execute master-side bootstrap loops: exact generalized-nearest-neighbor unconditional density/distribution, exact single-index bootstrap, and frozen nonfixed conditional density/distribution bootstrap helpers. Installed targeted traces with two slaves now show every repaired route dispatching to all workers plus a rank-0 master-assist chunk. * Repaired active single-worker plot-bootstrap dispatch so fixed-bandwidth bootstrap routes no longer collapse to master-local execution when an `npRmpi.init(nslaves = 1)` worker pool is present. This restores worker participation for fixed `npplreg()` plot bootstraps and preserves master-only behavior only for genuinely pool-free local execution. * Streamlined fixed local-constant `npplreg()` plot bootstraps by fusing the component-regression and partially linear recomposition stages inside each rank-owned bootstrap chunk. The repaired route generates only local resampling counts on each rank, constructs component hat matrices under local plot-helper semantics to avoid nested autodispatch in session/attach/profile modes, and now shows comparable timings across all three MPI launch modes while dispatching work to every initialized worker plus a rank-0 master chunk. * Streamlined fixed local-constant `npscoef()` plot bootstraps by routing the smooth-coefficient bootstrap through the reusable hat-matrix count resampling helper instead of the heavier moment-feature reconstruction path. Large bootstrap result bundles are now streamed back from worker ranks in task-sized pieces when their estimated serialized size is large, avoiding long-vector transport failures while preserving the existing static master-assist scheduler and numerical bootstrap semantics. * Restored pure-discrete/all-categorical `npregbw()` least-squares cross-validation for fixed bandwidths by allowing the optimized regression CV cache to represent legitimate zero-continuous bandwidth storage. This repairs a regression from legacy behavior where all-categorical regression bandwidth selection could fail with an invalid raw objective; installed session, attach, and profile sentinels now return the same bandwidths and objective as `np`, with adjacent mixed continuous/categorical routes checked for unchanged numerical output. * Reworked `npplregbw(..., nomad = TRUE)` so local-polynomial automatic degree search follows the natural partially linear decomposition: separate nuisance regressions for `E[y | z]` and each `E[x_j | z]`, each with its own selected degree and bandwidths, followed by the final partially linear solve. Fixed `regtype = "lp"` now also accepts child-indexed degree matrices/lists in the same order as the `plbandwidth` rows (`yzbw`, then the `x` children), while a vector remains the common-degree shorthand. The `npRmpi` implementation runs those child searches through the active MPI-aware `npregbw()` route rather than the older product-space scheduler. * Added `predict.plregression(..., se.fit = TRUE)` support using the partially linear fitted-value linear operator and training-fit residuals to return asymptotic prediction standard errors for training and evaluation data, with numerical parity to `np` on the shared fixed-bandwidth sentinel. * Reduced attach/session auto-dispatch payload overhead for formula calls that omit `data=` by routing large internally constructed model data through the existing prepublish broadcast path instead of embedding it inside every command payload; the small-data inline path and estimator semantics are unchanged. * Hardened attach/session auto-dispatch argument materialization so bandwidth-type and kernel-control arguments are evaluated on the master and carried explicitly to worker ranks. This repairs session routes where caller-local variables such as looped `bwtype` values could be left as unevaluated symbols in the worker payload. * Reduced attach/session auto-dispatch payload overhead for follow-on `npindex(bws=...)` and `npscoef(bws=...)` calls by reusing worker-resident `sibandwidth` and `scbandwidth` remote references when their stored calls are self-contained, avoiding an unnecessary rebroadcast of the bandwidth object. * Reworked `npplregbw()` local-polynomial degree-search orchestration so each component regression uses the full active MPI communicator in sequence, matching the serial `np` algorithmic decomposition while avoiding the earlier rank-team scheduler. Installed validation preserved objective values, selected degree, coefficients, fitted lengths, and evaluation counts across session, attach, and profile routes for LC, LL, explicit LP degree 1, and NOMAD+Powell sentinels; large, practically flat bandwidth directions may show harmless optimizer drift when the objective and fitted quantities agree. * Suppressed the spurious nested auto-dispatch warning that could appear during expected `npplreg` broadcast payloads in session and attach runs by making manual broadcast contexts explicitly disable recursive auto-dispatch while preserving the existing local MPI-aware component computations. * Hardened attach-mode teardown by registering a master-side process-exit finalizer that performs the normal worker close handshake when an attach script reaches process exit with an open worker pool; explicit `npRmpi.quit(mode = "attach")` remains the preferred close path, and the existing no-op and broadcast close protocols are unchanged. * Restored spawned-session MPI participation for fixed-bandwidth `npcdens` and `npcdist` fitting/evaluation by detecting the active worker pool on the session communicator instead of treating singleton world communicator state as a reason to force local execution; profile/manual-broadcast and attach numerical behavior is unchanged, while session `lc`, `ll`, and explicit `lp` degree-1 fixed-fit routes now reach the existing owner-block MPI implementation. * Began modernizing the demo timing harness for cross-version regression checks by adding exact/fractional demo sample-size helpers, machine-readable `DEMO_RESULT` transcript lines, a parser that reads both new and legacy demo layouts, explicit session/attach/profile result directories, and a four-route core pilot covering regression `npreglcls`/`npregllls` plus conditional density/distribution `npcdensls`, `npcdensml`, and `npcdistls` under serial, session, attach, and profile/manual-broadcast execution. * Replaced the split `npreg` demo scripts for local-constant/local-linear least-squares and AIC examples with a matrix-driven `npreg` family demo that covers `lc`, `ll`, explicit `lp` degree 1, AIC bandwidth selection, and NOMAD local-polynomial degree search across serial, session, attach, and profile/manual-broadcast routes. * Replaced the split `npcdensls`/`npcdensml` demo scripts with a matrix-driven `npcdens` family demo that preserves the least-squares and maximum-likelihood bandwidth routes while adding `ll`, explicit `lp` degree 1, and NOMAD local-polynomial degree-search smoke/sentinel rows across serial, session, attach, and profile/manual-broadcast routes. * Replaced the `npcdistls` demo scripts with a matrix-driven `npcdist` family demo that preserves the least-squares route while adding `ll`, explicit `lp` degree 1, and NOMAD local-polynomial degree-search smoke/sentinel rows across serial, session, attach, and profile/manual-broadcast routes. * Replaced the split Ichimura/Klein-Spady `npindex` demo scripts with a matrix-driven `npindex` family demo that preserves both model examples while adding `ll`, explicit `lp` degree 1, and NOMAD local-polynomial degree-search rows plus beta/bandwidth result sentinels across serial, session, attach, and profile/manual-broadcast routes. * Converted the `npscoef` smooth-coefficient demo to the matrix-driven harness, preserving the original data generator while adding `ll`, explicit `lp` degree 1, and NOMAD local-polynomial degree-search smoke/sentinel rows across serial, session, attach, and profile/manual-broadcast routes. * Converted the `npplreg` partially linear demo to the matrix-driven harness, preserving the original data generator while adding `ll`, explicit `lp` degree 1, and NOMAD local-polynomial degree-search smoke/sentinel rows plus flattened bandwidth/coefficient sentinels across serial, session, attach, and profile/manual-broadcast routes. * Replaced the split `npudensls`/`npudensml` demos with one matrix-driven `npudens` demo covering least-squares and likelihood cross-validation rows, now exercising both bandwidth selection and `npudens()` construction across serial, session, attach, and profile/manual-broadcast routes. * Replaced the `npudistcdf` demos with one matrix-driven `npudist` demo covering CDF cross-validation, now exercising both bandwidth selection and `npudist()` construction across serial, session, attach, and profile/manual-broadcast routes. * Converted the statistical test demos (`npdeneqtest`, `npdeptest`, `npsdeptest`, `npsigtest`, `npsymtest`, and `npunitest`) to a shared matrix-driven runner with smoke/sentinel sample sizes, bootstrap counts, and standardized result sentinels across serial, session, attach, and profile/manual-broadcast routes. * Converted auxiliary demos (`npcmstest`, `npconmode`, `npcopula`, `npqreg`, and `npregiv`) to a shared matrix-driven runner with deterministic simulated data, smoke/sentinel sizes, standardized result sentinels, and serial/session/attach/profile coverage. * Reorganized demo run/report tooling under `demo/tools`, retained top-level compatibility shims for familiar commands, and retired tracked LaTeX timing artifacts in favor of CSV/dat output plus optional Quarto `.qmd`/HTML summaries. * Routed the post-NOMAD Powell hot-start refinement in `npcdensbw()` through the same MPI-aware collective fixed-degree pattern used by adjacent conditional distribution routes, preserving objectives, degrees, and evaluation counts while reducing avoidable session/attach-mode refinement overhead. * Reused the lean MPI-aware regression objective for Ichimura `npindexbw()` local-linear/local-polynomial fixed-degree searches, including the post-NOMAD Powell cleanup, preserving selected objectives, bandwidths, coefficients, degrees, and evaluation counts while restoring scaling in session, attach, and profile/manual-broadcast launches. * Restored session-mode MPI participation for automatic `npindex(..., nomad=TRUE)` / `npindexbw(..., nomad=TRUE)` degree-search routes when multiple workers are active, so the bandwidth-search stage no longer runs master-only while preserving selected objectives, bandwidths, coefficients, degrees, evaluation counts, and fitted output in installed validation. * Improved profile/manual-broadcast `npplregbw(..., nomad=TRUE)` scaling for larger local-polynomial degree-search problems by routing child regression objectives through the MPI-aware fixed-regression evaluator when profile ranks otherwise outnumber child objectives, while leaving session/attach autodispatch on the existing child-split route. * Restored MPI-aware NOMAD objective evaluation for semiparametric `npscoefbw()` and `npindexbw()` profile/manual-broadcast routes by allowing their internal fixed-objective regression work to use active MPI ranks while preserving selected objectives, bandwidths, degrees, coefficients, and evaluation counts in paired validation runs. * Reblocked conditional density and conditional distribution local-polynomial `cv.ls` block products to use BLAS matrix multiplication in the fixed bandwidth block routes, reducing repeated long inner-product work while preserving MPI rank ownership, profile/manual-broadcast aggregation, and numerical agreement with `np` up to floating-point summation order. * Repaired explicit-grid `npcopula()` evaluation so large probability grids use the direct estimator route rather than an expanded-grid path with poor scaling. This preserves numerical results while avoiding severe runtime growth as the user increases the grid resolution. * Hardened bandwidth/front-end argument hygiene so estimator-only options such as `proper` are not forwarded into bandwidth selectors that do not accept them, preventing false-positive "unused argument" failures while preserving the intended estimator behavior. * Restored MPI-aware fixed-bandwidth `npcdens` and `npcdist` fitting, evaluation, and prediction in profile/manual-broadcast mode for conditional LC and LP routes, including standard errors, gradients, and gradient standard errors where requested; fitted/evaluation fields remain numerically identical to the prior implementation, with only harmless density log-likelihood summation-order differences. * Allowed `npscoef` internal moment sums to use the MPI-aware `npksum()` route instead of forcing local execution, preserving adaptive-nearest-neighbor localization while removing avoidable duplicate work in fit/eval/predict paths. * Collapsed the `npreg` `regtype="ll"` execution engine onto the canonical `regtype="lp", degree=1` local-polynomial path while preserving public `ll` metadata and fitted/evaluation output parity, aligning `npreg` with the other conditional estimator families. * Restored MPI-aware fixed-bandwidth `npreg` fitting and evaluation for the continuous `lc`, `ll`, and `lp` routes, including gradients and standard errors where defined, so the fit stage again distributes owner rows across active MPI ranks while preserving numerical agreement with `np`. * Opened the next development cycle after the 0.70-1 CRAN submission, with release-hardening follow-up tracked separately. Changes from Version 0.70-0 to 0.70-1 [29-Apr-2026] * Updated the package startup message to point first to the online gallery of MPI examples and guides, while retaining the compact installed `npRmpi_getting_started` vignette as the offline/package-side entry point. * Reorganized and expanded `.Rd` argument documentation across the package into user-oriented sections with clearer defaults and cross-references, mirroring the serial package where appropriate without changing the public API. * Added `.Rbuildignore` coverage for local agent/skill guidance files so release tarballs remain clean. * Mirrored the native bandwidth-selector alias-cleanup hardening from `np`, clearing stale estimator alias pointers after production C routes release borrowed state. * Made the extended `NP_CHECK_FULL=1` test lane fail honestly when `testthat` reports failures, then reconciled stale installed-check, progress-output, and scale-factor expectation tests so the full lane is green again. * Removed recently added extinct bounded-kernel convolution scaffolding for the bounded continuous kernel, preserving the live quadrature-based bounded `cv.ls` route and existing bounded-kernel functionality. * Standardized continuous bandwidth-search control naming around `scale.factor.*` arguments and documented how initialization bounds, deterministic starts, and the hard search lower bound work together. * Added local-polynomial instability guidance for conditional-density and conditional-distribution search failures, pointing users from canonical raw-basis `regtype="ll"` failures toward the numerically safer Bernstein-basis local-polynomial route. * Mirrored the `npqreg` canonical quantile-extraction cleanup from `np` by removing the legacy Powell/environment-selected extraction path, retaining the single one-dimensional conditional-CDF residual refinement route, and updating the `npqreg` help page and fit interface to expose only the live quantile-extraction controls. * Addressed the CRAN-reported MPI unload race by no longer explicitly calling `library.dynam.unload("npRmpi", ...)` from `.onUnload()` after MPI finalization. Validation covered repeated subprocess load/unload, tarball-first `R CMD check --no-manual --ignore-vignettes` with clean package and namespace unload checks, sliced attach-route validation, profile/manual-broadcast validation, and copied demo triplets for `npreglcls`, `npcdensml`, and `npcdensls`. * Reduced the default multistart cap from `min(5, p)` to `min(2, p)` across the mirrored core bandwidth selectors, with the univariate boundary density helper now defaulting to `nmulti=1`. * Aligned automatic LP degree-search NOMAD fallbacks with the same `min(2, p)` cap when `nmulti` is not supplied explicitly. * Added benchmark-study documentation under `benchmarks/validation` noting the source-of-truth empirical `nmulti` default decision from `np-master`. * Added a documented `nomad=TRUE` convenience preset across the LP-capable front ends, mirroring the serial package defaults and the estimator/bandwidth help-page guidance for the recommended LP/NOMAD route. * Reactivated the public conditional LP/LL cross-validation routes mirrored from `np` for the remediated families: - `npcdensbw(cv.ml)` fixed and generalized nearest-neighbor - `npcdensbw(cv.ls)` fixed and generalized nearest-neighbor - `npcdistbw(cv.ls)` fixed and generalized nearest-neighbor - adaptive nearest-neighbor remains explicit fail-fast containment for the remediated LP/LL families. Route validation for the generalized-NN mirrors passed in session/spawn, attach, and profile/manual-broadcast mode, with LP generalized-NN wrapper orchestration kept on the master to avoid unsafe full-wrapper autodispatch. * Mirrored the conditional density/distribution generalized nearest-neighbor LP CV `jksum.c` helper changes from `np`, keeping the canonical extracted LP X-side machinery aligned across repos and validating bounded generalized-NN wrapper behavior in both session and attach MPI modes. * Mirrored smooth-coefficient LL/LP core remediation from `np`, removing accidental `n x n` weight-matrix construction/full-matrix dependence from ordinary `npscoef` estimation/CV paths while preserving explicit hat/plot helper behavior. * Added `npscoefbw()` fast-summary accounting (`num.feval.fast`) without adding generic `npksum()` hot-path overhead. * Fixed attach/session autodispatch scoping in `npscoef` error-path handling (`object 'yW' not found`), restoring the large-`n` attach demo route. * Mirrored semiparametric LL/LP canonicalization from `np` for the recently generalized core families, including `npscoef*`, `npplreg*`, and `npindex*`. * Mirrored the `npreg` local-polynomial `cv.ls` repair by landing the canonical GLP objective kernel for the fixed-bandwidth non-tree route across supported GLP degrees, eliminating the degree-1 LL/LP discrepancy. * Expanded LL/LP degree-1 regression coverage for semiparametric families, including multivariate parity tests for `npscoef`, `npindex`, and `npplreg`. * Fixed `npplregbw()` to propagate kernel-defining options (continuous kernel, bandwidth type, bounds, and related controls) into child regression bandwidth objects during computed-bandwidth calls, restoring kernel-sensitive plot/helper behavior and metadata fidelity. * Completed canonical plot-remediation hardening for core S3 families with explicit fail-fast behavior: - no silent bootstrap-method remaps - no hidden fallback branches for unsupported plot/bootstrap configurations - explicit errors for unsupported argument/mode combinations. * Added broad plot contract coverage for regression/index/smooth-coefficient/ density/distribution families: - bootstrap argument contract gates - asymptotic-only contract gates - helper option-forwarding and semantics parity contracts - regression guards for `plot.errors.method` remap regressions. * Leaned plot bootstrap/mean paths by standardizing canonical helper usage and removing legacy fallback toggles in touched routes. * Enforced canonical helper-routing policy in MPI contexts: - no internal runtime `np::` or `np:::` bridges in package execution paths - no silent serial fallback when MPI execution is selected. * Removed superseded legacy/debug toggles and stale compatibility branches in plotting and CV routing paths, including: - residual fastpath-disable scaffolding in plot helpers, - stale `np.groupcv.fast` option footprint, - obsolete conditional-density fast-switch slot. * Enforced canonical LP behavior and removed silent behavior coercions: - removed transform-bounds auto-remap in regression bandwidth routing, - removed legacy CV aliasing and unsupported cv-iterate remaps, - removed Bernstein OOS alternate fallback routing while preserving canonical LP path behavior. * Restored and hardened CV path-lock behavior: - centralized CVLS route predicates in one helper path, - added path-lock tests preventing inline predicate drift/regressions, - hardened large-h gate coverage with route-safety contracts. * Standardized ridge ladders in helper-side optimization/solve paths to additive `1/n.train` sequences for touched helper families. * Fixed helper/core ridge-base mismatch in ill-posed helper parity: - `npreghat`/`semihat` now default to zero-ridge-first solve semantics (matching core behavior that attempts un-ridged solve first), - retained `ridge=1e-12` defaults for inid/plreg bootstrap helper internals where explicit parity/stability checks favored nonzero base ridge. * Added/updated reproducible issue-note harnesses for helper parity and closeout validation, including session/attach route checks and artifacts. * Added Windows toolchain hardening for LAPACK/BLAS linkage and documented win-builder release-check ingestion workflow updates. Changes from Version 0.60-20 to 0.70-0 [20-Feb-2026] * Completed migration to modular S3 plot methods coordinated with autodispatch-aware wrappers, while preserving legacy `plot*` internals for numerical/visual parity. * Added compatibility normalization for legacy S3 plot aliases prior to dispatch (`gradient` -> `gradients`, `persp` -> `perspective`) to avoid ambiguous argument matching during run-mode examples. * Hardened autodispatch/manual-mode interactions and mixed-mode guardrails: - synchronized options/preflight checks before distributed calls - stabilized automatic object/data broadcasting for high-level `np*` entry points - improved diagnostics for nested/unsupported mixed dispatch contexts. * Expanded run-mode documentation modernization: - converted core `np*` examples to the simplified `npRmpi.init()` + `options(npRmpi.autodispatch=TRUE)` style where supported - updated helper examples (`gradients`, `se`, etc.) to the same model - refreshed run/dontrun script workflow for check cycles. * Ported bounded continuous-kernel support from np master across npRmpi interfaces and C pathways with unified bound controls: - bound modes `none`, `range`, and `fixed` - per-variable lower/upper bounds (`*kerlb`, `*kerub`) - fixed-bandwidth enforcement for finite-bound operation. * Added the ordered kernel option `"racineliyan"` to ordered-kernel interfaces (`okertype`, `oxkertype`, `oykertype`) and synchronized conditional-density/distribution mappings. * Synchronized bounded-kernel normalization/convolution support in shared kernel-sum code used by conditional-density/distribution LS-CV pathways. * Fixed internal package registration targets for native setup calls in npRmpi R wrappers: - `.C("np_set_seed", ..., PACKAGE="npRmpi")` - `.C("np_set_tgauss2", ..., PACKAGE="npRmpi")` resolving R CMD check foreign-call NOTEs about cross-package targets. * Removed stale legacy conditional-density bwmethod aliasing so only canonical least-squares selector semantics remain. * Synchronized `plot()` bootstrap error-band enhancements/fixes from np master: - replaced fixed quantiles with scalar `plot.errors.alpha` and added bootstrap quantile band types `pointwise`, `bonferroni`, `simultaneous`, and `all` (alongside `standard`) - vendored/attributed rank-based simultaneous set computation (from `MCPAN::SCSrank`) for `plot.errors.type="simultaneous"` - added color-coded overlay + legend for `plot.errors.type="all"` (Pointwise/Simultaneous/Bonferroni) - fixed non-`all` bootstrap overlays not drawing in several paths due to default color handling - fixed mixed/factor plotting branches (including `npreg`) so all bootstrap error types (`standard`, `pointwise`, `bonferroni`, `simultaneous`, `all`) render consistently - fixed single-index (`npindex`) plotting edge cases in gradient mode: corrected sign-aware lower/upper bounds for negative index weights, fixed sorted alignment for `all` bands, fixed `plot.behavior="data"` return-shape errors, and fixed `ylim` handling for user limits and panel-specific error ranges. * Ported recent core-performance updates from np master (kernel/jksum optimizations) and synchronized behavior across serial/MPI variants. * Fixed MPI npksum copyback for padded evaluation partitions, eliminating a regression affecting repeated-session workflows (e.g. npcmstest). * Added robust session-management wrappers (npRmpi.init()/npRmpi.quit()) and slave-reuse controls to improve stability on macOS+MPICH. * Hardened .Rd example handling for CRAN checks (run/dontrun tooling and MPI example scoping), plus related documentation/check cleanups. * Guarded fallback kernel-table indexing in jksum.c to avoid GCC/Winbuilder array-bounds warnings. * Synchronized jksum.c with np master to inherit the latest kernel-evaluation shortcut enhancements: - option-driven continuous large-h K(0) shortcut logic - option-driven discrete near-upper-bound (lambda) shortcut logic applied across core continuous/unordered evaluator paths. * Added package-level defaults for: - options(np.largeh.rel.tol=1e-3) - options(np.disc.upper.rel.tol=1e-2) in .onLoad, including the NP_RMPI_SKIP_INIT initialization path. * Added new np.options.Rd man page and linked it from np-package and np.plot documentation to expose and document global option controls. * Synchronized C-level generalized local polynomial regression support from np master into npRmpi: - `regtype="lp"` in shared regression core - per-continuous-variable degree vectors (`degree`) - GLP derivative extraction/plotting control support. * Refactored/synchronized regression CV setup for `ll`/`glp` by hoisting invariant basis and workspace preparation out of hot objective loops, reducing redundant work in `cv.ls`/`cv.aic` evaluation. * Synchronized solve-based local-linear matrix workflows (LAPACK/BLAS-oriented backend) from np master, replacing inverse-heavy hot-path operations. * Expanded all-large (`h`/`lambda`) fast-path accounting/reporting across conditional estimators: - exposed `num.feval.fast` alongside `num.feval` in relevant summaries - synchronized all-large fast branches for conditional density/distribution CV pathways - reduced all-large branch overhead, including tree-list bypass where the all-large regime is already known. * Updated `plot()` error-type semantics/documentation in sync with master: - renamed bootstrap error type `standard` to `pmzsd` - `pmzsd` now uses plus/minus the `1-alpha/2` normal quantile (`qnorm(alpha/2, lower.tail=FALSE)` semantics). * Fixed remaining bootstrap `plot.errors.type="all"` rendering gaps across perspective/non-perspective branches for regression, conditional density, and conditional distribution plotting. * Tightened discrete upper-bound gate handling to strict relative-tolerance semantics for near-upper-bound lambda shortcuts. * Removed unused legacy sources and prototypes (RuniqueCombs, pgplot placeholder) and restored B-spline error handling in bspline.c. Changes from Version 0.60-19 to 0.60-20 [06-Feb-2026] * npRmpi-specific updates and improvements: - Wrapped examples in \dontrun{} and updated run/dontrun scripts for better MPI compatibility - Fixed 'break used in wrong context' byte-compilation error in Rparutilities.R - Corrected unnecessarily escaped LaTeX symbols (\_) and incorrectly formatted code tags ($count) in .Rd files - Synchronized np.plot categorical predictor evaluation fix from master branch (resolves npplreg plot with categorical predictor issue) - Updated DESCRIPTION and NAMESPACE to properly handle 'parallel' package imports and 'np' suggestion - Fixed CRLF line endings in configure.ac and incomplete final line in demo/00Index - Expanded .Rbuildignore to exclude .git and additional build/demo artifacts - Removed legacy makefile.openmpi - Modernized MPI detection in configure - Fixed Rmpi init registration conflict - Synchronized partial Rmpi 0.7-3.3 updates - Fixed npsigtest eval casting and added demo run/timing helpers - Added demo runall scripts for easier testing - Documented mpiexec port workaround - Added MPICH build/run notes for npRmpi - Allowed skipping MPI init via NP_RMPI_SKIP_INIT environment variable - Defined Realloc, Calloc, and Free macros for MPICH build - Included R memory macros in Rmpi.c - Fixed MPICH build flags for npRmpi - Updated man page package references to npRmpi - Resolved -Wfree-nonheap-object compiler warnings in nr.c by implementing a safe 0-based allocation strategy for 1-based indexing compatibility - Modernized documentation and vignettes: replaced 'Open MPI' with 'MPICH' references and updated benchmarks for Apple M2 Mac Studio - Synchronized man pages with np master - Restored npRmpi helpers and updated documentation - Aligned npRmpi docs and removed non-CRAN artifacts - Added legacy npRmpi docs and demo artifacts - Fixed np issues 4/6/7/13/18/26/51 and added np.pairs utilities - Removed superfluous library(Rmpi) calls - Fixed log cleanup warning and silenced mpi.close output - Switched donttest to dontrun in Rd examples for MPI awareness - Updated documentation examples to use MPI-aware code - Updated Rmpi base version (0.7-3.3) to reflect version in startup message - Updated np_faq vignettes with npRmpi-specific content * Incorporated all updates from np master package through version 0.60-19: - Added bandwidth details to npregiv summaries - Added estimation timing and ensured alphabetical argument order in np IV functions - Reordered npregivderiv arguments alphabetically after fixed ones - Updated unit tests and fixed documentation mismatches for npregiv/npregivderiv - Implemented S3 methods (print, summary, plot) for npregiv and npregivderiv - Updated documentation for npregiv/npregivderiv warm-start strategy - Aligned npregiv/npregivderiv multistart strategy with crsiv/crsivderiv - Fixed initialization of bw.mu.w in npregivderiv for warm-start strategy - Implemented warm-start strategy in npregiv and npregivderiv - Expanded unit test coverage to include distribution, copula, quantile regression, tests of independence/specification, and boundary/shape-constrained methods - Added unit tests using testthat and cleaned up phihat to phi in npregiv* - Optimized npregiv and npregivderiv for performance: pre-allocated matrices and lists in iterative loops to avoid redundant memory allocation (cbind/rbind); optimized trapezoidal integration in npregivderiv by pre-calculating sort orders and differences; improved efficiency of Tikhonov and Ridge calculations; alphabetized arguments in function signatures and updated documentation (Rd files) to match - Updated URLs to resolve CRAN check warnings - Updated McMaster website URL to https://experts.mcmaster.ca/people/racinej Changes from Version 0.60-18 to 0.60-19 [28-Jan-2026] * Added crs to Suggests field in DESCRIPTION per CRAN requirements * Utility functions integrate.trapezoidal(), NZD(), NZD_pos() (new, affect npregiv() and npregivderiv()) * Miscellaneous typos fixed Changes from Version 0.60-17 to 0.60-18 [09-Dec-2024] * Patched issue with as.double(data) when data is a NULL object reported by Brian Ripley * Merged rng pull request https://github.com/JeffreyRacine/R-Package-np/pull/48 * Incorporated Kurt Hornik's suggestion "If indeed intended as a package overview help file, please add \alias{np-package} to file 'np/man/np-package.Rd'." Changes from Version 0.60-16 to 0.60-17 [12-Mar-2023] * Fixed warning "Check: S3 generic/method consistency Result: WARN compute.bootstrap.errors: function(..., bws) compute.bootstrap.errors.*" triggered potentially by lack of "...,bw" in functions called (thanks to Kurt Hornik for assistance!) * Updated inst/CITATIONS to get rid of old-style cit and bib entries Changes from Version 0.60-15 to 0.60-16 [18-Oct-2022] * Fixed warning: a function definition without a prototype is deprecated in all versions of C and is not supported in C2x [-Wdeprecated-non-prototype] (thanks Zhenghua!) Changes from Version 0.60-14 to 0.60-15 [09-Oct-2022] * Explicit acknowledgment in DESCRIPTION of code gsl_bspline.c/.h adapted from the GNU GSL library with further details appended to gsl_bspline.c/.h (thanks to Professor Brian Ripley for noting this oversight). Changes from Version 0.60-13 to 0.60-14 [22-Aug-2022] * Added logspline and ks to DESCRIPTION to address NOTE on some system builds stating "Undeclared packages ‘logspline’, ‘ks’ in Rd xrefs" * Zhenghua Nie kindly addressed the clang-UBSAN issue in jksum.c causing `runtime error: applying non-zero offset 8 to null pointer` Changes from Version 0.60-12 to 0.60-13 [15-Aug-2022] * Minor changes to np.Rnw vignette viz Sweave options and class (redundancies commented out) * Fixed issues relating to new NOTE "Found if() conditions comparing class() to string [..] Use inherits() (or maybe is()) instead." Addressed by using by using isa() Changes from Version 0.60-11 to 0.60-12 [12-Aug-2022] * JSS issues corrected in vignette/*.bib and inst/CITATION (use of DOI, etc., thanks to Achim Zeileis) * Issues with utf8x in entropy_np.Rnw and np.Rnw corrected (utf8x -> utf8, etc.) Changes from Version 0.60-10 to 0.60-11 [04-Jun-2021] * npuniden.boundary() uses empirical support for a and b (previously was [0,1], now [min(X),max(X)]) * Corrected potential issue with malloc failing on null vector in C function sort_unique() detected by development version of gcc11 (thanks to Professor Brian Ripley for pointing this out and for his assistance) * Corrected outdated URLs Changes from Version 0.60-9 to 0.60-10 [5-Feb-2020] * Corrected issue `Documented arguments not in usage in documentation object se: ...' * Removal of directed quotes in some Rd documents, replacement with sQuote * Fixed issue causing rebuilding of vignettes to crash (uocquantile() was the culprit) Changes from Version 0.60-8 to 0.60-9 [24-Oct-2018] * Added support for character expansion to plot() (which is invoked by calling plot() on an np object) - will take defaults from the environment par() or can be set directly, e.g., plot(foo,cex.main=0.8) Changes from Version 0.60-7 to 0.60-8 [04-Jun-2018] * Used patch suggested by Scott Thompson for issue https://github.com/JeffreyRacine/R-Package-np/issues/8 regarding npcdens/npcdist and formulas Changes from Version 0.60-6 to 0.60-7 [01-May-2018] * Fix for switch() and zero length character strings that affected summary output for certain tests * Added function for shape constrained bounded univariate PDF and CDF estimation (npuniden.sc()) * Added option for renormalizing improper bounded density estimates than can arise from the use of asymmetric negative edge kernel functions (proper=TRUE, npuniden.boundary()) * Fixed issues with CDF estimation in the presence of large bandwidths for bounded density estimates (npuniden.boundary()) Changes from Version 0.60-5 to 0.60-6 [12-Jan-2018] * Added more edge kernel functions for npuniden.boundary(), some glitches addressed * Added asymptotic standard errors and integrated density (CDF) to npuniden.boundary() and npuniden.reflect() plus additional examples * Added least squares cross-validation to npuniden.boundary() (default for boundary kernel functions) Changes from Version 0.60-4 to 0.60-5 [04-Jan-2018] * Added two basic functions for univariate bounded kernel density estimation, npuniden.boundary and npuniden.reflect * More plotting routines accept more passable parameters Changes from Version 0.60-3 to 0.60-4 [03-Dec-2017] * Default plot.errors.style changed to "band" * Using wrapLines(strwrap(...)) for summary output for model specification test to automatically wrap long formula lines * plot() calls plot() and plot() behaves better when most passable parameters are fed (col =, lty =, xlab =, etc.) but there may still be room for improvement * Added option plot.par.mfrow=TRUE/FALSE to plot() so that the automated setting of par(mfrow=c(,)) in plot is disabled and the user can do this manually if desired * Option plot.par.mfrow=TRUE/FALSE can be overridden by setting options(plot.par.mfrow=TRUE/FALSE) Changes from Version 0.60-2 to 0.60-3 [29-Apr-2017] * Fixed the `cannot find function is()' glitch that just surfaced with R 3.4.0 * Fixed glitch in npconmode when randomizing if all probabilities are equal * Migrated some code from crs (which I wrote) to avoid crs::: * Fixed outstanding glitch in npscoef() with tydat being converted * Leave.one.out not properly implemented in npscoef, corrected * Using pmin/pmax in NZD (parallel min/max more efficient with vectors) * Improved screen i/o when smooth.residuals=TRUE/FALSE * Corrected glitch in npregiv() where multivariate z would halt with error * Npregiv with method="Landweber-Fridman" no longer passes back lists * Fixed glitch in Kmat.lp with p=0 and derivatives * Tikhonov regularization in npregiv now supports evaluation data * Updated npregiv (was sorely lacking, did not support eval etc.) * Use of .onLoad suggested (by Bernd Bischl) * Fixed glitch in npconmode * Added vignette("entropy_np",package="np") to startup message * In np.distribution.bw.R default for do.full.integral changed to FALSE * Fixed the CDF objective function when averaging over the training data * Fixed crash error with npcdistbw and adaptive bandwidths Changes from Version 0.60-1 to 0.60-2 [27-Jun-2014] * added timeseries support for all relevant objects (i.e. for a ts() vector data object x, npreg(x~lag(x,-1)+lag(x,-2)) is now supported) * added total time to summary for bandwidth objects * npqreg no longer accepts gradients=TRUE when gradients are in fact not supported * npqreg fails with an informative message when passed a conditional density bandwidth object Changes from Version 0.60-0 to 0.60-1 [6-Jun-2014] * Fixed glitch in adaptive_nn/generalized_nn bandwidths that affected all routines that rely on non-fixed bandwidths * Tweaks to search for adaptive_nn/generalized_nn initial search values * Fixed glitch in local linear estimation with adaptive_nn bandwidths Changes from Version 0.50-1 to 0.60-0 [1-Jun-2014] * Ordered kernel types now default to liracine/liracine (normalized) for conditional/unconditional objects, respectively (the previous default, i.e. the Wang van Ryzin kernel, is poorly behaved when smoothing out of ordered predictors is appropriate) * Rmpi backend updated to 0.6-5 * Added analytical ordered CDF kernels, resulting in significant speedups for cross validation with ordered variables * Added analytical ordered convolution kernels, resulting in significant speedups for least-squares cross validation with ordered variables * The entire C backend has been rewritten and improved in almost every regard * Glitch in adaptive convolution kernels corrected * Added truncated gaussian kernel (see ntpgauss for modifying the truncation radius) * Support for trees complete (use options(np.tree=TRUE)) which when used in conjunction with bounded kernels (i.e. "epanechnikov"/"truncated gaussian") can reduce the computational burden for certain problems * Optimizers that make use of Powell's direction set method now accept additional arguments that can be used to potentially improve default settings * Default search settings for optimizers that make use of Powell's direction set method should better scale to the range of variables * Added mean absolute deviation/1.4826 to mix of robust scale elements * Corrected error in order of conditional density/distribution manual bandwidths pointed out by Decet Romain * Figure in vignette not displaying properly, needed png=TRUE reported by Christophe Bontemps * Using chol2inv/chol rather than solve throughout R routines that rely on inversion * Fixed glitch in npindexbw() to stop maxit from blowing up every time convergence fails * Fixed issue with summary reporting incorrect value of objective function in certain bandwidth objects * When nmulti > 1, the full multi- starting search history is now returned in a vector named fval.history * Added na.action for consistency with other R functions such as lm() * New function npquantile() that returns smooth univariate quantiles * npksum explicitly only uses raw bandwidths now (and will emit an error if passed numeric scale factors, bandwidth objects are still OK) * Fixed regression in npindex() with bootstrapped standard errors * Code making use on one call to npksum() in npindex() and npscoef() where possible rather than two separate calls * Updated npsigtest() for addition of power and added joint test to the mix * Changed ceiling() to max(1,round()) in b.star per Dimitris Politis's suggestion * Reworked the interface for npcopula() to avoid two bandwidths and density=TRUE but exploiting passing of either npudistbw (copula) or npudensbw (copula density) * Changed default behaviour of generating log files to FALSE (mpi.spawn.Rslaves(...,needlog=FALSE)) * Increased sample sizes for demos to better assess how well algorithms scale with respect to the number of processors Changes from Version 0.40-13 to 0.50-1 [13-Mar-2013] * The functions npudist() and npudistbw() are now uncoupled from npudens() and npudensbw() (previously they relied on unconditional PDF bandwidths due to the lack of a multivariate mixed-data method for selecting bandwidths for CDFs - now with Li & Racine (2013) we have a robust method hence the split) * The use of cdf=TRUE is deprecated for npudens and npudensbw objects due to the uncoupling described above * Fixed glitch in gradient standard errors in npindex where identical standard errors were output in model$gerr * Fixed glitch in covariance matrix in npindex (ichimura) where covariance matrix was not symmetric * Fixed glitch in npksum() where use of bwtype="adaptive_nn" and operator="integral" produced the survivor function rather than the cumulative distribution function * Cleaned up internals for npcmstest() * Using .onLoad rather than .Last.lib in zzz.R * Fixed glitch in npreg summary where `Residual standard error' was reporting residual variance * Added reference to R2 measure (Doksum and Samarov (1995)) * Startup message points to the faq, faq is now a vignette * npksum() functionality extended - npksum() can now return the matrix of kernel weights (which can be useful for constrained estimation, by way of illustration, or constructing novel kernel-based procedures without the need to write extensive code) - npksum() can now accept different operators on a product kernel, for example, npksum(txdat=data.frame(x1,x2),operator=c("derivative","normal"),bws=c(1,1)) will use the derivative kernel for x1 (i.e. the derivative of the gaussian kernel) and the default kernel for x2 (i.e. a standard kernel such as the gaussian) thereby allowing the user to program a number of estimators such as conditional CDFs etc. that were previously not available via npksum() * Fixed glitch with variable scope where certain objects could not be found in the environment * Added function `npcopula()' for d-dimensional copula estimation via inversion * Modified stopping rules in npregiv and npregivderiv Changes from Version 0.40-12 to 0.40-13 [05-Mar-2012] * Added new function npregivderiv() that implements the IV derivative method of Florens and Racine (2012) * Added more passable parameters to npregiv() (multistarting, parameters passed to optim() for cross-validation) * Changes to code to improve compliance with R `Writing portable packages' guidelines and correct partial argument matches Changes from Version 0.40-11 to 0.40-12 [24-Nov-2011] * Added option (user request) to hold the bandwidth fixed but optimize the parameters in the single index model Changes from Version 0.40-10 to 0.40-11 [24-Oct-2011] * Corrected regression in single index errors Changes from Version 0.40-9 to 0.40-10 [24-Oct-2011] * Modified Silverman's adaptive measure of spread to reflect changes in sd() (sd on matrix deprecated) Changes from Version 0.40-8 to 0.40-9 [30-July-2011] * Renamed COPYING file to COPYRIGHTS Changes from Version 0.40-7 to 0.40-8 [29-July-2011] * Fixed issue where calling plot resets system seed * Updated examples in docs so that plot is recommended throughout (and not plot that is invoked by plot) * Fixed regression in npindex when gradients=TRUE and errors=TRUE * Function npindex/npindexbw now accepts additional arguments and implements this properly (i.e. proper implementation by Tristen of Version 0.30-8/0.30-9 change for npindex) * Function npplreg now supports factors in the parametric part just like lm() does * Minor modifications to Rmpi.c and Rmpi.h and Makevars.win (thanks to David Jacho-Chavez) for building under recent version of Windows (Windows 7). Changes from Version 0.40-6 to 0.40-7 [8-Jun-2011] * Function npregiv now supports exogenous X and multivariate Z and W. Changes from Version 0.40-5 to 0.40-6 [1-Jun-2011] * Added a new function npregiv that conducts nonparametric instrumental regression a la Darolles, Fan, Florens and Renault (2011, forthcoming, Econometrica) and Horowitz (2011, Econometrica). Note that this function currently returns the fitted phi(z) (i.e. lacks much functionality relative to other np functions) and is in `beta status' until further notice. * Added a new dataset `Engel95' that allows one to estimate Engel curves using the new nonparametric instrumental regression function npregiv. Changes from Version 0.40-4 to 0.40-5 [26-Apr-2011] * Fixed issue with npindexbw where, for certain problems, starting values needed refinement otherwise convergence would fail (we now use an improved normalization for the starting values) Changes from Version 0.40-3 to 0.40-4 [21-Jan-2011] * Fixed issue with ckertype and ckerorder not being propagated in np.singleindex.bw.R * Fixed issue with negative penalties being returned by cv.aic in npregbw (ought to have been +infinity) Changes from Version 0.40-1 to 0.40-3 [23-Jul-2010] * Added random seed (defaults to 42) to npscoefbw to ensure consistent values for optimization for successive invocations on the same data * Fixed glitch in multistarting in npscoefbw whereby multistarting was not working (always returned last computed function value and not the minimum) * Fixed issue for npRmpi where the C code underlying regression cross-validation (code in jksum.c) differs between np and npRmpi (both were correct with the latter being a tad slower, now both use unified code base) * Fixed a scope issue whereby a user would write a function that calls an np/npRmpi command, however, objects passed to the user's function and called by the np/npRmpi command (i.e. such as newdata) cannot be found in the environment yet they exist outside of the function * Fixed issue with bwscaling=TRUE and bwmethod="cv.aic" in npreg Changes from Version 0.40-0 to 0.40-1 [4-Jun-2010] * Added asymptotic standard errors to npindex for the Klein and Spady and Ichimura parameter estimates which, when gradients=TRUE, can be extracted via vcov(foo) where foo is a npsingleindex object (the Z-scores can be obtained via Z<-coef(foo)[-1]/sqrt(diag(vcov(foo)))[-1]) Changes from Version 0.30-9 to 0.40-0 [25-May-2010] * Modified codebase to enable dynamic spawning for interactive sessions in npRmpi * Interactive examples supported in npRmpi Changes from Version 0.30-8 to 0.30-9 [17-May-2010] * Fixed issue where ukertype and okertype were being ignored by npscoef * Fixed regression (dating to version 0.30-4) where random.seed=42 was not initialized in functions npcmstest, npdeneqtest, npindexbw, npsdeptest, npqcmstest, npsigtest, npsymtest, npunitest, and plot * Fixed issue with saving and restoring random seed in npdeptest * Changes to codebase to modify method used to prevent division by zero * New vignette for the npRmpi package (vignette("npRmpi",package="npRmpi")) Changes from Version 0.30-7 to 0.30-8 [20-Apr-2010] * Implemented moment version of metric entropy in npsymtest and npunitest with warnings about their use documented carefully and exceptions trapped and warnings issuing when detected * Cleaned up print/summary output formatting of some functions Changes from Version 0.30-6 to 0.30-7 [15-Feb-2010] * Added function npunitest for entropy-based testing of equality of univariate densities as described in Maasoumi and Racine (2002, 2009) * Updated vignette to reflect new functions (Table 1: np functions) Changes from Version 0.30-5 to 0.30-6 [3-Feb-2010] * Added function npsdeptest for entropy-based testing of nonlinear serial dependence described in Granger, Maasoumi and Racine (2004) * Added function npdeptest for entropy-based testing of nonlinear pairwise dependence described in Maasoumi and Racine (2002) * Added more bootstrap options to npsymtest (now both iid and time-series bootstrapping are supported) * Cleaned up summary formatting in the vignette by adding \usepackage[utf8x]{inputenc} to the Sweave file np.Rnw * Fixed issue with saving and restoring random seed when there was none in the environment Changes from Version 0.30-4 to 0.30-5 [29-Jan-2010] * Added function npdeneqtest for integrated squared difference testing of equality of densities as described in Maasoumi, Li, and Racine (2009), Journal of Econometrics * Save random seed prior to setting seed in certain functions, then restore seed after function completes Changes from Version 0.30-3 to 0.30-4 [27-Jan-2010] * Added function npsymtest for entropy-based testing of symmetry described in Maasoumi and Racine (2009), Econometric Reviews * Added function b.star that automates block length selection for the stationary and circular bootstrap * Cleaned up docs Changes from Version 0.30-2 to 0.30-3 [29-May-2009] * Corrected error in Epanechnikov convolution kernels for fixed and generalized bandwidth objects * Changed default example in npscoef Changes from Version 0.30-1 to 0.30-2 [19-Apr-2009] * min(std,IQR/1.348) is the adaptive measure of spread. We now test for the pathological case where IQR is zero but std > 0 and return std in this instance Changes from Version 0.30-0 to 0.30-1 [29-Jan-2009] * predict now supports bandwidth, density, distribution, conbandwidth, condensity, and condistribution objects * Consistently allow predictions for categorical values outside of support of training data Note that predictions based upon unconditional density objects defined over categorical variables that lie outside the support of the training data may no longer be true probabilities (i.e., as defined over the training data and the extended/augmented support -- their sum may exceed one) and may therefore require renormalization by the user * Fixed a numerical issue which could hinder npregbw()'s cross validation with higher-order kernels * Default nmulti in npplregbw() is now set correctly * Fixed a bug with the ridging routine in npscoefbw(), added ridging to npscoef * Fixed trivial i/o issue with "Multistart 1 of" using npscoefbw() Changes from Version 0.20-4 to 0.30-0 [15-Jan-2009] * Added basic user-interrupt checking for all underlying C code so that either (Rterm) or the `STOP' icon (Rgui) will interrupt all running processes. This has a number of desirable side effects in addition to being able to interrupt C-based processes including i) R no longer showing up as `not responding' under the task manager (Windows) or the activity monitor (Mac OS X) and ii) buffered output now being correctly displayed when using Rgui under Windows and Mac OS X Note that repeated interruption of large jobs can reduce available memory under R - if this becomes an issue (i.e., you get a `cannot allocate...' error under R) simply restart R (i.e., exit then run a fresh R session) * Added a function npseed() that allows the user to set/reset the random seed for all underlying C routines * Fixed a bug that caused npplregbw() to ignore any kernel options for the regression of y on z * Refined certain constants used in the normal-reference density bandwidth rule for increased accuracy * Moved from using the maximum likelihood estimate of variance throughout to the degrees of freedom corrected estimate (all variance estimates now change by the factor (n-1)/n) Changes from Version 0.20-3 to 0.20-4 [19-Nov-2008] * Using an adaptive measure of spread throughout. The scale factor reported for a bandwidth can appear to be small when the standard deviation is inflated due to the presence of outliers. Furthermore, supplying a scale factor of, say, 1.06 for density estimation when there are outliers that inflate the standard deviation may oversmooth rather dramatically in the presence of outliers. We now use the measure found in Silverman (1986, equation (3.30)) which is min(standard deviation, interquartile range/1.349). This robust choice produces expected results for scale factors in the presence of outliers Changes from Version 0.20-2 to 0.20-3 [14-Nov-2008] * Fixed a typo which caused predict() and plot() to abort when called on plregression objects, and which also prevented print() and summary() from printing information about the kernels used when called on plregression objects * Fixed a typo which caused partially linear regressions to crash when out-of-sample responses were provided with evaluation data Changes from Version 0.20-1 to 0.20-2 [02-Nov-2008] * Allow for evaluation outside of discrete support of factors in npksum() and fixed a warning in jksum * Fixed a bug which lead to unpredictable behavior when there were more categorical values for the training data than realisations Changes from Version 0.20-0 to 0.20-1 [13-Aug-2008] * Work-around for scale-factor issues during npregbw() cv when changing the training data Changes from Version 0.14-3 to 0.20-0 [28-Jul-2008] * npksum() now supports an expanded set of kernels (including convolution, derivative and integral), which can be selected via the 'operator' argument * Automatic bandwidth searches are now performed when attempting to evaluate on data without bandwidths. This allows users to combine bandwidth selection and estimation in one step * The npsigtest() interface is brought in line with other functions (S3) * Significance tests can now be performed on npreg() outputs, so npsigtest(modelname) is now supported * Added a vignette and faq. To see the vignette try vignette("np",package="np") * summary() on npconmode() now properly retrieves names from bandwidth objects * Fixed the 6th and 8th order epanechnikov kernels * Fixed some quietness issues * plot() now returns data upon request for conditional densities * npreg() and npcdens() now take the appropriate limits in some pathological cases * User supplied bandwidths now operate seamlessly with the formula interface Changes from Version 0.14-2 to 0.14-3 [02-May-2008] * Fixed a glitch that only arose when using the `liracine' unordered kernel in the presence of irrelevant variables. The upper bound for numerical search was constrained to be (c-1)/c [that for the aitchisonaitken unordered kernel] but ought to have been 1. The summary output would therefore show a value of lambda hitting the (smaller) upper bound (c-1)/1 when it may have hit the (larger) upper bound 1 Changes from Version 0.14-1 to 0.14-2 [11-Jan-2008] * Relaxed checking tolerances slightly to prevent spurious 'invalid bandwidth' errors * Empty sections were removed from help files * example(foobar) now works again. This was disabled in 0.14-1 at the request of the R maintainers in order to shorten the duration of R CMD check. All examples remained in the help files but due to the presence of `dontrun' they were not run when examples(foobar) is requested. Now a limited subset are run while the full set of examples remain in the documents Changes from Version 0.13-1 to 0.14-1 [18-Dec-2007] * Now use optim for minimisation in single index and smooth coefficient models * Fixed bug in klein-spady objective function * Standard errors are now available in the case of no continuous variables * Summary should look prettier, print additional information * Tidied up lingering issues with out-of-sample data and conditional modes * Fixed error when plotting asymptotic errors with conditional densities * Fixed a bug in plot() with partially linear regressions and plot.behavior='data' or 'plot-data' * Maximum default number of multistarts is 5 * Least-squares cross-validation of conditional densities uses a new, much faster algorithm * New, faster algorithm for least-squares cross-validation for both local-constant and local linear regressions Note that the estimator has changed somewhat: both cross-validation and the estimator itself use a method of shrinking towards the local constant estimator when singularity would otherwise lead to the breakdown of the estimator. This arises in sparse data settings in conjunction with small bandwidths for one or more regressor * Optimised smooth coefficient code, added ridging * Fixed bug in uniform CDF kernel * Fixed bug where npindexbw() would ignore bandwidth.compute = FALSE and compute bandwidths when supplied with a preexisting bw object * Now can handle estimation out of discrete support * Summary would misreport the values of discrete scale factors which were computed with bwscaling = TRUE Changes from Version 0.12-1 to 0.13-1 [03-May-2007] * Bandwidths are now checked for validity based on their variable and kernel types * np now does a better job of preserving names of some 'y' data * Names of coefficients returned from coef() now match variable names * Fixed some corner cases in npksum() involving the dimensionality of outputs * Fixed deprecation warnings in R 2.5.0 caused by use of $ on atomic objects * Various and sundry bug fixes in npscoef() * npscoef() now handles discrete 'z' data * Predict now accepts the argument 'se.fit', like predict.lm * Fixed bug where incorrect asymptotic standard errors of gradients for regression objects were being displayed in plot() * Fixed bug where errors of gradients of regression objects were not being returned in matrix form * vcov() now works with partially linear regression objects * Fixed detection of evaluation responses when using the formula interface * Pre-computed bandwidth objects are now provided for some of the more computationally burdensome examples * Added Jeffrey Wooldridge's WAGE1 dataset with qualitative variables (married, female, nonwhite) * Predictions outside of discrete support for regressions and conditional densities are now allowed * Fixed sign issue with scaling of standard errors in the single index model * Fixed error when calculating some bandwidths/scale factors for display purposes * Bug in passing certain arguments to npcdensbw() fixed * Added predict method for qregression objects * Proper normalisation for liracine kernel shown in summary * Fixed output bug ($\hat ~$H) in summary method for sigtest objects * Fixed regression with plotting of bootstrapped errors in perspective plots * npcdist() no longer incorrectly calls npcdens() * Fixed spacing between var name and p-value in significance test summaries Version 0.12-1 [19-Nov-2006] * Initial release of the np package on CRAN