mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-30 20:40:28 -04:00 
			
		
		
		
	
		
			
	
	
		
			85 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			85 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|  | [section:variates Random Variates and Distribution Parameters] | ||
|  | 
 | ||
|  | [@http://en.wikipedia.org/wiki/Random_variate Random variates] | ||
|  | and [@http://en.wikipedia.org/wiki/Parameter distribution parameters] | ||
|  | are conventionally distinguished (for example in Wikipedia and Wolfram MathWorld | ||
|  | by placing a semi-colon after the __random_variate (whose value you 'choose'), | ||
|  | to separate the variate from the parameter(s) that defines the shape of the distribution. | ||
|  | 
 | ||
|  | For example, the binomial distribution has two parameters: | ||
|  | n (the number of trials) and p (the probability of success on one trial).   | ||
|  | It also has the __random_variate /k/: the number of successes observed. | ||
|  | This means the probability density\/mass function (pdf) is written as ['f(k; n, p)]. | ||
|  | 
 | ||
|  | Translating this into code the `binomial_distribution` constructor  | ||
|  | therefore has two parameters: | ||
|  | 
 | ||
|  | 	binomial_distribution(RealType n, RealType p); | ||
|  | 
 | ||
|  | While the function `pdf` has one argument specifying the distribution type | ||
|  | (which includes its parameters, if any), | ||
|  | and a second argument for the __random_variate.  So taking our binomial distribution  | ||
|  | example, we would write: | ||
|  | 
 | ||
|  | 	pdf(binomial_distribution<RealType>(n, p), k); | ||
|  | 
 | ||
|  | [endsect] | ||
|  | 
 | ||
|  | [section:dist_params Discrete Probability Distributions] | ||
|  | 
 | ||
|  | Note that the [@http://en.wikipedia.org/wiki/Discrete_probability_distribution  | ||
|  | discrete distributions], including the binomial, negative binomial, Poisson & Bernoulli, | ||
|  | are all mathematically defined as discrete functions: | ||
|  | only integral values of the __random_variate are envisaged | ||
|  | and the functions are only defined at these integral values. | ||
|  | However because the method of calculation often uses continuous functions, | ||
|  | it is convenient to treat them as if they were continuous functions, | ||
|  | and permit non-integral values of their parameters. | ||
|  | 
 | ||
|  | To enforce a strict mathematical model, | ||
|  | users may use floor or ceil functions on the __random_variate, | ||
|  | prior to calling the distribution function, to enforce integral values. | ||
|  | 
 | ||
|  | For similar reasons, in continuous distributions, parameters like degrees of freedom | ||
|  | that might appear to be integral, are treated as real values | ||
|  | (and are promoted from integer to floating-point if necessary). | ||
|  | In this case however, that there are a small number of situations where non-integral | ||
|  | degrees of freedom do have a genuine meaning. | ||
|  | 
 | ||
|  | Generally speaking there is no loss of performance from allowing real-values | ||
|  | parameters: the underlying special functions contain optimizations for  | ||
|  | integer-valued arguments when applicable. | ||
|  | 
 | ||
|  | [caution | ||
|  | The quantile function of a discrete distribution will by  | ||
|  | default return an integer result that has been | ||
|  | /rounded outwards/.  That is to say lower quantiles (where the probability is | ||
|  | less than 0.5) are rounded downward, and upper quantiles (where the probability | ||
|  | is greater than 0.5) are rounded upwards.  This behaviour | ||
|  | ensures that if an X% quantile is requested, then /at least/ the requested | ||
|  | coverage will be present in the central region, and /no more than/ | ||
|  | the requested coverage will be present in the tails. | ||
|  | 
 | ||
|  | This behaviour can be changed so that the quantile functions are rounded | ||
|  | differently, or even return a real-valued result using  | ||
|  | [link math_toolkit.pol_overview Policies].  It is strongly | ||
|  | recommended that you read the tutorial  | ||
|  | [link math_toolkit.pol_tutorial.understand_dis_quant | ||
|  | Understanding Quantiles of Discrete Distributions] before | ||
|  | using the quantile function on a discrete distribution.  The | ||
|  | [link math_toolkit.pol_ref.discrete_quant_ref reference docs]  | ||
|  | describe how to change the rounding policy | ||
|  | for these distributions. | ||
|  | ] | ||
|  | 
 | ||
|  | [endsect] | ||
|  | 
 | ||
|  | [/  | ||
|  |   Copyright 2006 John Maddock and Paul A. Bristow. | ||
|  |   Distributed under the Boost Software License, Version 1.0. | ||
|  |   (See accompanying file LICENSE_1_0.txt or copy at | ||
|  |   http://www.boost.org/LICENSE_1_0.txt). | ||
|  | ] | ||
|  | 
 | ||
|  | 
 |