ProportionDiffTestingUnitTest   A
last analyzed

Complexity

Total Complexity 10

Size/Duplication

Total Lines 63
Duplicated Lines 92.06 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 58
loc 63
rs 10
wmc 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
B test_student() 29 30 5
B test_normal() 28 30 5

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
import unittest
2
from random import random
3
4
from numpy.random.mtrand import normal
5
6
from pysie.dsl.two_groups import MeanDiffTesting, ProportionDiffTesting
7
from pysie.stats.distributions import MeanDiffSamplingDistribution, DistributionFamily, \
8
    ProportionDiffSamplingDistribution
9
from pysie.stats.samples import Sample, SampleDistribution
10
11
12
class MeanDiffTestingUnitTest(unittest.TestCase):
13
14 View Code Duplication
    def test_normal(self):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
15
        grp1_mu = 0.0
16
        grp1_sigma = 1.0
17
        grp1_sample_size = 31
18
        grp1_sample = Sample()
19
20
        grp2_mu = 0.09
21
        grp2_sigma = 2.0
22
        grp2_sample_size = 36
23
        grp2_sample = Sample()
24
25
        for i in range(grp1_sample_size):
26
            grp1_sample.add_numeric(normal(grp1_mu, grp1_sigma))
27
28
        for i in range(grp2_sample_size):
29
            grp2_sample.add_numeric(normal(grp2_mu, grp2_sigma))
30
31
        sampling_distribution = MeanDiffSamplingDistribution(grp1_sample_distribution=SampleDistribution(grp1_sample),
32
                                                             grp2_sample_distribution=SampleDistribution(grp2_sample))
33
        self.assertEqual(sampling_distribution.distribution_family, DistributionFamily.normal)
34
        testing = MeanDiffTesting(sampling_distribution=sampling_distribution)
35
        print('one tail p-value: ' + str(testing.p_value_one_tail))
36
        print('two tail p-value: ' + str(testing.p_value_two_tail))
37
        reject_one_tail, reject_two_tail = testing.will_reject(0.01)
38
        print('will reject mean_1 == mean_2 (one-tail) ? ' + str(reject_one_tail))
39
        print('will reject mean_1 == mean_2 (two-tail) ? ' + str(reject_two_tail))
40
41 View Code Duplication
    def test_student(self):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
42
        grp1_mu = 0.0
43
        grp1_sigma = 1.0
44
        grp1_sample_size = 29
45
        grp1_sample = Sample()
46
47
        grp2_mu = 0.09
48
        grp2_sigma = 2.0
49
        grp2_sample_size = 28
50
        grp2_sample = Sample()
51
52
        for i in range(grp1_sample_size):
53
            grp1_sample.add_numeric(normal(grp1_mu, grp1_sigma))
54
55
        for i in range(grp2_sample_size):
56
            grp2_sample.add_numeric(normal(grp2_mu, grp2_sigma))
57
58
        sampling_distribution = MeanDiffSamplingDistribution(grp1_sample_distribution=SampleDistribution(grp1_sample),
59
                                                             grp2_sample_distribution=SampleDistribution(grp2_sample))
60
        self.assertEqual(sampling_distribution.distribution_family, DistributionFamily.student_t)
61
        testing = MeanDiffTesting(sampling_distribution=sampling_distribution)
62
        print('one tail p-value: ' + str(testing.p_value_one_tail))
63
        print('two tail p-value: ' + str(testing.p_value_two_tail))
64
        reject_one_tail, reject_two_tail = testing.will_reject(0.01)
65
        print('will reject mean_1 == mean_2 (one-tail) ? ' + str(reject_one_tail))
66
        print('will reject mean_1 == mean_2 (two-tail) ? ' + str(reject_two_tail))
67
        self.assertFalse(reject_one_tail)
68
        self.assertFalse(reject_two_tail)
69
70
71
class ProportionDiffTestingUnitTest(unittest.TestCase):
72
73
    def test_normal(self):
74
        grp1_sample = Sample()
75 View Code Duplication
        grp2_sample = Sample()
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
76
77
        for i in range(100):
78
            if random() <= 0.6:
79
                grp1_sample.add_category("OK")
80
            else:
81
                grp1_sample.add_category("CANCEL")
82
83
        for i in range(100):
84
            if random() <= 0.61:
85
                grp2_sample.add_category("OK")
86
            else:
87
                grp2_sample.add_category("CANCEL")
88
89
        sampling_distribution = ProportionDiffSamplingDistribution(grp1_sample_distribution=SampleDistribution(
90
            grp1_sample, categorical_value="OK"),
91
            grp2_sample_distribution=SampleDistribution(
92
                grp2_sample, categorical_value="OK"))
93
        self.assertEqual(sampling_distribution.distribution_family, DistributionFamily.normal)
94
95
        testing = ProportionDiffTesting(sampling_distribution=sampling_distribution)
96
        print('one tail p-value: ' + str(testing.p_value_one_tail))
97
        print('two tail p-value: ' + str(testing.p_value_two_tail))
98
        reject_one_tail, reject_two_tail = testing.will_reject(0.01)
99
        print('will reject p_1 == p_2 (one-tail) ? ' + str(reject_one_tail))
100
        print('will reject p_1 == p_2 (two-tail) ? ' + str(reject_two_tail))
101
        self.assertFalse(reject_one_tail)
102
        self.assertFalse(reject_two_tail)
103
104
    def test_student(self):
105
        grp1_sample = Sample()
106 View Code Duplication
        grp2_sample = Sample()
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
107
108
        for i in range(20):
109
            if random() <= 0.6:
110
                grp1_sample.add_category("OK")
111
            else:
112
                grp1_sample.add_category("CANCEL")
113
114
        for i in range(20):
115
            if random() <= 0.61:
116
                grp2_sample.add_category("OK")
117
            else:
118
                grp2_sample.add_category("CANCEL")
119
120
        sampling_distribution = ProportionDiffSamplingDistribution(grp1_sample_distribution=SampleDistribution(
121
            grp1_sample, categorical_value="OK"),
122
            grp2_sample_distribution=SampleDistribution(
123
                grp2_sample, categorical_value="OK"))
124
        self.assertEqual(sampling_distribution.distribution_family, DistributionFamily.simulation)
125
126
        testing = ProportionDiffTesting(sampling_distribution=sampling_distribution)
127
        print('one tail p-value: ' + str(testing.p_value_one_tail))
128
        print('two tail p-value: ' + str(testing.p_value_two_tail))
129
        reject_one_tail, reject_two_tail = testing.will_reject(0.01)
130
        print('will reject p_1 == p_2 (one-tail) ? ' + str(reject_one_tail))
131
        print('will reject p_1 == p_2 (two-tail) ? ' + str(reject_two_tail))
132
        self.assertFalse(reject_one_tail)
133
        self.assertFalse(reject_two_tail)
134
135
if __name__ == '__main__':
136
    unittest.main()