mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-11-03 21:40:52 -05:00 
			
		
		
		
	
		
			
	
	
		
			162 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			162 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								[section:chi_squared_dist Chi Squared Distribution]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								``#include <boost/math/distributions/chi_squared.hpp>``
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   namespace boost{ namespace math{ 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   template <class RealType = double, 
							 | 
						||
| 
								 | 
							
								             class ``__Policy``   = ``__policy_class`` >
							 | 
						||
| 
								 | 
							
								   class chi_squared_distribution;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   typedef chi_squared_distribution<> chi_squared;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   template <class RealType, class ``__Policy``>
							 | 
						||
| 
								 | 
							
								   class chi_squared_distribution
							 | 
						||
| 
								 | 
							
								   {
							 | 
						||
| 
								 | 
							
								   public:
							 | 
						||
| 
								 | 
							
								      typedef RealType  value_type;
							 | 
						||
| 
								 | 
							
								      typedef Policy    policy_type;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      // Constructor:
							 | 
						||
| 
								 | 
							
								      chi_squared_distribution(RealType i);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      // Accessor to parameter:
							 | 
						||
| 
								 | 
							
								      RealType degrees_of_freedom()const;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      // Parameter estimation:
							 | 
						||
| 
								 | 
							
								      static RealType find_degrees_of_freedom(
							 | 
						||
| 
								 | 
							
								         RealType difference_from_mean,
							 | 
						||
| 
								 | 
							
								         RealType alpha,
							 | 
						||
| 
								 | 
							
								         RealType beta,
							 | 
						||
| 
								 | 
							
								         RealType sd,
							 | 
						||
| 
								 | 
							
								         RealType hint = 100);
							 | 
						||
| 
								 | 
							
								   };
							 | 
						||
| 
								 | 
							
								   
							 | 
						||
| 
								 | 
							
								   }} // namespaces
							 | 
						||
| 
								 | 
							
								   
							 | 
						||
| 
								 | 
							
								The Chi-Squared distribution is one of the most widely used distributions
							 | 
						||
| 
								 | 
							
								in statistical tests.  If [chi][sub i][space] are [nu][space] 
							 | 
						||
| 
								 | 
							
								independent, normally distributed
							 | 
						||
| 
								 | 
							
								random variables with means [mu][sub i][space] and variances [sigma][sub i][super 2], 
							 | 
						||
| 
								 | 
							
								then the random variable:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[equation chi_squ_ref1]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								is distributed according to the Chi-Squared distribution.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The Chi-Squared distribution is a special case of the gamma distribution
							 | 
						||
| 
								 | 
							
								and has a single parameter [nu][space] that specifies the number of degrees of
							 | 
						||
| 
								 | 
							
								freedom.  The following graph illustrates how the distribution changes
							 | 
						||
| 
								 | 
							
								for different values of [nu]:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[graph chi_squared_pdf]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[h4 Member Functions]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      chi_squared_distribution(RealType v);
							 | 
						||
| 
								 | 
							
								      
							 | 
						||
| 
								 | 
							
								Constructs a Chi-Squared distribution with /v/ degrees of freedom.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Requires v > 0, otherwise calls __domain_error.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      RealType degrees_of_freedom()const;
							 | 
						||
| 
								 | 
							
								      
							 | 
						||
| 
								 | 
							
								Returns the parameter /v/ from which this object was constructed.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      static RealType find_degrees_of_freedom(
							 | 
						||
| 
								 | 
							
								         RealType difference_from_variance,
							 | 
						||
| 
								 | 
							
								         RealType alpha,
							 | 
						||
| 
								 | 
							
								         RealType beta,
							 | 
						||
| 
								 | 
							
								         RealType variance,
							 | 
						||
| 
								 | 
							
								         RealType hint = 100);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Estimates the sample size required to detect a difference from a nominal
							 | 
						||
| 
								 | 
							
								variance in a Chi-Squared test for equal standard deviations.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[variablelist
							 | 
						||
| 
								 | 
							
								[[difference_from_variance][The difference from the assumed nominal variance 
							 | 
						||
| 
								 | 
							
								   that is to be detected: Note that the sign of this value is critical, see below.]]
							 | 
						||
| 
								 | 
							
								[[alpha][The maximum acceptable risk of rejecting the null hypothesis when it is
							 | 
						||
| 
								 | 
							
								         in fact true.]]
							 | 
						||
| 
								 | 
							
								[[beta][The maximum acceptable risk of falsely failing to reject the null hypothesis.]]
							 | 
						||
| 
								 | 
							
								[[variance][The nominal variance being tested against.]]
							 | 
						||
| 
								 | 
							
								[[hint][An optional hint on where to start looking for a result: the current sample
							 | 
						||
| 
								 | 
							
								      size would be a good choice.]]
							 | 
						||
| 
								 | 
							
								]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Note that this calculation works with /variances/ and not /standard deviations/.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The sign of the parameter /difference_from_variance/ is important: the Chi
							 | 
						||
