ProportionSamplingDistributionUnitTest   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 52
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
dl 0
loc 52
rs 10
c 1
b 0
f 0
wmc 8

4 Methods

Rating   Name   Duplication   Size   Complexity  
A test_confidence_interval_with_sample_stats_normal() 0 9 1
A test_confidence_interval_with_sample_normal() 0 15 3
A test_confidence_interval_with_sample_simulation() 0 15 3
A test_confidence_interval_with_sample_stats_simulation() 0 9 1
1
import unittest
2
3
from numpy.random import normal, random
4
5
from pysie.stats.distributions import MeanSamplingDistribution, DistributionFamily, ProportionSamplingDistribution, \
6
    MeanDiffSamplingDistribution, ProportionDiffSamplingDistribution
7
from pysie.stats.samples import Sample, SampleDistribution
8
9
10
class MeanSamplingDistributionUnitTest(unittest.TestCase):
11
    def test_confidence_interval_with_sample_stats_normal(self):
12
        sample_mean = 0
13
        sample_sd = 1
14
        sample_size = 31
15
        sampling_distribution = MeanSamplingDistribution(sample_mean=sample_mean, sample_sd=sample_sd,
16
                                                         sample_size=sample_size)
17
        self.assertEqual(sampling_distribution.distribution_family, DistributionFamily.normal)
18
        print('sampling distribution: (point_estimate = ' + str(sampling_distribution.point_estimate)
19
              + ', standard_error=' + str(sampling_distribution.standard_error) + ')')
20 View Code Duplication
        print('confidence interval for 95% confidence level: ' + str(sampling_distribution.confidence_interval(0.95)))
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
21
22
    def test_confidence_interval_with_sample_normal(self):
23
        mu = 0.0
24
        sigma = 1.0
25
        sample_size = 31
26
        sample = Sample()
27
28
        for i in range(sample_size):
29
            sample.add_numeric(normal(mu, sigma))
30
31
        sampling_distribution = MeanSamplingDistribution(sample_distribution=SampleDistribution(sample))
32
        self.assertEqual(sampling_distribution.distribution_family, DistributionFamily.normal)
33
        print('sampling distribution: (point_estimate = ' + str(sampling_distribution.point_estimate)
34
              + ', standard_error = ' + str(sampling_distribution.standard_error) + ')')
35
        print('confidence interval for 95% confidence level: ' + str(sampling_distribution.confidence_interval(0.95)))
36
37
    def test_confidence_interval_with_sample_stats_student(self):
38
        sample_mean = 0
39
        sample_sd = 1
40
        sample_size = 29
41
        sampling_distribution = MeanSamplingDistribution(sample_mean=sample_mean, sample_sd=sample_sd,
42
                                                         sample_size=sample_size)
43 View Code Duplication
        self.assertEqual(sampling_distribution.distribution_family, DistributionFamily.student_t)
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
44
        print('sampling distribution: (point_estimate = ' + str(sampling_distribution.point_estimate)
45
              + ', standard_error = ' + str(sampling_distribution.standard_error) + ')')
46
        print('confidence interval for 95% confidence level: ' + str(sampling_distribution.confidence_interval(0.95)))
47
48
    def test_confidence_interval_with_sample_student(self):
49
        mu = 0.0
50
        sigma = 1.0
51
        sample_size = 29
52
        sample = Sample()
53
54
        for i in range(sample_size):
55
            sample.add_numeric(normal(mu, sigma))
56
57
        sampling_distribution = MeanSamplingDistribution(sample_distribution=SampleDistribution(sample))
58
        self.assertEqual(sampling_distribution.distribution_family, DistributionFamily.student_t)
59
        print('sampling distribution: (point_estimate = ' + str(sampling_distribution.point_estimate)
60
              + ', standard_error = ' + str(sampling_distribution.standard_error) + ')')
61
        print('confidence interval for 95% confidence level: ' + str(sampling_distribution.confidence_interval(0.95)))
62
63
64
class MeanDiffSamplingDistributionUnitTest(unittest.TestCase):
65
    def test_confidence_interval_with_sample_stats_normal(self):
66
        grp1_sample_mean = 0
