@@ 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 |
@@ 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 |