README.md (4361B)
1 <!-- 2 3 @license Apache-2.0 4 5 Copyright (c) 2018 The Stdlib Authors. 6 7 Licensed under the Apache License, Version 2.0 (the "License"); 8 you may not use this file except in compliance with the License. 9 You may obtain a copy of the License at 10 11 http://www.apache.org/licenses/LICENSE-2.0 12 13 Unless required by applicable law or agreed to in writing, software 14 distributed under the License is distributed on an "AS IS" BASIS, 15 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 See the License for the specific language governing permissions and 17 limitations under the License. 18 19 --> 20 21 # Logarithm of Cumulative Distribution Function 22 23 > Evaluate the natural logarithm of the [cumulative distribution function][cdf] for a [discrete uniform][discrete-uniform-distribution] distribution. 24 25 <section class="intro"> 26 27 The [cumulative distribution function][cdf] for a [discrete uniform][discrete-uniform-distribution] random variable is 28 29 <!-- <equation class="equation" label="eq:discrete_uniform_cdf" align="center" raw="F(x)= \begin{cases} 0 & \text{for }x < a \\ \frac{\lfloor x \rfloor - a + 1}{b-a+1} & \text{for }a \le x < b \\ 1 & \text{for }x \ge b \end{cases}" alt="Cumulative distribution function for a discrete uniform distribution."> --> 30 31 <div class="equation" align="center" data-raw-text="F(x)= \begin{cases} 0 & \text{for }x < a \\ \frac{\lfloor x \rfloor - a + 1}{b-a+1} & \text{for }a \le x < b \\ 1 & \text{for }x \ge b \end{cases}" data-equation="eq:discrete_uniform_cdf"> 32 <img src="https://cdn.jsdelivr.net/gh/stdlib-js/stdlib@591cf9d5c3a0cd3c1ceec961e5c49d73a68374cb/lib/node_modules/@stdlib/stats/base/dists/discrete-uniform/logcdf/docs/img/equation_discrete_uniform_cdf.svg" alt="Cumulative distribution function for a discrete uniform distribution."> 33 <br> 34 </div> 35 36 <!-- </equation> --> 37 38 where `a` is the minimum support and `b` is the maximum support. The parameters must satisfy `a <= b`. 39 40 </section> 41 42 <!-- /.intro --> 43 44 <section class="usage"> 45 46 ## Usage 47 48 ```javascript 49 var logcdf = require( '@stdlib/stats/base/dists/discrete-uniform/logcdf' ); 50 ``` 51 52 #### logcdf( x, a, b ) 53 54 Evaluates the natural logarithm of the [cumulative distribution function][cdf] (CDF) for a [discrete uniform][discrete-uniform-distribution] distribution with parameters `a` (minimum support) and `b` (maximum support). 55 56 ```javascript 57 var y = logcdf( 9.0, 0, 10 ); 58 // returns ~-0.095 59 60 y = logcdf( 0.5, -2, 2 ); 61 // returns ~-0.511 62 63 y = logcdf( -Infinity, 2, 4 ); 64 // returns -Infinity 65 66 y = logcdf( Infinity, 2, 4 ); 67 // returns 0.0 68 ``` 69 70 If `a` or `b` is not an integer value, the function returns `NaN`. 71 72 ```javascript 73 var y = logcdf( 2.0, 1, 5.5 ); 74 // returns NaN 75 ``` 76 77 If provided `a > b`, the function returns `NaN`. 78 79 ```javascript 80 var y = logcdf( 0.5, 3, 2); 81 // returns NaN 82 ``` 83 84 If provided `NaN` for any parameter, the function returns `NaN`. 85 86 ```javascript 87 var y = logcdf( NaN, 0, 1 ); 88 // returns NaN 89 90 y = logcdf( 0.0, NaN, 1 ); 91 // returns NaN 92 93 y = logcdf( 0.0, 0, NaN ); 94 // returns NaN 95 ``` 96 97 #### logcdf.factory( a, b ) 98 99 Returns a function for evaluating the natural logarithm of the [cumulative distribution function][cdf] of a [discrete uniform][discrete-uniform-distribution] distribution with parameters `a` (minimum support) and `b` (maximum support). 100 101 ```javascript 102 var myLogCDF = logcdf.factory( 0, 10 ); 103 var y = myLogCDF( 0.5 ); 104 // returns ~-2.398 105 106 y = myLogCDF( 8.0 ); 107 // returns ~-0.201 108 ``` 109 110 </section> 111 112 <!-- /.usage --> 113 114 <section class="examples"> 115 116 ## Examples 117 118 <!-- eslint no-undef: "error" --> 119 120 ```javascript 121 var randint = require( '@stdlib/random/base/discrete-uniform' ); 122 var randu = require( '@stdlib/random/base/randu' ); 123 var logcdf = require( '@stdlib/stats/base/dists/discrete-uniform/logcdf' ); 124 125 var randa = randint.factory( 0, 10 ); 126 var randb = randint.factory(); 127 var a; 128 var b; 129 var x; 130 var v; 131 var i; 132 133 for ( i = 0; i < 10; i++ ) { 134 x = randu() * 15.0; 135 a = randa(); 136 b = randb( a, a+randa() ); 137 v = logcdf( x, a, b ); 138 console.log( 'x: %d, a: %d, b: %d, ln(F(x;a,b)): %d', x.toFixed( 4 ), a.toFixed( 4 ), b.toFixed( 4 ), v.toFixed( 4 ) ); 139 } 140 ``` 141 142 </section> 143 144 <!-- /.examples --> 145 146 <section class="links"> 147 148 [cdf]: https://en.wikipedia.org/wiki/Cumulative_distribution_function 149 150 [discrete-uniform-distribution]: https://en.wikipedia.org/wiki/Discrete_uniform_distribution 151 152 </section> 153 154 <!-- /.links -->