fastLowess Node.js API Reference¶
The Node.js bindings provide a high-performance interface to the core Rust library, mirroring the Rust API structure.
Classes¶
Lowess¶
The Lowess class allows configuring the LOWESS parameters once and fitting multiple datasets using those parameters.
Constructor:
const { Lowess } = require('fastlowess');
const model = new Lowess({ fraction: 0.5, iterations: 3 });
options: An object containingLowessOptionsfields.
Methods:
const { Lowess } = require('fastlowess');
const n = 100;
const x = Float64Array.from({ length: n }, (_, i) => i * 2 * Math.PI / (n - 1));
const y = Float64Array.from(x, (xi, i) => Math.sin(xi) + (((i * 7 + 3) % 17) / 17 - 0.5) * 0.6);
const model = new Lowess({ fraction: 0.5 });
const result = model.fit(x, y);
- Fits the model to the provided
xandytyped arrays. - Returns a
LowessResultobject containing the smoothed values and optional diagnostics.
StreamingLowess¶
The StreamingLowess class processes data in chunks, suitable for very large datasets or streaming applications.
Constructor:
const { StreamingLowess } = require('fastlowess');
const stream = new StreamingLowess({ fraction: 0.3 }, { chunk_size: 50, overlap: 10 });
options: An object containingLowessOptionsfields.streamingOptions: An object containingStreamingOptionsfields.
Methods:
const { StreamingLowess } = require('fastlowess');
const n = 100;
const x = Float64Array.from({ length: n }, (_, i) => i * 2 * Math.PI / (n - 1));
const y = Float64Array.from(x, (xi, i) => Math.sin(xi) + (((i * 7 + 3) % 17) / 17 - 0.5) * 0.6);
const stream = new StreamingLowess({ fraction: 0.3 }, { chunk_size: 50, overlap: 10 });
const partialResult = stream.process_chunk(x.slice(0, 50), y.slice(0, 50));
- Processes a chunk of data. Returns partial results.
const { StreamingLowess } = require('fastlowess');
const n = 100;
const x = Float64Array.from({ length: n }, (_, i) => i * 2 * Math.PI / (n - 1));
const y = Float64Array.from(x, (xi, i) => Math.sin(xi) + (((i * 7 + 3) % 17) / 17 - 0.5) * 0.6);
const stream = new StreamingLowess({ fraction: 0.3 }, { chunk_size: 50, overlap: 10 });
stream.process_chunk(x, y);
const finalResult = stream.finalize();
- Finalizes the smoothing process and returns any remaining buffered results.
OnlineLowess¶
The OnlineLowess class updates the model incrementally with new data points.
Constructor:
const { OnlineLowess } = require('fastlowess');
const online = new OnlineLowess({ fraction: 0.3 }, { window_capacity: 50, min_points: 5 });
options: An object containingLowessOptionsfields.onlineOptions: An object containingOnlineOptionsfields.
Methods:
const { OnlineLowess } = require('fastlowess');
const online = new OnlineLowess({ fraction: 0.3 }, { window_capacity: 50, min_points: 5 });
const result = online.add_point(1.0, 2.0); // returns OnlineOutput | null
- Adds a single point to the sliding window and returns an
OnlineOutputonce enough points are available, ornullwhile the window is still filling.
Options Structures¶
LowessOptions¶
| Field | Type | Default | Description |
|---|---|---|---|
fraction |
number |
0.67 |
Smoothing fraction (bandwidth) |
iterations |
number |
3 |
Number of robustifying iterations |
delta |
number |
NaN |
Interpolation distance (NaN for auto) |
weight_function |
string |
"tricube" |
Weight function name |
robustness_method |
string |
"bisquare" |
Robustness method name |
scaling_method |
string |
"mad" |
Residual scaling method |
boundary_policy |
string |
"extend" |
Boundary handling policy |
zero_weight_fallback |
string |
"use_local_mean" |
Zero-weight handling |
auto_converge |
number |
null |
Auto-convergence tolerance |
confidence_intervals |
number |
null |
Confidence level (e.g., 0.95) |
prediction_intervals |
number |
null |
Prediction level (e.g., 0.95) |
return_diagnostics |
boolean |
false |
Include diagnostics in result |
return_residuals |
boolean |
false |
Include residuals in result |
return_robustness_weights |
boolean |
false |
Include weights in result |
return_se |
boolean |
false |
Return standard errors |
parallel |
boolean |
true |
Enable parallel execution |
cv_method |
string |
"kfold" |
CV method ("kfold" or "loocv") (Batch only) |
cv_k |
number |
5 |
Number of folds for k-fold CV (Batch only) |
cv_fractions |
number[] |
null |
Fractions to test for cross-validation (Batch only) |
cv_seed |
number |
null |
Random seed for cross-validation shuffling (Batch only) |
custom_weights |
Float64Array |
null |
Per-observation case weights — passed to fit(), not the options object (Batch only) |
StreamingOptions (inherits LowessOptions)¶
| Field | Type | Default | Description |
|---|---|---|---|
chunk_size |
number |
5000 |
Data chunk size |
overlap |
number |
500 |
Overlap between chunks |
merge_strategy |
string |
"weighted_average" |
Strategy for blending overlap regions |
OnlineOptions (inherits LowessOptions)¶
| Field | Type | Default | Description |
|---|---|---|---|
window_capacity |
number |
1000 |
Max points in sliding window |
min_points |
number |
3 |
Min points before smoothing starts |
update_mode |
string |
"full" |
Update mode ("full" or "incremental") |
parallel |
boolean |
false |
Enable parallel execution (off by default; online LOWESS fits one point at a time) |
Result Structure¶
OnlineOutput¶
Returned by add_point() once the window has enough points (null until then).
| Field | Type | Description |
|---|---|---|
smoothed |
number |
Smoothed value for the latest point |
std_error |
number \| null |
Standard error (if requested) |
residual |
number \| null |
Residual y − smoothed (if requested) |
robustness_weight |
number \| null |
Robustness weight (if requested) |
iterations_used |
number \| null |
Robustness iterations performed |
LowessResult¶
| Field | Type | Description |
|---|---|---|
x |
Float64Array |
Sorted x values |
y |
Float64Array |
Smoothed y values |
fraction_used |
number |
Fraction used (set or selected by CV) |
iterations_used |
number \| null |
Robustness iterations actually performed |
standard_errors |
Float64Array \| null |
Per-point standard errors |
confidence_lower |
Float64Array \| null |
Lower confidence bounds |
confidence_upper |
Float64Array \| null |
Upper confidence bounds |
prediction_lower |
Float64Array \| null |
Lower prediction bounds |
prediction_upper |
Float64Array \| null |
Upper prediction bounds |
residuals |
Float64Array \| null |
Residuals (if return_residuals) |
robustness_weights |
Float64Array \| null |
Robustness weights (if return_robustness_weights) |
cv_scores |
Float64Array \| null |
CV score per tested fraction |
diagnostics |
Diagnostics \| null |
Fit metrics (if return_diagnostics) |
Diagnostics¶
| Field | Type | Description |
|---|---|---|
rmse |
number |
Root Mean Squared Error |
mae |
number |
Mean Absolute Error |
r_squared |
number |
R-squared |
residual_sd |
number |
Residual standard deviation |
effective_df |
number | null |
Effective degrees of freedom |
aic |
number | null |
AIC |
aicc |
number | null |
AICc |
Options¶
weight_function¶
"tricube"(default)"epanechnikov""gaussian""uniform"(alias:"boxcar")"biweight"(alias:"bisquare")"triangle"(alias:"triangular")"cosine"
robustness_method¶
"bisquare"(default; alias:"biweight")"huber""talwar"
boundary_policy¶
"extend"(default; alias:"pad")"reflect"(alias:"mirror")"zero""noboundary"(alias:"none")
scaling_method¶
"mad"(default; alias:"median_absolute_deviation")"mar"(alias:"median_absolute_residual")"mean"(alias:"mean_absolute_residual")
zero_weight_fallback¶
"use_local_mean"(default; aliases:"local_mean","mean")"return_original"(alias:"original")"return_none"(alias:"none")
merge_strategy¶
"weighted_average"(default; alias:"weighted")"average"(alias:"mean")"take_first"(alias:"first")"take_last"(alias:"last")
update_mode¶
"full"(default; alias:"resmooth")"incremental"(alias:"single")