Skip to content

Latest commit

 

History

History
262 lines (166 loc) · 6.19 KB

File metadata and controls

262 lines (166 loc) · 6.19 KB

Quantile Function

Arcsine distribution quantile function.

The quantile function for an arcsine random variable is

$$Q(p) = a + ( b - a ) \sin^2 \left( \tfrac{\pi}{2} p \right)$$

for 0 <= p <= 1, where a is the minimum support and b is the maximum support. The parameters must satisfy a < b.

Usage

var quantile = require( '@stdlib/stats/base/dists/arcsine/quantile' );

quantile( p, a, b )

Evaluates the quantile function for an arcsine distribution with parameters a (minimum support) and b (maximum support).

var y = quantile( 0.8, 0.0, 1.0 );
// returns ~0.905

y = quantile( 0.5, 0.0, 10.0 );
// returns ~5.0

If provided a probability p outside the interval [0,1], the function returns NaN.

var y = quantile( 1.9, 0.0, 1.0 );
// returns NaN

y = quantile( -0.1, 0.0, 1.0 );
// returns NaN

If provided NaN as any argument, the function returns NaN.

var y = quantile( NaN, 0.0, 1.0 );
// returns NaN

y = quantile( 0.0, NaN, 1.0 );
// returns NaN

y = quantile( 0.0, 0.0, NaN );
// returns NaN

If provided a >= b, the function returns NaN.

var y = quantile( 0.4, 2.0, 1.0 );
// returns NaN

quantile.factory( a, b )

Returns a function for evaluating the quantile function of an arcsine distribution with parameters a (minimum support) and b (maximum support).

var myquantile = quantile.factory( 0.0, 4.0 );

var y = myquantile( 0.8 );
// returns ~3.618

Examples

var uniform = require( '@stdlib/random/array/uniform' );
var logEachMap = require( '@stdlib/console/log-each-map' );
var quantile = require( '@stdlib/stats/base/dists/arcsine/quantile' );

var opts = {
    'dtype': 'float64'
};
var p = uniform( 25, 0.0, 1.0, opts );
var a = uniform( p.length, 0.0, 10.0, opts );
var b = uniform( a.length, 10.0, 50.0, opts );

logEachMap( 'p: %0.4f, a: %0.4f, b: %0.4f, Q(p;a,b): %0.4f', p, a, b, quantile );

C APIs

Usage

#include "stdlib/stats/base/dists/arcsine/quantile.h"

stdlib_base_dists_arcsine_quantile( p, a, b )

Evaluates the quantile function for an arcsine distribution.

double out = stdlib_base_dists_arcsine_quantile( 0.8, 0.0, 1.0 );
// returns ~0.905

The function accepts the following arguments:

  • p: [in] double input value.
  • a: [in] double minimum support.
  • b: [in] double maximum support.
double stdlib_base_dists_arcsine_quantile( const double p, const double a, const double b );

Examples

#include "stdlib/stats/base/dists/arcsine/quantile.h"
#include <stdlib.h>
#include <stdio.h>

static double random_uniform( const double min, const double max ) {
    double v = (double)rand() / ( (double)RAND_MAX + 1.0 );
    return min + ( v*(max-min) );
}

int main(void){
    double a;
    double b;
    double p;
    double y;
    int i;

    for ( i = 0; i < 25; i++ ) {
        p = random_uniform( 0.0, 1.0 );
        a = random_uniform( -20.0, 0.0);
        b = random_uniform( a, a+40.0 );
        y = stdlib_base_dists_arcsine_quantile( p, a, b );
        printf( "p: %lf, a: %lf, b: %lf, Q(p;a,b): %lf\n", p, a, b, y );
    }
}