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)
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')
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)
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)
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)
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)
def setUp(self): self.binomial = Binomial(0.4, 20) self.binomial.read_data_file('numbers_binomial.txt')
def setUp(self): self.binomial = Binomial('numbers_binomial.txt')
def setUp(self): self.distribution = Binomial(3, 5, 0.85)
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()