]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/math/example/binomial_confidence_limits.cpp
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / boost / libs / math / example / binomial_confidence_limits.cpp
CommitLineData
7c673cae
FG
1// Copyright John Maddock 2006
2// Copyright Paul A. Bristow 2010
3
4// Use, modification and distribution are subject to the
5// Boost Software License, Version 1.0.
6// (See accompanying file LICENSE_1_0.txt
7// or copy at http://www.boost.org/LICENSE_1_0.txt)
8
9#ifdef _MSC_VER
10# pragma warning(disable: 4512) // assignment operator could not be generated.
11# pragma warning(disable: 4510) // default constructor could not be generated.
12# pragma warning(disable: 4610) // can never be instantiated - user defined constructor required.
13#endif
14
15#include <iostream>
16using std::cout; using std::endl;
17#include <iomanip>
18using std::fixed; using std::left; using std::right; using std::right; using std::setw;
19using std::setprecision;
20
21#include <boost/math/distributions/binomial.hpp>
22
23void confidence_limits_on_frequency(unsigned trials, unsigned successes)
24{
25 //
26 // trials = Total number of trials.
27 // successes = Total number of observed successes.
28 //
29 // Calculate confidence limits for an observed
30 // frequency of occurrence that follows a binomial distribution.
31 //
32 //using namespace std; // Avoid
33 // using namespace boost::math; // potential name ambiguity with std <random>
34 using boost::math::binomial_distribution;
35
36 // Print out general info:
37 cout <<
38 "___________________________________________\n"
39 "2-Sided Confidence Limits For Success Ratio\n"
40 "___________________________________________\n\n";
41 cout << setprecision(7);
42 cout << setw(40) << left << "Number of Observations" << "= " << trials << "\n";
43 cout << setw(40) << left << "Number of successes" << "= " << successes << "\n";
44 cout << setw(40) << left << "Sample frequency of occurrence" << "= " << double(successes) / trials << "\n";
45 //
46 // Define a table of significance levels:
47 //
48 double alpha[] = { 0.5, 0.25, 0.1, 0.05, 0.01, 0.001, 0.0001, 0.00001 };
49 //
50 // Print table header:
51 //
52 cout << "\n\n"
53 "_______________________________________________________________________\n"
54 "Confidence Lower CP Upper CP Lower JP Upper JP\n"
55 " Value (%) Limit Limit Limit Limit\n"
56 "_______________________________________________________________________\n";
57 //
58 // Now print out the data for the table rows.
59 //
60 for(unsigned i = 0; i < sizeof(alpha)/sizeof(alpha[0]); ++i)
61 {
62 // Confidence value:
63 cout << fixed << setprecision(3) << setw(10) << right << 100 * (1-alpha[i]);
64 // Calculate Clopper Pearson bounds:
65 double l = binomial_distribution<>::find_lower_bound_on_p(trials, successes, alpha[i]/2);
66 double u = binomial_distribution<>::find_upper_bound_on_p(trials, successes, alpha[i]/2);
67 // Print Clopper Pearson Limits:
68 cout << fixed << setprecision(5) << setw(15) << right << l;
69 cout << fixed << setprecision(5) << setw(15) << right << u;
70 // Calculate Jeffreys Prior Bounds:
71 l = binomial_distribution<>::find_lower_bound_on_p(trials, successes, alpha[i]/2, binomial_distribution<>::jeffreys_prior_interval);
72 u = binomial_distribution<>::find_upper_bound_on_p(trials, successes, alpha[i]/2, binomial_distribution<>::jeffreys_prior_interval);
73 // Print Jeffreys Prior Limits:
74 cout << fixed << setprecision(5) << setw(15) << right << l;
75 cout << fixed << setprecision(5) << setw(15) << right << u << std::endl;
76 }
77 cout << endl;
78} // void confidence_limits_on_frequency()
79
80int main()
81{
82 confidence_limits_on_frequency(20, 4);
83 confidence_limits_on_frequency(200, 40);
84 confidence_limits_on_frequency(2000, 400);
85
86 return 0;
87} // int main()
88
89/*
90
91------ Build started: Project: binomial_confidence_limits, Configuration: Debug Win32 ------
92Compiling...
93binomial_confidence_limits.cpp
94Linking...
95Autorun "i:\boost-06-05-03-1300\libs\math\test\Math_test\debug\binomial_confidence_limits.exe"
96___________________________________________
972-Sided Confidence Limits For Success Ratio
98___________________________________________
99
100Number of Observations = 20
101Number of successes = 4
102Sample frequency of occurrence = 0.2
103
104
105_______________________________________________________________________
106Confidence Lower CP Upper CP Lower JP Upper JP
107 Value (%) Limit Limit Limit Limit
108_______________________________________________________________________
109 50.000 0.12840 0.29588 0.14974 0.26916
110 75.000 0.09775 0.34633 0.11653 0.31861
111 90.000 0.07135 0.40103 0.08734 0.37274
112 95.000 0.05733 0.43661 0.07152 0.40823
113 99.000 0.03576 0.50661 0.04655 0.47859
114 99.900 0.01905 0.58632 0.02634 0.55960
115 99.990 0.01042 0.64997 0.01530 0.62495
116 99.999 0.00577 0.70216 0.00901 0.67897
117
118___________________________________________
1192-Sided Confidence Limits For Success Ratio
120___________________________________________
121
122Number of Observations = 200
123Number of successes = 40
124Sample frequency of occurrence = 0.2000000
125
126
127_______________________________________________________________________
128Confidence Lower CP Upper CP Lower JP Upper JP
129 Value (%) Limit Limit Limit Limit
130_______________________________________________________________________
131 50.000 0.17949 0.22259 0.18190 0.22001
132 75.000 0.16701 0.23693 0.16934 0.23429
133 90.000 0.15455 0.25225 0.15681 0.24956
134 95.000 0.14689 0.26223 0.14910 0.25951
135 99.000 0.13257 0.28218 0.13468 0.27940
136 99.900 0.11703 0.30601 0.11902 0.30318
137 99.990 0.10489 0.32652 0.10677 0.32366
138 99.999 0.09492 0.34485 0.09670 0.34197
139
140___________________________________________
1412-Sided Confidence Limits For Success Ratio
142___________________________________________
143
144Number of Observations = 2000
145Number of successes = 400
146Sample frequency of occurrence = 0.2000000
147
148
149_______________________________________________________________________
150Confidence Lower CP Upper CP Lower JP Upper JP
151 Value (%) Limit Limit Limit Limit
152_______________________________________________________________________
153 50.000 0.19382 0.20638 0.19406 0.20613
154 75.000 0.18965 0.21072 0.18990 0.21047
155 90.000 0.18537 0.21528 0.18561 0.21503
156 95.000 0.18267 0.21821 0.18291 0.21796
157 99.000 0.17745 0.22400 0.17769 0.22374
158 99.900 0.17150 0.23079 0.17173 0.23053
159 99.990 0.16658 0.23657 0.16681 0.23631
160 99.999 0.16233 0.24169 0.16256 0.24143
161
162*/
163
164
165