示例#1
0
    def test_add(self):
        binomial_one = Binomial(.4, 20)
        binomial_two = Binomial(.4, 60)
        binomial_sum = binomial_one + binomial_two

        self.assertEqual(binomial_sum.p, .4)
        self.assertEqual(binomial_sum.n, 80)
示例#2
0
class TestBinomialClass(unittest.TestCase):
    def setUp(self):
        self.binomial = Binomial('numbers_binomial.txt')

    def test_readdata(self):
        self.assertEqual(self.binomial.data,\
         [0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0], 'data not read in correctly')

    def test_meancalculation(self):
        mean = self.binomial.calculate_mean()
        self.assertEqual(round(mean, 2), 8.00,
                         'calculated mean not as expected')

    def test_stdevcalculation(self):
        stdev = self.binomial.calculate_stdev()
        self.assertEqual(
            round(stdev, 2), 1.75, 'calculated standard deviation\
                         not as expected')

    def test_pmf(self):
        self.assertEqual(
            round(self.binomial.pmf(5), 3), 0.054, 'propability \
        mass function does not give the expected result ')
        self.assertEqual(round(self.binomial.pmf(3), 3), 0.005)

    def test_def(self):
        self.assertEqual(str(self.binomial),
        """Number of trials {}, success propability for each trial {} """ .\
        format(13, 0.62),'Parameters of the Binomial not as expected')
示例#3
0
    def __add__(self, other):
        """Function to add together two Binomial distributions with equal p

        Args:
            other (Binomial): Binomial instance

        Returns:
            Binomial: Binomial distribution

        """

        try:
            assert self.p == other.p, 'p values are not equal'
        except AssertionError as error:
            raise ValueError('p values must be equal')

        # TODO: Define addition for two binomial distributions. Assume that the
        # p values of the two distributions are the same. The formula for
        # summing two binomial distributions with different p values is more complicated,
        # so you are only expected to implement the case for two distributions with equal p.

        # the try, except statement above will raise an exception if the p values are not equal

        # Hint: You need to instantiate a new binomial object with the correct n, p,
        #   mean and standard deviation values. The __add__ method should return this
        #   new binomial object.

        #   When adding two binomial distributions, the p value remains the same
        #   The new n value is the sum of the n values of the two distributions.

        size_new = self.n + other.n
        return Binomial(size=size_new, prob=self.p)
示例#4
0
    def test_init_with_errors(self):
        params = ((None, None, None), (1.2, None, None), (-1, None, None),
                  (-1.2, None, None), (3, None, None), (3, 1.2, None),
                  (3, -1, None), (3, 5, None), (3, 5, -2), (3, 5, -1.2),
                  ('some', 5, 0.85), (5, 'string', 0.85), (5, 10,
                                                           'some'), (3, 5, 2))

        for param in params:
            with self.assertRaises(ValueError):
                Binomial(*param)
示例#5
0
class TestBinomialClass(unittest.TestCase):
    def setUp(self):
        self.binomial = Binomial(0.4, 20)
        self.binomial.read_data_file('numbers_binomial.txt')

    def test_initialization(self):
        self.assertEqual(self.binomial.p, 0.4, 'p value incorrect')
        self.assertEqual(self.binomial.n, 20, 'n value incorrect')

    def test_readdata(self):
        self.assertEqual(self.binomial.data,\
         [0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0], 'data not read in correctly')

    def test_calculatemean(self):
        mean = self.binomial.calculate_mean()
        self.assertEqual(mean, 8)

    def test_calculatestdev(self):
        stdev = self.binomial.calculate_stdev()
        self.assertEqual(round(stdev, 2), 2.19)

    def test_replace_stats_with_data(self):
        p, n = self.binomial.replace_stats_with_data()
        self.assertEqual(round(p, 3), .615)
        self.assertEqual(n, 13)

    def test_pdf(self):
        self.assertEqual(round(self.binomial.pdf(5), 5), 0.07465)

        self.assertEqual(round(self.binomial.pdf(3), 5), 0.01235)

        self.binomial.replace_stats_with_data()
        self.assertEqual(round(self.binomial.pdf(5), 5), 0.05439)
        self.assertEqual(round(self.binomial.pdf(3), 5), 0.00472)

    def test_add(self):
        binomial_one = Binomial(.4, 20)
        binomial_two = Binomial(.4, 60)
        binomial_sum = binomial_one + binomial_two

        self.assertEqual(binomial_sum.p, .4)
        self.assertEqual(binomial_sum.n, 80)
示例#6
0
class TestBinomail(unittest.TestCase):
    def setUp(self):
        self.distribution = Binomial(3, 5, 0.85)

    def test_init_with_errors(self):
        params = ((None, None, None), (1.2, None, None), (-1, None, None),
                  (-1.2, None, None), (3, None, None), (3, 1.2, None),
                  (3, -1, None), (3, 5, None), (3, 5, -2), (3, 5, -1.2),
                  ('some', 5, 0.85), (5, 'string', 0.85), (5, 10,
                                                           'some'), (3, 5, 2))

        for param in params:
            with self.assertRaises(ValueError):
                Binomial(*param)

    def test_mean(self):
        mean = self.distribution.mean()
        self.assertEqual(mean, 4.25)

    def test_pmf(self):
        pmf = self.distribution.pmf()
        self.assertEqual(pmf, 0.13817812500000001)

    def test_variance(self):
        variance = self.distribution.variance()
        self.assertEqual(variance, 0.63750000000000007)

    def test_std(self):
        std = self.distribution.std()
        self.assertTrue(std, 0.79843597113356568)

    def test_cdf(self):
        cdf = self.distribution.cdf()
        self.assertTrue(cdf, 0.16479000000000005)

    def test_pmfs(self):
        t_pmfs = np.array(
            [7.59375000e-05, 2.15156250e-03, 2.43843750e-02, 1.38178125e-01])
        pmfs = self.distribution.pmfs()
        self.assertIsNotNone(pmfs)
        numpy_testing.assert_allclose(t_pmfs, pmfs)
示例#7
0
 def setUp(self):
     self.binomial = Binomial(0.4, 20)
     self.binomial.read_data_file('numbers_binomial.txt')
示例#8
0
 def setUp(self):
     self.binomial = Binomial('numbers_binomial.txt')
示例#9
0
 def setUp(self):
     self.distribution = Binomial(3, 5, 0.85)
示例#10
0
from distributions import Binomial

binomial_one = Binomial()
binomial_one.read_data_file('numbers_binomial.txt')
binomial_one.replace_stats_with_data()
binomial_one.plot_bar()
binomial_one.plot_bar_pdf()