📄 negative_binomial_example.qbk
字号:
[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, referredto as "successes" and "failures". The frequency with which successes occuris variously referred to as thesuccess 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 simplyby /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 10success ratio, first for a mere 20 trials:[pre'''______________________________________________2-Sided Confidence Limits For Success Fraction______________________________________________Number of trials = 20Number of successes = 2Number of failures = 18Observed 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) arereally very wide, and very asymmetric about the observed value 0.1.Compare that with the program output for a mass2000 trials:[pre'''______________________________________________2-Sided Confidence Limits For Success Fraction______________________________________________Number of trials = 2000Number of successes = 200Number of failures = 1800Observed 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 reallyquite 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 toconduct to be P% sure of observing at least k such failures. If the failure events follow a negative binomialdistribution (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% sureof 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. Wewould 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 andstill be P% sure of observing /failures or less/ failure events, when theprobability of success is /p/.]We'll finish off by looking at some sample output, firstly supposewe wish to observe at least 5 "failures" with a 50/50 (0.5) chance ofsuccess 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 5required 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 with95% 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).]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -