1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.math4.legacy.stat.interval;
18
19 import org.junit.Assert;
20 import org.junit.Test;
21
22
23
24
25
26 public class ClopperPearsonIntervalTest extends BinomialConfidenceIntervalAbstractTest {
27
28 @Override
29 protected BinomialConfidenceInterval createBinomialConfidenceInterval() {
30 return new ClopperPearsonInterval();
31 }
32
33 @Test
34 public void testStandardInterval() {
35 ConfidenceInterval confidenceInterval = createStandardTestInterval();
36 Assert.assertEquals(0.07873857, confidenceInterval.getLowerBound(), 1E-5);
37 Assert.assertEquals(0.1248658, confidenceInterval.getUpperBound(), 1E-5);
38 }
39
40 @Test
41 public void testMath1401() {
42 ConfidenceInterval interval = new ClopperPearsonInterval().createInterval(1, 1, 0.95);
43 Assert.assertEquals(0.025, interval.getLowerBound(), 1e-16);
44 Assert.assertEquals(1, interval.getUpperBound(), 0d);
45 }
46
47
48 @Test
49 public void testCase1() {
50
51 final int successes = 0;
52 final int trials = 10;
53 final double confidenceLevel = 0.95;
54
55
56 final ConfidenceInterval expected = new ConfidenceInterval(0,
57 0.3084971078187608,
58 confidenceLevel);
59
60 check(expected, createBinomialConfidenceInterval().createInterval(trials, successes, confidenceLevel));
61 }
62
63
64 @Test
65 public void testCase2() {
66
67 final int successes = 10;
68 final int trials = 10;
69 final double confidenceLevel = 0.95;
70
71
72 final ConfidenceInterval expected = new ConfidenceInterval(0.6915028921812392,
73 1,
74 confidenceLevel);
75
76 check(expected, createBinomialConfidenceInterval().createInterval(trials, successes, confidenceLevel));
77 }
78
79
80 @Test
81 public void testCase3() {
82
83 final int successes = 3;
84 final int trials = 10;
85 final double confidenceLevel = 0.95;
86
87
88 final ConfidenceInterval expected = new ConfidenceInterval(0.06673951117773447,
89 0.6524528500599972,
90 confidenceLevel);
91
92 check(expected, createBinomialConfidenceInterval().createInterval(trials, successes, confidenceLevel));
93 }
94
95 private void check(ConfidenceInterval expected,
96 ConfidenceInterval actual) {
97 final double relTol = 1.0e-6;
98
99 Assert.assertEquals(expected.getLowerBound(),
100 actual.getLowerBound(),
101 relTol * (1.0 + Math.abs(expected.getLowerBound())));
102 Assert.assertEquals(expected.getUpperBound(),
103 actual.getUpperBound(),
104 relTol * (1.0 + Math.abs(expected.getUpperBound())));
105
106 Assert.assertEquals(expected.getConfidenceLevel(),
107 actual.getConfidenceLevel(),
108 0.0);
109 }
110 }