@mark1russell7/rigor-statistics 0.1.7 → 0.1.8
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 +27 -1
- package/build/index.d.ts +75 -3
- package/build/index.d.ts.map +1 -1
- package/build/index.js +194 -34
- package/build/index.js.map +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -73,6 +73,31 @@ The band of a curve is `value ± width × RMSE`, from the held-out error of the
|
|
|
73
73
|
|
|
74
74
|
The field `nearest` of each place tells how far the place is from a measurement. It goes from 0 to 1, and 0 means that a point was measured there. A viewer can fade the band away from the data. A table cell with the `fallback` value has `nearest` above 0.
|
|
75
75
|
|
|
76
|
+
### The error of one cell
|
|
77
|
+
|
|
78
|
+
Each fold keeps one error for each measure. To get the error of a chosen set of points, fit with the option `outOfFold`. Each fold then stores the prediction of each held-out point with a value, on the scale of the model. The default is off, and a record with no option has the same bytes as a record of an earlier version.
|
|
79
|
+
|
|
80
|
+
`heldOutErrorAt(record, "ms", ids)` gives the fields of `heldOutError` for these points. The baseline of a point is the mean of the training points of its fold. The set of all the points gives the pooled error of the folds, to the rounding of the sums. A test examines this at 24 seeds, with a relative tolerance of 1e-12.
|
|
81
|
+
|
|
82
|
+
### The reason that a measure is absent
|
|
83
|
+
|
|
84
|
+
A measure with `null` has no value. To tell why, declare the reasons in the field `reasons` of the data. Then map the measure to a reason in the field `absent` of the point:
|
|
85
|
+
|
|
86
|
+
```json
|
|
87
|
+
{
|
|
88
|
+
"reasons": [{ "id": "budget", "label": "Out of budget" }],
|
|
89
|
+
"points": [{ "id": "p7", "values": { "boxes": 10000 }, "measures": { "ms": null }, "absent": { "ms": "budget" } }]
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
`parseResponseRecord` refuses a reason on a measure with a number, and a reason with no declaration. A measure with `null` and no reason is good. `fitResponse` treats each of them as `null`, and it keeps the reasons in the record.
|
|
94
|
+
|
|
95
|
+
`sliceResponse` and `surfaceResponse` give these points in a list `absent`, beside the list `points`. Each item has `id`, `at`, `reason` and `group`. The value of `reason` is `null` when the point states no reason. Thus a chart can draw each reason apart.
|
|
96
|
+
|
|
97
|
+
### Many levels with few pairs
|
|
98
|
+
|
|
99
|
+
The default expansion has one product for each pair of levels of two dimensions. Two dimensions with 76 and 33 levels thus give 2508 products, and the limit `RESPONSE_MAX_TERMS` refuses them. With the option `interactions: "seen"`, a ridge fit keeps only the terms that are not 0 at one point or more. This choice looks only at the inputs of the points. A term with no point has the weight 0, so the choice does not change a prediction. The limit applies after the choice.
|
|
100
|
+
|
|
76
101
|
## The functions
|
|
77
102
|
|
|
78
103
|
| Function | What it gives |
|
|
@@ -98,7 +123,8 @@ The field `nearest` of each place tells how far the place is from a measurement.
|
|
|
98
123
|
| `fitResponse(data, options)` | A record of the format `response-records/1`, with one model for each measure and held-out folds. |
|
|
99
124
|
| `parseResponseRecord(value)` | The examination of unknown data. It gives the record, or one fault with a path for each error. |
|
|
100
125
|
| `predictResponse(model, inputs)`, `heldOutError(record, measure)` | The value of a model at one set of inputs, and the error of the folds of a measure. |
|
|
101
|
-
| `
|
|
126
|
+
| `heldOutErrorAt(record, measure, ids)` | The held-out error of a chosen set of points, from the predictions of the option `outOfFold`. |
|
|
127
|
+
| `sliceResponse(record, measure, options)`, `surfaceResponse(record, measure, options)` | A fitted curve over one dimension, or a fitted surface over two, with the matching measured points, the matching points with no value, a band and the distance to the nearest measurement. |
|
|
102
128
|
|
|
103
129
|
Each function throws a RangeError for an empty list, for a NaN and for a parameter out of its range. Thus a missing value cannot make a quiet NaN in a record.
|
|
104
130
|
|
package/build/index.d.ts
CHANGED
|
@@ -216,6 +216,13 @@ interface ResponseMeasure {
|
|
|
216
216
|
/** The better direction of the value. The value `none` means that no direction is better. */
|
|
217
217
|
readonly direction: "higher" | "lower" | "none";
|
|
218
218
|
}
|
|
219
|
+
/** A declared reason that a measure is absent, for example infeasible, unsupported or out of budget. */
|
|
220
|
+
interface ResponseReason {
|
|
221
|
+
/** The key of the reason in the field `absent` of a point. */
|
|
222
|
+
readonly id: string;
|
|
223
|
+
/** The name that a view shows. */
|
|
224
|
+
readonly label: string;
|
|
225
|
+
}
|
|
219
226
|
/** One measured point. */
|
|
220
227
|
interface ResponsePoint {
|
|
221
228
|
readonly id: string;
|
|
@@ -225,6 +232,8 @@ interface ResponsePoint {
|
|
|
225
232
|
readonly measures: Readonly<Record<string, number | null>>;
|
|
226
233
|
/** The points of one group stay on one side of each split, for example the repeats of one seed. */
|
|
227
234
|
readonly group?: string;
|
|
235
|
+
/** The reason of a measure with `null`: a map from the id of the measure to the id of a declared reason. */
|
|
236
|
+
readonly absent?: Readonly<Record<string, string>>;
|
|
228
237
|
}
|
|
229
238
|
/** One factor of a term: a power of a number dimension, or 1 at a level and 0 at each other level. */
|
|
230
239
|
type ResponseFactor = {
|
|
@@ -322,6 +331,11 @@ interface ResponseFold {
|
|
|
322
331
|
readonly heldOut: readonly string[];
|
|
323
332
|
/** The error of each measure. A measure with no held-out point or no training point has no entry. */
|
|
324
333
|
readonly errors: Readonly<Record<string, ResponseFoldError>>;
|
|
334
|
+
/**
|
|
335
|
+
* The prediction of each held-out point with a value, on the scale of the model. The keys are the id of the measure,
|
|
336
|
+
* then the id of the point. The model of this fold gave them. Only the option `outOfFold` of `fitResponse` writes this field.
|
|
337
|
+
*/
|
|
338
|
+
readonly predictions?: Readonly<Record<string, Readonly<Record<string, number>>>>;
|
|
325
339
|
}
|
|
326
340
|
/** The data of a record, before a fit. */
|
|
327
341
|
interface ResponseData {
|
|
@@ -329,6 +343,8 @@ interface ResponseData {
|
|
|
329
343
|
readonly name: string;
|
|
330
344
|
readonly dimensions: readonly ResponseDimension[];
|
|
331
345
|
readonly measures: readonly ResponseMeasure[];
|
|
346
|
+
/** The reasons that a measure of a point can be absent. Each id in the field `absent` of a point is in this list. */
|
|
347
|
+
readonly reasons?: readonly ResponseReason[];
|
|
332
348
|
readonly points: readonly ResponsePoint[];
|
|
333
349
|
}
|
|
334
350
|
/** A record: the data, one model for each measure, and the folds. */
|
|
@@ -404,6 +420,15 @@ interface ResponseSlicePoint {
|
|
|
404
420
|
readonly value: number;
|
|
405
421
|
readonly group?: string;
|
|
406
422
|
}
|
|
423
|
+
/** A point of a slice that matches the held values and has no value of the measure. */
|
|
424
|
+
interface ResponseAbsentPoint {
|
|
425
|
+
readonly id: string;
|
|
426
|
+
/** The value of the varied dimension. */
|
|
427
|
+
readonly at: ResponseValue;
|
|
428
|
+
/** The id of the declared reason. The value `null` means that the point states no reason. */
|
|
429
|
+
readonly reason: string | null;
|
|
430
|
+
readonly group?: string;
|
|
431
|
+
}
|
|
407
432
|
/** The fitted curve over one dimension, and the measured points that match the held values. */
|
|
408
433
|
interface ResponseSlice {
|
|
409
434
|
readonly measure: string;
|
|
@@ -412,6 +437,8 @@ interface ResponseSlice {
|
|
|
412
437
|
readonly held: Readonly<Record<string, ResponseInputValue>>;
|
|
413
438
|
readonly curve: readonly ResponseCurvePoint[];
|
|
414
439
|
readonly points: readonly ResponseSlicePoint[];
|
|
440
|
+
/** The points that match the held values and have no value of the measure, each with its reason. */
|
|
441
|
+
readonly absent: readonly ResponseAbsentPoint[];
|
|
415
442
|
readonly error: ResponseHeldOutError;
|
|
416
443
|
}
|
|
417
444
|
/** A measured point of a surface. */
|
|
@@ -422,6 +449,15 @@ interface ResponseSurfacePoint {
|
|
|
422
449
|
readonly value: number;
|
|
423
450
|
readonly group?: string;
|
|
424
451
|
}
|
|
452
|
+
/** A point of a surface that matches the held values and has no value of the measure. */
|
|
453
|
+
interface ResponseSurfaceAbsentPoint {
|
|
454
|
+
readonly id: string;
|
|
455
|
+
/** The values of the two varied dimensions. */
|
|
456
|
+
readonly at: readonly [ResponseValue, ResponseValue];
|
|
457
|
+
/** The id of the declared reason. The value `null` means that the point states no reason. */
|
|
458
|
+
readonly reason: string | null;
|
|
459
|
+
readonly group?: string;
|
|
460
|
+
}
|
|
425
461
|
/** The fitted surface over two dimensions, and the measured points that match the held values. */
|
|
426
462
|
interface ResponseSurface {
|
|
427
463
|
readonly measure: string;
|
|
@@ -433,6 +469,8 @@ interface ResponseSurface {
|
|
|
433
469
|
/** One row for each value of `y`. Each row has one cell for each value of `x`. */
|
|
434
470
|
readonly cells: readonly (readonly ResponseBand[])[];
|
|
435
471
|
readonly points: readonly ResponseSurfacePoint[];
|
|
472
|
+
/** The points that match the held values and have no value of the measure, each with its reason. */
|
|
473
|
+
readonly absent: readonly ResponseSurfaceAbsentPoint[];
|
|
436
474
|
readonly error: ResponseHeldOutError;
|
|
437
475
|
}
|
|
438
476
|
/**
|
|
@@ -451,10 +489,24 @@ export declare function predictResponse(model: ResponseModel, inputs: Readonly<R
|
|
|
451
489
|
* fold has a small effect. The function throws a RangeError when no fold has the measure.
|
|
452
490
|
*/
|
|
453
491
|
export declare function heldOutError(record: Pick<ResponseRecord, "folds">, measure: string): ResponseHeldOutError;
|
|
492
|
+
/**
|
|
493
|
+
* This function gives the held-out error of a chosen set of points, on the scale of the model. It uses the stored
|
|
494
|
+
* predictions of the option `outOfFold`. Thus a reader can get the error of one cell. The result has the fields of
|
|
495
|
+
* `heldOutError`, and the set of all the points gives the same values to the rounding of the sums.
|
|
496
|
+
*
|
|
497
|
+
* Each point counts at most once. A point with no value of the measure, or with no prediction, adds nothing to `n`.
|
|
498
|
+
* The baseline of a point is the mean of the training points of its fold.
|
|
499
|
+
*
|
|
500
|
+
* The function throws a RangeError for an unknown measure and for a record with no predictions of the measure. It
|
|
501
|
+
* also throws for an unknown id, for a repeated id, and for a set with no point to score.
|
|
502
|
+
*/
|
|
503
|
+
export declare function heldOutErrorAt(record: ResponseRecord, measure: string, ids: readonly string[]): ResponseHeldOutError;
|
|
454
504
|
/**
|
|
455
505
|
* This function gives a view of a measure over one dimension of a parsed record:
|
|
456
506
|
* - `curve`: the fitted value at each level, or at `steps` values of a continuous dimension, with its band.
|
|
457
507
|
* - `points`: the measured points that match the held values. This list is empty when no point matches them.
|
|
508
|
+
* - `absent`: the points that match the held values and have no value of the measure, each with its reason. A chart
|
|
509
|
+
* can draw each reason apart.
|
|
458
510
|
* - `held`: the value of each other dimension.
|
|
459
511
|
* - `error`: the held-out error.
|
|
460
512
|
*
|
|
@@ -515,6 +567,15 @@ type ParsedResponseRecord = {
|
|
|
515
567
|
* - All the points of a group are in one fold, or all are in no fold. Thus no group is on both sides of a split.
|
|
516
568
|
* - The count `n` of an error is the number of held-out points with a value of the measure.
|
|
517
569
|
* - Each measure has an error in one fold or more.
|
|
570
|
+
*
|
|
571
|
+
* These rules apply to the predictions of a fold:
|
|
572
|
+
* - Each prediction is a finite number of a held-out point of the fold with a value of the measure.
|
|
573
|
+
* - The fold has a prediction of each such point, and an error of the measure.
|
|
574
|
+
* - When one fold has predictions of a measure, each fold with an error of the measure has them.
|
|
575
|
+
*
|
|
576
|
+
* These rules apply to the reasons of a point:
|
|
577
|
+
* - Each reason is on a known measure with no number. A measure with `null` and no reason is good.
|
|
578
|
+
* - Each reason has a declaration in the field `reasons` of the record.
|
|
518
579
|
*/
|
|
519
580
|
export declare function parseResponseRecord(value: unknown): ParsedResponseRecord;
|
|
520
581
|
/** The options of `fitResponse`. */
|
|
@@ -531,8 +592,11 @@ interface ResponseFitOptions {
|
|
|
531
592
|
* When true, a ridge fit also has the products of two dimensions, up to `degree`. The default is true. The value
|
|
532
593
|
* false also removes the products of a conditional dimension with the levels of its parent. Thus this option is the
|
|
533
594
|
* way out of the limit `RESPONSE_MAX_TERMS`.
|
|
595
|
+
*
|
|
596
|
+
* The value `seen` is the expansion of true, with only the terms that are not 0 at one point or more. Thus a sparse
|
|
597
|
+
* product of two large sets of levels keeps only the pairs with points. The limit applies after this choice.
|
|
534
598
|
*/
|
|
535
|
-
readonly interactions?: boolean;
|
|
599
|
+
readonly interactions?: boolean | "seen";
|
|
536
600
|
/** The stated terms of a ridge fit, in place of `degree` and `interactions`. */
|
|
537
601
|
readonly terms?: readonly (readonly ResponseFactor[])[];
|
|
538
602
|
/** The penalties that a ridge fit chooses from, each above 0. The default is `RESPONSE_LAMBDAS`. */
|
|
@@ -541,6 +605,11 @@ interface ResponseFitOptions {
|
|
|
541
605
|
readonly log?: readonly string[];
|
|
542
606
|
/** On a log scale, each smaller value takes this value. With no floor, a value of 0 or less is an error. */
|
|
543
607
|
readonly logFloor?: number;
|
|
608
|
+
/**
|
|
609
|
+
* When true, each fold stores the prediction of each held-out point with a value. Then `heldOutErrorAt` gives the error of
|
|
610
|
+
* a chosen set of points. The default is false, and the record then has no field `predictions`.
|
|
611
|
+
*/
|
|
612
|
+
readonly outOfFold?: boolean;
|
|
544
613
|
}
|
|
545
614
|
/** The default penalties of a ridge fit. The coordinates are from -1 to 1, so one list suits each record. */
|
|
546
615
|
export declare const RESPONSE_LAMBDAS: readonly number[];
|
|
@@ -565,7 +634,10 @@ export declare const RESPONSE_MAX_TERMS = 1024;
|
|
|
565
634
|
* The penalty: each fold of a ridge fit chooses from `lambdas` with the other folds. Thus the held-out error of a
|
|
566
635
|
* fold is not optimistic. The model of the record chooses with all the folds.
|
|
567
636
|
*
|
|
568
|
-
* The errors: a fold scores the model of the other folds on its held-out points, on the scale of the model.
|
|
637
|
+
* The errors: a fold scores the model of the other folds on its held-out points, on the scale of the model. With the
|
|
638
|
+
* option `outOfFold`, the fold also stores the prediction of each of these points.
|
|
639
|
+
*
|
|
640
|
+
* The reasons: a measure with a stated reason is `null` for the fit. The field `reasons` of the data stays in the record.
|
|
569
641
|
*
|
|
570
642
|
* The result does not depend on the order of the points, except for the field `points`, which keeps the order of
|
|
571
643
|
* the data. The same data and options give the same bytes in one JavaScript engine.
|
|
@@ -796,5 +868,5 @@ interface CalibrationLevel {
|
|
|
796
868
|
}
|
|
797
869
|
/** The hit rate of each stated level, from the lowest level. */
|
|
798
870
|
export declare function calibration(forecasts: readonly Forecast[]): CalibrationLevel[];
|
|
799
|
-
export type { BootstrapOptions, CalibrationLevel, CategoricalDimension, CompareOptions, Comparison, ContinuousDimension, Corrected, CountInterval, Effect, Forecast, Interval, LeastSquaresFit, LeastSquaresOptions, MedianInterval, NoiseOptions, NoiseState, NoiseVerdict, OrdinalDimension, ParsedResponseRecord, PermutationOptions, PermutationResult, Proportion, QuantileMethod, ResponseBand, ResponseCurvePoint, ResponseData, ResponseDimension, ResponseDimensionBase, ResponseFactor, ResponseFault, ResponseFitOptions, ResponseFold, ResponseFoldError, ResponseHeldOutError, ResponseInputValue, ResponseMeasure, ResponseModel, ResponseModelBase, ResponsePoint, ResponseRecord, ResponseSlice, ResponseSliceOptions, ResponseSlicePoint, ResponseSurface, ResponseSurfaceOptions, ResponseSurfacePoint, ResponseTableCell, ResponseValue, ResponseViewOptions, ResponseWhen, RidgeInput, RidgeInputBase, RidgeLevelInput, RidgeNumberInput, RidgeOptions, RidgeRankInput, RidgeResponseModel, RidgeTerm, Summary, TableResponseModel };
|
|
871
|
+
export type { BootstrapOptions, CalibrationLevel, CategoricalDimension, CompareOptions, Comparison, ContinuousDimension, Corrected, CountInterval, Effect, Forecast, Interval, LeastSquaresFit, LeastSquaresOptions, MedianInterval, NoiseOptions, NoiseState, NoiseVerdict, OrdinalDimension, ParsedResponseRecord, PermutationOptions, PermutationResult, Proportion, QuantileMethod, ResponseAbsentPoint, ResponseBand, ResponseCurvePoint, ResponseData, ResponseDimension, ResponseDimensionBase, ResponseFactor, ResponseFault, ResponseFitOptions, ResponseFold, ResponseFoldError, ResponseHeldOutError, ResponseInputValue, ResponseMeasure, ResponseModel, ResponseModelBase, ResponsePoint, ResponseReason, ResponseRecord, ResponseSlice, ResponseSliceOptions, ResponseSlicePoint, ResponseSurface, ResponseSurfaceAbsentPoint, ResponseSurfaceOptions, ResponseSurfacePoint, ResponseTableCell, ResponseValue, ResponseViewOptions, ResponseWhen, RidgeInput, RidgeInputBase, RidgeLevelInput, RidgeNumberInput, RidgeOptions, RidgeRankInput, RidgeResponseModel, RidgeTerm, Summary, TableResponseModel };
|
|
800
872
|
//# sourceMappingURL=index.d.ts.map
|
package/build/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/describe.ts","../src/regression.ts","../src/bootstrap.ts","../src/ridge.ts","../src/response.ts","../src/response-parse.ts","../src/response-fit.ts","../src/tests.ts","../src/rank.ts","../src/discrete.ts","../src/compare.ts"],"mappings":";;;;;;KAOY;;wBAmBI,OAAO;wBAIP,KAAK;;;;;wBAgBL,GAAG;;;;;;;wBAgBH,eAAe,iCAAiC,WAAW,SAAQ;;wBAkBnE,SAAS,2BAA2B,WAAW,SAAQ;;;;;wBASvD,OAAO;;UAQN;WACN;WACA;;WAEA;WACA;;WAEA;WACA;;WAEA;WACA;;WAEA;;wBAGK,UAAU,4BAA4B;;;;;;UC3GrC;;WAEN;;UAGM;;WAEN;;WAEA;;;;;WAKA;;WAEA;;WAEA;;;;;;;;;;;wBAkBK,aAAa,mCAAmC,sBAAsB,UAAS,sBAA2B;UC/BzG;;WAEN;;WAEA;;WAEA;;WAEA,SAAS;;;;;;WAMT;;UAGM;;WAEN;WACA;WACA;WACA;WACA;;WAEA;;WAEA;;;;;;wBAOK,UAAU,GAAG,eAAe,KAAK,YAAY,iBAAiB,gBAAgB,UAAS,mBAAwB;;;;;;;;wBAsB/G,aAAa,GAAG,GAC9B,YAAY,KACZ,YAAY,KACZ,YAAY,YAAY,KAAK,YAAY,gBACzC,UAAS,mBACR;;;;;;wBAwBa,qBAAqB,8BAA8B,gCAAgC,UAAS,mBAAwB;;;;;;;wBAUpH,sBACd,mCACA,sBACA,UAAS,mBAAmB,sBAC3B;;wBAmFa,gBAAgB,2BAA2B,UAAS,mBAAwB;;;;;;wBAS5E,kBAAkB,GAChC,eAAe,KACf,UAAU,KAAK,cACf,YAAY,eAAe,gBAC3B,UAAS,mBACR;;;;;;;UCxMc;;WAEN;;;;;;;;;;;;wBAoBK,WAAW,MAAM,mBAAmB,QAAQ,mBAAmB,gBAAgB,UAAS;;qBCd3F;;KAGD;;KAGA,qBAAqB;;UAGhB;;WAEN;WACA,iBAAiB;;;UAIX;;WAEN;;WAEA;;WAEA;;WAEA,OAAO;;;UAID,4BAA4B;WAClC;;WAEA;;WAEA;;;UAIM,yBAAyB;WAC/B;WACA;;WAEA;;;UAIM,6BAA6B;WACnC;WACA;;;KAIC,oBAAoB,sBAAsB,mBAAmB;;UAGxD;;WAEN;WACA;;WAEA;;WAEA;;;UAIM;WACN;;WAEA,QAAQ,SAAS,eAAe;;WAEhC,UAAU,SAAS;;WAEnB;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/describe.ts","../src/regression.ts","../src/bootstrap.ts","../src/ridge.ts","../src/response.ts","../src/response-parse.ts","../src/response-fit.ts","../src/tests.ts","../src/rank.ts","../src/discrete.ts","../src/compare.ts"],"mappings":"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"}
|