| 
								 | 
							
								Squared distribution is asymmetric, and the caller must decide in advance
							 | 
						||
| 
								 | 
							
								whether they are testing for a variance greater than a nominal value (positive
							 | 
						||
| 
								 | 
							
								/difference_from_variance/) or testing for a variance less than a nominal value
							 | 
						||
| 
								 | 
							
								(negative /difference_from_variance/).  If the latter, then obviously it is
							 | 
						||
| 
								 | 
							
								a requirement that `variance + difference_from_variance > 0`, since no sample
							 | 
						||
| 
								 | 
							
								can have a negative variance!
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								This procedure uses the method in Diamond, W. J. (1989). 
							 | 
						||
| 
								 | 
							
								Practical Experiment Designs, Van-Nostrand Reinhold, New York.
							 | 
						||
| 
								 | 
							
								  
							 | 
						||
| 
								 | 
							
								See also section on Sample sizes required in
							 | 
						||
| 
								 | 
							
								[@http://www.itl.nist.gov/div898/handbook/prc/section2/prc232.htm the NIST Engineering Statistics Handbook, Section 7.2.3.2].
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[h4 Non-member Accessors]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								All the [link math_toolkit.dist_ref.nmp usual non-member accessor functions]
							 | 
						||
| 
								 | 
							
								that are generic to all distributions are supported: __usual_accessors.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(We have followed the usual restriction of the mode to degrees of freedom >= 2,
							 | 
						||
| 
								 | 
							
								but note that the maximum of the pdf is actually zero for degrees of freedom from 2 down to 0,
							 | 
						||
| 
								 | 
							
								and provide an extended definition that would avoid a discontinuity in the mode
							 | 
						||
| 
								 | 
							
								as alternative code in a comment).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The domain of the random variable is \[0, +[infin]\].
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[h4 Examples]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Various [link math_toolkit.stat_tut.weg.cs_eg worked examples] 
							 | 
						||
| 
								 | 
							
								are available illustrating the use of the Chi Squared Distribution.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[h4 Accuracy]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The Chi-Squared distribution is implemented in terms of the 
							 | 
						||
| 
								 | 
							
								[link math_toolkit.sf_gamma.igamma incomplete gamma functions]:
							 | 
						||
| 
								 | 
							
								please refer to the accuracy data for those functions.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[h4 Implementation]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								In the following table /v/ is the number of degrees of freedom of the distribution,
							 | 
						||
| 
								 | 
							
								/x/ is the random variate, /p/ is the probability, and /q = 1-p/.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[table
							 | 
						||
| 
								 | 
							
								[[Function][Implementation Notes]]
							 | 
						||
| 
								 | 
							
								[[pdf][Using the relation: pdf = __gamma_p_derivative(v / 2, x / 2) / 2 ]]
							 | 
						||
| 
								 | 
							
								[[cdf][Using the relation: p = __gamma_p(v / 2, x / 2) ]]
							 | 
						||
| 
								 | 
							
								[[cdf complement][Using the relation: q = __gamma_q(v / 2, x / 2) ]]
							 | 
						||
| 
								 | 
							
								[[quantile][Using the relation: x = 2 * __gamma_p_inv(v / 2, p) ]]
							 | 
						||
| 
								 | 
							
								[[quantile from the complement][Using the relation: x = 2 * __gamma_q_inv(v / 2, p) ]]
							 | 
						||
| 
								 | 
							
								[[mean][v]]
							 | 
						||
| 
								 | 
							
								[[variance][2v]]
							 | 
						||
| 
								 | 
							
								[[mode][v - 2 (if v >= 2)]]
							 | 
						||
| 
								 | 
							
								[[skewness][2 * sqrt(2 / v) == sqrt(8 / v)]]
							 | 
						||
| 
								 | 
							
								[[kurtosis][3 + 12 / v]]
							 | 
						||
| 
								 | 
							
								[[kurtosis excess][12 / v]]
							 | 
						||
| 
								 | 
							
								]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[h4 References]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								* [@http://www.itl.nist.gov/div898/handbook/eda/section3/eda3666.htm NIST Exploratory Data Analysis]
							 | 
						||
| 
								 | 
							
								* [@http://en.wikipedia.org/wiki/Chi-square_distribution Chi-square distribution]
							 | 
						||
| 
								 | 
							
								* [@http://mathworld.wolfram.com/Chi-SquaredDistribution.html Weisstein, Eric W. "Chi-Squared Distribution." From MathWorld--A Wolfram Web Resource.]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[endsect][/section:chi_squared_dist Chi Squared]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[/ chi_squared.qbk
							 | 
						||
| 
								 | 
							
								  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).
							 | 
						||
| 
								 | 
							
								]
							 | 
						||
| 
								 | 
							
								
							 |