Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
73 changes: 73 additions & 0 deletions lib/node_modules/@stdlib/stats/base/dists/hypergeometric/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,80 @@ var y = dist.cdf( 0.5 );
var objectKeys = require( '@stdlib/utils/keys' );
var hypergeometric = require( '@stdlib/stats/base/dists/hypergeometric' );


console.log( objectKeys( hypergeometric ) );

// Example 1: Basic distribution properties
var N1 = 50; // population size
var K1 = 20; // number of successes in population
var n1 = 10; // number of draws

console.log( '\nExample 1: Basic distribution properties' );
console.log( 'Parameters: N=%d, K=%d, n=%d', N1, K1, n1 );
console.log( 'Mean: %d', hypergeometric.mean( N1, K1, n1 ) );
console.log( 'Variance: %d', hypergeometric.variance( N1, K1, n1 ) );
console.log( 'Skewness: %d', hypergeometric.skewness( N1, K1, n1 ) );
console.log( 'Excess Kurtosis: %d', hypergeometric.kurtosis( N1, K1, n1 ) );
console.log( 'Standard Deviation: %d', hypergeometric.stdev( N1, K1, n1 ) );

// Example 2: PMF and CDF calculations
var N2 = 100;
var K2 = 40;
var n2 = 25;

console.log( '\nExample 2: PMF and CDF calculations' );
console.log( 'Parameters: N=%d, K=%d, n=%d', N2, K2, n2 );
for ( var x = 0; x <= 10; x += 2 ) {
console.log( 'P(X = %d): %d', x, hypergeometric.pmf( x, N2, K2, n2 ) );
console.log( 'P(X <= %d): %d', x, hypergeometric.cdf( x, N2, K2, n2 ) );
}

// Example 3: Quantile function
var N3 = 80;
var K3 = 30;
var n3 = 20;

console.log( '\nExample 3: Quantile function' );
console.log( 'Parameters: N=%d, K=%d, n=%d', N3, K3, n3 );
var probabilities = [ 0.1, 0.25, 0.5, 0.75, 0.9 ];
for ( var i = 0; i < probabilities.length; i++ ) {
var p = probabilities[i];
console.log( 'Q(%d): %d', p, hypergeometric.quantile( p, N3, K3, n3 ) );
}

// Example 4: Random number generation
var N4 = 60;
var K4 = 25;
var n4 = 15;

console.log( '\nExample 4: Random number generation' );
console.log( 'Parameters: N=%d, K=%d, n=%d', N4, K4, n4 );
var Hypergeometric = hypergeometric.Hypergeometric;
var dist = new Hypergeometric( N4, K4, n4 );
for ( var j = 0; j < 10; j++ ) {
console.log( 'Random variate %d: %d', j+1, dist.random() );
}

// Example 5: Log PMF calculations
var N5 = 200;
var K5 = 80;
var n5 = 50;

console.log( '\nExample 5: Log PMF calculations' );
console.log( 'Parameters: N=%d, K=%d, n=%d', N5, K5, n5 );
for ( var y = 10; y <= 30; y += 5 ) {
console.log( 'log(P(X = %d)): %d', y, hypergeometric.logpmf( y, N5, K5, n5 ) );
}

// Example 6: Mode calculation
var N6 = 75;
var K6 = 35;
var n6 = 20;

console.log( '\nExample 6: Mode calculation' );
console.log( 'Parameters: N=%d, K=%d, n=%d', N6, K6, n6 );
console.log( 'Mode: %d', hypergeometric.mode( N6, K6, n6 ) );

```

</section>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,77 @@
var objectKeys = require( '@stdlib/utils/keys' );
var hypergeometric = require( './../lib' );

// Print namespace contents
console.log( 'Namespace contents:' );
console.log( objectKeys( hypergeometric ) );

// Example 1: Basic distribution properties
var N1 = 50; // population size
var K1 = 20; // number of successes in population
var n1 = 10; // number of draws

console.log( '\nExample 1: Basic distribution properties' );
console.log( 'Parameters: N=%d, K=%d, n=%d', N1, K1, n1 );
console.log( 'Mean: %d', hypergeometric.mean( N1, K1, n1 ) );
console.log( 'Variance: %d', hypergeometric.variance( N1, K1, n1 ) );
console.log( 'Skewness: %d', hypergeometric.skewness( N1, K1, n1 ) );
console.log( 'Excess Kurtosis: %d', hypergeometric.kurtosis( N1, K1, n1 ) );
console.log( 'Standard Deviation: %d', hypergeometric.stdev( N1, K1, n1 ) );

// Example 2: PMF and CDF calculations
var N2 = 100;
var K2 = 40;
var n2 = 25;

console.log( '\nExample 2: PMF and CDF calculations' );
console.log( 'Parameters: N=%d, K=%d, n=%d', N2, K2, n2 );
for ( var x = 0; x <= 10; x += 2 ) {
console.log( 'P(X = %d): %d', x, hypergeometric.pmf( x, N2, K2, n2 ) );
console.log( 'P(X <= %d): %d', x, hypergeometric.cdf( x, N2, K2, n2 ) );
}

// Example 3: Quantile function
var N3 = 80;
var K3 = 30;
var n3 = 20;

console.log( '\nExample 3: Quantile function' );
console.log( 'Parameters: N=%d, K=%d, n=%d', N3, K3, n3 );
var probabilities = [ 0.1, 0.25, 0.5, 0.75, 0.9 ];
for ( var i = 0; i < probabilities.length; i++ ) {
var p = probabilities[i];
console.log( 'Q(%d): %d', p, hypergeometric.quantile( p, N3, K3, n3 ) );
}

// Example 4: Random number generation
var N4 = 60;
var K4 = 25;
var n4 = 15;

console.log( '\nExample 4: Random number generation' );
console.log( 'Parameters: N=%d, K=%d, n=%d', N4, K4, n4 );
var Hypergeometric = hypergeometric.Hypergeometric;
var dist = new Hypergeometric( N4, K4, n4 );
for ( var j = 0; j < 10; j++ ) {
console.log( 'Random variate %d: %d', j+1, dist.random() );
}

// Example 5: Log PMF calculations
var N5 = 200;
var K5 = 80;
var n5 = 50;

console.log( '\nExample 5: Log PMF calculations' );
console.log( 'Parameters: N=%d, K=%d, n=%d', N5, K5, n5 );
for ( var y = 10; y <= 30; y += 5 ) {
console.log( 'log(P(X = %d)): %d', y, hypergeometric.logpmf( y, N5, K5, n5 ) );
}

// Example 6: Mode calculation
var N6 = 75;
var K6 = 35;
var n6 = 20;

console.log( '\nExample 6: Mode calculation' );
console.log( 'Parameters: N=%d, K=%d, n=%d', N6, K6, n6 );
console.log( 'Mode: %d', hypergeometric.mode( N6, K6, n6 ) );