qesuite 1.0.34 → 1.0.35
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/dist/index.d.mts +16 -9
- package/dist/index.d.ts +16 -9
- package/dist/index.js +136 -51
- package/dist/index.mjs +136 -51
- package/index.ts +132 -55
- package/package.json +1 -1
- package/versions/1_0_35.md +1 -0
package/dist/index.d.mts
CHANGED
|
@@ -593,24 +593,30 @@ declare const Distributions: {
|
|
|
593
593
|
* @param scale [OPTIONAL] (σ): The scale parameter of the specified distribution. The scale parameter of the normal distribution is equivalent to the Standard Deviation.
|
|
594
594
|
*/
|
|
595
595
|
pdf(x: number, location?: number, scale?: number): number;
|
|
596
|
-
|
|
597
|
-
Test(data: number[]): {
|
|
598
|
-
RJ: number;
|
|
599
|
-
critical: number;
|
|
600
|
-
};
|
|
601
|
-
Critical(data: number[]): number;
|
|
602
|
-
};
|
|
596
|
+
Chebyshev(data: number[], spec: Specification): number;
|
|
603
597
|
JarqueBera(data: number[]): {
|
|
604
598
|
JB: number;
|
|
605
599
|
p: number;
|
|
606
600
|
};
|
|
607
|
-
Chebyshev(data: number[], spec: Specification): number;
|
|
608
|
-
Skewness(data: any): number;
|
|
609
601
|
Kurtosis(data: any): number;
|
|
610
602
|
KolmogorovSmirnov(data: any): {
|
|
611
603
|
KS: number;
|
|
612
604
|
p: any;
|
|
613
605
|
};
|
|
606
|
+
Lilliefors: {
|
|
607
|
+
Test(data: number[]): {
|
|
608
|
+
KS: number;
|
|
609
|
+
p: number;
|
|
610
|
+
};
|
|
611
|
+
p(KS: number, N: number): number;
|
|
612
|
+
};
|
|
613
|
+
RyanJoiner: {
|
|
614
|
+
Test(data: number[]): {
|
|
615
|
+
RJ: number;
|
|
616
|
+
critical: number;
|
|
617
|
+
};
|
|
618
|
+
Critical(data: number[]): number;
|
|
619
|
+
};
|
|
614
620
|
ShapiroWilk: {
|
|
615
621
|
Test(data: number[], expanded?: boolean): {
|
|
616
622
|
W: number;
|
|
@@ -623,6 +629,7 @@ declare const Distributions: {
|
|
|
623
629
|
pValues: number[];
|
|
624
630
|
};
|
|
625
631
|
};
|
|
632
|
+
Skewness(data: any): number;
|
|
626
633
|
};
|
|
627
634
|
T: {
|
|
628
635
|
/**
|
package/dist/index.d.ts
CHANGED
|
@@ -593,24 +593,30 @@ declare const Distributions: {
|
|
|
593
593
|
* @param scale [OPTIONAL] (σ): The scale parameter of the specified distribution. The scale parameter of the normal distribution is equivalent to the Standard Deviation.
|
|
594
594
|
*/
|
|
595
595
|
pdf(x: number, location?: number, scale?: number): number;
|
|
596
|
-
|
|
597
|
-
Test(data: number[]): {
|
|
598
|
-
RJ: number;
|
|
599
|
-
critical: number;
|
|
600
|
-
};
|
|
601
|
-
Critical(data: number[]): number;
|
|
602
|
-
};
|
|
596
|
+
Chebyshev(data: number[], spec: Specification): number;
|
|
603
597
|
JarqueBera(data: number[]): {
|
|
604
598
|
JB: number;
|
|
605
599
|
p: number;
|
|
606
600
|
};
|
|
607
|
-
Chebyshev(data: number[], spec: Specification): number;
|
|
608
|
-
Skewness(data: any): number;
|
|
609
601
|
Kurtosis(data: any): number;
|
|
610
602
|
KolmogorovSmirnov(data: any): {
|
|
611
603
|
KS: number;
|
|
612
604
|
p: any;
|
|
613
605
|
};
|
|
606
|
+
Lilliefors: {
|
|
607
|
+
Test(data: number[]): {
|
|
608
|
+
KS: number;
|
|
609
|
+
p: number;
|
|
610
|
+
};
|
|
611
|
+
p(KS: number, N: number): number;
|
|
612
|
+
};
|
|
613
|
+
RyanJoiner: {
|
|
614
|
+
Test(data: number[]): {
|
|
615
|
+
RJ: number;
|
|
616
|
+
critical: number;
|
|
617
|
+
};
|
|
618
|
+
Critical(data: number[]): number;
|
|
619
|
+
};
|
|
614
620
|
ShapiroWilk: {
|
|
615
621
|
Test(data: number[], expanded?: boolean): {
|
|
616
622
|
W: number;
|
|
@@ -623,6 +629,7 @@ declare const Distributions: {
|
|
|
623
629
|
pValues: number[];
|
|
624
630
|
};
|
|
625
631
|
};
|
|
632
|
+
Skewness(data: any): number;
|
|
626
633
|
};
|
|
627
634
|
T: {
|
|
628
635
|
/**
|
package/dist/index.js
CHANGED
|
@@ -1501,43 +1501,6 @@ var Distributions = {
|
|
|
1501
1501
|
pdf(x, location = 0, scale = 1) {
|
|
1502
1502
|
return 1 / (scale * Math.sqrt(2 * Math.PI)) * Math.exp(-0.5 * Math.pow((x - location) / scale, 2));
|
|
1503
1503
|
},
|
|
1504
|
-
RyanJoiner: {
|
|
1505
|
-
Test(data) {
|
|
1506
|
-
let N = data.length;
|
|
1507
|
-
let Z = [];
|
|
1508
|
-
let Y = [...data].sort(function(a, b) {
|
|
1509
|
-
return a - b;
|
|
1510
|
-
});
|
|
1511
|
-
let numSum = 0;
|
|
1512
|
-
let denSum = 0;
|
|
1513
|
-
let mean = Mean(data);
|
|
1514
|
-
let variance = Math.pow(StDev.S(data), 2);
|
|
1515
|
-
for (let i = 0; i < N; i++) {
|
|
1516
|
-
Z[i] = Distributions.Normal.inv((i + 1 - 0.375) / (N + 0.25));
|
|
1517
|
-
numSum += Z[i] * (Y[i] - mean);
|
|
1518
|
-
denSum += Math.pow(Z[i], 2);
|
|
1519
|
-
}
|
|
1520
|
-
let RJ = numSum / Math.sqrt(variance * (N - 1) * denSum);
|
|
1521
|
-
return {
|
|
1522
|
-
RJ,
|
|
1523
|
-
critical: Distributions.Normal.RyanJoiner.Critical(data)
|
|
1524
|
-
};
|
|
1525
|
-
},
|
|
1526
|
-
Critical(data) {
|
|
1527
|
-
let N = data.length;
|
|
1528
|
-
return 1.0063 - 0.6118 / N + 1.3505 / Math.pow(N, 2) - 0.1288 / Math.pow(N, 0.5);
|
|
1529
|
-
}
|
|
1530
|
-
},
|
|
1531
|
-
JarqueBera(data) {
|
|
1532
|
-
let N = data.length;
|
|
1533
|
-
let S = Distributions.Normal.Skewness(data);
|
|
1534
|
-
let K = Distributions.Normal.Kurtosis(data);
|
|
1535
|
-
let JB = N / 6 * (Math.pow(S, 2) + 0.25 * Math.pow(K, 2));
|
|
1536
|
-
return {
|
|
1537
|
-
JB,
|
|
1538
|
-
p: Distributions.ChiSq.RightTail(JB, 2)
|
|
1539
|
-
};
|
|
1540
|
-
},
|
|
1541
1504
|
Chebyshev(data, spec) {
|
|
1542
1505
|
let mean = Mean(data);
|
|
1543
1506
|
let standard_deviation = StDev.S(data);
|
|
@@ -1551,18 +1514,15 @@ var Distributions = {
|
|
|
1551
1514
|
}
|
|
1552
1515
|
return min / (10 * standard_deviation);
|
|
1553
1516
|
},
|
|
1554
|
-
|
|
1517
|
+
JarqueBera(data) {
|
|
1555
1518
|
let N = data.length;
|
|
1556
|
-
let
|
|
1557
|
-
let
|
|
1558
|
-
let
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
}
|
|
1563
|
-
let num = numsum * N;
|
|
1564
|
-
let den = (N - 2) * (N - 1) * Math.pow(StDev.S(data), 3);
|
|
1565
|
-
return num / den;
|
|
1519
|
+
let S = Distributions.Normal.Skewness(data);
|
|
1520
|
+
let K = Distributions.Normal.Kurtosis(data);
|
|
1521
|
+
let JB = N / 6 * (Math.pow(S, 2) + 0.25 * Math.pow(K, 2));
|
|
1522
|
+
return {
|
|
1523
|
+
JB,
|
|
1524
|
+
p: Distributions.ChiSq.RightTail(JB, 2)
|
|
1525
|
+
};
|
|
1566
1526
|
},
|
|
1567
1527
|
Kurtosis(data) {
|
|
1568
1528
|
let N = data.length;
|
|
@@ -1595,6 +1555,121 @@ var Distributions = {
|
|
|
1595
1555
|
p
|
|
1596
1556
|
};
|
|
1597
1557
|
},
|
|
1558
|
+
Lilliefors: {
|
|
1559
|
+
Test(data) {
|
|
1560
|
+
let KS = Distributions.Normal.KolmogorovSmirnov(data).KS;
|
|
1561
|
+
let p = Distributions.Normal.Lilliefors.p(KS, data.length);
|
|
1562
|
+
return {
|
|
1563
|
+
KS,
|
|
1564
|
+
p
|
|
1565
|
+
};
|
|
1566
|
+
},
|
|
1567
|
+
p(KS, N) {
|
|
1568
|
+
let pSelections = [];
|
|
1569
|
+
let pChart = [
|
|
1570
|
+
[0.3027, 0.3216, 0.3456, 0.3754, 0.4129],
|
|
1571
|
+
[0.2893, 0.3027, 0.3188, 0.3427, 0.3959],
|
|
1572
|
+
[0.2694, 0.2816, 0.2982, 0.3245, 0.3728],
|
|
1573
|
+
[0.2521, 0.2641, 0.2802, 0.3041, 0.3504],
|
|
1574
|
+
[0.2387, 0.2502, 0.2649, 0.2875, 0.3331],
|
|
1575
|
+
[0.2273, 0.2382, 0.2522, 0.2744, 0.3162],
|
|
1576
|
+
[0.2171, 0.2273, 0.241, 0.2616, 0.3037],
|
|
1577
|
+
[0.208, 0.2179, 0.2306, 0.2506, 0.2905],
|
|
1578
|
+
[0.2004, 0.2101, 0.2228, 0.2426, 0.2812],
|
|
1579
|
+
[0.1932, 0.2025, 0.2147, 0.2337, 0.2714],
|
|
1580
|
+
[0.1869, 0.1959, 0.2077, 0.2257, 0.2627],
|
|
1581
|
+
[0.1811, 0.1899, 0.2016, 0.2196, 0.2545],
|
|
1582
|
+
[0.1758, 0.1843, 0.1956, 0.2128, 0.2477],
|
|
1583
|
+
[0.1711, 0.1794, 0.1902, 0.2071, 0.2408],
|
|
1584
|
+
[0.1666, 0.1747, 0.1852, 0.2018, 0.2345],
|
|
1585
|
+
[0.1624, 0.17, 0.1803, 0.1965, 0.2285],
|
|
1586
|
+
[0.1589, 0.1666, 0.1764, 0.192, 0.2226],
|
|
1587
|
+
[0.1553, 0.1629, 0.1726, 0.1881, 0.219],
|
|
1588
|
+
[0.1517, 0.1592, 0.169, 0.184, 0.2141],
|
|
1589
|
+
[0.1484, 0.1555, 0.165, 0.1798, 0.209],
|
|
1590
|
+
[0.1458, 0.1527, 0.1619, 0.1766, 0.2053],
|
|
1591
|
+
[0.1429, 0.1498, 0.1589, 0.1726, 0.201],
|
|
1592
|
+
[0.1406, 0.1472, 0.1562, 0.1699, 0.1985],
|
|
1593
|
+
[0.1381, 0.1448, 0.1533, 0.1665, 0.1941],
|
|
1594
|
+
[0.1358, 0.1423, 0.1509, 0.1641, 0.1911],
|
|
1595
|
+
[0.1334, 0.1398, 0.1483, 0.1614, 0.1886],
|
|
1596
|
+
[0.1315, 0.1378, 0.146, 0.159, 0.1848],
|
|
1597
|
+
[0.1291, 0.1353, 0.1432, 0.1559, 0.182],
|
|
1598
|
+
[0.1274, 0.1336, 0.1415, 0.1542, 0.1798],
|
|
1599
|
+
[0.1254, 0.1314, 0.1392, 0.1518, 0.177],
|
|
1600
|
+
[0.1236, 0.1295, 0.1373, 0.1497, 0.1747],
|
|
1601
|
+
[0.122, 0.1278, 0.1356, 0.1478, 0.172],
|
|
1602
|
+
[0.1203, 0.126, 0.1336, 0.1454, 0.1695],
|
|
1603
|
+
[0.1188, 0.1245, 0.132, 0.1436, 0.1677],
|
|
1604
|
+
[0.1174, 0.123, 0.1303, 0.1421, 0.1653],
|
|
1605
|
+
[0.1159, 0.1214, 0.1288, 0.1402, 0.1634],
|
|
1606
|
+
[0.1147, 0.1204, 0.1275, 0.1386, 0.1616],
|
|
1607
|
+
[0.1131, 0.1186, 0.1258, 0.1373, 0.1599],
|
|
1608
|
+
[0.1119, 0.1172, 0.1244, 0.1353, 0.1573],
|
|
1609
|
+
[0.1106, 0.1159, 0.1228, 0.1339, 0.1556],
|
|
1610
|
+
[0.1095, 0.1148, 0.1216, 0.1322, 0.1542],
|
|
1611
|
+
[0.1083, 0.1134, 0.1204, 0.1309, 0.1525],
|
|
1612
|
+
[0.1071, 0.1123, 0.1189, 0.1293, 0.1512],
|
|
1613
|
+
[0.1062, 0.1113, 0.118, 0.1282, 0.1499],
|
|
1614
|
+
[0.1047, 0.1098, 0.1165, 0.1269, 0.1476],
|
|
1615
|
+
[0.104, 0.1089, 0.1153, 0.1256, 0.1463],
|
|
1616
|
+
[0.103, 0.1079, 0.1142, 0.1246, 0.1457]
|
|
1617
|
+
];
|
|
1618
|
+
if (N > 50) {
|
|
1619
|
+
pSelections = [0.741 / N, 0.775 / N, 0.819 / N, 0.895 / N, 1.035 / N];
|
|
1620
|
+
} else
|
|
1621
|
+
[
|
|
1622
|
+
pSelections = pChart[N - 1]
|
|
1623
|
+
];
|
|
1624
|
+
let pValues = [0.2, 0.15, 0.1, 0.05, 0.01];
|
|
1625
|
+
let selectedValue = 0;
|
|
1626
|
+
pSelections.forEach((crit) => {
|
|
1627
|
+
if (KS >= crit) {
|
|
1628
|
+
selectedValue += 1;
|
|
1629
|
+
}
|
|
1630
|
+
});
|
|
1631
|
+
if (selectedValue === 0) {
|
|
1632
|
+
return 1;
|
|
1633
|
+
}
|
|
1634
|
+
;
|
|
1635
|
+
if (selectedValue === 5) {
|
|
1636
|
+
return 0;
|
|
1637
|
+
}
|
|
1638
|
+
;
|
|
1639
|
+
let p1 = pValues[selectedValue - 1];
|
|
1640
|
+
let p2 = pValues[selectedValue];
|
|
1641
|
+
let KS1 = pSelections[selectedValue - 1];
|
|
1642
|
+
let KS2 = pSelections[selectedValue];
|
|
1643
|
+
return p1 + (p2 - p1) / (KS2 - KS1) * (KS - KS1);
|
|
1644
|
+
}
|
|
1645
|
+
},
|
|
1646
|
+
RyanJoiner: {
|
|
1647
|
+
Test(data) {
|
|
1648
|
+
let N = data.length;
|
|
1649
|
+
let Z = [];
|
|
1650
|
+
let Y = [...data].sort(function(a, b) {
|
|
1651
|
+
return a - b;
|
|
1652
|
+
});
|
|
1653
|
+
let numSum = 0;
|
|
1654
|
+
let denSum = 0;
|
|
1655
|
+
let mean = Mean(data);
|
|
1656
|
+
let variance = Math.pow(StDev.S(data), 2);
|
|
1657
|
+
for (let i = 0; i < N; i++) {
|
|
1658
|
+
Z[i] = Distributions.Normal.inv((i + 1 - 0.375) / (N + 0.25));
|
|
1659
|
+
numSum += Z[i] * (Y[i] - mean);
|
|
1660
|
+
denSum += Math.pow(Z[i], 2);
|
|
1661
|
+
}
|
|
1662
|
+
let RJ = numSum / Math.sqrt(variance * (N - 1) * denSum);
|
|
1663
|
+
return {
|
|
1664
|
+
RJ,
|
|
1665
|
+
critical: Distributions.Normal.RyanJoiner.Critical(data)
|
|
1666
|
+
};
|
|
1667
|
+
},
|
|
1668
|
+
Critical(data) {
|
|
1669
|
+
let N = data.length;
|
|
1670
|
+
return 1.0063 - 0.6118 / N + 1.3505 / Math.pow(N, 2) - 0.1288 / Math.pow(N, 0.5);
|
|
1671
|
+
}
|
|
1672
|
+
},
|
|
1598
1673
|
ShapiroWilk: {
|
|
1599
1674
|
Test(data, expanded) {
|
|
1600
1675
|
let N = data.length;
|
|
@@ -1605,9 +1680,6 @@ var Distributions = {
|
|
|
1605
1680
|
sorted.forEach((s) => {
|
|
1606
1681
|
SS += Math.pow(s - mean, 2);
|
|
1607
1682
|
});
|
|
1608
|
-
if (N < 12) {
|
|
1609
|
-
expanded = false;
|
|
1610
|
-
}
|
|
1611
1683
|
if (expanded || N > 50) {
|
|
1612
1684
|
let u = 1 / Math.sqrt(N);
|
|
1613
1685
|
let m_i = [];
|
|
@@ -1736,6 +1808,19 @@ var Distributions = {
|
|
|
1736
1808
|
],
|
|
1737
1809
|
pValues: [0.01, 0.02, 0.05, 0.1, 0.5, 0.9, 0.95, 0.98, 0.99]
|
|
1738
1810
|
}
|
|
1811
|
+
},
|
|
1812
|
+
Skewness(data) {
|
|
1813
|
+
let N = data.length;
|
|
1814
|
+
let mean = Mean(data);
|
|
1815
|
+
let numsum = 0;
|
|
1816
|
+
let densum = 0;
|
|
1817
|
+
for (let i = 0; i < N; i++) {
|
|
1818
|
+
let inner = data[i] - mean;
|
|
1819
|
+
numsum += Math.pow(inner, 3);
|
|
1820
|
+
}
|
|
1821
|
+
let num = numsum * N;
|
|
1822
|
+
let den = (N - 2) * (N - 1) * Math.pow(StDev.S(data), 3);
|
|
1823
|
+
return num / den;
|
|
1739
1824
|
}
|
|
1740
1825
|
},
|
|
1741
1826
|
T: {
|
package/dist/index.mjs
CHANGED
|
@@ -1415,43 +1415,6 @@ var Distributions = {
|
|
|
1415
1415
|
pdf(x, location = 0, scale = 1) {
|
|
1416
1416
|
return 1 / (scale * Math.sqrt(2 * Math.PI)) * Math.exp(-0.5 * Math.pow((x - location) / scale, 2));
|
|
1417
1417
|
},
|
|
1418
|
-
RyanJoiner: {
|
|
1419
|
-
Test(data) {
|
|
1420
|
-
let N = data.length;
|
|
1421
|
-
let Z = [];
|
|
1422
|
-
let Y = [...data].sort(function(a, b) {
|
|
1423
|
-
return a - b;
|
|
1424
|
-
});
|
|
1425
|
-
let numSum = 0;
|
|
1426
|
-
let denSum = 0;
|
|
1427
|
-
let mean = Mean(data);
|
|
1428
|
-
let variance = Math.pow(StDev.S(data), 2);
|
|
1429
|
-
for (let i = 0; i < N; i++) {
|
|
1430
|
-
Z[i] = Distributions.Normal.inv((i + 1 - 0.375) / (N + 0.25));
|
|
1431
|
-
numSum += Z[i] * (Y[i] - mean);
|
|
1432
|
-
denSum += Math.pow(Z[i], 2);
|
|
1433
|
-
}
|
|
1434
|
-
let RJ = numSum / Math.sqrt(variance * (N - 1) * denSum);
|
|
1435
|
-
return {
|
|
1436
|
-
RJ,
|
|
1437
|
-
critical: Distributions.Normal.RyanJoiner.Critical(data)
|
|
1438
|
-
};
|
|
1439
|
-
},
|
|
1440
|
-
Critical(data) {
|
|
1441
|
-
let N = data.length;
|
|
1442
|
-
return 1.0063 - 0.6118 / N + 1.3505 / Math.pow(N, 2) - 0.1288 / Math.pow(N, 0.5);
|
|
1443
|
-
}
|
|
1444
|
-
},
|
|
1445
|
-
JarqueBera(data) {
|
|
1446
|
-
let N = data.length;
|
|
1447
|
-
let S = Distributions.Normal.Skewness(data);
|
|
1448
|
-
let K = Distributions.Normal.Kurtosis(data);
|
|
1449
|
-
let JB = N / 6 * (Math.pow(S, 2) + 0.25 * Math.pow(K, 2));
|
|
1450
|
-
return {
|
|
1451
|
-
JB,
|
|
1452
|
-
p: Distributions.ChiSq.RightTail(JB, 2)
|
|
1453
|
-
};
|
|
1454
|
-
},
|
|
1455
1418
|
Chebyshev(data, spec) {
|
|
1456
1419
|
let mean = Mean(data);
|
|
1457
1420
|
let standard_deviation = StDev.S(data);
|
|
@@ -1465,18 +1428,15 @@ var Distributions = {
|
|
|
1465
1428
|
}
|
|
1466
1429
|
return min / (10 * standard_deviation);
|
|
1467
1430
|
},
|
|
1468
|
-
|
|
1431
|
+
JarqueBera(data) {
|
|
1469
1432
|
let N = data.length;
|
|
1470
|
-
let
|
|
1471
|
-
let
|
|
1472
|
-
let
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
}
|
|
1477
|
-
let num = numsum * N;
|
|
1478
|
-
let den = (N - 2) * (N - 1) * Math.pow(StDev.S(data), 3);
|
|
1479
|
-
return num / den;
|
|
1433
|
+
let S = Distributions.Normal.Skewness(data);
|
|
1434
|
+
let K = Distributions.Normal.Kurtosis(data);
|
|
1435
|
+
let JB = N / 6 * (Math.pow(S, 2) + 0.25 * Math.pow(K, 2));
|
|
1436
|
+
return {
|
|
1437
|
+
JB,
|
|
1438
|
+
p: Distributions.ChiSq.RightTail(JB, 2)
|
|
1439
|
+
};
|
|
1480
1440
|
},
|
|
1481
1441
|
Kurtosis(data) {
|
|
1482
1442
|
let N = data.length;
|
|
@@ -1509,6 +1469,121 @@ var Distributions = {
|
|
|
1509
1469
|
p
|
|
1510
1470
|
};
|
|
1511
1471
|
},
|
|
1472
|
+
Lilliefors: {
|
|
1473
|
+
Test(data) {
|
|
1474
|
+
let KS = Distributions.Normal.KolmogorovSmirnov(data).KS;
|
|
1475
|
+
let p = Distributions.Normal.Lilliefors.p(KS, data.length);
|
|
1476
|
+
return {
|
|
1477
|
+
KS,
|
|
1478
|
+
p
|
|
1479
|
+
};
|
|
1480
|
+
},
|
|
1481
|
+
p(KS, N) {
|
|
1482
|
+
let pSelections = [];
|
|
1483
|
+
let pChart = [
|
|
1484
|
+
[0.3027, 0.3216, 0.3456, 0.3754, 0.4129],
|
|
1485
|
+
[0.2893, 0.3027, 0.3188, 0.3427, 0.3959],
|
|
1486
|
+
[0.2694, 0.2816, 0.2982, 0.3245, 0.3728],
|
|
1487
|
+
[0.2521, 0.2641, 0.2802, 0.3041, 0.3504],
|
|
1488
|
+
[0.2387, 0.2502, 0.2649, 0.2875, 0.3331],
|
|
1489
|
+
[0.2273, 0.2382, 0.2522, 0.2744, 0.3162],
|
|
1490
|
+
[0.2171, 0.2273, 0.241, 0.2616, 0.3037],
|
|
1491
|
+
[0.208, 0.2179, 0.2306, 0.2506, 0.2905],
|
|
1492
|
+
[0.2004, 0.2101, 0.2228, 0.2426, 0.2812],
|
|
1493
|
+
[0.1932, 0.2025, 0.2147, 0.2337, 0.2714],
|
|
1494
|
+
[0.1869, 0.1959, 0.2077, 0.2257, 0.2627],
|
|
1495
|
+
[0.1811, 0.1899, 0.2016, 0.2196, 0.2545],
|
|
1496
|
+
[0.1758, 0.1843, 0.1956, 0.2128, 0.2477],
|
|
1497
|
+
[0.1711, 0.1794, 0.1902, 0.2071, 0.2408],
|
|
1498
|
+
[0.1666, 0.1747, 0.1852, 0.2018, 0.2345],
|
|
1499
|
+
[0.1624, 0.17, 0.1803, 0.1965, 0.2285],
|
|
1500
|
+
[0.1589, 0.1666, 0.1764, 0.192, 0.2226],
|
|
1501
|
+
[0.1553, 0.1629, 0.1726, 0.1881, 0.219],
|
|
1502
|
+
[0.1517, 0.1592, 0.169, 0.184, 0.2141],
|
|
1503
|
+
[0.1484, 0.1555, 0.165, 0.1798, 0.209],
|
|
1504
|
+
[0.1458, 0.1527, 0.1619, 0.1766, 0.2053],
|
|
1505
|
+
[0.1429, 0.1498, 0.1589, 0.1726, 0.201],
|
|
1506
|
+
[0.1406, 0.1472, 0.1562, 0.1699, 0.1985],
|
|
1507
|
+
[0.1381, 0.1448, 0.1533, 0.1665, 0.1941],
|
|
1508
|
+
[0.1358, 0.1423, 0.1509, 0.1641, 0.1911],
|
|
1509
|
+
[0.1334, 0.1398, 0.1483, 0.1614, 0.1886],
|
|
1510
|
+
[0.1315, 0.1378, 0.146, 0.159, 0.1848],
|
|
1511
|
+
[0.1291, 0.1353, 0.1432, 0.1559, 0.182],
|
|
1512
|
+
[0.1274, 0.1336, 0.1415, 0.1542, 0.1798],
|
|
1513
|
+
[0.1254, 0.1314, 0.1392, 0.1518, 0.177],
|
|
1514
|
+
[0.1236, 0.1295, 0.1373, 0.1497, 0.1747],
|
|
1515
|
+
[0.122, 0.1278, 0.1356, 0.1478, 0.172],
|
|
1516
|
+
[0.1203, 0.126, 0.1336, 0.1454, 0.1695],
|
|
1517
|
+
[0.1188, 0.1245, 0.132, 0.1436, 0.1677],
|
|
1518
|
+
[0.1174, 0.123, 0.1303, 0.1421, 0.1653],
|
|
1519
|
+
[0.1159, 0.1214, 0.1288, 0.1402, 0.1634],
|
|
1520
|
+
[0.1147, 0.1204, 0.1275, 0.1386, 0.1616],
|
|
1521
|
+
[0.1131, 0.1186, 0.1258, 0.1373, 0.1599],
|
|
1522
|
+
[0.1119, 0.1172, 0.1244, 0.1353, 0.1573],
|
|
1523
|
+
[0.1106, 0.1159, 0.1228, 0.1339, 0.1556],
|
|
1524
|
+
[0.1095, 0.1148, 0.1216, 0.1322, 0.1542],
|
|
1525
|
+
[0.1083, 0.1134, 0.1204, 0.1309, 0.1525],
|
|
1526
|
+
[0.1071, 0.1123, 0.1189, 0.1293, 0.1512],
|
|
1527
|
+
[0.1062, 0.1113, 0.118, 0.1282, 0.1499],
|
|
1528
|
+
[0.1047, 0.1098, 0.1165, 0.1269, 0.1476],
|
|
1529
|
+
[0.104, 0.1089, 0.1153, 0.1256, 0.1463],
|
|
1530
|
+
[0.103, 0.1079, 0.1142, 0.1246, 0.1457]
|
|
1531
|
+
];
|
|
1532
|
+
if (N > 50) {
|
|
1533
|
+
pSelections = [0.741 / N, 0.775 / N, 0.819 / N, 0.895 / N, 1.035 / N];
|
|
1534
|
+
} else
|
|
1535
|
+
[
|
|
1536
|
+
pSelections = pChart[N - 1]
|
|
1537
|
+
];
|
|
1538
|
+
let pValues = [0.2, 0.15, 0.1, 0.05, 0.01];
|
|
1539
|
+
let selectedValue = 0;
|
|
1540
|
+
pSelections.forEach((crit) => {
|
|
1541
|
+
if (KS >= crit) {
|
|
1542
|
+
selectedValue += 1;
|
|
1543
|
+
}
|
|
1544
|
+
});
|
|
1545
|
+
if (selectedValue === 0) {
|
|
1546
|
+
return 1;
|
|
1547
|
+
}
|
|
1548
|
+
;
|
|
1549
|
+
if (selectedValue === 5) {
|
|
1550
|
+
return 0;
|
|
1551
|
+
}
|
|
1552
|
+
;
|
|
1553
|
+
let p1 = pValues[selectedValue - 1];
|
|
1554
|
+
let p2 = pValues[selectedValue];
|
|
1555
|
+
let KS1 = pSelections[selectedValue - 1];
|
|
1556
|
+
let KS2 = pSelections[selectedValue];
|
|
1557
|
+
return p1 + (p2 - p1) / (KS2 - KS1) * (KS - KS1);
|
|
1558
|
+
}
|
|
1559
|
+
},
|
|
1560
|
+
RyanJoiner: {
|
|
1561
|
+
Test(data) {
|
|
1562
|
+
let N = data.length;
|
|
1563
|
+
let Z = [];
|
|
1564
|
+
let Y = [...data].sort(function(a, b) {
|
|
1565
|
+
return a - b;
|
|
1566
|
+
});
|
|
1567
|
+
let numSum = 0;
|
|
1568
|
+
let denSum = 0;
|
|
1569
|
+
let mean = Mean(data);
|
|
1570
|
+
let variance = Math.pow(StDev.S(data), 2);
|
|
1571
|
+
for (let i = 0; i < N; i++) {
|
|
1572
|
+
Z[i] = Distributions.Normal.inv((i + 1 - 0.375) / (N + 0.25));
|
|
1573
|
+
numSum += Z[i] * (Y[i] - mean);
|
|
1574
|
+
denSum += Math.pow(Z[i], 2);
|
|
1575
|
+
}
|
|
1576
|
+
let RJ = numSum / Math.sqrt(variance * (N - 1) * denSum);
|
|
1577
|
+
return {
|
|
1578
|
+
RJ,
|
|
1579
|
+
critical: Distributions.Normal.RyanJoiner.Critical(data)
|
|
1580
|
+
};
|
|
1581
|
+
},
|
|
1582
|
+
Critical(data) {
|
|
1583
|
+
let N = data.length;
|
|
1584
|
+
return 1.0063 - 0.6118 / N + 1.3505 / Math.pow(N, 2) - 0.1288 / Math.pow(N, 0.5);
|
|
1585
|
+
}
|
|
1586
|
+
},
|
|
1512
1587
|
ShapiroWilk: {
|
|
1513
1588
|
Test(data, expanded) {
|
|
1514
1589
|
let N = data.length;
|
|
@@ -1519,9 +1594,6 @@ var Distributions = {
|
|
|
1519
1594
|
sorted.forEach((s) => {
|
|
1520
1595
|
SS += Math.pow(s - mean, 2);
|
|
1521
1596
|
});
|
|
1522
|
-
if (N < 12) {
|
|
1523
|
-
expanded = false;
|
|
1524
|
-
}
|
|
1525
1597
|
if (expanded || N > 50) {
|
|
1526
1598
|
let u = 1 / Math.sqrt(N);
|
|
1527
1599
|
let m_i = [];
|
|
@@ -1650,6 +1722,19 @@ var Distributions = {
|
|
|
1650
1722
|
],
|
|
1651
1723
|
pValues: [0.01, 0.02, 0.05, 0.1, 0.5, 0.9, 0.95, 0.98, 0.99]
|
|
1652
1724
|
}
|
|
1725
|
+
},
|
|
1726
|
+
Skewness(data) {
|
|
1727
|
+
let N = data.length;
|
|
1728
|
+
let mean = Mean(data);
|
|
1729
|
+
let numsum = 0;
|
|
1730
|
+
let densum = 0;
|
|
1731
|
+
for (let i = 0; i < N; i++) {
|
|
1732
|
+
let inner = data[i] - mean;
|
|
1733
|
+
numsum += Math.pow(inner, 3);
|
|
1734
|
+
}
|
|
1735
|
+
let num = numsum * N;
|
|
1736
|
+
let den = (N - 2) * (N - 1) * Math.pow(StDev.S(data), 3);
|
|
1737
|
+
return num / den;
|
|
1653
1738
|
}
|
|
1654
1739
|
},
|
|
1655
1740
|
T: {
|
package/index.ts
CHANGED
|
@@ -1581,45 +1581,6 @@ export const Distributions = {
|
|
|
1581
1581
|
pdf(x: number, location: number = 0, scale: number = 1) {
|
|
1582
1582
|
return (1 / (scale * Math.sqrt(2 * Math.PI))) * Math.exp(-.5 * Math.pow((x - location) / scale, 2))
|
|
1583
1583
|
},
|
|
1584
|
-
RyanJoiner: {
|
|
1585
|
-
Test(data: number[]){
|
|
1586
|
-
let N = data.length;
|
|
1587
|
-
|
|
1588
|
-
let Z: number[] = [];
|
|
1589
|
-
let Y = [...data].sort(function (a, b){return a-b});
|
|
1590
|
-
let numSum = 0;
|
|
1591
|
-
let denSum = 0;
|
|
1592
|
-
let mean = Mean(data);
|
|
1593
|
-
let variance = Math.pow(StDev.S(data), 2);
|
|
1594
|
-
|
|
1595
|
-
for(let i = 0; i < N; i++){
|
|
1596
|
-
Z[i] = Distributions.Normal.inv((i + 1 - 0.375)/ (N + 0.25))
|
|
1597
|
-
numSum += Z[i]*(Y[i]-mean);
|
|
1598
|
-
denSum += Math.pow(Z[i], 2);
|
|
1599
|
-
}
|
|
1600
|
-
|
|
1601
|
-
let RJ = numSum/Math.sqrt(variance*(N-1)*denSum);
|
|
1602
|
-
return {
|
|
1603
|
-
RJ: RJ,
|
|
1604
|
-
critical: Distributions.Normal.RyanJoiner.Critical(data)
|
|
1605
|
-
}
|
|
1606
|
-
},
|
|
1607
|
-
Critical(data: number[]){
|
|
1608
|
-
let N = data.length;
|
|
1609
|
-
return 1.0063-(0.6118/N)+(1.3505/Math.pow(N, 2))-(.1288/Math.pow(N, .5))
|
|
1610
|
-
}
|
|
1611
|
-
},
|
|
1612
|
-
JarqueBera(data: number[]){
|
|
1613
|
-
let N = data.length;
|
|
1614
|
-
let S = Distributions.Normal.Skewness(data);
|
|
1615
|
-
let K = Distributions.Normal.Kurtosis(data);
|
|
1616
|
-
|
|
1617
|
-
let JB = (N/6)*(Math.pow(S, 2) + .25 * Math.pow(K, 2));
|
|
1618
|
-
return {
|
|
1619
|
-
JB: JB,
|
|
1620
|
-
p: Distributions.ChiSq.RightTail(JB, 2)
|
|
1621
|
-
}
|
|
1622
|
-
},
|
|
1623
1584
|
Chebyshev(data: number[], spec: Specification){
|
|
1624
1585
|
let mean = Mean(data);
|
|
1625
1586
|
let standard_deviation =StDev.S(data);
|
|
@@ -1633,19 +1594,16 @@ export const Distributions = {
|
|
|
1633
1594
|
}
|
|
1634
1595
|
return min/(10*standard_deviation);
|
|
1635
1596
|
},
|
|
1636
|
-
|
|
1637
|
-
// SRC: https://www.omnicalculator.com/statistics/skewness#what-are-skewness-and-kurtosis
|
|
1597
|
+
JarqueBera(data: number[]){
|
|
1638
1598
|
let N = data.length;
|
|
1639
|
-
let
|
|
1640
|
-
let
|
|
1641
|
-
|
|
1642
|
-
|
|
1643
|
-
|
|
1644
|
-
|
|
1599
|
+
let S = Distributions.Normal.Skewness(data);
|
|
1600
|
+
let K = Distributions.Normal.Kurtosis(data);
|
|
1601
|
+
|
|
1602
|
+
let JB = (N/6)*(Math.pow(S, 2) + .25 * Math.pow(K, 2));
|
|
1603
|
+
return {
|
|
1604
|
+
JB: JB,
|
|
1605
|
+
p: Distributions.ChiSq.RightTail(JB, 2)
|
|
1645
1606
|
}
|
|
1646
|
-
let num = numsum * N;
|
|
1647
|
-
let den = (N - 2) * (N - 1) * Math.pow(StDev.S(data),3)
|
|
1648
|
-
return num/den;
|
|
1649
1607
|
},
|
|
1650
1608
|
Kurtosis(data){
|
|
1651
1609
|
// SRC: https://www.omnicalculator.com/statistics/skewness#what-are-skewness-and-kurtosis
|
|
@@ -1680,6 +1638,115 @@ export const Distributions = {
|
|
|
1680
1638
|
p: p
|
|
1681
1639
|
};
|
|
1682
1640
|
},
|
|
1641
|
+
Lilliefors:{
|
|
1642
|
+
Test(data: number[]){
|
|
1643
|
+
let KS = Distributions.Normal.KolmogorovSmirnov(data).KS;
|
|
1644
|
+
let p = Distributions.Normal.Lilliefors.p(KS, data.length);
|
|
1645
|
+
return {
|
|
1646
|
+
KS: KS,
|
|
1647
|
+
p: p
|
|
1648
|
+
}
|
|
1649
|
+
},
|
|
1650
|
+
p(KS: number, N: number){
|
|
1651
|
+
let pSelections: number[] = [];
|
|
1652
|
+
let pChart = [
|
|
1653
|
+
[0.3027,0.3216,0.3456,0.3754,0.4129],
|
|
1654
|
+
[0.2893,0.3027,0.3188,0.3427,0.3959],
|
|
1655
|
+
[0.2694,0.2816,0.2982,0.3245,0.3728],
|
|
1656
|
+
[0.2521,0.2641,0.2802,0.3041,0.3504],
|
|
1657
|
+
[0.2387,0.2502,0.2649,0.2875,0.3331],
|
|
1658
|
+
[0.2273,0.2382,0.2522,0.2744,0.3162],
|
|
1659
|
+
[0.2171,0.2273,0.241,0.2616,0.3037],
|
|
1660
|
+
[0.208,0.2179,0.2306,0.2506,0.2905],
|
|
1661
|
+
[0.2004,0.2101,0.2228,0.2426,0.2812],
|
|
1662
|
+
[0.1932,0.2025,0.2147,0.2337,0.2714],
|
|
1663
|
+
[0.1869,0.1959,0.2077,0.2257,0.2627],
|
|
1664
|
+
[0.1811,0.1899,0.2016,0.2196,0.2545],
|
|
1665
|
+
[0.1758,0.1843,0.1956,0.2128,0.2477],
|
|
1666
|
+
[0.1711,0.1794,0.1902,0.2071,0.2408],
|
|
1667
|
+
[0.1666,0.1747,0.1852,0.2018,0.2345],
|
|
1668
|
+
[0.1624,0.17,0.1803,0.1965,0.2285],
|
|
1669
|
+
[0.1589,0.1666,0.1764,0.192,0.2226],
|
|
1670
|
+
[0.1553,0.1629,0.1726,0.1881,0.219],
|
|
1671
|
+
[0.1517,0.1592,0.169,0.184,0.2141],
|
|
1672
|
+
[0.1484,0.1555,0.165,0.1798,0.209],
|
|
1673
|
+
[0.1458,0.1527,0.1619,0.1766,0.2053],
|
|
1674
|
+
[0.1429,0.1498,0.1589,0.1726,0.201],
|
|
1675
|
+
[0.1406,0.1472,0.1562,0.1699,0.1985],
|
|
1676
|
+
[0.1381,0.1448,0.1533,0.1665,0.1941],
|
|
1677
|
+
[0.1358,0.1423,0.1509,0.1641,0.1911],
|
|
1678
|
+
[0.1334,0.1398,0.1483,0.1614,0.1886],
|
|
1679
|
+
[0.1315,0.1378,0.146,0.159,0.1848],
|
|
1680
|
+
[0.1291,0.1353,0.1432,0.1559,0.182],
|
|
1681
|
+
[0.1274,0.1336,0.1415,0.1542,0.1798],
|
|
1682
|
+
[0.1254,0.1314,0.1392,0.1518,0.177],
|
|
1683
|
+
[0.1236,0.1295,0.1373,0.1497,0.1747],
|
|
1684
|
+
[0.122,0.1278,0.1356,0.1478,0.172],
|
|
1685
|
+
[0.1203,0.126,0.1336,0.1454,0.1695],
|
|
1686
|
+
[0.1188,0.1245,0.132,0.1436,0.1677],
|
|
1687
|
+
[0.1174,0.123,0.1303,0.1421,0.1653],
|
|
1688
|
+
[0.1159,0.1214,0.1288,0.1402,0.1634],
|
|
1689
|
+
[0.1147,0.1204,0.1275,0.1386,0.1616],
|
|
1690
|
+
[0.1131,0.1186,0.1258,0.1373,0.1599],
|
|
1691
|
+
[0.1119,0.1172,0.1244,0.1353,0.1573],
|
|
1692
|
+
[0.1106,0.1159,0.1228,0.1339,0.1556],
|
|
1693
|
+
[0.1095,0.1148,0.1216,0.1322,0.1542],
|
|
1694
|
+
[0.1083,0.1134,0.1204,0.1309,0.1525],
|
|
1695
|
+
[0.1071,0.1123,0.1189,0.1293,0.1512],
|
|
1696
|
+
[0.1062,0.1113,0.118,0.1282,0.1499],
|
|
1697
|
+
[0.1047,0.1098,0.1165,0.1269,0.1476],
|
|
1698
|
+
[0.104,0.1089,0.1153,0.1256,0.1463],
|
|
1699
|
+
[0.103,0.1079,0.1142,0.1246,0.1457],
|
|
1700
|
+
]
|
|
1701
|
+
if(N > 50){
|
|
1702
|
+
pSelections = [.741/N, .775/N, .819/N, .895/N, 1.035/N]
|
|
1703
|
+
}else[
|
|
1704
|
+
pSelections = pChart[N-1]
|
|
1705
|
+
]
|
|
1706
|
+
let pValues = [.20,.15,.10,.05,.01];
|
|
1707
|
+
let selectedValue = 0;
|
|
1708
|
+
pSelections.forEach(crit => {
|
|
1709
|
+
if(KS >= crit){
|
|
1710
|
+
selectedValue += 1
|
|
1711
|
+
}
|
|
1712
|
+
})
|
|
1713
|
+
if(selectedValue === 0){return 1};
|
|
1714
|
+
if(selectedValue === 5){return 0};
|
|
1715
|
+
let p1 = pValues[selectedValue-1];
|
|
1716
|
+
let p2 = pValues[selectedValue];
|
|
1717
|
+
let KS1 = pSelections[selectedValue-1];
|
|
1718
|
+
let KS2 = pSelections[selectedValue];
|
|
1719
|
+
return p1 + (p2-p1)/(KS2-KS1)*(KS-KS1);
|
|
1720
|
+
}
|
|
1721
|
+
},
|
|
1722
|
+
RyanJoiner: {
|
|
1723
|
+
Test(data: number[]){
|
|
1724
|
+
let N = data.length;
|
|
1725
|
+
|
|
1726
|
+
let Z: number[] = [];
|
|
1727
|
+
let Y = [...data].sort(function (a, b){return a-b});
|
|
1728
|
+
let numSum = 0;
|
|
1729
|
+
let denSum = 0;
|
|
1730
|
+
let mean = Mean(data);
|
|
1731
|
+
let variance = Math.pow(StDev.S(data), 2);
|
|
1732
|
+
|
|
1733
|
+
for(let i = 0; i < N; i++){
|
|
1734
|
+
Z[i] = Distributions.Normal.inv((i + 1 - 0.375)/ (N + 0.25))
|
|
1735
|
+
numSum += Z[i]*(Y[i]-mean);
|
|
1736
|
+
denSum += Math.pow(Z[i], 2);
|
|
1737
|
+
}
|
|
1738
|
+
|
|
1739
|
+
let RJ = numSum/Math.sqrt(variance*(N-1)*denSum);
|
|
1740
|
+
return {
|
|
1741
|
+
RJ: RJ,
|
|
1742
|
+
critical: Distributions.Normal.RyanJoiner.Critical(data)
|
|
1743
|
+
}
|
|
1744
|
+
},
|
|
1745
|
+
Critical(data: number[]){
|
|
1746
|
+
let N = data.length;
|
|
1747
|
+
return 1.0063-(0.6118/N)+(1.3505/Math.pow(N, 2))-(.1288/Math.pow(N, .5))
|
|
1748
|
+
}
|
|
1749
|
+
},
|
|
1683
1750
|
ShapiroWilk:{
|
|
1684
1751
|
Test(data: number[], expanded?: boolean){
|
|
1685
1752
|
let N = data.length;
|
|
@@ -1692,10 +1759,6 @@ export const Distributions = {
|
|
|
1692
1759
|
sorted.forEach(s => {
|
|
1693
1760
|
SS += Math.pow(s - mean, 2);
|
|
1694
1761
|
})
|
|
1695
|
-
|
|
1696
|
-
if(N < 12){
|
|
1697
|
-
expanded = false;
|
|
1698
|
-
}
|
|
1699
1762
|
// ShapiroWilk Royston Expanded Approximation
|
|
1700
1763
|
if(expanded || N > 50){
|
|
1701
1764
|
let u = 1/Math.sqrt(N);
|
|
@@ -1829,7 +1892,21 @@ export const Distributions = {
|
|
|
1829
1892
|
[0.93,0.938,0.947,0.955,0.974,0.985,0.988,0.99,0.991,]],
|
|
1830
1893
|
pValues: [0.01,0.02,0.05,0.1,0.5,0.9,0.95,0.98,0.99,]
|
|
1831
1894
|
}
|
|
1832
|
-
}
|
|
1895
|
+
},
|
|
1896
|
+
Skewness(data){
|
|
1897
|
+
// SRC: https://www.omnicalculator.com/statistics/skewness#what-are-skewness-and-kurtosis
|
|
1898
|
+
let N = data.length;
|
|
1899
|
+
let mean = Mean(data);
|
|
1900
|
+
let numsum = 0;
|
|
1901
|
+
let densum = 0;
|
|
1902
|
+
for(let i = 0; i < N; i++){
|
|
1903
|
+
let inner = data[i] - mean;
|
|
1904
|
+
numsum += Math.pow(inner, 3);
|
|
1905
|
+
}
|
|
1906
|
+
let num = numsum * N;
|
|
1907
|
+
let den = (N - 2) * (N - 1) * Math.pow(StDev.S(data),3)
|
|
1908
|
+
return num/den;
|
|
1909
|
+
},
|
|
1833
1910
|
},
|
|
1834
1911
|
T: {
|
|
1835
1912
|
/**
|
package/package.json
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
- Added Lilliefors test for normality
|