Skip to content

Latest commit

 

History

History
260 lines (165 loc) · 6.21 KB

File metadata and controls

260 lines (165 loc) · 6.21 KB

Probability Density Function

Arcsine distribution probability density function (PDF).

The probability density function (PDF) for an arcsine random variable is

$$f(x;a,b)=\begin{cases} {\frac{1}{\pi {\sqrt{(x-a)(b-x)}}}} & \text{for } x \in [a,b] \\ 0 & \text{otherwise} \end{cases}$$

where a is the minimum support and b is the maximum support of the distribution. The parameters must satisfy a < b.

Usage

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

pdf( x, a, b )

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

var y = pdf( 2.0, 0.0, 4.0 );
// returns ~0.159

y = pdf( 5.0, 0.0, 4.0 );
// returns 0.0

y = pdf( 0.25, 0.0, 1.0 );
// returns ~0.735

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

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

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

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

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

var y = pdf( 2.5, 3.0, 2.0 );
// returns NaN

y = pdf( 2.5, 3.0, 3.0 );
// returns NaN

pdf.factory( a, b )

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

var myPDF = pdf.factory( 6.0, 7.0 );
var y = myPDF( 7.0 );
// returns Infinity

y = myPDF( 5.0 );
// returns 0.0

Examples

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

var opts = {
    'dtype': 'float64'
};
var x = uniform( 25, -10.0, 10.0, opts );
var a = uniform( x.length, -20.0, 0.0, opts );
var b = uniform( x.length, 0.0, 40.0, opts );

logEachMap( 'x: %0.4f, a: %0.4f, b: %0.4f, f(x;a,b): %0.4f', x, a, b, pdf );

C APIs

Usage

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

stdlib_base_dists_arcsine_pdf( x, a, b )

Evaluates the probability density function (PDF) for an arcsine distribution.

double out = stdlib_base_dists_arcsine_pdf( 2, 0.0, 4.0 );
// returns ~0.159

The function accepts the following arguments:

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

Examples

#include "stdlib/stats/base/dists/arcsine/pdf.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 x;
    double a;
    double b;
    double y;
    int i;

    for ( i = 0; i < 25; i++ ) {
        x = random_uniform( -10.0, 10.0 );
        a = random_uniform( -20.0, 0.0 );
        b = random_uniform( a, a+40.0 );
        y = stdlib_base_dists_arcsine_pdf( x, a, b );
        printf( "x: %lf, a: %lf, b: %lf, f(x;a,b): %lf\n", x, a, b, y );
    }
}