1- var tape = require ( "tape" ) ,
1+ var tape = require ( "tape-await " ) ,
22 skewness = require ( "./skewness" ) ,
33 kurtosis = require ( "./kurtosis" ) ,
44 d3 = Object . assign ( { } , require ( "../" ) , require ( "d3-array" ) ) ;
55
66require ( "./inDelta" ) ;
77
8- var mean = function ( n , p ) { return n * p ; } ;
9- var variance = function ( n , p ) { return n * p * ( 1 - p ) ; } ;
10- var skew = function ( n , p ) { return ( 1 - 2 * p ) / Math . sqrt ( variance ( n , p ) ) ; } ;
11- var kurt = function ( n , p ) { return ( 6 * Math . pow ( p , 2 ) - 6 * p + 1 ) / ( variance ( n , p ) ) ; } ;
8+ function mean ( n , p ) {
9+ return n * p ;
10+ }
1211
13- tape ( "randomBinomial(n, p) returns random binomial distributed numbers with a mean of n * p" , function ( test ) {
12+ function variance ( n , p ) {
13+ return n * p * ( 1 - p ) ;
14+ }
15+
16+ function skew ( n , p ) {
17+ return ( 1 - 2 * p ) / Math . sqrt ( variance ( n , p ) ) ;
18+ }
19+
20+ function kurt ( n , p ) {
21+ return ( 6 * Math . pow ( p , 2 ) - 6 * p + 1 ) / ( variance ( n , p ) ) ;
22+ }
23+
24+ tape ( "randomBinomial(n, p) returns random binomial distributed numbers with a mean of n * p" , test => {
1425 var randomBinomial = d3 . randomBinomial . source ( d3 . randomLcg ( 0.3994478770613372 ) ) ;
1526 test . inDelta ( d3 . mean ( d3 . range ( 10000 ) . map ( randomBinomial ( 100 , 1 ) ) ) , mean ( 100 , 1 ) , variance ( 100 , 1 ) ) ;
1627 test . inDelta ( d3 . mean ( d3 . range ( 10000 ) . map ( randomBinomial ( 100 , .5 ) ) ) , mean ( 100 , .5 ) , variance ( 100 , .5 ) ) ;
1728 test . inDelta ( d3 . mean ( d3 . range ( 10000 ) . map ( randomBinomial ( 100 , .25 ) ) ) , mean ( 100 , .25 ) , variance ( 100 , .25 ) ) ;
1829 test . inDelta ( d3 . mean ( d3 . range ( 10000 ) . map ( randomBinomial ( 100 , 0 ) ) ) , mean ( 100 , 0 ) , variance ( 100 , 0 ) ) ;
1930 test . inDelta ( d3 . mean ( d3 . range ( 10000 ) . map ( randomBinomial ( 0 , 0 ) ) ) , mean ( 0 , 0 ) , variance ( 0 , 0 ) ) ;
20- test . end ( ) ;
2131} ) ;
2232
23- tape ( "randomBinomial(n, p) returns random binomial distributed numbers with a variance of n * p * (1 - p)" , function ( test ) {
33+ tape ( "randomBinomial(n, p) returns random binomial distributed numbers with a variance of n * p * (1 - p)" , test => {
2434 var randomBinomial = d3 . randomBinomial . source ( d3 . randomLcg ( 0.7214876234380256 ) ) ;
2535 test . inDelta ( d3 . variance ( d3 . range ( 10000 ) . map ( randomBinomial ( 100 , 1 ) ) ) , variance ( 100 , 1 ) , 0 ) ;
2636 test . inDelta ( d3 . variance ( d3 . range ( 10000 ) . map ( randomBinomial ( 100 , .5 ) ) ) , variance ( 100 , .5 ) , 0.5 ) ;
2737 test . inDelta ( d3 . variance ( d3 . range ( 10000 ) . map ( randomBinomial ( 100 , .25 ) ) ) , variance ( 100 , .25 ) , 1 ) ;
2838 test . inDelta ( d3 . variance ( d3 . range ( 10000 ) . map ( randomBinomial ( 100 , 0 ) ) ) , variance ( 100 , 0 ) , 0 ) ;
2939 test . inDelta ( d3 . variance ( d3 . range ( 10000 ) . map ( randomBinomial ( 0 , 0 ) ) ) , variance ( 0 , 0 ) , 0 ) ;
30- test . end ( ) ;
3140} ) ;
3241
33- tape ( "randomBinomial(n, p) returns random binomial distributed numbers with a skewness of (1 - 2 * p) / sqrt(n * p * (1 - p))" , function ( test ) {
42+ tape ( "randomBinomial(n, p) returns random binomial distributed numbers with a skewness of (1 - 2 * p) / sqrt(n * p * (1 - p))" , test => {
3443 var randomBinomial = d3 . randomBinomial . source ( d3 . randomLcg ( 0.0646181509291679 ) ) ;
3544 test . inDelta ( skewness ( d3 . range ( 10000 ) . map ( randomBinomial ( 100 , .05 ) ) ) , skew ( 100 , .05 ) , 0.05 ) ;
3645 test . inDelta ( skewness ( d3 . range ( 10000 ) . map ( randomBinomial ( 100 , .10 ) ) ) , skew ( 100 , .10 ) , 0.05 ) ;
@@ -41,10 +50,9 @@ tape("randomBinomial(n, p) returns random binomial distributed numbers with a sk
4150 test . inDelta ( skewness ( d3 . range ( 10000 ) . map ( randomBinomial ( 100 , .35 ) ) ) , skew ( 100 , .35 ) , 0.05 ) ;
4251 test . inDelta ( skewness ( d3 . range ( 10000 ) . map ( randomBinomial ( 100 , .40 ) ) ) , skew ( 100 , .40 ) , 0.05 ) ;
4352 test . inDelta ( skewness ( d3 . range ( 10000 ) . map ( randomBinomial ( 100 , .45 ) ) ) , skew ( 100 , .45 ) , 0.05 ) ;
44- test . end ( ) ;
4553} ) ;
4654
47- tape ( "randomBinomial(n, p) returns random binomial distributed numbers with a kurtosis excess of (6 * p^2 - 6 * p - 1) / (n * p * (1 - p))" , function ( test ) {
55+ tape ( "randomBinomial(n, p) returns random binomial distributed numbers with a kurtosis excess of (6 * p^2 - 6 * p - 1) / (n * p * (1 - p))" , test => {
4856 var randomBinomial = d3 . randomBinomial . source ( d3 . randomLcg ( 0.6451552018202751 ) ) ;
4957 test . inDelta ( kurtosis ( d3 . range ( 10000 ) . map ( randomBinomial ( 100 , .05 ) ) ) , kurt ( 100 , .05 ) , 0.2 ) ;
5058 test . inDelta ( kurtosis ( d3 . range ( 10000 ) . map ( randomBinomial ( 100 , .10 ) ) ) , kurt ( 100 , .10 ) , 0.1 ) ;
@@ -55,5 +63,4 @@ tape("randomBinomial(n, p) returns random binomial distributed numbers with a ku
5563 test . inDelta ( kurtosis ( d3 . range ( 10000 ) . map ( randomBinomial ( 100 , .35 ) ) ) , kurt ( 100 , .35 ) , 0.1 ) ;
5664 test . inDelta ( kurtosis ( d3 . range ( 10000 ) . map ( randomBinomial ( 100 , .40 ) ) ) , kurt ( 100 , .40 ) , 0.1 ) ;
5765 test . inDelta ( kurtosis ( d3 . range ( 10000 ) . map ( randomBinomial ( 100 , .45 ) ) ) , kurt ( 100 , .45 ) , 0.05 ) ;
58- test . end ( ) ;
5966} ) ;
0 commit comments