Skip to content

Commit d987696

Browse files
committed
stats.ts
1 parent 2b034bb commit d987696

File tree

1 file changed

+28
-26
lines changed

1 file changed

+28
-26
lines changed

src/stats.ts

Lines changed: 28 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,15 @@
1919
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
2020
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
2121
// SOFTWARE.
22+
//
23+
// Type definitions added for Observable Plot
2224

23-
export function ibetainv(p, a, b) {
24-
var EPS = 1e-8;
25-
var a1 = a - 1;
26-
var b1 = b - 1;
27-
var j = 0;
28-
var lna, lnb, pp, t, u, err, x, al, h, w, afac;
25+
export function ibetainv(p: number, a: number, b: number) {
26+
const EPS = 1e-8;
27+
const a1 = a - 1;
28+
const b1 = b - 1;
29+
let j = 0;
30+
let lna, lnb, pp, t, u, err, x, al, h, w;
2931
if (p <= 0) return 0;
3032
if (p >= 1) return 1;
3133
if (a >= 1 && b >= 1) {
@@ -46,10 +48,10 @@ export function ibetainv(p, a, b) {
4648
if (p < t / w) x = Math.pow(a * w * p, 1 / a);
4749
else x = 1 - Math.pow(b * w * (1 - p), 1 / b);
4850
}
49-
afac = -gammaln(a) - gammaln(b) + gammaln(a + b);
51+
const afac = -gammaln(a) - gammaln(b) + gammaln(a + b);
5052
for (; j < 10; j++) {
5153
if (x === 0 || x === 1) return x;
52-
err = ibeta(x, a, b) - p;
54+
err = (ibeta(x, a, b) as number) - p;
5355
t = Math.exp(a1 * Math.log(x) + b1 * Math.log(1 - x) + afac);
5456
u = err / t;
5557
x -= t = u / (1 - 0.5 * Math.min(1, u * (a1 / x - b1 / (1 - x))));
@@ -60,9 +62,9 @@ export function ibetainv(p, a, b) {
6062
return x;
6163
}
6264

63-
export function ibeta(x, a, b) {
65+
export function ibeta(x: number, a: number, b: number) {
6466
// Factors in front of the continued fraction.
65-
var bt =
67+
const bt =
6668
x === 0 || x === 1 ? 0 : Math.exp(gammaln(a + b) - gammaln(a) - gammaln(b) + a * Math.log(x) + b * Math.log(1 - x));
6769
if (x < 0 || x > 1) return false;
6870
if (x < (a + 1) / (a + b + 2))
@@ -72,15 +74,15 @@ export function ibeta(x, a, b) {
7274
return 1 - (bt * betacf(1 - x, b, a)) / b;
7375
}
7476

75-
export function betacf(x, a, b) {
76-
var fpmin = 1e-30;
77-
var m = 1;
78-
var qab = a + b;
79-
var qap = a + 1;
80-
var qam = a - 1;
81-
var c = 1;
82-
var d = 1 - (qab * x) / qap;
83-
var m2, aa, del, h;
77+
export function betacf(x: number, a: number, b: number) {
78+
const fpmin = 1e-30;
79+
let m = 1;
80+
const qab = a + b;
81+
const qap = a + 1;
82+
const qam = a - 1;
83+
let c = 1;
84+
let d = 1 - (qab * x) / qap;
85+
let m2, aa, del, h;
8486

8587
// These q's will be used in factors that occur in the coefficients
8688
if (Math.abs(d) < fpmin) d = fpmin;
@@ -112,22 +114,22 @@ export function betacf(x, a, b) {
112114
return h;
113115
}
114116

115-
export function gammaln(x) {
116-
var j = 0;
117-
var cof = [
117+
export function gammaln(x: number) {
118+
let j = 0;
119+
const cof = [
118120
76.18009172947146, -86.5053203294167, 24.01409824083091, -1.231739572450155, 0.1208650973866179e-2,
119121
-0.5395239384953e-5
120122
];
121-
var ser = 1.000000000190015;
122-
var xx, y, tmp;
123+
let ser = 1.000000000190015;
124+
let xx, y, tmp;
123125
tmp = (y = xx = x) + 5.5;
124126
tmp -= (xx + 0.5) * Math.log(tmp);
125127
for (; j < 6; j++) ser += cof[j] / ++y;
126128
return Math.log((2.506628274631 * ser) / xx) - tmp;
127129
}
128130

129-
export function qt(p, dof) {
130-
var x = ibetainv(2 * Math.min(p, 1 - p), 0.5 * dof, 0.5);
131+
export function qt(p: number, dof: number) {
132+
let x = ibetainv(2 * Math.min(p, 1 - p), 0.5 * dof, 0.5);
131133
x = Math.sqrt((dof * (1 - x)) / x);
132134
return p > 0.5 ? x : -x;
133135
}

0 commit comments

Comments
 (0)