Completed
Push — master ( b187e9...0db62b )
by Xianshun
01:00
created

calculate_standard_error()   A

Complexity

Conditions 1

Size

Total Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
c 1
b 0
f 0
dl 0
loc 3
rs 10
1
import math
2
from enum import Enum
3
4
from scipy.stats import norm
5
6
7
class DistributionFamily(Enum):
8
    normal = 1
9
    student_t = 2
10
    fisher = 3
11
    chi_square = 4
12
13
class MeanSamplingDistribution(object):
14
    sample_distribution = None
15
    point_estimate = None
16
    distribution_family = None
17
    df = None
18
19
    def __init__(self, sample_distribution=None, sample_mean=None, sample_sd=None, sample_size=None):
20
        if sample_mean is not None:
21
            self.point_estimate = sample_mean
22
23
        if sample_sd is not None:
24
            self.sample_sd = sample_sd
25
26
        if sample_size is not None:
27
            self.sample_size = sample_size
28
29
        if sample_distribution is not None:
30
            self.sample_distribution = sample_distribution
31
            self.point_estimate = sample_distribution.mean
32
            self.sample_sd = sample_distribution.sd
33
            self.sample_size = sample_distribution.sample_size
34
35
        self.standard_error = MeanSamplingDistribution.calculate_standard_error(self.sample_sd, self.sample_size)
36
37
        self.df = self.sample_size - 1.0
38
        if self.sample_size < 30:
39
            self.distribution_family = DistributionFamily.student_t
40
        else:
41
            self.distribution_family = DistributionFamily.normal
42
43
44
    @staticmethod
45
    def calculate_standard_error(sample_sd, sample_size):
46
        return sample_sd / math.sqrt(sample_size)
47
48
    def confidence_interval(self, confidence_level):
49
        pf = norm.ppf(1 - (1 - confidence_level) / 2)
50
        return (-pf, pf)
51
52
53