67
        grp1_sample_sd = 1
68
        grp1_sample_size = 31
69
        grp2_sample_mean = 0.001
70
        grp2_sample_sd = 2.1
71
        grp2_sample_size = 36
72
        sampling_distribution = MeanDiffSamplingDistribution(grp1_sample_mean=grp1_sample_mean,
73
                                                             grp1_sample_sd=grp1_sample_sd,
74 View Code Duplication
                                                             grp1_sample_size=grp1_sample_size,
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
75
                                                             grp2_sample_mean=grp2_sample_mean,
76
                                                             grp2_sample_sd=grp2_sample_sd,
77
                                                             grp2_sample_size=grp2_sample_size)
78
        self.assertEqual(sampling_distribution.distribution_family, DistributionFamily.normal)
79
        print('sampling distribution: (point_estimate = ' + str(sampling_distribution.point_estimate)
80
              + ', standard_error=' + str(sampling_distribution.standard_error) + ')')
81
        print('confidence interval for 95% confidence level: ' + str(sampling_distribution.confidence_interval(0.95)))
82
83
    def test_confidence_interval_with_sample_normal(self):
84
        grp1_mu = 0.0
85
        grp1_sigma = 1.0
86
        grp1_sample_size = 31
87
        grp1_sample = Sample()
88
89
        grp2_mu = 0.09
90
        grp2_sigma = 2.0
91
        grp2_sample_size = 36
92
        grp2_sample = Sample()
93
94
        for i in range(grp1_sample_size):
95
            grp1_sample.add_numeric(normal(grp1_mu, grp1_sigma))
96
97
        for i in range(grp2_sample_size):
98
            grp2_sample.add_numeric(normal(grp2_mu, grp2_sigma))
99
100 View Code Duplication
        sampling_distribution = MeanDiffSamplingDistribution(grp1_sample_distribution=SampleDistribution(grp1_sample),
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
101
                                                             grp2_sample_distribution=SampleDistribution(grp2_sample))
102
        self.assertEqual(sampling_distribution.distribution_family, DistributionFamily.normal)
103
        print('sampling distribution: (point_estimate = ' + str(sampling_distribution.point_estimate)
104
              + ', standard_error = ' + str(sampling_distribution.standard_error) + ')')
105
        print('confidence interval for 95% confidence level: ' + str(sampling_distribution.confidence_interval(0.95)))
106
107
    def test_confidence_interval_with_sample_stats_student(self):
108
        grp1_sample_mean = 0
109
        grp1_sample_sd = 1
110
        grp1_sample_size = 29
111
        grp2_sample_mean = 0.001
112
        grp2_sample_sd = 1.3
113
        grp2_sample_size = 24
114
        sampling_distribution = MeanDiffSamplingDistribution(grp1_sample_mean=grp1_sample_mean,
115
                                                             grp1_sample_sd=grp1_sample_sd,
116
                                                             grp1_sample_size=grp1_sample_size,
117
                                                             grp2_sample_mean=grp2_sample_mean,
118
                                                             grp2_sample_sd=grp2_sample_sd,
119
                                                             grp2_sample_size=grp2_sample_size)
120
        self.assertEqual(sampling_distribution.distribution_family, DistributionFamily.student_t)
121
        print('sampling distribution: (point_estimate = ' + str(sampling_distribution.point_estimate)
122
              + ', standard_error = ' + str(sampling_distribution.standard_error) + ')')
123
        print('confidence interval for 95% confidence level: ' + str(sampling_distribution.confidence_interval(0.95)))
124
125
    def test_confidence_interval_with_sample_student(self):
126
        grp1_mu = 0.0
127
        grp1_sigma = 1.0
128
        grp1_sample_size = 29
129
        grp1_sample = Sample()
130
        grp2_mu = 0.08
131
        grp2_sigma = 1.1
132
        grp2_sample_size = 27
133
        grp2_sample = Sample()
134
135
        for i in range(grp1_sample_size):
136
            grp1_sample.add_numeric(normal(grp1_mu, grp1_sigma))
137
        for i in range(grp2_sample_size):
138
            grp2_sample.add_numeric(normal(grp2_mu, grp2_sigma))
