Code Duplication    Length = 24-25 lines in 2 locations

pysie/dsl/two_groups.py 1 location

@@ 14-38 (lines=25) @@
11
    p_value_two_tail = None
12
    test_statistic = None
13
    significance_level = None
14
    reject_mean_same = None
15
16
    def __init__(self, sampling_distribution, significance_level=None):
17
        self.sampling_distribution = sampling_distribution
18
        if significance_level is not None:
19
            self.significance_level = significance_level
20
21
        if self.sampling_distribution.distribution_family == DistributionFamily.normal:
22
            Z = sampling_distribution.point_estimate / sampling_distribution.standard_error
23
            self.test_statistic = Z
24
            pf = norm.cdf(Z)
25
            if Z < 0:
26
                pf = 1 - pf
27
            self.p_value_one_tail = 1 - pf
28
            self.p_value_two_tail = self.p_value_one_tail * 2
29
        else:
30
            td_df = sampling_distribution.point_estimate / sampling_distribution.standard_error
31
            self.test_statistic = td_df
32
            pf = t.cdf(td_df, sampling_distribution.df)
33
            if td_df < 0:
34
                pf = 1 - pf
35
            self.p_value_one_tail = 1 - pf
36
            self.p_value_two_tail = self.p_value_one_tail * 2
37
38
        if significance_level is not None:
39
            self.reject_mean_same = (self.p_value_one_tail < significance_level,
40
                                     self.p_value_two_tail < significance_level)
41

pysie/dsl/one_group.py 1 location

@@ 60-83 (lines=24) @@
57
    significance_level = None
58
    reject_mean_null = None
59
60
    def __init__(self, sampling_distribution, p_null, significance_level=None):
61
        self.sampling_distribution = sampling_distribution
62
        self.p_null = p_null
63
        if significance_level is not None:
64
            self.significance_level = significance_level
65
66
        if self.sampling_distribution.distribution_family == DistributionFamily.normal:
67
            standard_error_null = math.sqrt(p_null * (1 - p_null) / sampling_distribution.sample_size)
68
            Z = (sampling_distribution.point_estimate - p_null) / standard_error_null
69
            self.test_statistic = Z
70
            pf = norm.cdf(Z)
71
            if Z < 0:
72
                pf = 1 - pf
73
            self.p_value_one_tail = 1 - pf
74
            self.p_value_two_tail = self.p_value_one_tail * 2
75
        else:
76
            simulated_proportions = self.simulate()
77
78
            self.p_value_one_tail = sum(1.0 for x in simulated_proportions if x > sampling_distribution.point_estimate) / 1000.0
79
            self.p_value_two_tail = self.p_value_one_tail
80
81
        if significance_level is not None:
82
            self.reject_mean_null = (self.p_value_one_tail < significance_level,
83
                                     self.p_value_two_tail < significance_level)
84
85
    def simulate(self):
86
        simulated_proportions = [0] * 1000