@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 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 both a crosstabs analysis and a one-way ANOVA.
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
- <pre id="output">Initializing…</pre>
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
- const log = (msg) => { output.textContent += '\n' + msg; };
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
- log(`[${stage}] ${progress}% ${message}`);
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
- log('Initialization complete!');
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
- log(`Loaded ${data.length} rows of survey data.`);
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
- // 6. Run Crosstabs (gender × favorite_music)
176
- const crosstabResult = await stats.crosstabs({
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
- log('\n— Crosstabs (gender × favorite_music) —');
182
- log(`Chi-Square: ${crosstabResult.data.chiSquare.toFixed(4)}`);
183
- log(`p-value: ${crosstabResult.data.pValue.toFixed(4)}`);
184
- log(`Cramér's V: ${crosstabResult.data.cramersV.toFixed(4)}`);
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
- log('\n— One-Way ANOVA (music_satisfaction by age_group) —');
193
- log(`F-statistic: ${anovaResult.data.fStatistic.toFixed(4)}`);
194
- log(`p-value: ${anovaResult.data.pValue.toFixed(4)}`);
195
- log(`η² (eta²): ${anovaResult.data.etaSquared.toFixed(4)}`);
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
- log('Error: ' + err.message);
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 kmo_all, kmo_model = calculate_kmo(X)\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 ev, v = fa.get_factor_variance()\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(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";
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";
@@ -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
- kmo_all, kmo_model = calculate_kmo(X)
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
- ev, v = fa.get_factor_variance()
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,
@@ -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.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",