1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161
|
[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] are [nu]
independent, normally distributed
random variables with means [mu][sub i] 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] 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).
]
|