1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.math.distribution;
18
19
20
21
22
23
24
25
26
27 public class FDistributionTest extends ContinuousDistributionAbstractTest {
28
29
30
31
32
33 public FDistributionTest(String name) {
34 super(name);
35 }
36
37
38
39
40 public ContinuousDistribution makeDistribution() {
41 return new FDistributionImpl(5.0, 6.0);
42 }
43
44
45 public double[] makeCumulativeTestPoints() {
46
47 return new double[] {0.03468084d ,0.09370091d, 0.1433137d,
48 0.2020084d, 0.2937283d, 20.80266d, 8.745895d, 5.987565d,
49 4.387374d, 3.107512d};
50 }
51
52
53 public double[] makeCumulativeTestValues() {
54 return new double[] {0.001d, 0.01d, 0.025d, 0.05d, 0.1d, 0.999d,
55 0.990d, 0.975d, 0.950d, 0.900d};
56 }
57
58
59 protected void setUp() throws Exception {
60 super.setUp();
61 setTolerance(4e-6);
62 }
63
64
65
66 public void testCumulativeProbabilityExtremes() throws Exception {
67 setCumulativeTestPoints(new double[] {-2, 0});
68 setCumulativeTestValues(new double[] {0, 0});
69 verifyCumulativeProbabilities();
70 }
71
72 public void testInverseCumulativeProbabilityExtremes() throws Exception {
73 setInverseCumulativeTestPoints(new double[] {0, 1});
74 setInverseCumulativeTestValues(new double[] {0, Double.POSITIVE_INFINITY});
75 verifyInverseCumulativeProbabilities();
76 }
77
78 public void testDfAccessors() {
79 FDistribution distribution = (FDistribution) getDistribution();
80 assertEquals(5d, distribution.getNumeratorDegreesOfFreedom(), Double.MIN_VALUE);
81 distribution.setNumeratorDegreesOfFreedom(4d);
82 assertEquals(4d, distribution.getNumeratorDegreesOfFreedom(), Double.MIN_VALUE);
83 assertEquals(6d, distribution.getDenominatorDegreesOfFreedom(), Double.MIN_VALUE);
84 distribution.setDenominatorDegreesOfFreedom(4d);
85 assertEquals(4d, distribution.getDenominatorDegreesOfFreedom(), Double.MIN_VALUE);
86 try {
87 distribution.setNumeratorDegreesOfFreedom(0d);
88 fail("Expecting IllegalArgumentException for df = 0");
89 } catch (IllegalArgumentException ex) {
90
91 }
92 try {
93 distribution.setDenominatorDegreesOfFreedom(0d);
94 fail("Expecting IllegalArgumentException for df = 0");
95 } catch (IllegalArgumentException ex) {
96
97 }
98 }
99
100 public void testLargeDegreesOfFreedom() throws Exception {
101 org.apache.commons.math.distribution.FDistributionImpl fd =
102 new org.apache.commons.math.distribution.FDistributionImpl(
103 100000., 100000.);
104 double p = fd.cumulativeProbability(.999);
105 double x = fd.inverseCumulativeProbability(p);
106 assertEquals(.999, x, 1.0e-5);
107 }
108 }