Skip to content

Commit 432ac8b

Browse files
committed
Merge branch 'develop' of https://github.com/stdlib-js/stdlib into develop
2 parents 9ab835a + fae19c2 commit 432ac8b

49 files changed

Lines changed: 1131 additions & 109 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

docs/migration-guides/simple-statistics/data/simple_statistics_3_0_0.csv

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ ckmeans,(planned)
5353
equalIntervalBreaks,N/A
5454
chunk,(planned)
5555
mixin,(planned)
56-
chiSquaredGoodnessOfFit,math/statistics/chigof
56+
chiSquaredGoodnessOfFit,math/statistics/chi2gof
5757
epsilon,math/constants/float64-epsilon
5858
factorial,math/base/special/factorial
5959
uniqueCountSorted,N/A

lib/node_modules/@stdlib/math/base/dist/betaprime/lib/index.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,15 @@ setReadOnly( betaprime, 'mean', require( '@stdlib/math/base/dist/betaprime/mean'
5454
*/
5555
setReadOnly( betaprime, 'pdf', require( '@stdlib/math/base/dist/betaprime/pdf' ) );
5656

57+
/**
58+
* @name quantile
59+
* @memberof betaprime
60+
* @readonly
61+
* @type {Function}
62+
* @see {@link module:@stdlib/math/base/dist/betaprime/quantile}
63+
*/
64+
setReadOnly( betaprime, 'quantile', require( '@stdlib/math/base/dist/betaprime/quantile' ) );
65+
5766
/**
5867
* @name skewness
5968
* @memberof betaprime
Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
# Quantile Function
2+
3+
> [Beta prime][betaprime] distribution [quantile function][quantile-function].
4+
5+
6+
<section class="intro">
7+
8+
The [quantile function][quantile-function] for a [beta prime][betaprime] random variable with first shape parameter `α > 0` and second shape parameter `β > 0` is
9+
10+
<!-- <equation class="equation" label="eq:betaprime_quantile_function" align="center" raw="Q(p;\alpha,\beta)\,= \frac{G^{-1}(p)}{1-G^{-1}(p)}" alt="Quantile function for a beta prime distribution."> -->
11+
12+
<div class="equation" align="center" data-raw-text="Q(p;\alpha,\beta)\,= \frac{G^{-1}(p)}{1-G^{-1}(p)}" data-equation="eq:betaprime_quantile_function">
13+
<img src="" alt="Quantile function for a beta prime distribution.">
14+
<br>
15+
</div>
16+
17+
<!-- </equation> -->
18+
19+
for `0 <= p <= 1`, where `G^-1` denotes the quantile function of a [beta][beta] random variable with parameters `α` and `β`.
20+
21+
</section>
22+
23+
<!-- /.intro -->
24+
25+
26+
<section class="usage">
27+
28+
## Usage
29+
30+
``` javascript
31+
var quantile = require( '@stdlib/math/base/dist/betaprime/quantile' );
32+
```
33+
34+
#### quantile( p, alpha, beta )
35+
36+
Evaluates the [quantile function][quantile-function] for a [beta prime][betaprime] distribution with parameters `alpha` (first shape parameter) and `beta` (second shape parameter).
37+
38+
``` javascript
39+
var y = quantile( 0.8, 2.0, 1.0 );
40+
// returns ~2.994
41+
42+
y = quantile( 0.5, 4.0, 2.0 );
43+
// returns ~1.836
44+
```
45+
46+
If provided a probability `p` outside the interval `[0,1]`, the function returns `NaN`.
47+
48+
``` javascript
49+
var y = quantile( 1.9, 1.0, 1.0 );
50+
// returns NaN
51+
52+
y = quantile( -0.1, 1.0, 1.0 );
53+
// returns NaN
54+
```
55+
56+
If provided `NaN` as any argument, the function returns `NaN`.
57+
58+
``` javascript
59+
var y = quantile( NaN, 1.0, 1.0 );
60+
// returns NaN
61+
62+
y = quantile( 0.5, NaN, 1.0 );
63+
// returns NaN
64+
65+
y = quantile( 0.5, 1.0, NaN );
66+
// returns NaN
67+
```
68+
69+
If provided `alpha <= 0`, the function returns `NaN`.
70+
71+
``` javascript
72+
var y = quantile( 0.4, -1.0, 1.0 );
73+
// returns NaN
74+
75+
y = quantile( 0.4, 0.0, 1.0 );
76+
// returns NaN
77+
```
78+
79+
If provided `beta <= 0`, the function returns `NaN`.
80+
81+
``` javascript
82+
var y = quantile( 0.4, 1.0, -1.0 );
83+
// returns NaN
84+
85+
y = quantile( 0.4, 1.0, 0.0 );
86+
// returns NaN
87+
```
88+
89+
#### quantile.factory( alpha, beta )
90+
91+
Returns a function for evaluating the [quantile function][quantile-function] of a [beta prime][betaprime] distribution with parameters `alpha` (first shape parameter) and `beta` (second shape parameter).
92+
93+
``` javascript
94+
var myQuantile = quantile.factory( 2.0, 2.0 );
95+
96+
var y = myQuantile( 0.8 );
97+
// returns ~2.483
98+
99+
y = myQuantile( 0.4 );
100+
// returns ~0.763
101+
```
102+
103+
</section>
104+
105+
<!-- /.usage -->
106+
107+
108+
<section class="examples">
109+
110+
## Examples
111+
112+
``` javascript
113+
var randu = require( '@stdlib/math/base/random/randu' );
114+
var EPS = require( '@stdlib/math/constants/float64-eps' );
115+
var quantile = require( '@stdlib/math/base/dist/betaprime/quantile' );
116+
117+
var alpha;
118+
var beta;
119+
var p;
120+
var y;
121+
var i;
122+
123+
for ( i = 0; i < 10; i++ ) {
124+
p = randu();
125+
alpha = ( randu()*5.0 ) + EPS;
126+
beta = ( randu()*5.0 ) + EPS;
127+
y = quantile( p, alpha, beta );
128+
console.log( 'p: %d, α: %d, β: %d, Q(p;α,β): %d', p.toFixed( 4 ), alpha.toFixed( 4 ), beta.toFixed( 4 ), y.toFixed( 4 ) );
129+
}
130+
```
131+
132+
</section>
133+
134+
<!-- /.examples -->
135+
136+
137+
<section class="links">
138+
139+
[beta]: https://en.wikipedia.org/wiki/Beta_distribution
140+
[betaprime]: https://en.wikipedia.org/wiki/Beta_prime_distribution
141+
[quantile-function]: https://en.wikipedia.org/wiki/Quantile_function
142+
143+
</section>
144+
145+
<!-- /.links -->
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
'use strict';
2+
3+
// MODULES //
4+
5+
var bench = require( '@stdlib/bench' );
6+
var randu = require( '@stdlib/math/base/random/randu' );
7+
var isnan = require( '@stdlib/math/base/assert/is-nan' );
8+
var EPS = require( '@stdlib/math/constants/float64-eps' );
9+
var pkg = require( './../package.json' ).name;
10+
var quantile = require( './../lib' );
11+
12+
13+
// MAIN //
14+
15+
bench( pkg, function benchmark( b ) {
16+
var alpha;
17+
var beta;
18+
var p;
19+
var y;
20+
var i;
21+
22+
b.tic();
23+
for ( i = 0; i < b.iterations; i++ ) {
24+
p = randu();
25+
alpha = ( randu()*100.0 ) + EPS;
26+
beta = ( randu()*100.0 ) + EPS;
27+
y = quantile( p, alpha, beta );
28+
if ( isnan( y ) ) {
29+
b.fail( 'should not return NaN' );
30+
}
31+
}
32+
b.toc();
33+
if ( isnan( y ) ) {
34+
b.fail( 'should not return NaN' );
35+
}
36+
b.pass( 'benchmark finished' );
37+
b.end();
38+
});
39+
40+
bench( pkg+':factory', function benchmark( b ) {
41+
var myQuantile;
42+
var alpha;
43+
var beta;
44+
var p;
45+
var y;
46+
var i;
47+
48+
alpha = 100.56789;
49+
beta = 55.54321;
50+
myQuantile = quantile.factory( alpha, beta );
51+
52+
b.tic();
53+
for ( i = 0; i < b.iterations; i++ ) {
54+
p = randu();
55+
y = myQuantile( p );
56+
if ( isnan( y ) ) {
57+
b.fail( 'should not return NaN' );
58+
}
59+
}
60+
b.toc();
61+
if ( isnan( y ) ) {
62+
b.fail( 'should not return NaN' );
63+
}
64+
b.pass( 'benchmark finished' );
65+
b.end();
66+
});
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
2+
{{alias}}( p, α, β )
3+
Evaluates the quantile function for a beta prime distribution with first
4+
shape parameter `α` and second shape parameter `β` at a probability `p`.
5+
6+
If `p < 0` or `p > 1`, the function returns `NaN`.
7+
8+
If provided `NaN` as any argument, the function returns `NaN`.
9+
10+
If `α <= 0` or `β <= 0`, the function returns `NaN`.
11+
12+
Parameters
13+
----------
14+
p: number
15+
Input value (probability).
16+
17+
α: number
18+
First shape parameter.
19+
20+
β: number
21+
Second shape parameter.
22+
23+
Returns
24+
-------
25+
out: number
26+
Evaluated quantile function.
27+
28+
Examples
29+
--------
30+
> var y = {{alias}}( 0.8, 2.0, 1.0 )
31+
~8.472
32+
> y = {{alias}}( 0.5, 4.0, 2.0 )
33+
~2.187
34+
> y = {{alias}}( 1.1, 1.0, 1.0 )
35+
NaN
36+
> y = {{alias}}( -0.2, 1.0, 1.0 )
37+
NaN
38+
39+
> y = {{alias}}( NaN, 1.0, 1.0 )
40+
NaN
41+
> y = {{alias}}( 0.5, NaN, 1.0 )
42+
NaN
43+
> y = {{alias}}( 0.5, 1.0, NaN )
44+
NaN
45+
46+
> y = {{alias}}( 0.5, -1.0, 1.0 )
47+
NaN
48+
> y = {{alias}}( 0.5, 1.0, -1.0 )
49+
NaN
50+
51+
52+
{{alias}}.factory( α, β )
53+
Returns a function for evaluating the quantile function of a beta prime
54+
distribution with first shape parameter `α` and second shape parameter `β`.
55+
56+
Parameters
57+
----------
58+
α: number
59+
First shape parameter.
60+
61+
β: number
62+
Second shape parameter.
63+
64+
Returns
65+
-------
66+
quantile: Function
67+
Quantile function.
68+
69+
Examples
70+
--------
71+
> var myQuantile = {{alias}}.factory( 2.0, 2.0 );
72+
> y = myQuantile( 0.8 )
73+
~2.483
74+
> y = myQuantile( 0.4 )
75+
~0.763
76+
77+
See Also
78+
--------
79+
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
'use strict';
2+
3+
var randu = require( '@stdlib/math/base/random/randu' );
4+
var EPS = require( '@stdlib/math/constants/float64-eps' );
5+
var quantile = require( './../lib' );
6+
7+
var alpha;
8+
var beta;
9+
var p;
10+
var y;
11+
var i;
12+
13+
for ( i = 0; i < 10; i++ ) {
14+
p = randu();
15+
alpha = ( randu()*5.0 ) + EPS;
16+
beta = ( randu()*5.0 ) + EPS;
17+
y = quantile( p, alpha, beta );
18+
console.log( 'p: %d, α: %d, β: %d, Q(p;α,β): %d', p.toFixed( 4 ), alpha.toFixed( 4 ), beta.toFixed( 4 ), y.toFixed( 4 ) );
19+
}

0 commit comments

Comments
 (0)