README.md (4496B)
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 > [Fréchet][frechet-distribution] distribution logarithm of [cumulative distribution function][cdf]. 24 25 <section class="intro"> 26 27 The [cumulative distribution function][cdf] for a [Fréchet][frechet-distribution] random variable is 28 29 <!-- <equation class="equation" label="eq:frechet_cdf" align="center" raw="F\left( x; \mu, \beta \right ) = e^{{-({\frac{x-m}{s}})^{{-\alpha }}}}" alt="Cumulative distribution function for a Fréchet distribution."> --> 30 31 <div class="equation" align="center" data-raw-text="F\left( x; \mu, \beta \right ) = e^{{-({\frac{x-m}{s}})^{{-\alpha }}}}" data-equation="eq:frechet_cdf"> 32 <img src="https://cdn.jsdelivr.net/gh/stdlib-js/stdlib@591cf9d5c3a0cd3c1ceec961e5c49d73a68374cb/lib/node_modules/@stdlib/stats/base/dists/frechet/logcdf/docs/img/equation_frechet_cdf.svg" alt="Cumulative distribution function for a Fréchet distribution."> 33 <br> 34 </div> 35 36 <!-- </equation> --> 37 38 where `alpha > 0` is the shape, `s > 0` the scale, and `m` the location parameter. 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/frechet/logcdf' ); 50 ``` 51 52 #### logcdf( x, alpha, s, m ) 53 54 Evaluates the natural logarithm of the [cumulative distribution function][cdf] (CDF) for a [Fréchet][frechet-distribution] distribution with shape `alpha`, scale `s`, and location `m` at a value `x`. 55 56 ```javascript 57 var y = logcdf( 10.0, 2.0, 3.0, 5.0 ); 58 // returns ~-0.36 59 60 y = logcdf( -3.4, 1.0, 2.0, -4.0 ); 61 // returns ~-3.333 62 63 y = logcdf( 0.0, 2.0, 1.0, -1.0 ); 64 // returns -1.0 65 ``` 66 67 If provided `x <= m`, the function returns `-Infinity`. 68 69 ```javascript 70 y = logcdf( -2.0, 2.0, 1.0, -1.0 ); 71 // returns -Infinity 72 ``` 73 74 If provided `NaN` as any argument, the function returns `NaN`. 75 76 ```javascript 77 var y = logcdf( NaN, 1.0, 1.0, 0.0 ); 78 // returns NaN 79 80 y = logcdf( 0.0, NaN, 1.0, 0.0 ); 81 // returns NaN 82 83 y = logcdf( 0.0, 1.0, NaN, 0.0); 84 // returns NaN 85 86 y = logcdf( 0.0, 1.0, 1.0, NaN ); 87 // returns NaN 88 ``` 89 90 If provided `alpha <= 0`, the function returns `NaN`. 91 92 ```javascript 93 var y = logcdf( 2.0, -0.1, 1.0, 1.0 ); 94 // returns NaN 95 96 y = logcdf( 2.0, 0.0, 1.0, 1.0 ); 97 // returns NaN 98 ``` 99 100 If provided `s <= 0`, the function returns `NaN`. 101 102 ```javascript 103 var y = logcdf( 2.0, 1.0, -1.0, 1.0 ); 104 // returns NaN 105 106 y = logcdf( 2.0, 1.0, 0.0, 1.0 ); 107 // returns NaN 108 ``` 109 110 #### logcdf.factory( alpha, s, m ) 111 112 Returns a function for evaluating the natural logarithm of the [cumulative distribution function][cdf] of a [Fréchet][frechet-distribution] distribution with shape `alpha`, scale `s`, and location `m`. 113 114 ```javascript 115 var mylogcdf = logcdf.factory( 3.0, 3.0, 5.0 ); 116 117 var y = mylogcdf( 10.0 ); 118 // returns ~-0.216 119 120 y = mylogcdf( 7.0 ); 121 // returns ~-3.375 122 ``` 123 124 </section> 125 126 <!-- /.usage --> 127 128 <section class="notes"> 129 130 ## Notes 131 132 - In virtually all cases, using the `logpdf` or `logcdf` functions is preferable to manually computing the logarithm of the `pdf` or `cdf`, respectively, since the latter is prone to overflow and underflow. 133 134 </section> 135 136 <!-- /.notes --> 137 138 <section class="examples"> 139 140 ## Examples 141 142 <!-- eslint no-undef: "error" --> 143 144 ```javascript 145 var randu = require( '@stdlib/random/base/randu' ); 146 var logcdf = require( '@stdlib/stats/base/dists/frechet/logcdf' ); 147 148 var alpha; 149 var m; 150 var s; 151 var x; 152 var y; 153 var i; 154 155 for ( i = 0; i < 100; i++ ) { 156 alpha = randu() * 10.0; 157 x = randu() * 10.0; 158 s = randu() * 10.0; 159 m = randu() * 10.0; 160 y = logcdf( x, alpha, s, m ); 161 console.log( 'x: %d, α: %d, s: %d, m: %d, ln(F(x;α,s,m)): %d', x.toFixed( 4 ), alpha.toFixed( 4 ), s.toFixed( 4 ), m.toFixed( 4 ), y.toFixed( 4 ) ); 162 } 163 ``` 164 165 </section> 166 167 <!-- /.examples --> 168 169 <section class="links"> 170 171 [frechet-distribution]: https://en.wikipedia.org/wiki/Fr%C3%A9chet_distribution 172 173 [cdf]: https://en.wikipedia.org/wiki/Cumulative_distribution_function 174 175 </section> 176 177 <!-- /.links -->