linreg-core 0.5.0 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +518 -8
- package/linreg_core.d.ts +269 -0
- package/linreg_core.js +447 -0
- package/linreg_core_bg.wasm +0 -0
- package/package.json +2 -1
package/linreg_core.d.ts
CHANGED
|
@@ -95,6 +95,41 @@ export function breusch_pagan_test(y_json: string, x_vars_json: string): string;
|
|
|
95
95
|
*/
|
|
96
96
|
export function cooks_distance_test(y_json: string, x_vars_json: string): string;
|
|
97
97
|
|
|
98
|
+
/**
|
|
99
|
+
* Deserialize a serialized model, extracting the inner model data.
|
|
100
|
+
*
|
|
101
|
+
* This function takes a serialized model JSON (as created by serialize_model),
|
|
102
|
+
* validates the format version, and returns the inner model data as JSON.
|
|
103
|
+
*
|
|
104
|
+
* # Arguments
|
|
105
|
+
*
|
|
106
|
+
* * `json_string` - JSON string of the serialized model (with metadata wrapper)
|
|
107
|
+
*
|
|
108
|
+
* # Returns
|
|
109
|
+
*
|
|
110
|
+
* JSON string of the inner model data (coefficients, statistics, etc.),
|
|
111
|
+
* or a JSON error object if the input is invalid, the format version is
|
|
112
|
+
* incompatible, or the domain check fails.
|
|
113
|
+
*
|
|
114
|
+
* # Example
|
|
115
|
+
*
|
|
116
|
+
* ```javascript
|
|
117
|
+
* import { deserialize_model } from './linreg_core.js';
|
|
118
|
+
*
|
|
119
|
+
* // Load from file (browser-side)
|
|
120
|
+
* const response = await fetch('my_model.json');
|
|
121
|
+
* const serialized = await response.text();
|
|
122
|
+
*
|
|
123
|
+
* // Deserialize to get the model data
|
|
124
|
+
* const modelJson = deserialize_model(serialized);
|
|
125
|
+
* const model = JSON.parse(modelJson);
|
|
126
|
+
*
|
|
127
|
+
* console.log(model.coefficients);
|
|
128
|
+
* console.log(model.r_squared);
|
|
129
|
+
* ```
|
|
130
|
+
*/
|
|
131
|
+
export function deserialize_model(json_string: string): string;
|
|
132
|
+
|
|
98
133
|
/**
|
|
99
134
|
* Performs DFBETAS analysis via WASM.
|
|
100
135
|
*
|
|
@@ -188,6 +223,46 @@ export function durbin_watson_test(y_json: string, x_vars_json: string): string;
|
|
|
188
223
|
*/
|
|
189
224
|
export function elastic_net_regression(y_json: string, x_vars_json: string, _variable_names: string, lambda: number, alpha: number, standardize: boolean, max_iter: number, tol: number): string;
|
|
190
225
|
|
|
226
|
+
/**
|
|
227
|
+
* Extract metadata from a serialized model without deserializing the full model.
|
|
228
|
+
*
|
|
229
|
+
* This function returns only the metadata portion of a serialized model,
|
|
230
|
+
* which includes information like model type, library version, creation time,
|
|
231
|
+
* and optional model name.
|
|
232
|
+
*
|
|
233
|
+
* # Arguments
|
|
234
|
+
*
|
|
235
|
+
* * `json_string` - JSON string of the serialized model
|
|
236
|
+
*
|
|
237
|
+
* # Returns
|
|
238
|
+
*
|
|
239
|
+
* JSON string containing the metadata object with fields:
|
|
240
|
+
* - `format_version` - Format version (e.g., "1.0")
|
|
241
|
+
* - `library_version` - linreg-core version used to create the model
|
|
242
|
+
* - `model_type` - Type of model ("OLS", "Ridge", etc.)
|
|
243
|
+
* - `created_at` - ISO 8601 timestamp of creation
|
|
244
|
+
* - `name` - Optional custom model name
|
|
245
|
+
*
|
|
246
|
+
* Returns a JSON error object if the input is invalid or the domain check fails.
|
|
247
|
+
*
|
|
248
|
+
* # Example
|
|
249
|
+
*
|
|
250
|
+
* ```javascript
|
|
251
|
+
* import { get_model_metadata } from './linreg_core.js';
|
|
252
|
+
*
|
|
253
|
+
* const response = await fetch('my_model.json');
|
|
254
|
+
* const serialized = await response.text();
|
|
255
|
+
*
|
|
256
|
+
* const metadataJson = get_model_metadata(serialized);
|
|
257
|
+
* const metadata = JSON.parse(metadataJson);
|
|
258
|
+
*
|
|
259
|
+
* console.log('Model type:', metadata.model_type);
|
|
260
|
+
* console.log('Created:', metadata.created_at);
|
|
261
|
+
* console.log('Name:', metadata.name || '(unnamed)');
|
|
262
|
+
* ```
|
|
263
|
+
*/
|
|
264
|
+
export function get_model_metadata(json_string: string): string;
|
|
265
|
+
|
|
191
266
|
/**
|
|
192
267
|
* Computes the inverse of the standard normal CDF (probit function).
|
|
193
268
|
*
|
|
@@ -291,6 +366,110 @@ export function harvey_collier_test(y_json: string, x_vars_json: string): string
|
|
|
291
366
|
*/
|
|
292
367
|
export function jarque_bera_test(y_json: string, x_vars_json: string): string;
|
|
293
368
|
|
|
369
|
+
/**
|
|
370
|
+
* Performs K-Fold Cross Validation for Elastic Net regression via WASM.
|
|
371
|
+
*
|
|
372
|
+
* # Arguments
|
|
373
|
+
*
|
|
374
|
+
* * `y_json` - JSON array of response variable values
|
|
375
|
+
* * `x_vars_json` - JSON array of predictor arrays
|
|
376
|
+
* * `lambda` - Regularization strength (>= 0)
|
|
377
|
+
* * `alpha` - Mixing parameter (0 = Ridge, 1 = Lasso)
|
|
378
|
+
* * `standardize` - Whether to standardize predictors
|
|
379
|
+
* * `n_folds` - Number of folds (must be >= 2)
|
|
380
|
+
* * `shuffle_json` - JSON boolean: whether to shuffle data before splitting
|
|
381
|
+
* * `seed_json` - JSON string with seed number or "null" for no seed
|
|
382
|
+
*
|
|
383
|
+
* # Returns
|
|
384
|
+
*
|
|
385
|
+
* JSON string containing CV results (same structure as OLS).
|
|
386
|
+
*
|
|
387
|
+
* # Errors
|
|
388
|
+
*
|
|
389
|
+
* Returns a JSON error object if parsing fails, parameters are invalid,
|
|
390
|
+
* or domain check fails.
|
|
391
|
+
*/
|
|
392
|
+
export function kfold_cv_elastic_net(y_json: string, x_vars_json: string, lambda: number, alpha: number, standardize: boolean, n_folds: number, shuffle_json: string, seed_json: string): string;
|
|
393
|
+
|
|
394
|
+
/**
|
|
395
|
+
* Performs K-Fold Cross Validation for Lasso regression via WASM.
|
|
396
|
+
*
|
|
397
|
+
* # Arguments
|
|
398
|
+
*
|
|
399
|
+
* * `y_json` - JSON array of response variable values
|
|
400
|
+
* * `x_vars_json` - JSON array of predictor arrays
|
|
401
|
+
* * `lambda` - Regularization strength (>= 0)
|
|
402
|
+
* * `standardize` - Whether to standardize predictors
|
|
403
|
+
* * `n_folds` - Number of folds (must be >= 2)
|
|
404
|
+
* * `shuffle_json` - JSON boolean: whether to shuffle data before splitting
|
|
405
|
+
* * `seed_json` - JSON string with seed number or "null" for no seed
|
|
406
|
+
*
|
|
407
|
+
* # Returns
|
|
408
|
+
*
|
|
409
|
+
* JSON string containing CV results (same structure as OLS).
|
|
410
|
+
*
|
|
411
|
+
* # Errors
|
|
412
|
+
*
|
|
413
|
+
* Returns a JSON error object if parsing fails, parameters are invalid,
|
|
414
|
+
* or domain check fails.
|
|
415
|
+
*/
|
|
416
|
+
export function kfold_cv_lasso(y_json: string, x_vars_json: string, lambda: number, standardize: boolean, n_folds: number, shuffle_json: string, seed_json: string): string;
|
|
417
|
+
|
|
418
|
+
/**
|
|
419
|
+
* Performs K-Fold Cross Validation for OLS regression via WASM.
|
|
420
|
+
*
|
|
421
|
+
* # Arguments
|
|
422
|
+
*
|
|
423
|
+
* * `y_json` - JSON array of response variable values
|
|
424
|
+
* * `x_vars_json` - JSON array of predictor arrays
|
|
425
|
+
* * `variable_names_json` - JSON array of variable names
|
|
426
|
+
* * `n_folds` - Number of folds (must be >= 2)
|
|
427
|
+
* * `shuffle_json` - JSON boolean: whether to shuffle data before splitting
|
|
428
|
+
* * `seed_json` - JSON string with seed number or "null" for no seed
|
|
429
|
+
*
|
|
430
|
+
* # Returns
|
|
431
|
+
*
|
|
432
|
+
* JSON string containing CV results:
|
|
433
|
+
* - `n_folds` - Number of folds used
|
|
434
|
+
* - `n_samples` - Total number of observations
|
|
435
|
+
* - `mean_mse`, `std_mse` - Mean and std of MSE across folds
|
|
436
|
+
* - `mean_rmse`, `std_rmse` - Mean and std of RMSE across folds
|
|
437
|
+
* - `mean_mae`, `std_mae` - Mean and std of MAE across folds
|
|
438
|
+
* - `mean_r_squared`, `std_r_squared` - Mean and std of R² across folds
|
|
439
|
+
* - `fold_results` - Array of individual fold results
|
|
440
|
+
* - `fold_coefficients` - Array of coefficient arrays from each fold
|
|
441
|
+
*
|
|
442
|
+
* # Errors
|
|
443
|
+
*
|
|
444
|
+
* Returns a JSON error object if parsing fails, parameters are invalid,
|
|
445
|
+
* or domain check fails.
|
|
446
|
+
*/
|
|
447
|
+
export function kfold_cv_ols(y_json: string, x_vars_json: string, variable_names_json: string, n_folds: number, shuffle_json: string, seed_json: string): string;
|
|
448
|
+
|
|
449
|
+
/**
|
|
450
|
+
* Performs K-Fold Cross Validation for Ridge regression via WASM.
|
|
451
|
+
*
|
|
452
|
+
* # Arguments
|
|
453
|
+
*
|
|
454
|
+
* * `y_json` - JSON array of response variable values
|
|
455
|
+
* * `x_vars_json` - JSON array of predictor arrays
|
|
456
|
+
* * `lambda` - Regularization strength (>= 0)
|
|
457
|
+
* * `standardize` - Whether to standardize predictors
|
|
458
|
+
* * `n_folds` - Number of folds (must be >= 2)
|
|
459
|
+
* * `shuffle_json` - JSON boolean: whether to shuffle data before splitting
|
|
460
|
+
* * `seed_json` - JSON string with seed number or "null" for no seed
|
|
461
|
+
*
|
|
462
|
+
* # Returns
|
|
463
|
+
*
|
|
464
|
+
* JSON string containing CV results (same structure as OLS).
|
|
465
|
+
*
|
|
466
|
+
* # Errors
|
|
467
|
+
*
|
|
468
|
+
* Returns a JSON error object if parsing fails, parameters are invalid,
|
|
469
|
+
* or domain check fails.
|
|
470
|
+
*/
|
|
471
|
+
export function kfold_cv_ridge(y_json: string, x_vars_json: string, lambda: number, standardize: boolean, n_folds: number, shuffle_json: string, seed_json: string): string;
|
|
472
|
+
|
|
294
473
|
/**
|
|
295
474
|
* Performs Lasso regression via WASM.
|
|
296
475
|
*
|
|
@@ -592,6 +771,46 @@ export function reset_test(y_json: string, x_vars_json: string, powers_json: str
|
|
|
592
771
|
*/
|
|
593
772
|
export function ridge_regression(y_json: string, x_vars_json: string, _variable_names: string, lambda: number, standardize: boolean): string;
|
|
594
773
|
|
|
774
|
+
/**
|
|
775
|
+
* Serialize a model by wrapping its JSON data with metadata.
|
|
776
|
+
*
|
|
777
|
+
* This function takes a model's JSON representation (as returned by regression
|
|
778
|
+
* functions), wraps it with version and type metadata, and returns a serialized
|
|
779
|
+
* JSON string suitable for storage or download.
|
|
780
|
+
*
|
|
781
|
+
* # Arguments
|
|
782
|
+
*
|
|
783
|
+
* * `model_json` - JSON string of the model result (e.g., from ols_regression)
|
|
784
|
+
* * `model_type` - Type of model: "OLS", "Ridge", "Lasso", "ElasticNet", "WLS", or "LOESS"
|
|
785
|
+
* * `name` - Optional custom name for the model
|
|
786
|
+
*
|
|
787
|
+
* # Returns
|
|
788
|
+
*
|
|
789
|
+
* JSON string containing the serialized model with metadata, or a JSON error object
|
|
790
|
+
* if the input is invalid or the domain check fails.
|
|
791
|
+
*
|
|
792
|
+
* # Example
|
|
793
|
+
*
|
|
794
|
+
* ```javascript
|
|
795
|
+
* import { serialize_model, ols_regression } from './linreg_core.js';
|
|
796
|
+
*
|
|
797
|
+
* // Train a model
|
|
798
|
+
* const resultJson = ols_regression(yJson, xJson, namesJson);
|
|
799
|
+
*
|
|
800
|
+
* // Serialize it
|
|
801
|
+
* const serialized = serialize_model(resultJson, "OLS", "My Housing Model");
|
|
802
|
+
*
|
|
803
|
+
* // Download (browser-side)
|
|
804
|
+
* const blob = new Blob([serialized], { type: 'application/json' });
|
|
805
|
+
* const url = URL.createObjectURL(blob);
|
|
806
|
+
* const a = document.createElement('a');
|
|
807
|
+
* a.href = url;
|
|
808
|
+
* a.download = 'my_model.json';
|
|
809
|
+
* a.click();
|
|
810
|
+
* ```
|
|
811
|
+
*/
|
|
812
|
+
export function serialize_model(model_json: string, model_type: string, name?: string | null): string;
|
|
813
|
+
|
|
595
814
|
/**
|
|
596
815
|
* Performs the Shapiro-Wilk test for normality via WASM.
|
|
597
816
|
*
|
|
@@ -807,6 +1026,48 @@ export function vif_test(y_json: string, x_vars_json: string): string;
|
|
|
807
1026
|
*/
|
|
808
1027
|
export function white_test(y_json: string, x_vars_json: string, method: string): string;
|
|
809
1028
|
|
|
1029
|
+
/**
|
|
1030
|
+
* Performs Weighted Least Squares (WLS) regression via WASM.
|
|
1031
|
+
*
|
|
1032
|
+
* WLS regression allows each observation to have a different weight, which is
|
|
1033
|
+
* useful for handling heteroscedasticity or when observations have different
|
|
1034
|
+
* precision/variances.
|
|
1035
|
+
*
|
|
1036
|
+
* # Arguments
|
|
1037
|
+
*
|
|
1038
|
+
* * `y_json` - JSON array of response variable values
|
|
1039
|
+
* * `x_vars_json` - JSON array of predictor arrays
|
|
1040
|
+
* * `weights_json` - JSON array of observation weights (must be non-negative)
|
|
1041
|
+
*
|
|
1042
|
+
* # Returns
|
|
1043
|
+
*
|
|
1044
|
+
* JSON string containing:
|
|
1045
|
+
* - `coefficients` - Coefficient values (including intercept as first element)
|
|
1046
|
+
* - `standard_errors` - Standard errors of the coefficients
|
|
1047
|
+
* - `t_statistics` - t-statistics for coefficient significance tests
|
|
1048
|
+
* - `p_values` - Two-tailed p-values for coefficients
|
|
1049
|
+
* - `r_squared` - R-squared (coefficient of determination)
|
|
1050
|
+
* - `adj_r_squared` - Adjusted R-squared
|
|
1051
|
+
* - `f_statistic` - F-statistic for overall model significance
|
|
1052
|
+
* - `f_p_value` - p-value for F-statistic
|
|
1053
|
+
* - `residual_std_error` - Residual standard error (sigma-hat estimate)
|
|
1054
|
+
* - `df_residuals` - Degrees of freedom for residuals
|
|
1055
|
+
* - `df_model` - Degrees of freedom for the model
|
|
1056
|
+
* - `fitted_values` - Fitted values (predicted values)
|
|
1057
|
+
* - `residuals` - Residuals (y - ŷ)
|
|
1058
|
+
* - `mse` - Mean squared error
|
|
1059
|
+
* - `rmse` - Root mean squared error
|
|
1060
|
+
* - `mae` - Mean absolute error
|
|
1061
|
+
* - `n` - Number of observations
|
|
1062
|
+
* - `k` - Number of predictors (excluding intercept)
|
|
1063
|
+
*
|
|
1064
|
+
* # Errors
|
|
1065
|
+
*
|
|
1066
|
+
* Returns a JSON error object if parsing fails, parameters are invalid,
|
|
1067
|
+
* or domain check fails.
|
|
1068
|
+
*/
|
|
1069
|
+
export function wls_regression(y_json: string, x_vars_json: string, weights_json: string): string;
|
|
1070
|
+
|
|
810
1071
|
export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;
|
|
811
1072
|
|
|
812
1073
|
export interface InitOutput {
|
|
@@ -815,13 +1076,19 @@ export interface InitOutput {
|
|
|
815
1076
|
readonly breusch_godfrey_test: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
|
|
816
1077
|
readonly breusch_pagan_test: (a: number, b: number, c: number, d: number) => [number, number];
|
|
817
1078
|
readonly cooks_distance_test: (a: number, b: number, c: number, d: number) => [number, number];
|
|
1079
|
+
readonly deserialize_model: (a: number, b: number) => [number, number];
|
|
818
1080
|
readonly dfbetas_test: (a: number, b: number, c: number, d: number) => [number, number];
|
|
819
1081
|
readonly dffits_test: (a: number, b: number, c: number, d: number) => [number, number];
|
|
820
1082
|
readonly durbin_watson_test: (a: number, b: number, c: number, d: number) => [number, number];
|
|
821
1083
|
readonly elastic_net_regression: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number) => [number, number];
|
|
1084
|
+
readonly get_model_metadata: (a: number, b: number) => [number, number];
|
|
822
1085
|
readonly get_version: () => [number, number];
|
|
823
1086
|
readonly harvey_collier_test: (a: number, b: number, c: number, d: number) => [number, number];
|
|
824
1087
|
readonly jarque_bera_test: (a: number, b: number, c: number, d: number) => [number, number];
|
|
1088
|
+
readonly kfold_cv_elastic_net: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number) => [number, number];
|
|
1089
|
+
readonly kfold_cv_lasso: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number) => [number, number];
|
|
1090
|
+
readonly kfold_cv_ols: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number) => [number, number];
|
|
1091
|
+
readonly kfold_cv_ridge: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number) => [number, number];
|
|
825
1092
|
readonly lasso_regression: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => [number, number];
|
|
826
1093
|
readonly loess_fit: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => [number, number];
|
|
827
1094
|
readonly loess_predict: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number) => [number, number];
|
|
@@ -833,6 +1100,7 @@ export interface InitOutput {
|
|
|
833
1100
|
readonly rainbow_test: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
|
|
834
1101
|
readonly reset_test: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number];
|
|
835
1102
|
readonly ridge_regression: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number];
|
|
1103
|
+
readonly serialize_model: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
|
|
836
1104
|
readonly shapiro_wilk_test: (a: number, b: number, c: number, d: number) => [number, number];
|
|
837
1105
|
readonly stats_correlation: (a: number, b: number, c: number, d: number) => [number, number];
|
|
838
1106
|
readonly stats_mean: (a: number, b: number) => [number, number];
|
|
@@ -847,6 +1115,7 @@ export interface InitOutput {
|
|
|
847
1115
|
readonly test_t_critical: (a: number, b: number) => [number, number];
|
|
848
1116
|
readonly vif_test: (a: number, b: number, c: number, d: number) => [number, number];
|
|
849
1117
|
readonly white_test: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
|
|
1118
|
+
readonly wls_regression: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
|
|
850
1119
|
readonly get_t_cdf: (a: number, b: number) => number;
|
|
851
1120
|
readonly get_t_critical: (a: number, b: number) => number;
|
|
852
1121
|
readonly get_normal_inverse: (a: number) => number;
|