139
140
        sampling_distribution = MeanDiffSamplingDistribution(grp1_sample_distribution=SampleDistribution(grp1_sample),
141
                                                             grp2_sample_distribution=SampleDistribution(grp2_sample))
142
        self.assertEqual(sampling_distribution.distribution_family, DistributionFamily.student_t)
143
        print('sampling distribution: (point_estimate = ' + str(sampling_distribution.point_estimate)
144
              + ', standard_error = ' + str(sampling_distribution.standard_error) + ')')
145
        print('confidence interval for 95% confidence level: ' + str(sampling_distribution.confidence_interval(0.95)))
146
147
148
class ProportionSamplingDistributionUnitTest(unittest.TestCase):
149
    def test_confidence_interval_with_sample_stats_normal(self):
150
        sample_proportion = 0.6
151
        sample_size = 31
152
        sampling_distribution = ProportionSamplingDistribution(sample_proportion=sample_proportion,
153
                                                               sample_size=sample_size)
154
        self.assertEqual(sampling_distribution.distribution_family, DistributionFamily.normal)
155
        print('sampling distribution: (point_estimate = ' + str(sampling_distribution.point_estimate)
156
              + ', standard_error = ' + str(sampling_distribution.standard_error) + ')')
157
        print('confidence level for 95% confidence level: ' + str(sampling_distribution.confidence_interval(0.95)))
158
159
    def test_confidence_interval_with_sample_normal(self):
160
        sample = Sample()
161
162
        for i in range(100):
163
            if random() <= 0.6:
164
                sample.add_category("OK")
165
            else:
166
                sample.add_category("CANCEL")
167
168
        sampling_distribution = ProportionSamplingDistribution(sample_distribution=SampleDistribution(sample,
169
                                                                                                      categorical_value="OK"))
170
        self.assertEqual(sampling_distribution.distribution_family, DistributionFamily.normal)
171
        print('sampling distribution: (point_estimate = ' + str(sampling_distribution.point_estimate)
172
              + ', standard_error = ' + str(sampling_distribution.standard_error) + ')')
173
        print('confidence level for 95% confidence level: ' + str(sampling_distribution.confidence_interval(0.95)))
174
175
    def test_confidence_interval_with_sample_stats_simulation(self):
176
        sample_proportion = 0.6
177
        sample_size = 10
178
        sampling_distribution = ProportionSamplingDistribution(sample_proportion=sample_proportion,
179
                                                               sample_size=sample_size)
180
        self.assertEqual(sampling_distribution.distribution_family, DistributionFamily.simulation)
181
        print('sampling distribution: (point_estimate = ' + str(sampling_distribution.point_estimate)
182
              + ', standard_error = ' + str(sampling_distribution.standard_error) + ')')
183
        print('confidence level for 95% confidence level: ' + str(sampling_distribution.confidence_interval(0.95)))
184
185
    def test_confidence_interval_with_sample_simulation(self):
186
        sample = Sample()
187
188
        for i in range(10):
189
            if random() <= 0.6:
190
                sample.add_category("OK")
191
            else:
192
                sample.add_category("CANCEL")
193
194
        sampling_distribution = ProportionSamplingDistribution(sample_distribution=SampleDistribution(sample,
195
                                                                                                      categorical_value="OK"))
196
        self.assertEqual(sampling_distribution.distribution_family, DistributionFamily.simulation)
197
        print('sampling distribution: (point_estimate = ' + str(sampling_distribution.point_estimate)
198
              + ', standard_error = ' + str(sampling_distribution.standard_error) + ')')
199
        print('confidence level for 95% confidence level: ' + str(sampling_distribution.confidence_interval(0.95)))
200
201
202
class ProportionDiffSamplingDistributionUnitTest(unittest.TestCase):
203
    def test_confidence_interval_with_sample_stats_normal(self):
204
        grp1_sample_proportion = 0.6
205
        grp1_sample_size = 31
206
        grp2_sample_proportion = 0.51
207
        grp2_sample_size = 32
