57cba0eef4
[SVN r84143]
193 lines
7.3 KiB
Plaintext
193 lines
7.3 KiB
Plaintext
[section:neg_binom_eg Negative Binomial Distribution Examples]
|
|
|
|
(See also the reference documentation for the __negative_binomial_distrib.)
|
|
|
|
[section:neg_binom_conf Calculating Confidence Limits on the Frequency of Occurrence for the Negative Binomial Distribution]
|
|
|
|
Imagine you have a process that follows a negative binomial distribution:
|
|
for each trial conducted, an event either occurs or does it does not, referred
|
|
to as "successes" and "failures". The frequency with which successes occur
|
|
is variously referred to as the
|
|
success fraction, success ratio, success percentage, occurrence frequency, or probability of occurrence.
|
|
|
|
If, by experiment, you want to measure the
|
|
the best estimate of success fraction is given simply
|
|
by /k/ \/ /N/, for /k/ successes out of /N/ trials.
|
|
|
|
However our confidence in that estimate will be shaped by how many trials were conducted,
|
|
and how many successes were observed. The static member functions
|
|
`negative_binomial_distribution<>::find_lower_bound_on_p` and
|
|
`negative_binomial_distribution<>::find_upper_bound_on_p`
|
|
allow you to calculate the confidence intervals for your estimate of the success fraction.
|
|
|
|
The sample program [@../../example/neg_binom_confidence_limits.cpp
|
|
neg_binom_confidence_limits.cpp] illustrates their use.
|
|
|
|
[import ../../example/neg_binom_confidence_limits.cpp]
|
|
|
|
[neg_binomial_confidence_limits]
|
|
Let's see some sample output for a 1 in 10
|
|
success ratio, first for a mere 20 trials:
|
|
|
|
[pre'''______________________________________________
|
|
2-Sided Confidence Limits For Success Fraction
|
|
______________________________________________
|
|
Number of trials = 20
|
|
Number of successes = 2
|
|
Number of failures = 18
|
|
Observed frequency of occurrence = 0.1
|
|
___________________________________________
|
|
Confidence Lower Upper
|
|
Value (%) Limit Limit
|
|
___________________________________________
|
|
50.000 0.04812 0.13554
|
|
75.000 0.03078 0.17727
|
|
90.000 0.01807 0.22637
|
|
95.000 0.01235 0.26028
|
|
99.000 0.00530 0.33111
|
|
99.900 0.00164 0.41802
|
|
99.990 0.00051 0.49202
|
|
99.999 0.00016 0.55574
|
|
''']
|
|
|
|
As you can see, even at the 95% confidence level the bounds (0.012 to 0.26) are
|
|
really very wide, and very asymmetric about the observed value 0.1.
|
|
|
|
Compare that with the program output for a mass
|
|
2000 trials:
|
|
|
|
[pre'''______________________________________________
|
|
2-Sided Confidence Limits For Success Fraction
|
|
______________________________________________
|
|
Number of trials = 2000
|
|
Number of successes = 200
|
|
Number of failures = 1800
|
|
Observed frequency of occurrence = 0.1
|
|
___________________________________________
|
|
Confidence Lower Upper
|
|
Value (%) Limit Limit
|
|
___________________________________________
|
|
50.000 0.09536 0.10445
|
|
75.000 0.09228 0.10776
|
|
90.000 0.08916 0.11125
|
|
95.000 0.08720 0.11352
|
|
99.000 0.08344 0.11802
|
|
99.900 0.07921 0.12336
|
|
99.990 0.07577 0.12795
|
|
99.999 0.07282 0.13206
|
|
''']
|
|
|
|
Now even when the confidence level is very high, the limits (at 99.999%, 0.07 to 0.13) are really
|
|
quite close and nearly symmetric to the observed value of 0.1.
|
|
|
|
[endsect][/section:neg_binom_conf Calculating Confidence Limits on the Frequency of Occurrence]
|
|
|
|
[section:neg_binom_size_eg Estimating Sample Sizes for the Negative Binomial.]
|
|
|
|
Imagine you have an event
|
|
(let's call it a "failure" - though we could equally well call it a success if we felt it was a 'good' event)
|
|
that you know will occur in 1 in N trials. You may want to know how many trials you need to
|
|
conduct to be P% sure of observing at least k such failures.
|
|
If the failure events follow a negative binomial
|
|
distribution (each trial either succeeds or fails)
|
|
then the static member function `negative_binomial_distibution<>::find_minimum_number_of_trials`
|
|
can be used to estimate the minimum number of trials required to be P% sure
|
|
of observing the desired number of failures.
|
|
|
|
The example program
|
|
[@../../example/neg_binomial_sample_sizes.cpp neg_binomial_sample_sizes.cpp]
|
|
demonstrates its usage.
|
|
|
|
[import ../../example/neg_binomial_sample_sizes.cpp]
|
|
[neg_binomial_sample_sizes]
|
|
|
|
[note Since we're calculating the /minimum/ number of trials required,
|
|
we'll err on the safe side and take the ceiling of the result.
|
|
Had we been calculating the
|
|
/maximum/ number of trials permitted to observe less than a certain
|
|
number of /failures/ then we would have taken the floor instead. We
|
|
would also have called `find_minimum_number_of_trials` like this:
|
|
``
|
|
floor(negative_binomial::find_minimum_number_of_trials(failures, p, alpha[i]))
|
|
``
|
|
which would give us the largest number of trials we could conduct and
|
|
still be P% sure of observing /failures or less/ failure events, when the
|
|
probability of success is /p/.]
|
|
|
|
We'll finish off by looking at some sample output, firstly suppose
|
|
we wish to observe at least 5 "failures" with a 50/50 (0.5) chance of
|
|
success or failure:
|
|
|
|
[pre
|
|
'''Target number of failures = 5, Success fraction = 50%
|
|
|
|
____________________________
|
|
Confidence Min Number
|
|
Value (%) Of Trials
|
|
____________________________
|
|
50.000 11
|
|
75.000 14
|
|
90.000 17
|
|
95.000 18
|
|
99.000 22
|
|
99.900 27
|
|
99.990 31
|
|
99.999 36
|
|
'''
|
|
]
|
|
|
|
So 18 trials or more would yield a 95% chance that at least our 5
|
|
required failures would be observed.
|
|
|
|
Compare that to what happens if the success ratio is 90%:
|
|
|
|
[pre'''Target number of failures = 5.000, Success fraction = 90.000%
|
|
|
|
____________________________
|
|
Confidence Min Number
|
|
Value (%) Of Trials
|
|
____________________________
|
|
50.000 57
|
|
75.000 73
|
|
90.000 91
|
|
95.000 103
|
|
99.000 127
|
|
99.900 159
|
|
99.990 189
|
|
99.999 217
|
|
''']
|
|
|
|
So now 103 trials are required to observe at least 5 failures with
|
|
95% certainty.
|
|
|
|
[endsect] [/section:neg_binom_size_eg Estimating Sample Sizes.]
|
|
|
|
[section:negative_binomial_example1 Negative Binomial Sales Quota Example.]
|
|
|
|
This example program
|
|
[@../../example/negative_binomial_example1.cpp negative_binomial_example1.cpp (full source code)]
|
|
demonstrates a simple use to find the probability of meeting a sales quota.
|
|
|
|
[import ../../example/negative_binomial_example1.cpp]
|
|
[negative_binomial_eg1_1]
|
|
[negative_binomial_eg1_2]
|
|
|
|
[endsect] [/section:negative_binomial_example1]
|
|
|
|
[section:negative_binomial_example2 Negative Binomial Table Printing Example.]
|
|
Example program showing output of a table of values of cdf and pdf for various k failures.
|
|
[import ../../example/negative_binomial_example2.cpp]
|
|
[neg_binomial_example2]
|
|
[neg_binomial_example2_1]
|
|
[endsect] [/section:negative_binomial_example1 Negative Binomial example 2.]
|
|
|
|
[endsect] [/section:neg_binom_eg Negative Binomial Distribution Examples]
|
|
|
|
[/
|
|
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).
|
|
]
|
|
|