@winm2m/inferential-stats-js 0.1.0

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.
@@ -0,0 +1,90 @@
1
+ import type { AnalysisResult } from './types/common';
2
+ import type { FrequenciesInput, FrequenciesOutput, DescriptivesInput, DescriptivesOutput, CrosstabsInput, CrosstabsOutput } from './types/descriptive';
3
+ import type { TTestIndependentInput, TTestIndependentOutput, TTestPairedInput, TTestPairedOutput, AnovaInput, AnovaOutput, PostHocInput, PostHocOutput } from './types/compare-means';
4
+ import type { LinearRegressionInput, LinearRegressionOutput, LogisticBinaryInput, LogisticBinaryOutput, MultinomialLogisticInput, MultinomialLogisticOutput } from './types/regression';
5
+ import type { KMeansInput, KMeansOutput, HierarchicalClusterInput, HierarchicalClusterOutput } from './types/classify';
6
+ import type { EFAInput, EFAOutput, PCAInput, PCAOutput, MDSInput, MDSOutput } from './types/dimension';
7
+ import type { CronbachAlphaInput, CronbachAlphaOutput } from './types/scale';
8
+ /** Configuration for InferentialStats SDK */
9
+ export interface InferentialStatsConfig {
10
+ /** URL to the worker script file. If not provided, uses the default bundled worker. */
11
+ workerUrl?: string;
12
+ /** URL to the Pyodide CDN. Defaults to jsdelivr CDN. */
13
+ pyodideUrl?: string;
14
+ /** EventTarget for dispatching progress events. Defaults to globalThis (window). */
15
+ eventTarget?: EventTarget;
16
+ }
17
+ /** Custom event name for progress updates */
18
+ export declare const PROGRESS_EVENT_NAME = "inferential-stats-progress";
19
+ /**
20
+ * InferentialStats - Main SDK class for browser-based statistical analysis.
21
+ *
22
+ * Uses Pyodide (WebAssembly) running in a Web Worker to perform
23
+ * SPSS-level statistical computations entirely client-side.
24
+ *
25
+ * Data is transferred to the worker using ArrayBuffer (Transferable Objects)
26
+ * for maximum efficiency with large datasets.
27
+ */
28
+ export declare class InferentialStats {
29
+ private worker;
30
+ private pendingRequests;
31
+ private requestCounter;
32
+ private config;
33
+ private initialized;
34
+ private initPromise;
35
+ constructor(config?: InferentialStatsConfig);
36
+ /**
37
+ * Initialize the SDK - loads Pyodide and all required Python packages.
38
+ * Must be called before any analysis methods.
39
+ * Dispatches 'inferential-stats-progress' CustomEvents during loading.
40
+ */
41
+ init(): Promise<void>;
42
+ private _doInit;
43
+ /** Handle messages from the worker */
44
+ private _handleWorkerMessage;
45
+ /** Dispatch a progress CustomEvent */
46
+ private _dispatchProgress;
47
+ /**
48
+ * Send a request to the worker and return a promise for the result.
49
+ * Optionally serializes data to ArrayBuffer for efficient transfer.
50
+ */
51
+ private _sendRequest;
52
+ /** Helper to wrap analysis calls with timing */
53
+ private _runAnalysis;
54
+ /** Frequency analysis for categorical variables */
55
+ frequencies(input: FrequenciesInput): Promise<AnalysisResult<FrequenciesOutput>>;
56
+ /** Descriptive statistics for continuous variables */
57
+ descriptives(input: DescriptivesInput): Promise<AnalysisResult<DescriptivesOutput>>;
58
+ /** Cross-tabulation with Chi-square test */
59
+ crosstabs(input: CrosstabsInput): Promise<AnalysisResult<CrosstabsOutput>>;
60
+ /** Independent-samples T-test with Levene's test */
61
+ ttestIndependent(input: TTestIndependentInput): Promise<AnalysisResult<TTestIndependentOutput>>;
62
+ /** Paired-samples T-test */
63
+ ttestPaired(input: TTestPairedInput): Promise<AnalysisResult<TTestPairedOutput>>;
64
+ /** One-Way ANOVA */
65
+ anovaOneway(input: AnovaInput): Promise<AnalysisResult<AnovaOutput>>;
66
+ /** Post-hoc Tukey HSD test */
67
+ posthocTukey(input: PostHocInput): Promise<AnalysisResult<PostHocOutput>>;
68
+ /** Linear regression (OLS) */
69
+ linearRegression(input: LinearRegressionInput): Promise<AnalysisResult<LinearRegressionOutput>>;
70
+ /** Binary logistic regression */
71
+ logisticBinary(input: LogisticBinaryInput): Promise<AnalysisResult<LogisticBinaryOutput>>;
72
+ /** Multinomial logistic regression */
73
+ logisticMultinomial(input: MultinomialLogisticInput): Promise<AnalysisResult<MultinomialLogisticOutput>>;
74
+ /** K-Means clustering */
75
+ kmeans(input: KMeansInput): Promise<AnalysisResult<KMeansOutput>>;
76
+ /** Hierarchical (agglomerative) clustering */
77
+ hierarchicalCluster(input: HierarchicalClusterInput): Promise<AnalysisResult<HierarchicalClusterOutput>>;
78
+ /** Exploratory Factor Analysis (EFA) with varimax rotation */
79
+ efa(input: EFAInput): Promise<AnalysisResult<EFAOutput>>;
80
+ /** Principal Component Analysis (PCA) */
81
+ pca(input: PCAInput): Promise<AnalysisResult<PCAOutput>>;
82
+ /** Multidimensional Scaling (MDS) */
83
+ mds(input: MDSInput): Promise<AnalysisResult<MDSOutput>>;
84
+ /** Reliability analysis (Cronbach's Alpha) */
85
+ cronbachAlpha(input: CronbachAlphaInput): Promise<AnalysisResult<CronbachAlphaOutput>>;
86
+ /** Check if the SDK is initialized */
87
+ isInitialized(): boolean;
88
+ /** Terminate the worker and clean up resources */
89
+ destroy(): void;
90
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Deserialize an ArrayBuffer (created by serializeToBuffer) back to JSON objects.
3
+ */
4
+ export declare function deserializeFromBuffer(buffer: ArrayBuffer): Record<string, unknown>[];
5
+ /**
6
+ * Deserialize buffer and convert to column-oriented format.
7
+ * More efficient for statistical computations.
8
+ */
9
+ export declare function deserializeToColumns(buffer: ArrayBuffer): {
10
+ rowCount: number;
11
+ columns: Record<string, {
12
+ dtype: string;
13
+ values: (string | number)[];
14
+ }>;
15
+ };
@@ -0,0 +1,2 @@
1
+ export { serializeToBuffer, getTransferables } from './serializer';
2
+ export { deserializeFromBuffer, deserializeToColumns } from './deserializer';
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Serialize an array of JSON objects into an ArrayBuffer for efficient Worker transfer.
3
+ * Uses columnar storage with dictionary encoding for strings.
4
+ *
5
+ * Format:
6
+ * [4 bytes: header length][header JSON bytes][column data bytes...]
7
+ *
8
+ * Column data layout per column:
9
+ * - float64/int32: raw typed array bytes
10
+ * - string: Int32Array of indices into stringTable in header
11
+ */
12
+ export declare function serializeToBuffer(data: Record<string, unknown>[]): ArrayBuffer;
13
+ /**
14
+ * Get a list of transferable ArrayBuffers from the serialized buffer.
15
+ * Useful for postMessage with Transferable Objects.
16
+ */
17
+ export declare function getTransferables(buffer: ArrayBuffer): ArrayBuffer[];
package/dist/index.cjs ADDED
@@ -0,0 +1,453 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * Encode a UTF-8 string to Uint8Array
5
+ */
6
+ function encodeString(str) {
7
+ return new TextEncoder().encode(str);
8
+ }
9
+ /**
10
+ * Infer column type from values
11
+ */
12
+ function inferColumnType(values) {
13
+ for (const v of values) {
14
+ if (v === null || v === undefined)
15
+ continue;
16
+ if (typeof v === 'string')
17
+ return 'string';
18
+ if (typeof v === 'number') {
19
+ if (Number.isInteger(v))
20
+ continue;
21
+ return 'float64';
22
+ }
23
+ }
24
+ // Default numeric columns to float64 for compatibility
25
+ return 'float64';
26
+ }
27
+ /**
28
+ * Serialize an array of JSON objects into an ArrayBuffer for efficient Worker transfer.
29
+ * Uses columnar storage with dictionary encoding for strings.
30
+ *
31
+ * Format:
32
+ * [4 bytes: header length][header JSON bytes][column data bytes...]
33
+ *
34
+ * Column data layout per column:
35
+ * - float64/int32: raw typed array bytes
36
+ * - string: Int32Array of indices into stringTable in header
37
+ */
38
+ function serializeToBuffer(data) {
39
+ if (!data || data.length === 0) {
40
+ // Return minimal buffer for empty data
41
+ const header = { rowCount: 0, columns: [] };
42
+ const headerBytes = encodeString(JSON.stringify(header));
43
+ const buffer = new ArrayBuffer(4 + headerBytes.byteLength);
44
+ const view = new DataView(buffer);
45
+ view.setUint32(0, headerBytes.byteLength, true);
46
+ new Uint8Array(buffer, 4).set(headerBytes);
47
+ return buffer;
48
+ }
49
+ const rowCount = data.length;
50
+ const columnNames = Object.keys(data[0]);
51
+ const columns = [];
52
+ const columnBuffers = [];
53
+ for (const name of columnNames) {
54
+ const values = data.map(row => row[name]);
55
+ const dtype = inferColumnType(values);
56
+ if (dtype === 'string') {
57
+ // Dictionary encoding
58
+ const uniqueValues = [...new Set(values.map(v => String(v ?? '')))];
59
+ const lookupMap = new Map();
60
+ uniqueValues.forEach((v, i) => lookupMap.set(v, i));
61
+ const indices = new Int32Array(rowCount);
62
+ for (let i = 0; i < rowCount; i++) {
63
+ indices[i] = lookupMap.get(String(values[i] ?? '')) ?? 0;
64
+ }
65
+ columns.push({ name, dtype: 'string', stringTable: uniqueValues });
66
+ columnBuffers.push(indices.buffer.slice(0));
67
+ }
68
+ else {
69
+ // Numeric column
70
+ const arr = new Float64Array(rowCount);
71
+ for (let i = 0; i < rowCount; i++) {
72
+ const v = values[i];
73
+ arr[i] = (v === null || v === undefined) ? NaN : Number(v);
74
+ }
75
+ columns.push({ name, dtype: 'float64' });
76
+ columnBuffers.push(arr.buffer.slice(0));
77
+ }
78
+ }
79
+ const header = { rowCount, columns };
80
+ const headerBytes = encodeString(JSON.stringify(header));
81
+ // Calculate total size
82
+ let totalDataSize = 0;
83
+ for (const buf of columnBuffers) {
84
+ totalDataSize += buf.byteLength;
85
+ }
86
+ const totalSize = 4 + headerBytes.byteLength + totalDataSize;
87
+ const buffer = new ArrayBuffer(totalSize);
88
+ const view = new DataView(buffer);
89
+ // Write header length (4 bytes, little-endian)
90
+ view.setUint32(0, headerBytes.byteLength, true);
91
+ // Write header
92
+ new Uint8Array(buffer, 4, headerBytes.byteLength).set(headerBytes);
93
+ // Write column data
94
+ let offset = 4 + headerBytes.byteLength;
95
+ for (const colBuf of columnBuffers) {
96
+ new Uint8Array(buffer, offset, colBuf.byteLength).set(new Uint8Array(colBuf));
97
+ offset += colBuf.byteLength;
98
+ }
99
+ return buffer;
100
+ }
101
+ /**
102
+ * Get a list of transferable ArrayBuffers from the serialized buffer.
103
+ * Useful for postMessage with Transferable Objects.
104
+ */
105
+ function getTransferables(buffer) {
106
+ return [buffer];
107
+ }
108
+
109
+ /** Custom event name for progress updates */
110
+ const PROGRESS_EVENT_NAME = 'inferential-stats-progress';
111
+ /**
112
+ * InferentialStats - Main SDK class for browser-based statistical analysis.
113
+ *
114
+ * Uses Pyodide (WebAssembly) running in a Web Worker to perform
115
+ * SPSS-level statistical computations entirely client-side.
116
+ *
117
+ * Data is transferred to the worker using ArrayBuffer (Transferable Objects)
118
+ * for maximum efficiency with large datasets.
119
+ */
120
+ class InferentialStats {
121
+ constructor(config = {}) {
122
+ this.worker = null;
123
+ this.pendingRequests = new Map();
124
+ this.requestCounter = 0;
125
+ this.initialized = false;
126
+ this.initPromise = null;
127
+ this.config = {
128
+ workerUrl: config.workerUrl ?? '',
129
+ pyodideUrl: config.pyodideUrl ?? 'https://cdn.jsdelivr.net/pyodide/v0.27.5/full/',
130
+ eventTarget: config.eventTarget ?? (typeof globalThis !== 'undefined' ? globalThis : null),
131
+ };
132
+ }
133
+ /**
134
+ * Initialize the SDK - loads Pyodide and all required Python packages.
135
+ * Must be called before any analysis methods.
136
+ * Dispatches 'inferential-stats-progress' CustomEvents during loading.
137
+ */
138
+ async init() {
139
+ if (this.initialized)
140
+ return;
141
+ if (this.initPromise)
142
+ return this.initPromise;
143
+ this.initPromise = this._doInit();
144
+ return this.initPromise;
145
+ }
146
+ async _doInit() {
147
+ // Create worker
148
+ if (this.config.workerUrl) {
149
+ this.worker = new Worker(this.config.workerUrl);
150
+ }
151
+ else {
152
+ throw new Error('workerUrl is required. Point it to the stats-worker.js file from @winm2m/inferential-stats-js/worker');
153
+ }
154
+ // Set up message handler
155
+ this.worker.onmessage = (event) => {
156
+ this._handleWorkerMessage(event.data);
157
+ };
158
+ this.worker.onerror = (event) => {
159
+ console.error('[InferentialStats] Worker error:', event.message);
160
+ };
161
+ // Wait for worker ready signal
162
+ await new Promise((resolve) => {
163
+ const readyHandler = (event) => {
164
+ if (event.data.id === '__worker_ready__') {
165
+ resolve();
166
+ }
167
+ };
168
+ this.worker.addEventListener('message', readyHandler, { once: true });
169
+ });
170
+ // Initialize Pyodide in the worker
171
+ await this._sendRequest('init', undefined, {
172
+ pyodideUrl: this.config.pyodideUrl,
173
+ });
174
+ this.initialized = true;
175
+ }
176
+ /** Handle messages from the worker */
177
+ _handleWorkerMessage(response) {
178
+ if (response.type === 'progress' && response.progress) {
179
+ this._dispatchProgress(response.progress);
180
+ return; // Don't resolve the promise for progress messages
181
+ }
182
+ const pending = this.pendingRequests.get(response.id);
183
+ if (!pending)
184
+ return;
185
+ this.pendingRequests.delete(response.id);
186
+ if (response.type === 'error') {
187
+ pending.reject(new Error(response.error ?? 'Unknown worker error'));
188
+ }
189
+ else {
190
+ pending.resolve(response.data);
191
+ }
192
+ }
193
+ /** Dispatch a progress CustomEvent */
194
+ _dispatchProgress(detail) {
195
+ try {
196
+ if (this.config.eventTarget && typeof CustomEvent !== 'undefined') {
197
+ const event = new CustomEvent(PROGRESS_EVENT_NAME, { detail });
198
+ this.config.eventTarget.dispatchEvent(event);
199
+ }
200
+ }
201
+ catch {
202
+ // Silently ignore if CustomEvent is not available (e.g., Node.js test env)
203
+ }
204
+ }
205
+ /**
206
+ * Send a request to the worker and return a promise for the result.
207
+ * Optionally serializes data to ArrayBuffer for efficient transfer.
208
+ */
209
+ _sendRequest(type, data, params) {
210
+ if (!this.worker) {
211
+ return Promise.reject(new Error('Worker not initialized. Call init() first.'));
212
+ }
213
+ const id = `req_${++this.requestCounter}_${Date.now()}`;
214
+ return new Promise((resolve, reject) => {
215
+ this.pendingRequests.set(id, {
216
+ resolve: resolve,
217
+ reject,
218
+ });
219
+ const request = { id, type, params };
220
+ if (data && data.length > 0) {
221
+ // Serialize to ArrayBuffer for efficient transfer
222
+ const buffer = serializeToBuffer(data);
223
+ request.payload = buffer;
224
+ this.worker.postMessage(request, getTransferables(buffer));
225
+ }
226
+ else {
227
+ this.worker.postMessage(request);
228
+ }
229
+ });
230
+ }
231
+ /** Helper to wrap analysis calls with timing */
232
+ async _runAnalysis(type, input) {
233
+ if (!this.initialized) {
234
+ throw new Error('SDK not initialized. Call init() first.');
235
+ }
236
+ const startTime = performance.now();
237
+ try {
238
+ const { data, ...params } = input;
239
+ const result = await this._sendRequest(type, data, params);
240
+ return {
241
+ success: true,
242
+ data: result,
243
+ executionTimeMs: Math.round(performance.now() - startTime),
244
+ };
245
+ }
246
+ catch (err) {
247
+ return {
248
+ success: false,
249
+ data: null,
250
+ error: err instanceof Error ? err.message : String(err),
251
+ executionTimeMs: Math.round(performance.now() - startTime),
252
+ };
253
+ }
254
+ }
255
+ // ═══════════════════════════════════════
256
+ // ① Descriptive Statistics
257
+ // ═══════════════════════════════════════
258
+ /** Frequency analysis for categorical variables */
259
+ async frequencies(input) {
260
+ return this._runAnalysis('frequencies', input);
261
+ }
262
+ /** Descriptive statistics for continuous variables */
263
+ async descriptives(input) {
264
+ return this._runAnalysis('descriptives', input);
265
+ }
266
+ /** Cross-tabulation with Chi-square test */
267
+ async crosstabs(input) {
268
+ return this._runAnalysis('crosstabs', input);
269
+ }
270
+ // ═══════════════════════════════════════
271
+ // ② Compare Means
272
+ // ═══════════════════════════════════════
273
+ /** Independent-samples T-test with Levene's test */
274
+ async ttestIndependent(input) {
275
+ return this._runAnalysis('ttest_independent', input);
276
+ }
277
+ /** Paired-samples T-test */
278
+ async ttestPaired(input) {
279
+ return this._runAnalysis('ttest_paired', input);
280
+ }
281
+ /** One-Way ANOVA */
282
+ async anovaOneway(input) {
283
+ return this._runAnalysis('anova_oneway', input);
284
+ }
285
+ /** Post-hoc Tukey HSD test */
286
+ async posthocTukey(input) {
287
+ return this._runAnalysis('posthoc_tukey', input);
288
+ }
289
+ // ═══════════════════════════════════════
290
+ // ③ Regression
291
+ // ═══════════════════════════════════════
292
+ /** Linear regression (OLS) */
293
+ async linearRegression(input) {
294
+ return this._runAnalysis('linear_regression', input);
295
+ }
296
+ /** Binary logistic regression */
297
+ async logisticBinary(input) {
298
+ return this._runAnalysis('logistic_binary', input);
299
+ }
300
+ /** Multinomial logistic regression */
301
+ async logisticMultinomial(input) {
302
+ return this._runAnalysis('logistic_multinomial', input);
303
+ }
304
+ // ═══════════════════════════════════════
305
+ // ④ Classify
306
+ // ═══════════════════════════════════════
307
+ /** K-Means clustering */
308
+ async kmeans(input) {
309
+ return this._runAnalysis('kmeans', input);
310
+ }
311
+ /** Hierarchical (agglomerative) clustering */
312
+ async hierarchicalCluster(input) {
313
+ return this._runAnalysis('hierarchical_cluster', input);
314
+ }
315
+ // ═══════════════════════════════════════
316
+ // ⑤ Dimension Reduction
317
+ // ═══════════════════════════════════════
318
+ /** Exploratory Factor Analysis (EFA) with varimax rotation */
319
+ async efa(input) {
320
+ return this._runAnalysis('efa', input);
321
+ }
322
+ /** Principal Component Analysis (PCA) */
323
+ async pca(input) {
324
+ return this._runAnalysis('pca', input);
325
+ }
326
+ /** Multidimensional Scaling (MDS) */
327
+ async mds(input) {
328
+ return this._runAnalysis('mds', input);
329
+ }
330
+ // ═══════════════════════════════════════
331
+ // ⑥ Scale
332
+ // ═══════════════════════════════════════
333
+ /** Reliability analysis (Cronbach's Alpha) */
334
+ async cronbachAlpha(input) {
335
+ return this._runAnalysis('cronbach_alpha', input);
336
+ }
337
+ // ═══════════════════════════════════════
338
+ // Lifecycle
339
+ // ═══════════════════════════════════════
340
+ /** Check if the SDK is initialized */
341
+ isInitialized() {
342
+ return this.initialized;
343
+ }
344
+ /** Terminate the worker and clean up resources */
345
+ destroy() {
346
+ if (this.worker) {
347
+ this.worker.terminate();
348
+ this.worker = null;
349
+ }
350
+ this.initialized = false;
351
+ this.initPromise = null;
352
+ this.pendingRequests.clear();
353
+ }
354
+ }
355
+
356
+ /**
357
+ * Decode UTF-8 bytes to string
358
+ */
359
+ function decodeString(bytes) {
360
+ return new TextDecoder().decode(bytes);
361
+ }
362
+ /**
363
+ * Deserialize an ArrayBuffer (created by serializeToBuffer) back to JSON objects.
364
+ */
365
+ function deserializeFromBuffer(buffer) {
366
+ const view = new DataView(buffer);
367
+ // Read header length
368
+ const headerLength = view.getUint32(0, true);
369
+ // Read header
370
+ const headerBytes = new Uint8Array(buffer, 4, headerLength);
371
+ const header = JSON.parse(decodeString(headerBytes));
372
+ if (header.rowCount === 0)
373
+ return [];
374
+ const { rowCount, columns } = header;
375
+ let offset = 4 + headerLength;
376
+ // Read column data
377
+ const columnData = new Map();
378
+ for (const col of columns) {
379
+ if (col.dtype === 'string') {
380
+ const byteLen = rowCount * 4; // Int32 = 4 bytes
381
+ const aligned = new Int32Array(new Uint8Array(buffer, offset, byteLen).slice().buffer);
382
+ const values = [];
383
+ for (let i = 0; i < rowCount; i++) {
384
+ values.push(col.stringTable[aligned[i]]);
385
+ }
386
+ columnData.set(col.name, values);
387
+ offset += byteLen;
388
+ }
389
+ else {
390
+ const byteLen = rowCount * 8; // Float64 = 8 bytes
391
+ const aligned = new Float64Array(new Uint8Array(buffer, offset, byteLen).slice().buffer);
392
+ const values = [];
393
+ for (let i = 0; i < rowCount; i++) {
394
+ values.push(aligned[i]);
395
+ }
396
+ columnData.set(col.name, values);
397
+ offset += byteLen;
398
+ }
399
+ }
400
+ // Reconstruct row-oriented JSON
401
+ const result = [];
402
+ for (let i = 0; i < rowCount; i++) {
403
+ const row = {};
404
+ for (const col of columns) {
405
+ row[col.name] = columnData.get(col.name)[i];
406
+ }
407
+ result.push(row);
408
+ }
409
+ return result;
410
+ }
411
+ /**
412
+ * Deserialize buffer and convert to column-oriented format.
413
+ * More efficient for statistical computations.
414
+ */
415
+ function deserializeToColumns(buffer) {
416
+ const view = new DataView(buffer);
417
+ const headerLength = view.getUint32(0, true);
418
+ const headerBytes = new Uint8Array(buffer, 4, headerLength);
419
+ const header = JSON.parse(decodeString(headerBytes));
420
+ if (header.rowCount === 0)
421
+ return { rowCount: 0, columns: {} };
422
+ const { rowCount, columns: colMeta } = header;
423
+ let offset = 4 + headerLength;
424
+ const columns = {};
425
+ for (const col of colMeta) {
426
+ if (col.dtype === 'string') {
427
+ const byteLen = rowCount * 4;
428
+ const indices = new Int32Array(new Uint8Array(buffer, offset, byteLen).slice().buffer);
429
+ const values = [];
430
+ for (let i = 0; i < rowCount; i++) {
431
+ values.push(col.stringTable[indices[i]]);
432
+ }
433
+ columns[col.name] = { dtype: 'string', values };
434
+ offset += byteLen;
435
+ }
436
+ else {
437
+ const byteLen = rowCount * 8;
438
+ const arr = new Float64Array(new Uint8Array(buffer, offset, byteLen).slice().buffer);
439
+ const values = Array.from(arr);
440
+ columns[col.name] = { dtype: 'float64', values };
441
+ offset += byteLen;
442
+ }
443
+ }
444
+ return { rowCount, columns };
445
+ }
446
+
447
+ exports.InferentialStats = InferentialStats;
448
+ exports.PROGRESS_EVENT_NAME = PROGRESS_EVENT_NAME;
449
+ exports.deserializeFromBuffer = deserializeFromBuffer;
450
+ exports.deserializeToColumns = deserializeToColumns;
451
+ exports.getTransferables = getTransferables;
452
+ exports.serializeToBuffer = serializeToBuffer;
453
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../src/bridge/serializer.ts","../src/InferentialStats.ts","../src/bridge/deserializer.ts"],"sourcesContent":[null,null,null],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @winm2m/inferential-stats-js
3
+ *
4
+ * A headless JavaScript SDK for advanced statistical analysis in the browser.
5
+ * Uses Pyodide (WebAssembly) in a Web Worker to perform SPSS-level
6
+ * inferential statistics entirely client-side.
7
+ *
8
+ * @author Youngjune Kwon <yjkwon@winm2m.com>
9
+ * @license MIT
10
+ */
11
+ export { InferentialStats, PROGRESS_EVENT_NAME } from './InferentialStats';
12
+ export type { InferentialStatsConfig } from './InferentialStats';
13
+ export type { AnalysisResult, ProgressDetail, WorkerRequestType, } from './types/common';
14
+ export type { FrequenciesInput, FrequenciesOutput, FrequencyItem, DescriptivesInput, DescriptivesOutput, DescriptiveStats, CrosstabsInput, CrosstabsOutput, CrosstabCell, } from './types/descriptive';
15
+ export type { TTestIndependentInput, TTestIndependentOutput, TTestResult, LeveneTestResult, TTestPairedInput, TTestPairedOutput, AnovaInput, AnovaOutput, AnovaGroupStats, PostHocInput, PostHocOutput, PostHocComparison, } from './types/compare-means';
16
+ export type { LinearRegressionInput, LinearRegressionOutput, RegressionCoefficient, LogisticBinaryInput, LogisticBinaryOutput, LogisticCoefficient, MultinomialLogisticInput, MultinomialLogisticOutput, MultinomialCoefficient, } from './types/regression';
17
+ export type { KMeansInput, KMeansOutput, ClusterCenter, HierarchicalClusterInput, HierarchicalClusterOutput, } from './types/classify';
18
+ export type { EFAInput, EFAOutput, PCAInput, PCAOutput, MDSInput, MDSOutput, } from './types/dimension';
19
+ export type { CronbachAlphaInput, CronbachAlphaOutput, ItemAnalysis, } from './types/scale';
20
+ export { serializeToBuffer, getTransferables } from './bridge/serializer';
21
+ export { deserializeFromBuffer, deserializeToColumns } from './bridge/deserializer';