208
        sampling_distribution = ProportionDiffSamplingDistribution(grp1_sample_proportion=grp1_sample_proportion,
209
                                                                   grp1_sample_size=grp1_sample_size,
210
                                                                   grp2_sample_proportion=grp2_sample_proportion,
211
                                                                   grp2_sample_size=grp2_sample_size)
212
        self.assertEqual(sampling_distribution.distribution_family, DistributionFamily.normal)
213
        print('sampling distribution: (point_estimate = ' + str(sampling_distribution.point_estimate)
214
              + ', standard_error = ' + str(sampling_distribution.standard_error) + ')')
215
        print('confidence level for 95% confidence level: ' + str(sampling_distribution.confidence_interval(0.95)))
216
217 View Code Duplication
    def test_confidence_interval_with_sample_normal(self):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
218
        grp1_sample = Sample()
219
        grp2_sample = Sample()
220
221
        for i in range(100):
222
            if random() <= 0.6:
223
                grp1_sample.add_category("OK")
224
            else:
225
                grp1_sample.add_category("CANCEL")
226
227
        for i in range(100):
228
            if random() <= 0.61:
229
                grp2_sample.add_category("OK")
230
            else:
231
                grp2_sample.add_category("CANCEL")
232
233
        sampling_distribution = ProportionDiffSamplingDistribution(grp1_sample_distribution=SampleDistribution(
234
            grp1_sample, categorical_value="OK"),
235
            grp2_sample_distribution=SampleDistribution(
236
                grp2_sample, categorical_value="OK"))
237
        self.assertEqual(sampling_distribution.distribution_family, DistributionFamily.normal)
238
        print('sampling distribution: (point_estimate = ' + str(sampling_distribution.point_estimate)
239
              + ', standard_error = ' + str(sampling_distribution.standard_error) + ')')
240
        print('confidence level for 95% confidence level: ' + str(sampling_distribution.confidence_interval(0.95)))
241
242
    def test_confidence_interval_with_sample_stats_simulation(self):
243
        grp1_sample_proportion = 0.6
244
        grp1_sample_size = 10
245
        grp2_sample_proportion = 0.61
246
        grp2_sample_size = 9
247
        sampling_distribution = ProportionDiffSamplingDistribution(grp1_sample_proportion=grp1_sample_proportion,
248
                                                                   grp1_sample_size=grp1_sample_size,
249
                                                                   grp2_sample_proportion=grp2_sample_proportion,
250
                                                                   grp2_sample_size=grp2_sample_size
251
                                                                   )
252
        self.assertEqual(sampling_distribution.distribution_family, DistributionFamily.simulation)
253
        print('sampling distribution: (point_estimate = ' + str(sampling_distribution.point_estimate)
254
              + ', standard_error = ' + str(sampling_distribution.standard_error) + ')')
255
        print('confidence level for 95% confidence level: ' + str(sampling_distribution.confidence_interval(0.95)))
256
257 View Code Duplication
    def test_confidence_interval_with_sample_simulation(self):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
258
        grp1_sample = Sample()
259
        grp2_sample = Sample()
260
261
        for i in range(10):
262
            if random() <= 0.6:
263
                grp1_sample.add_category("OK")
264
            else:
265
                grp1_sample.add_category("CANCEL")
266
267
        for i in range(9):
268
            if random() <= 0.61:
269
                grp2_sample.add_category("OK")
270
            else:
271
                grp2_sample.add_category("CANCEL")
272
273
        sampling_distribution = ProportionDiffSamplingDistribution(
274
            grp1_sample_distribution=SampleDistribution(grp1_sample,
275
                                                        categorical_value="OK"),
276
            grp2_sample_distribution=SampleDistribution(
277
                grp2_sample,
278
                categorical_value="OK")
279
            )
280
        self.assertEqual(sampling_distribution.distribution_family, DistributionFamily.simulation)
281
        print('sampling distribution: (point_estimate = ' + str(sampling_distribution.point_estimate)
282
              + ', standard_error = ' + str(sampling_distribution.standard_error) + ')')
283
        print('confidence level for 95% confidence level: ' + str(sampling_distribution.confidence_interval(0.95)))
284
285
286
if __name__ == '__main__':
287
    unittest.main()
288