@winm2m/inferential-stats-js 0.1.1 → 0.1.3
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 +428 -19
- package/dist/python/dimension.d.ts +1 -1
- package/dist/stats-worker.js +20 -3
- package/dist/stats-worker.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -126,7 +126,7 @@ stats.destroy();
|
|
|
126
126
|
|
|
127
127
|
## CDN / CodePen Usage
|
|
128
128
|
|
|
129
|
-
You can use the SDK directly in a browser or CodePen with no build step. The snippet below loads the library from a CDN, fetches the sample dataset from GitHub Pages, and runs
|
|
129
|
+
You can use the SDK directly in a browser or CodePen with no build step. The snippet below loads the library from a CDN, fetches the sample dataset from GitHub Pages, and runs every analysis method in the SDK. Results are rendered as HTML tables.
|
|
130
130
|
|
|
131
131
|
```html
|
|
132
132
|
<!DOCTYPE html>
|
|
@@ -137,7 +137,16 @@ You can use the SDK directly in a browser or CodePen with no build step. The sni
|
|
|
137
137
|
</head>
|
|
138
138
|
<body>
|
|
139
139
|
<h1>inferential-stats-js — CDN Demo</h1>
|
|
140
|
-
<
|
|
140
|
+
<p id="status">Initializing...</p>
|
|
141
|
+
<div id="output"></div>
|
|
142
|
+
|
|
143
|
+
<style>
|
|
144
|
+
body { font-family: "IBM Plex Sans", "Segoe UI", sans-serif; margin: 24px; }
|
|
145
|
+
table { border-collapse: collapse; margin: 12px 0 24px; width: 100%; }
|
|
146
|
+
th, td { border: 1px solid #ddd; padding: 6px 10px; font-size: 14px; }
|
|
147
|
+
th { background: #f5f5f5; text-align: left; }
|
|
148
|
+
h2 { margin: 20px 0 8px; font-size: 18px; }
|
|
149
|
+
</style>
|
|
141
150
|
|
|
142
151
|
<!-- Load the worker script (global IIFE, no import needed) -->
|
|
143
152
|
<!-- The worker is loaded by URL below, not as a script tag -->
|
|
@@ -146,13 +155,63 @@ You can use the SDK directly in a browser or CodePen with no build step. The sni
|
|
|
146
155
|
// 1. Import the SDK from a CDN
|
|
147
156
|
import { InferentialStats, PROGRESS_EVENT_NAME } from 'https://unpkg.com/@winm2m/inferential-stats-js/dist/index.js';
|
|
148
157
|
|
|
158
|
+
const status = document.getElementById('status');
|
|
149
159
|
const output = document.getElementById('output');
|
|
150
|
-
|
|
160
|
+
|
|
161
|
+
const setStatus = (message) => {
|
|
162
|
+
if (status) {
|
|
163
|
+
status.textContent = message;
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
const renderTable = (title, headers, rows) => {
|
|
168
|
+
if (!output) return;
|
|
169
|
+
|
|
170
|
+
const section = document.createElement('section');
|
|
171
|
+
const heading = document.createElement('h2');
|
|
172
|
+
heading.textContent = title;
|
|
173
|
+
section.appendChild(heading);
|
|
174
|
+
|
|
175
|
+
const table = document.createElement('table');
|
|
176
|
+
const thead = document.createElement('thead');
|
|
177
|
+
const headerRow = document.createElement('tr');
|
|
178
|
+
headers.forEach((header) => {
|
|
179
|
+
const th = document.createElement('th');
|
|
180
|
+
th.textContent = header;
|
|
181
|
+
headerRow.appendChild(th);
|
|
182
|
+
});
|
|
183
|
+
thead.appendChild(headerRow);
|
|
184
|
+
table.appendChild(thead);
|
|
185
|
+
|
|
186
|
+
const tbody = document.createElement('tbody');
|
|
187
|
+
rows.forEach((cells) => {
|
|
188
|
+
const tr = document.createElement('tr');
|
|
189
|
+
cells.forEach((cell) => {
|
|
190
|
+
const td = document.createElement('td');
|
|
191
|
+
td.textContent = cell;
|
|
192
|
+
tr.appendChild(td);
|
|
193
|
+
});
|
|
194
|
+
tbody.appendChild(tr);
|
|
195
|
+
});
|
|
196
|
+
table.appendChild(tbody);
|
|
197
|
+
section.appendChild(table);
|
|
198
|
+
output.appendChild(section);
|
|
199
|
+
};
|
|
200
|
+
|
|
201
|
+
const renderKeyValueTable = (title, rows) => {
|
|
202
|
+
renderTable(title, ['Metric', 'Value'], rows);
|
|
203
|
+
};
|
|
204
|
+
|
|
205
|
+
const renderErrorTable = (title, message) => {
|
|
206
|
+
renderKeyValueTable(title, [['Error', message ?? 'Unknown error']]);
|
|
207
|
+
};
|
|
208
|
+
|
|
209
|
+
const formatNumber = (value, digits = 4) => Number(value).toFixed(digits);
|
|
151
210
|
|
|
152
211
|
// 2. Listen for progress events
|
|
153
212
|
window.addEventListener(PROGRESS_EVENT_NAME, (e) => {
|
|
154
213
|
const { stage, progress, message } = e.detail;
|
|
155
|
-
|
|
214
|
+
setStatus(`[${stage}] ${message} (${progress}%)`);
|
|
156
215
|
});
|
|
157
216
|
|
|
158
217
|
// 3. Create an instance pointing to the CDN-hosted worker
|
|
@@ -163,39 +222,387 @@ You can use the SDK directly in a browser or CodePen with no build step. The sni
|
|
|
163
222
|
try {
|
|
164
223
|
// 4. Initialize (downloads Pyodide WASM + Python packages)
|
|
165
224
|
await stats.init();
|
|
166
|
-
|
|
225
|
+
setStatus('Initialization complete. Running analyses...');
|
|
167
226
|
|
|
168
227
|
// 5. Fetch sample survey data from GitHub Pages
|
|
169
228
|
const response = await fetch(
|
|
170
229
|
'https://winm2m.github.io/inferential-stats-js/sample-survey-data.json'
|
|
171
230
|
);
|
|
172
231
|
const data = await response.json();
|
|
173
|
-
|
|
232
|
+
setStatus(`Loaded ${data.length} rows. Rendering tables...`);
|
|
233
|
+
|
|
234
|
+
const binaryData = data.map((row) => {
|
|
235
|
+
const musicScore = Number(row.music_satisfaction);
|
|
236
|
+
return {
|
|
237
|
+
...row,
|
|
238
|
+
is_high_music: Number.isFinite(musicScore) && musicScore >= 4 ? 1 : 0,
|
|
239
|
+
};
|
|
240
|
+
});
|
|
174
241
|
|
|
175
|
-
|
|
176
|
-
|
|
242
|
+
const sampledData = data.slice(0, 300);
|
|
243
|
+
|
|
244
|
+
// 6. Descriptive Statistics — Frequencies
|
|
245
|
+
const frequenciesResult = await stats.frequencies({
|
|
246
|
+
data,
|
|
247
|
+
variable: 'favorite_music',
|
|
248
|
+
});
|
|
249
|
+
if (frequenciesResult.success) {
|
|
250
|
+
const frequencyRows = frequenciesResult.data.frequencies
|
|
251
|
+
.slice(0, 6)
|
|
252
|
+
.map((item) => [
|
|
253
|
+
String(item.value),
|
|
254
|
+
String(item.count),
|
|
255
|
+
`${item.percentage.toFixed(2)}%`,
|
|
256
|
+
]);
|
|
257
|
+
renderTable(
|
|
258
|
+
'Descriptive Statistics — Frequencies (favorite_music, top 6)',
|
|
259
|
+
['Value', 'Count', 'Percent'],
|
|
260
|
+
frequencyRows
|
|
261
|
+
);
|
|
262
|
+
} else {
|
|
263
|
+
renderErrorTable('Descriptive Statistics — Frequencies (favorite_music, top 6)', frequenciesResult.error);
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
const descriptivesResult = await stats.descriptives({
|
|
267
|
+
data,
|
|
268
|
+
variables: [
|
|
269
|
+
'music_satisfaction',
|
|
270
|
+
'movie_satisfaction',
|
|
271
|
+
'art_satisfaction',
|
|
272
|
+
'weekly_hours_music',
|
|
273
|
+
'weekly_hours_movie',
|
|
274
|
+
'monthly_art_visits',
|
|
275
|
+
],
|
|
276
|
+
});
|
|
277
|
+
if (descriptivesResult.success) {
|
|
278
|
+
const descriptiveRows = descriptivesResult.data.statistics.map((stat) => [
|
|
279
|
+
stat.variable,
|
|
280
|
+
formatNumber(stat.mean),
|
|
281
|
+
formatNumber(stat.std),
|
|
282
|
+
formatNumber(stat.min),
|
|
283
|
+
formatNumber(stat.max),
|
|
284
|
+
]);
|
|
285
|
+
renderTable(
|
|
286
|
+
'Descriptive Statistics — Descriptives',
|
|
287
|
+
['Variable', 'Mean', 'Std', 'Min', 'Max'],
|
|
288
|
+
descriptiveRows
|
|
289
|
+
);
|
|
290
|
+
} else {
|
|
291
|
+
renderErrorTable('Descriptive Statistics — Descriptives', descriptivesResult.error);
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
const crosstabsResult = await stats.crosstabs({
|
|
177
295
|
data,
|
|
178
296
|
rowVariable: 'gender',
|
|
179
297
|
colVariable: 'favorite_music',
|
|
180
298
|
});
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
299
|
+
if (crosstabsResult.success) {
|
|
300
|
+
renderKeyValueTable('Descriptive Statistics — Crosstabs Summary (gender x favorite_music)', [
|
|
301
|
+
['Chi-square', formatNumber(crosstabsResult.data.chiSquare)],
|
|
302
|
+
['p-value', formatNumber(crosstabsResult.data.pValue)],
|
|
303
|
+
['Cramers V', formatNumber(crosstabsResult.data.cramersV)],
|
|
304
|
+
['df', String(crosstabsResult.data.degreesOfFreedom)],
|
|
305
|
+
]);
|
|
306
|
+
const crosstabRows = crosstabsResult.data.table.slice(0, 12).map((cell) => [
|
|
307
|
+
cell.row,
|
|
308
|
+
cell.col,
|
|
309
|
+
String(cell.observed),
|
|
310
|
+
formatNumber(cell.expected),
|
|
311
|
+
formatNumber(cell.rowPercentage),
|
|
312
|
+
formatNumber(cell.colPercentage),
|
|
313
|
+
formatNumber(cell.totalPercentage),
|
|
314
|
+
]);
|
|
315
|
+
renderTable(
|
|
316
|
+
'Descriptive Statistics — Crosstabs Cells (top 12)',
|
|
317
|
+
['Row', 'Col', 'Obs', 'Exp', 'Row %', 'Col %', 'Total %'],
|
|
318
|
+
crosstabRows
|
|
319
|
+
);
|
|
320
|
+
} else {
|
|
321
|
+
renderErrorTable('Descriptive Statistics — Crosstabs Summary (gender x favorite_music)', crosstabsResult.error);
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
const ttestIndependentResult = await stats.ttestIndependent({
|
|
325
|
+
data,
|
|
326
|
+
variable: 'music_satisfaction',
|
|
327
|
+
groupVariable: 'gender',
|
|
328
|
+
group1Value: 'Male',
|
|
329
|
+
group2Value: 'Female',
|
|
330
|
+
});
|
|
331
|
+
if (ttestIndependentResult.success) {
|
|
332
|
+
const levene = ttestIndependentResult.data.leveneTest;
|
|
333
|
+
const equal = ttestIndependentResult.data.equalVariance;
|
|
334
|
+
const unequal = ttestIndependentResult.data.unequalVariance;
|
|
335
|
+
renderKeyValueTable('Compare Means — Independent T-Test (music_satisfaction by gender)', [
|
|
336
|
+
['Levene p-value', formatNumber(levene.pValue)],
|
|
337
|
+
['Equal variance', String(levene.equalVariance)],
|
|
338
|
+
['t (equal var)', formatNumber(equal.tStatistic)],
|
|
339
|
+
['p (equal var)', formatNumber(equal.pValue)],
|
|
340
|
+
['t (unequal var)', formatNumber(unequal.tStatistic)],
|
|
341
|
+
['p (unequal var)', formatNumber(unequal.pValue)],
|
|
342
|
+
]);
|
|
343
|
+
} else {
|
|
344
|
+
renderErrorTable('Compare Means — Independent T-Test (music_satisfaction by gender)', ttestIndependentResult.error);
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
const ttestPairedResult = await stats.ttestPaired({
|
|
348
|
+
data,
|
|
349
|
+
variable1: 'music_satisfaction',
|
|
350
|
+
variable2: 'movie_satisfaction',
|
|
351
|
+
});
|
|
352
|
+
if (ttestPairedResult.success) {
|
|
353
|
+
renderKeyValueTable('Compare Means — Paired T-Test (music vs movie satisfaction)', [
|
|
354
|
+
['t-statistic', formatNumber(ttestPairedResult.data.tStatistic)],
|
|
355
|
+
['p-value', formatNumber(ttestPairedResult.data.pValue)],
|
|
356
|
+
['Mean diff', formatNumber(ttestPairedResult.data.meanDifference)],
|
|
357
|
+
['Std diff', formatNumber(ttestPairedResult.data.stdDifference)],
|
|
358
|
+
['n', String(ttestPairedResult.data.n)],
|
|
359
|
+
]);
|
|
360
|
+
} else {
|
|
361
|
+
renderErrorTable('Compare Means — Paired T-Test (music vs movie satisfaction)', ttestPairedResult.error);
|
|
362
|
+
}
|
|
185
363
|
|
|
186
|
-
// 7. Run One-Way ANOVA (music_satisfaction by age_group)
|
|
187
364
|
const anovaResult = await stats.anovaOneway({
|
|
188
365
|
data,
|
|
189
366
|
variable: 'music_satisfaction',
|
|
190
367
|
groupVariable: 'age_group',
|
|
191
368
|
});
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
369
|
+
if (anovaResult.success) {
|
|
370
|
+
renderKeyValueTable('Compare Means — One-Way ANOVA (music_satisfaction by age_group)', [
|
|
371
|
+
['F-statistic', formatNumber(anovaResult.data.fStatistic)],
|
|
372
|
+
['p-value', formatNumber(anovaResult.data.pValue)],
|
|
373
|
+
['eta-squared', formatNumber(anovaResult.data.etaSquared)],
|
|
374
|
+
]);
|
|
375
|
+
} else {
|
|
376
|
+
renderErrorTable('Compare Means — One-Way ANOVA (music_satisfaction by age_group)', anovaResult.error);
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
const posthocResult = await stats.posthocTukey({
|
|
380
|
+
data,
|
|
381
|
+
variable: 'music_satisfaction',
|
|
382
|
+
groupVariable: 'age_group',
|
|
383
|
+
alpha: 0.05,
|
|
384
|
+
});
|
|
385
|
+
if (posthocResult.success) {
|
|
386
|
+
const posthocRows = posthocResult.data.comparisons.slice(0, 8).map((comp) => [
|
|
387
|
+
comp.group1,
|
|
388
|
+
comp.group2,
|
|
389
|
+
formatNumber(comp.meanDifference),
|
|
390
|
+
formatNumber(comp.pValue),
|
|
391
|
+
comp.reject ? 'Yes' : 'No',
|
|
392
|
+
]);
|
|
393
|
+
renderTable(
|
|
394
|
+
'Compare Means — Post-hoc Tukey (top 8 comparisons)',
|
|
395
|
+
['Group 1', 'Group 2', 'Mean diff', 'p-value', 'Reject'],
|
|
396
|
+
posthocRows
|
|
397
|
+
);
|
|
398
|
+
} else {
|
|
399
|
+
renderErrorTable('Compare Means — Post-hoc Tukey (top 8 comparisons)', posthocResult.error);
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
const regressionResult = await stats.linearRegression({
|
|
403
|
+
data,
|
|
404
|
+
dependentVariable: 'music_satisfaction',
|
|
405
|
+
independentVariables: ['weekly_hours_music', 'weekly_hours_movie'],
|
|
406
|
+
});
|
|
407
|
+
if (regressionResult.success) {
|
|
408
|
+
renderKeyValueTable('Regression — OLS (music_satisfaction ~ weekly_hours_music + weekly_hours_movie)', [
|
|
409
|
+
['R-squared', formatNumber(regressionResult.data.rSquared)],
|
|
410
|
+
['Adj. R-squared', formatNumber(regressionResult.data.adjustedRSquared)],
|
|
411
|
+
['F-statistic', formatNumber(regressionResult.data.fStatistic)],
|
|
412
|
+
['F p-value', formatNumber(regressionResult.data.fPValue)],
|
|
413
|
+
['Durbin-Watson', formatNumber(regressionResult.data.durbinWatson)],
|
|
414
|
+
]);
|
|
415
|
+
} else {
|
|
416
|
+
renderErrorTable('Regression — OLS (music_satisfaction ~ weekly_hours_music + weekly_hours_movie)', regressionResult.error);
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
const logisticBinaryResult = await stats.logisticBinary({
|
|
420
|
+
data: binaryData,
|
|
421
|
+
dependentVariable: 'is_high_music',
|
|
422
|
+
independentVariables: ['weekly_hours_music', 'weekly_hours_movie', 'monthly_art_visits'],
|
|
423
|
+
});
|
|
424
|
+
if (logisticBinaryResult.success) {
|
|
425
|
+
renderKeyValueTable('Regression — Binary Logistic (is_high_music)', [
|
|
426
|
+
['Pseudo R-squared', formatNumber(logisticBinaryResult.data.pseudoRSquared)],
|
|
427
|
+
['LLR p-value', formatNumber(logisticBinaryResult.data.llrPValue)],
|
|
428
|
+
['AIC', formatNumber(logisticBinaryResult.data.aic)],
|
|
429
|
+
['BIC', formatNumber(logisticBinaryResult.data.bic)],
|
|
430
|
+
['Converged', logisticBinaryResult.data.convergence ? 'Yes' : 'No'],
|
|
431
|
+
]);
|
|
432
|
+
const binaryCoefRows = logisticBinaryResult.data.coefficients.slice(0, 6).map((coef) => [
|
|
433
|
+
coef.variable,
|
|
434
|
+
formatNumber(coef.coefficient),
|
|
435
|
+
formatNumber(coef.oddsRatio),
|
|
436
|
+
formatNumber(coef.pValue),
|
|
437
|
+
]);
|
|
438
|
+
renderTable('Regression — Binary Logistic Coefficients (top 6)', ['Variable', 'Coef', 'Odds Ratio', 'p-value'], binaryCoefRows);
|
|
439
|
+
} else {
|
|
440
|
+
renderErrorTable('Regression — Binary Logistic (is_high_music)', logisticBinaryResult.error);
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
const logisticMultinomialResult = await stats.logisticMultinomial({
|
|
444
|
+
data,
|
|
445
|
+
dependentVariable: 'age_group',
|
|
446
|
+
independentVariables: ['music_satisfaction', 'movie_satisfaction', 'art_satisfaction'],
|
|
447
|
+
referenceCategory: '20s',
|
|
448
|
+
});
|
|
449
|
+
if (logisticMultinomialResult.success) {
|
|
450
|
+
renderKeyValueTable('Regression — Multinomial Logistic (age_group)', [
|
|
451
|
+
['Pseudo R-squared', formatNumber(logisticMultinomialResult.data.pseudoRSquared)],
|
|
452
|
+
['AIC', formatNumber(logisticMultinomialResult.data.aic)],
|
|
453
|
+
['BIC', formatNumber(logisticMultinomialResult.data.bic)],
|
|
454
|
+
['Reference', logisticMultinomialResult.data.referenceCategory],
|
|
455
|
+
]);
|
|
456
|
+
const multiRows = logisticMultinomialResult.data.coefficients.slice(0, 10).map((coef) => [
|
|
457
|
+
coef.category,
|
|
458
|
+
coef.variable,
|
|
459
|
+
formatNumber(coef.coefficient),
|
|
460
|
+
formatNumber(coef.oddsRatio),
|
|
461
|
+
]);
|
|
462
|
+
renderTable('Regression — Multinomial Coefficients (top 10)', ['Category', 'Variable', 'Coef', 'Odds Ratio'], multiRows);
|
|
463
|
+
} else {
|
|
464
|
+
renderErrorTable('Regression — Multinomial Logistic (age_group)', logisticMultinomialResult.error);
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
const kmeansResult = await stats.kmeans({
|
|
468
|
+
data,
|
|
469
|
+
variables: ['weekly_hours_music', 'weekly_hours_movie', 'monthly_art_visits'],
|
|
470
|
+
k: 3,
|
|
471
|
+
randomState: 42,
|
|
472
|
+
maxIterations: 100,
|
|
473
|
+
});
|
|
474
|
+
if (kmeansResult.success) {
|
|
475
|
+
const clusterRows = Object.entries(kmeansResult.data.clusterSizes).map(
|
|
476
|
+
([cluster, size]) => [`Cluster ${cluster}`, String(size)]
|
|
477
|
+
);
|
|
478
|
+
renderKeyValueTable('Classify — K-Means (k=3)', [
|
|
479
|
+
['Inertia', kmeansResult.data.inertia.toFixed(2)],
|
|
480
|
+
['Iterations', String(kmeansResult.data.iterations)],
|
|
481
|
+
...clusterRows,
|
|
482
|
+
]);
|
|
483
|
+
} else {
|
|
484
|
+
renderErrorTable('Classify — K-Means (k=3)', kmeansResult.error);
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
const hierarchicalResult = await stats.hierarchicalCluster({
|
|
488
|
+
data: sampledData,
|
|
489
|
+
variables: ['weekly_hours_music', 'weekly_hours_movie', 'monthly_art_visits'],
|
|
490
|
+
method: 'ward',
|
|
491
|
+
metric: 'euclidean',
|
|
492
|
+
nClusters: 3,
|
|
493
|
+
});
|
|
494
|
+
if (hierarchicalResult.success) {
|
|
495
|
+
const hierarchicalRows = Object.entries(hierarchicalResult.data.clusterSizes).map(
|
|
496
|
+
([cluster, size]) => [`Cluster ${cluster}`, String(size)]
|
|
497
|
+
);
|
|
498
|
+
renderKeyValueTable('Classify — Hierarchical Cluster (n=3)', [
|
|
499
|
+
['Clusters', String(hierarchicalResult.data.nClusters)],
|
|
500
|
+
...hierarchicalRows,
|
|
501
|
+
]);
|
|
502
|
+
} else {
|
|
503
|
+
renderErrorTable('Classify — Hierarchical Cluster (n=3)', hierarchicalResult.error);
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
const pcaResult = await stats.pca({
|
|
507
|
+
data,
|
|
508
|
+
variables: [
|
|
509
|
+
'music_satisfaction',
|
|
510
|
+
'movie_satisfaction',
|
|
511
|
+
'art_satisfaction',
|
|
512
|
+
'weekly_hours_music',
|
|
513
|
+
'weekly_hours_movie',
|
|
514
|
+
'monthly_art_visits',
|
|
515
|
+
],
|
|
516
|
+
nComponents: 3,
|
|
517
|
+
standardize: true,
|
|
518
|
+
});
|
|
519
|
+
if (pcaResult.success) {
|
|
520
|
+
const pcaRows = pcaResult.data.explainedVarianceRatio.map((value, index) => [
|
|
521
|
+
`PC${index + 1}`,
|
|
522
|
+
formatNumber(value),
|
|
523
|
+
]);
|
|
524
|
+
renderTable('Dimension Reduction — PCA (top 3 components)', ['Component', 'Explained Variance Ratio'], pcaRows);
|
|
525
|
+
} else {
|
|
526
|
+
renderErrorTable('Dimension Reduction — PCA (top 3 components)', pcaResult.error);
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
const efaResult = await stats.efa({
|
|
530
|
+
data,
|
|
531
|
+
variables: [
|
|
532
|
+
'music_satisfaction',
|
|
533
|
+
'movie_satisfaction',
|
|
534
|
+
'art_satisfaction',
|
|
535
|
+
'weekly_hours_music',
|
|
536
|
+
'weekly_hours_movie',
|
|
537
|
+
'monthly_art_visits',
|
|
538
|
+
],
|
|
539
|
+
nFactors: 3,
|
|
540
|
+
rotation: 'varimax',
|
|
541
|
+
});
|
|
542
|
+
if (efaResult.success) {
|
|
543
|
+
const efaHeaders = ['Variable', 'Factor 1', 'Factor 2', 'Factor 3'];
|
|
544
|
+
const efaRows = Object.entries(efaResult.data.loadings).map(([variable, loadings]) => [
|
|
545
|
+
variable,
|
|
546
|
+
formatNumber(loadings[0]),
|
|
547
|
+
formatNumber(loadings[1]),
|
|
548
|
+
formatNumber(loadings[2]),
|
|
549
|
+
]);
|
|
550
|
+
renderTable('Dimension Reduction — EFA Loadings (varimax, 3 factors)', efaHeaders, efaRows);
|
|
551
|
+
} else {
|
|
552
|
+
renderErrorTable('Dimension Reduction — EFA Loadings (varimax, 3 factors)', efaResult.error);
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
setStatus('Running MDS on sampled data (300 rows)...');
|
|
556
|
+
const mdsResult = await stats.mds({
|
|
557
|
+
data: sampledData,
|
|
558
|
+
variables: [
|
|
559
|
+
'music_satisfaction',
|
|
560
|
+
'movie_satisfaction',
|
|
561
|
+
'art_satisfaction',
|
|
562
|
+
'weekly_hours_music',
|
|
563
|
+
'weekly_hours_movie',
|
|
564
|
+
'monthly_art_visits',
|
|
565
|
+
],
|
|
566
|
+
nComponents: 2,
|
|
567
|
+
metric: true,
|
|
568
|
+
maxIterations: 100,
|
|
569
|
+
randomState: 42,
|
|
570
|
+
});
|
|
571
|
+
if (mdsResult.success) {
|
|
572
|
+
renderKeyValueTable('Dimension Reduction — MDS Summary', [
|
|
573
|
+
['Stress', formatNumber(mdsResult.data.stress)],
|
|
574
|
+
['Components', String(mdsResult.data.nComponents)],
|
|
575
|
+
]);
|
|
576
|
+
const mdsRows = mdsResult.data.coordinates.slice(0, 5).map((row, index) => [
|
|
577
|
+
String(index + 1),
|
|
578
|
+
formatNumber(row[0]),
|
|
579
|
+
formatNumber(row[1]),
|
|
580
|
+
]);
|
|
581
|
+
renderTable('Dimension Reduction — MDS Coordinates (first 5, sample 300)', ['Index', 'Dim 1', 'Dim 2'], mdsRows);
|
|
582
|
+
} else {
|
|
583
|
+
renderErrorTable('Dimension Reduction — MDS', mdsResult.error);
|
|
584
|
+
}
|
|
585
|
+
|
|
586
|
+
const alphaResult = await stats.cronbachAlpha({
|
|
587
|
+
data,
|
|
588
|
+
items: ['music_satisfaction', 'movie_satisfaction', 'art_satisfaction'],
|
|
589
|
+
});
|
|
590
|
+
if (alphaResult.success) {
|
|
591
|
+
renderKeyValueTable('Scale — Cronbach Alpha (satisfaction items)', [
|
|
592
|
+
['Alpha', formatNumber(alphaResult.data.alpha)],
|
|
593
|
+
['Standardized Alpha', formatNumber(alphaResult.data.standardizedAlpha)],
|
|
594
|
+
['Inter-item correlation mean', formatNumber(alphaResult.data.interItemCorrelationMean)],
|
|
595
|
+
['Items', String(alphaResult.data.nItems)],
|
|
596
|
+
['Observations', String(alphaResult.data.nObservations)],
|
|
597
|
+
]);
|
|
598
|
+
} else {
|
|
599
|
+
renderErrorTable('Scale — Cronbach Alpha (satisfaction items)', alphaResult.error);
|
|
600
|
+
}
|
|
601
|
+
|
|
602
|
+
setStatus('All analyses completed.');
|
|
196
603
|
|
|
197
604
|
} catch (err) {
|
|
198
|
-
|
|
605
|
+
setStatus('Error: ' + err.message);
|
|
199
606
|
} finally {
|
|
200
607
|
stats.destroy();
|
|
201
608
|
}
|
|
@@ -205,6 +612,8 @@ You can use the SDK directly in a browser or CodePen with no build step. The sni
|
|
|
205
612
|
```
|
|
206
613
|
|
|
207
614
|
> **Tip:** Paste the JavaScript portion into the **JS panel** of CodePen (with the "JavaScript preprocessor" set to **None** or **Babel**) and the HTML into the **HTML panel**. The demo runs entirely in the browser.
|
|
615
|
+
>
|
|
616
|
+
> **Live Demo:** Try it out on CodePen: https://codepen.io/editor/YoungjuneKwon/pen/019d3c97-35c0-743c-ad43-78e02225b008
|
|
208
617
|
|
|
209
618
|
---
|
|
210
619
|
|
|
@@ -709,4 +1118,4 @@ console.log('Ready!');
|
|
|
709
1118
|
|
|
710
1119
|
## License
|
|
711
1120
|
|
|
712
|
-
[MIT](./LICENSE) © 2026 WinM2M
|
|
1121
|
+
[MIT](./LICENSE) © 2026 WinM2M
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Python code for dimension reduction functions.
|
|
3
3
|
*/
|
|
4
|
-
export declare const EFA_PY = "\nimport json\nimport pandas as pd\nimport numpy as np\nfrom factor_analyzer import FactorAnalyzer\nfrom factor_analyzer.factor_analyzer import calculate_bartlett_sphericity, calculate_kmo\n\ndef run_efa(data_json, variables_json, n_factors, rotation='varimax', method='minres'):\n df = pd.DataFrame(json.loads(data_json))\n variables = json.loads(variables_json)\n \n X = df[variables].apply(pd.to_numeric, errors='coerce').dropna()\n \n # KMO and Bartlett tests\n
|
|
4
|
+
export declare const EFA_PY = "\nimport json\nimport pandas as pd\nimport numpy as np\nimport scipy as sp\nfrom factor_analyzer import FactorAnalyzer\nfrom factor_analyzer.factor_analyzer import calculate_bartlett_sphericity, calculate_kmo\n\ndef run_efa(data_json, variables_json, n_factors, rotation='varimax', method='minres'):\n if not hasattr(sp, 'sum'):\n sp.sum = np.sum\n df = pd.DataFrame(json.loads(data_json))\n variables = json.loads(variables_json)\n \n X = df[variables].apply(pd.to_numeric, errors='coerce').dropna()\n \n # KMO and Bartlett tests\n kmo_result = calculate_kmo(X)\n if isinstance(kmo_result, tuple):\n kmo_all = kmo_result[0]\n kmo_model = kmo_result[1] if len(kmo_result) > 1 else kmo_result[0]\n else:\n kmo_all = kmo_result\n kmo_model = kmo_result\n chi2, p_value = calculate_bartlett_sphericity(X)\n \n fa = FactorAnalyzer(n_factors=n_factors, rotation=rotation, method=method)\n fa.fit(X)\n \n loadings = fa.loadings_\n loadings_dict = {}\n for i, var in enumerate(variables):\n loadings_dict[var] = [round(float(x), 6) for x in loadings[i]]\n \n variance_result = fa.get_factor_variance()\n if isinstance(variance_result, tuple):\n ev = variance_result[0]\n v = variance_result[1] if len(variance_result) > 1 else variance_result[0]\n cumulative = variance_result[2] if len(variance_result) > 2 else None\n else:\n ev = variance_result\n v = variance_result\n cumulative = None\n \n communalities = fa.get_communalities()\n uniquenesses = fa.get_uniquenesses()\n \n comm_dict = {}\n uniq_dict = {}\n for i, var in enumerate(variables):\n comm_dict[var] = round(float(communalities[i]), 6)\n uniq_dict[var] = round(float(uniquenesses[i]), 6)\n \n eigenvalues = fa.get_eigenvalues()[0]\n \n return json.dumps({\n 'loadings': loadings_dict,\n 'eigenvalues': [round(float(x), 6) for x in eigenvalues],\n 'variance': [round(float(x), 6) for x in ev],\n 'cumulativeVariance': [round(float(x), 6) for x in cumulative] if cumulative is not None else [round(float(sum(v[:i+1])), 6) for i in range(len(v))],\n 'communalities': comm_dict,\n 'uniquenesses': uniq_dict,\n 'nFactors': n_factors,\n 'rotation': rotation,\n 'kmo': round(float(kmo_model), 6),\n 'bartlettChi2': round(float(chi2), 6),\n 'bartlettPValue': float(p_value)\n })\n";
|
|
5
5
|
export declare const PCA_PY = "\nimport json\nimport pandas as pd\nimport numpy as np\nfrom sklearn.decomposition import PCA\nfrom sklearn.preprocessing import StandardScaler\n\ndef run_pca(data_json, variables_json, n_components=None, standardize=True):\n df = pd.DataFrame(json.loads(data_json))\n variables = json.loads(variables_json)\n \n X = df[variables].apply(pd.to_numeric, errors='coerce').dropna()\n \n if standardize:\n scaler = StandardScaler()\n X_scaled = scaler.fit_transform(X)\n else:\n X_scaled = X.values\n \n if n_components is None:\n n_components = min(len(variables), len(X_scaled))\n \n pca = PCA(n_components=n_components)\n transformed = pca.fit_transform(X_scaled)\n \n loadings = {}\n for i, var in enumerate(variables):\n loadings[var] = [round(float(x), 6) for x in pca.components_[:, i]]\n \n cum_var = np.cumsum(pca.explained_variance_ratio_)\n \n return json.dumps({\n 'components': [[round(float(x), 6) for x in row] for row in transformed.tolist()],\n 'explainedVariance': [round(float(x), 6) for x in pca.explained_variance_],\n 'explainedVarianceRatio': [round(float(x), 6) for x in pca.explained_variance_ratio_],\n 'cumulativeVarianceRatio': [round(float(x), 6) for x in cum_var],\n 'loadings': loadings,\n 'singularValues': [round(float(x), 6) for x in pca.singular_values_],\n 'nComponents': n_components\n })\n";
|
|
6
6
|
export declare const MDS_PY = "\nimport json\nimport pandas as pd\nimport numpy as np\nfrom sklearn.manifold import MDS\nfrom sklearn.preprocessing import StandardScaler\n\ndef run_mds(data_json, variables_json, n_components=2, metric=True, max_iterations=300, random_state=42):\n df = pd.DataFrame(json.loads(data_json))\n variables = json.loads(variables_json)\n \n X = df[variables].apply(pd.to_numeric, errors='coerce').dropna()\n \n scaler = StandardScaler()\n X_scaled = scaler.fit_transform(X)\n \n mds = MDS(n_components=n_components, metric=metric, max_iter=max_iterations, random_state=random_state, normalized_stress='auto')\n coords = mds.fit_transform(X_scaled)\n \n return json.dumps({\n 'coordinates': [[round(float(x), 6) for x in row] for row in coords.tolist()],\n 'stress': round(float(mds.stress_), 6),\n 'nComponents': n_components\n })\n";
|
package/dist/stats-worker.js
CHANGED
|
@@ -585,17 +585,26 @@ def run_hierarchical_cluster(data_json, variables_json, method='ward', metric='e
|
|
|
585
585
|
import json
|
|
586
586
|
import pandas as pd
|
|
587
587
|
import numpy as np
|
|
588
|
+
import scipy as sp
|
|
588
589
|
from factor_analyzer import FactorAnalyzer
|
|
589
590
|
from factor_analyzer.factor_analyzer import calculate_bartlett_sphericity, calculate_kmo
|
|
590
591
|
|
|
591
592
|
def run_efa(data_json, variables_json, n_factors, rotation='varimax', method='minres'):
|
|
593
|
+
if not hasattr(sp, 'sum'):
|
|
594
|
+
sp.sum = np.sum
|
|
592
595
|
df = pd.DataFrame(json.loads(data_json))
|
|
593
596
|
variables = json.loads(variables_json)
|
|
594
597
|
|
|
595
598
|
X = df[variables].apply(pd.to_numeric, errors='coerce').dropna()
|
|
596
599
|
|
|
597
600
|
# KMO and Bartlett tests
|
|
598
|
-
|
|
601
|
+
kmo_result = calculate_kmo(X)
|
|
602
|
+
if isinstance(kmo_result, tuple):
|
|
603
|
+
kmo_all = kmo_result[0]
|
|
604
|
+
kmo_model = kmo_result[1] if len(kmo_result) > 1 else kmo_result[0]
|
|
605
|
+
else:
|
|
606
|
+
kmo_all = kmo_result
|
|
607
|
+
kmo_model = kmo_result
|
|
599
608
|
chi2, p_value = calculate_bartlett_sphericity(X)
|
|
600
609
|
|
|
601
610
|
fa = FactorAnalyzer(n_factors=n_factors, rotation=rotation, method=method)
|
|
@@ -606,7 +615,15 @@ def run_efa(data_json, variables_json, n_factors, rotation='varimax', method='mi
|
|
|
606
615
|
for i, var in enumerate(variables):
|
|
607
616
|
loadings_dict[var] = [round(float(x), 6) for x in loadings[i]]
|
|
608
617
|
|
|
609
|
-
|
|
618
|
+
variance_result = fa.get_factor_variance()
|
|
619
|
+
if isinstance(variance_result, tuple):
|
|
620
|
+
ev = variance_result[0]
|
|
621
|
+
v = variance_result[1] if len(variance_result) > 1 else variance_result[0]
|
|
622
|
+
cumulative = variance_result[2] if len(variance_result) > 2 else None
|
|
623
|
+
else:
|
|
624
|
+
ev = variance_result
|
|
625
|
+
v = variance_result
|
|
626
|
+
cumulative = None
|
|
610
627
|
|
|
611
628
|
communalities = fa.get_communalities()
|
|
612
629
|
uniquenesses = fa.get_uniquenesses()
|
|
@@ -623,7 +640,7 @@ def run_efa(data_json, variables_json, n_factors, rotation='varimax', method='mi
|
|
|
623
640
|
'loadings': loadings_dict,
|
|
624
641
|
'eigenvalues': [round(float(x), 6) for x in eigenvalues],
|
|
625
642
|
'variance': [round(float(x), 6) for x in ev],
|
|
626
|
-
'cumulativeVariance': [round(float(sum(v[:i+1])), 6) for i in range(len(v))],
|
|
643
|
+
'cumulativeVariance': [round(float(x), 6) for x in cumulative] if cumulative is not None else [round(float(sum(v[:i+1])), 6) for i in range(len(v))],
|
|
627
644
|
'communalities': comm_dict,
|
|
628
645
|
'uniquenesses': uniq_dict,
|
|
629
646
|
'nFactors': n_factors,
|
package/dist/stats-worker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stats-worker.js","sources":["../src/python/descriptive.ts","../src/python/compare-means.ts","../src/python/regression.ts","../src/python/classify.ts","../src/python/dimension.ts","../src/python/scale.ts","../src/worker/stats-worker.ts"],"sourcesContent":[null,null,null,null,null,null,null],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stats-worker.js","sources":["../src/python/descriptive.ts","../src/python/compare-means.ts","../src/python/regression.ts","../src/python/classify.ts","../src/python/dimension.ts","../src/python/scale.ts","../src/worker/stats-worker.ts"],"sourcesContent":[null,null,null,null,null,null,null],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@winm2m/inferential-stats-js",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "A headless JavaScript SDK for advanced statistical analysis in the browser using WebAssembly (Pyodide). Performs SPSS-level inferential statistics entirely client-side with no backend required.",
|
|
5
5
|
"author": "Youngjune Kwon <yjkwon@winm2m.com>",
|
|
6
6
|
"license": "MIT",
|