⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 neg_binom_confidence_limits.cpp

📁 Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work
💻 CPP
字号:
// neg_binomial_confidence_limits.cpp// Copyright John Maddock 2006// Copyright Paul A. Bristow 2007// Use, modification and distribution are subject to 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)// Caution: this file contains quickbook markup as well as code// and comments, don't change any of the special comment markups!//[neg_binomial_confidence_limits/*`First we need some includes to access the negative binomial distribution(and some basic std output of course).*/#include <boost/math/distributions/negative_binomial.hpp>using boost::math::negative_binomial;#include <iostream>using std::cout; using std::endl;#include <iomanip>using std::setprecision;using std::setw; using std::left; using std::fixed; using std::right;/*`First define a table of significance levels: these are the probabilities that the true occurrence frequency lies outside the calculatedinterval:*/  double alpha[] = { 0.5, 0.25, 0.1, 0.05, 0.01, 0.001, 0.0001, 0.00001 };/*`Confidence value as % is (1 - alpha) * 100, so alpha 0.05 == 95% confidencethat the true occurence frequency lies *inside* the calculated interval.We need a function to calculate and print confidence limitsfor an observed frequency of occurrence that follows a negative binomial distribution.*/void confidence_limits_on_frequency(unsigned trials, unsigned successes){   // trials = Total number of trials.   // successes = Total number of observed successes.   // failures = trials - successes.   // success_fraction = successes /trials.   // Print out general info:   cout <<      "______________________________________________\n"      "2-Sided Confidence Limits For Success Fraction\n"      "______________________________________________\n\n";   cout << setprecision(7);   cout << setw(40) << left << "Number of trials" << " =  " << trials << "\n";   cout << setw(40) << left << "Number of successes" << " =  " << successes << "\n";   cout << setw(40) << left << "Number of failures" << " =  " << trials - successes << "\n";   cout << setw(40) << left << "Observed frequency of occurrence" << " =  " << double(successes) / trials << "\n";   // Print table header:   cout << "\n\n"           "___________________________________________\n"           "Confidence        Lower          Upper\n"           " Value (%)        Limit          Limit\n"           "___________________________________________\n";/*`And now for the important part - the bounds themselves.For each value of /alpha/, we call `find_lower_bound_on_p` and `find_upper_bound_on_p` to obtain lower and upper bounds respectively. Note that since we are calculating a two-sided interval,we must divide the value of alpha in two.  Had we been calculating a single-sided interval, for example: ['"Calculate a lower bound so that we are P%sure that the true occurrence frequency is greater than some value"]then we would *not* have divided by two.*/   // Now print out the upper and lower limits for the alpha table values.   for(unsigned i = 0; i < sizeof(alpha)/sizeof(alpha[0]); ++i)   {      // Confidence value:      cout << fixed << setprecision(3) << setw(10) << right << 100 * (1-alpha[i]);      // Calculate bounds:      double lower = negative_binomial::find_lower_bound_on_p(trials, successes, alpha[i]/2);      double upper = negative_binomial::find_upper_bound_on_p(trials, successes, alpha[i]/2);      // Print limits:      cout << fixed << setprecision(5) << setw(15) << right << lower;      cout << fixed << setprecision(5) << setw(15) << right << upper << endl;   }   cout << endl;} // void confidence_limits_on_frequency(unsigned trials, unsigned successes)/*`And then call confidence_limits_on_frequency with increasing numbers of trials,but always the same success fraction 0.1, or 1 in 10.*/int main(){  confidence_limits_on_frequency(20, 2); // 20 trials, 2 successes, 2 in 20, = 1 in 10 = 0.1 success fraction.  confidence_limits_on_frequency(200, 20); // More trials, but same 0.1 success fraction.  confidence_limits_on_frequency(2000, 200); // Many more trials, but same 0.1 success fraction.  return 0;} // int main()//] [/negative_binomial_confidence_limits_eg end of Quickbook in C++ markup]/*______________________________________________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______________________________________________2-Sided Confidence Limits For Success Fraction______________________________________________Number of trials                         =  200Number of successes                      =  20Number of failures                       =  180Observed frequency of occurrence         =  0.1000000___________________________________________Confidence        Lower          Upper Value (%)        Limit          Limit___________________________________________    50.000        0.08462        0.11350    75.000        0.07580        0.12469    90.000        0.06726        0.13695    95.000        0.06216        0.14508    99.000        0.05293        0.16170    99.900        0.04343        0.18212    99.990        0.03641        0.20017    99.999        0.03095        0.21664______________________________________________2-Sided Confidence Limits For Success Fraction______________________________________________Number of trials                         =  2000Number of successes                      =  200Number of failures                       =  1800Observed frequency of occurrence         =  0.1000000___________________________________________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*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -