croupier 1.6.0 → 2.0.0.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +2 -2
  3. data/Rakefile +7 -0
  4. data/lib/croupier/distribution.rb +115 -36
  5. data/lib/croupier/distribution_generator.rb +57 -0
  6. data/lib/croupier/distribution_generators/enumerator_block_generator.rb +23 -0
  7. data/lib/croupier/distribution_generators/enumerator_generator.rb +21 -0
  8. data/lib/croupier/distribution_generators/inverse_cdf_generator.rb +21 -0
  9. data/lib/croupier/distribution_generators/minimum_sample_generator.rb +24 -0
  10. data/lib/croupier/distribution_generators.rb +18 -0
  11. data/lib/croupier/distributions/bernoulli.rb +18 -25
  12. data/lib/croupier/distributions/binomial.rb +30 -29
  13. data/lib/croupier/distributions/cauchy.rb +22 -19
  14. data/lib/croupier/distributions/credit_card.rb +39 -29
  15. data/lib/croupier/distributions/degenerate.rb +16 -19
  16. data/lib/croupier/distributions/exponential.rb +18 -19
  17. data/lib/croupier/distributions/gamma.rb +66 -37
  18. data/lib/croupier/distributions/geometric.rb +19 -20
  19. data/lib/croupier/distributions/nbinomial.rb +22 -33
  20. data/lib/croupier/distributions/normal.rb +30 -34
  21. data/lib/croupier/distributions/poisson.rb +26 -25
  22. data/lib/croupier/distributions/triangular.rb +39 -25
  23. data/lib/croupier/distributions/uniform.rb +43 -19
  24. data/lib/croupier/distributions.rb +3 -4
  25. data/lib/croupier/version.rb +1 -1
  26. data/lib/croupier.rb +43 -6
  27. data/test/minitest/distribution_class/test_class_methods.rb +142 -0
  28. data/test/{test_distribution_class.rb → minitest/distribution_class/test_instance_methods.rb} +26 -28
  29. data/test/minitest/distribution_generator_class/test_class_methods.rb +24 -0
  30. data/test/minitest/distribution_generator_class/test_instance_methods.rb +35 -0
  31. data/test/minitest/distribution_generators/test_enumerator_block_generator.rb +31 -0
  32. data/test/minitest/distribution_generators/test_enumerator_generator.rb +33 -0
  33. data/test/minitest/distribution_generators/test_inverse_cdf_generator.rb +36 -0
  34. data/test/minitest/distribution_generators/test_minimum_sample_generator.rb +33 -0
  35. data/test/minitest/distributions/test_bernoulli_distribution.rb +13 -0
  36. data/test/minitest/distributions/test_binomial_distribution.rb +18 -0
  37. data/test/minitest/distributions/test_cauchy_distribution.rb +18 -0
  38. data/test/{distributions/minitest/test_credit_card.rb → minitest/distributions/test_credit_card_distribution.rb} +5 -0
  39. data/test/{distributions/minitest → minitest/distributions}/test_degenerate_distribution.rb +2 -2
  40. data/test/minitest/distributions/test_exponential_distribution.rb +13 -0
  41. data/test/minitest/distributions/test_gamma_distribution.rb +23 -0
  42. data/test/minitest/distributions/test_geometric_distribution.rb +13 -0
  43. data/test/minitest/distributions/test_normal_distribution.rb +17 -0
  44. data/test/minitest/distributions/test_poisson_distribution.rb +13 -0
  45. data/test/minitest/distributions/test_triangular_distribution.rb +26 -0
  46. data/test/minitest/distributions/test_uniform_distribution.rb +54 -0
  47. data/test/{test_croupier_module.rb → minitest/test_croupier_module.rb} +0 -0
  48. data/test/minitest/test_distribution_generators_module.rb +37 -0
  49. data/test/{test_distributions_module.rb → minitest/test_distributions_module.rb} +0 -0
  50. data/test/rtests.R +1 -0
  51. metadata +62 -44
  52. data/test/distributions/R_tests/test_bernoulli.R +0 -17
  53. data/test/distributions/R_tests/test_binomial.R +0 -17
  54. data/test/distributions/R_tests/test_cauchy.R +0 -28
  55. data/test/distributions/R_tests/test_exponential.R +0 -28
  56. data/test/distributions/R_tests/test_gamma.R +0 -27
  57. data/test/distributions/R_tests/test_geometric.R +0 -23
  58. data/test/distributions/R_tests/test_nbinomial.R +0 -17
  59. data/test/distributions/R_tests/test_normal.R +0 -52
  60. data/test/distributions/R_tests/test_poisson.R +0 -17
  61. data/test/distributions/R_tests/test_triangular.R +0 -28
  62. data/test/distributions/R_tests/test_uniform.R +0 -30
  63. data/test/testsuite.R +0 -37
@@ -0,0 +1,26 @@
1
+ require "minitest/autorun"
2
+ require "croupier"
3
+ class TestTriangularDistribution < MiniTest::Unit::TestCase
4
+
5
+ def triangular(opts={})
6
+ ::Croupier::Distributions.triangular(opts)
7
+ end
8
+
9
+ def test_change_lower_and_upper_values_if_they_are_not_in_the_right_order
10
+ t = triangular lower: 8, upper: 3, mode: 4
11
+ assert_equal 3, t.lower, "lower is not 3"
12
+ assert_equal 8, t.upper, "upper is not 8"
13
+ assert_equal 5, t.range, "range is not upper - limit"
14
+ end
15
+
16
+ def test_change_mode_if_lt_lower_value
17
+ t = triangular lower: 3, upper: 6, mode: 2
18
+ assert_in_delta 4.5, t.mode, 1e-10, "mode did not change to median"
19
+ end
20
+
21
+ def test_change_mode_if_gt_upper_value
22
+ t = triangular lower: 3, upper: 6, mode: 8
23
+ assert_in_delta 4.5, t.mode, 1e-10, "mode did not change to median"
24
+ end
25
+ end
26
+
@@ -0,0 +1,54 @@
1
+ require "minitest/autorun"
2
+ require "croupier"
3
+ class TestUniformDistribution < MiniTest::Unit::TestCase
4
+
5
+ def uniform(opts={})
6
+ ::Croupier::Distributions.uniform(opts)
7
+ end
8
+
9
+ def test_inverted_for_default_uniform
10
+ u = uniform
11
+ assert !u.inverted?, "uniform should not be considered inverted"
12
+ end
13
+
14
+ def test_inverted_for_uniform_where_included_smaller_than_excluded
15
+ u = uniform included: 5, excluded: 7
16
+ assert !u.inverted?, "uniform should not be considered inverted"
17
+ end
18
+
19
+ def test_inverted_for_uniform_where_included_greater_than_excluded
20
+ u = uniform({included: 7, excluded: 5})
21
+ assert u.inverted?, "uniform should be considered inverted"
22
+ end
23
+
24
+ def test_minmax_and_range_in_default_uniform
25
+ u = uniform
26
+ assert_equal 0, u.min, "default minimum is not 0"
27
+ assert_equal 1, u.max, "default maximum is not 1"
28
+ assert_equal 1, u.range, "default range is not 1"
29
+ end
30
+
31
+ def test_minmax_and_range_in_non_inverted_uniform
32
+ u = uniform included: 5, excluded: 7
33
+ assert_equal 5, u.min, "minimum is not the included value"
34
+ assert_equal 7, u.max, "maximum is not the excluded value"
35
+ assert_equal 2, u.range, "range is not maximum - minimum"
36
+ end
37
+
38
+ def test_minmax_and_range_in_inverted_uniform
39
+ u = uniform included: 7, excluded: 5
40
+ assert_equal 5, u.min, "minimum is not the excluded value"
41
+ assert_equal 7, u.max, "maximum is not the included value"
42
+ assert_equal 2, u.range, "range is not maximum - minimum"
43
+ end
44
+
45
+ def test_exclude_value_for_non_inverted_distributions
46
+ u = uniform
47
+ assert_in_delta 0.3, u.exclude_value.(0.3), 1e-10, "exclude value function is not the identity"
48
+ end
49
+
50
+ def test_exclude_value_for_inverted_distributions
51
+ u = uniform included: 7, excluded: 5
52
+ assert_in_delta 0.7, u.exclude_value.(0.3), 1e-10, "exclude value function is not 1-n"
53
+ end
54
+ end
@@ -0,0 +1,37 @@
1
+ require "minitest/autorun"
2
+ require "croupier"
3
+
4
+ class TestDistributionGeneratorsModule < MiniTest::Unit::TestCase
5
+
6
+ def test_list_of_all_distribution_generators
7
+ all = Croupier::DistributionGenerators.all
8
+
9
+ assert_operator all.size, :>, 1, "#{all.size} is 1 or less"
10
+
11
+ all.each{|d|
12
+ assert_equal Croupier::DistributionGenerator, d.superclass, "#{d.name} is not a distribution generator"
13
+ }
14
+
15
+ Croupier::DistributionGenerators.constants(false).each do |distrib|
16
+ d = ::Croupier::DistributionGenerators.const_get(distrib)
17
+ if d.is_a?(Class) && d.kind_of?(Croupier::DistributionGenerator)
18
+ assert_includes all, d, "#{d.name} not included in array of all distributions"
19
+ end
20
+ end
21
+ end
22
+
23
+ def test_method_names_list
24
+ list = Croupier::DistributionGenerators.list
25
+ assert_operator list.size, :>, 1, "#{list.size} is 1 or less"
26
+ Croupier::DistributionGenerators.all.each{|d|
27
+ assert_includes list, d.method_name, "#{d.method_name} not included in list"
28
+ }
29
+ end
30
+
31
+ def test_all_and_list_have_same_size
32
+ all = Croupier::DistributionGenerators.all
33
+ list = Croupier::DistributionGenerators.list
34
+ assert_operator list.size, :>, 1, "#{list.size} is 1 or less"
35
+ assert_equal list.size, all.size, "#{list.size} and #{all.size} are not equal"
36
+ end
37
+ end
data/test/rtests.R ADDED
@@ -0,0 +1 @@
1
+ source('./sample_test/testsuite.R', chdir = TRUE)
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: croupier
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.0
5
- prerelease:
4
+ version: 2.0.0.rc1
6
5
  platform: ruby
7
6
  authors:
8
7
  - Juanjo Bazán
@@ -10,7 +9,7 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2013-07-24 00:00:00.000000000 Z
12
+ date: 2013-09-24 00:00:00.000000000 Z
14
13
  dependencies: []
15
14
  description: Croupier is a Ruby gem to generate a random sample of numbers with a
16
15
  given probability distribution.
@@ -28,6 +27,12 @@ files:
28
27
  - lib/croupier/cli/application.rb
29
28
  - lib/croupier/cli/trollop.rb
30
29
  - lib/croupier/distribution.rb
30
+ - lib/croupier/distribution_generator.rb
31
+ - lib/croupier/distribution_generators/enumerator_block_generator.rb
32
+ - lib/croupier/distribution_generators/enumerator_generator.rb
33
+ - lib/croupier/distribution_generators/inverse_cdf_generator.rb
34
+ - lib/croupier/distribution_generators/minimum_sample_generator.rb
35
+ - lib/croupier/distribution_generators.rb
31
36
  - lib/croupier/distributions/bernoulli.rb
32
37
  - lib/croupier/distributions/binomial.rb
33
38
  - lib/croupier/distributions/cauchy.rb
@@ -45,26 +50,34 @@ files:
45
50
  - lib/croupier/exceptions.rb
46
51
  - lib/croupier/version.rb
47
52
  - lib/croupier.rb
48
- - test/distributions/R_tests/test_bernoulli.R
49
- - test/distributions/R_tests/test_binomial.R
50
- - test/distributions/R_tests/test_cauchy.R
51
- - test/distributions/R_tests/test_exponential.R
52
- - test/distributions/R_tests/test_gamma.R
53
- - test/distributions/R_tests/test_geometric.R
54
- - test/distributions/R_tests/test_nbinomial.R
55
- - test/distributions/R_tests/test_normal.R
56
- - test/distributions/R_tests/test_poisson.R
57
- - test/distributions/R_tests/test_triangular.R
58
- - test/distributions/R_tests/test_uniform.R
59
- - test/distributions/minitest/test_credit_card.rb
60
- - test/distributions/minitest/test_degenerate_distribution.rb
61
- - test/test_croupier_module.rb
62
- - test/test_distribution_class.rb
63
- - test/test_distributions_module.rb
64
- - test/testsuite.R
53
+ - test/minitest/distribution_class/test_class_methods.rb
54
+ - test/minitest/distribution_class/test_instance_methods.rb
55
+ - test/minitest/distribution_generator_class/test_class_methods.rb
56
+ - test/minitest/distribution_generator_class/test_instance_methods.rb
57
+ - test/minitest/distribution_generators/test_enumerator_block_generator.rb
58
+ - test/minitest/distribution_generators/test_enumerator_generator.rb
59
+ - test/minitest/distribution_generators/test_inverse_cdf_generator.rb
60
+ - test/minitest/distribution_generators/test_minimum_sample_generator.rb
61
+ - test/minitest/distributions/test_bernoulli_distribution.rb
62
+ - test/minitest/distributions/test_binomial_distribution.rb
63
+ - test/minitest/distributions/test_cauchy_distribution.rb
64
+ - test/minitest/distributions/test_credit_card_distribution.rb
65
+ - test/minitest/distributions/test_degenerate_distribution.rb
66
+ - test/minitest/distributions/test_exponential_distribution.rb
67
+ - test/minitest/distributions/test_gamma_distribution.rb
68
+ - test/minitest/distributions/test_geometric_distribution.rb
69
+ - test/minitest/distributions/test_normal_distribution.rb
70
+ - test/minitest/distributions/test_poisson_distribution.rb
71
+ - test/minitest/distributions/test_triangular_distribution.rb
72
+ - test/minitest/distributions/test_uniform_distribution.rb
73
+ - test/minitest/test_croupier_module.rb
74
+ - test/minitest/test_distribution_generators_module.rb
75
+ - test/minitest/test_distributions_module.rb
76
+ - test/rtests.R
65
77
  - bin/croupier
66
78
  homepage: https://github.com/xuanxu/croupier
67
79
  licenses: []
80
+ metadata: {}
68
81
  post_install_message:
69
82
  rdoc_options:
70
83
  - --main
@@ -73,38 +86,43 @@ rdoc_options:
73
86
  require_paths:
74
87
  - lib
75
88
  required_ruby_version: !ruby/object:Gem::Requirement
76
- none: false
77
89
  requirements:
78
- - - ! '>='
90
+ - - '>='
79
91
  - !ruby/object:Gem::Version
80
92
  version: '0'
81
93
  required_rubygems_version: !ruby/object:Gem::Requirement
82
- none: false
83
94
  requirements:
84
- - - ! '>='
95
+ - - '>'
85
96
  - !ruby/object:Gem::Version
86
- version: '0'
97
+ version: 1.3.1
87
98
  requirements: []
88
99
  rubyforge_project:
89
- rubygems_version: 1.8.25
100
+ rubygems_version: 2.0.3
90
101
  signing_key:
91
- specification_version: 3
102
+ specification_version: 4
92
103
  summary: Samples of random numbers with specific probability distributions
93
104
  test_files:
94
- - test/distributions/R_tests/test_bernoulli.R
95
- - test/distributions/R_tests/test_binomial.R
96
- - test/distributions/R_tests/test_cauchy.R
97
- - test/distributions/R_tests/test_exponential.R
98
- - test/distributions/R_tests/test_gamma.R
99
- - test/distributions/R_tests/test_geometric.R
100
- - test/distributions/R_tests/test_nbinomial.R
101
- - test/distributions/R_tests/test_normal.R
102
- - test/distributions/R_tests/test_poisson.R
103
- - test/distributions/R_tests/test_triangular.R
104
- - test/distributions/R_tests/test_uniform.R
105
- - test/distributions/minitest/test_credit_card.rb
106
- - test/distributions/minitest/test_degenerate_distribution.rb
107
- - test/test_croupier_module.rb
108
- - test/test_distribution_class.rb
109
- - test/test_distributions_module.rb
110
- - test/testsuite.R
105
+ - test/minitest/distribution_class/test_class_methods.rb
106
+ - test/minitest/distribution_class/test_instance_methods.rb
107
+ - test/minitest/distribution_generator_class/test_class_methods.rb
108
+ - test/minitest/distribution_generator_class/test_instance_methods.rb
109
+ - test/minitest/distribution_generators/test_enumerator_block_generator.rb
110
+ - test/minitest/distribution_generators/test_enumerator_generator.rb
111
+ - test/minitest/distribution_generators/test_inverse_cdf_generator.rb
112
+ - test/minitest/distribution_generators/test_minimum_sample_generator.rb
113
+ - test/minitest/distributions/test_bernoulli_distribution.rb
114
+ - test/minitest/distributions/test_binomial_distribution.rb
115
+ - test/minitest/distributions/test_cauchy_distribution.rb
116
+ - test/minitest/distributions/test_credit_card_distribution.rb
117
+ - test/minitest/distributions/test_degenerate_distribution.rb
118
+ - test/minitest/distributions/test_exponential_distribution.rb
119
+ - test/minitest/distributions/test_gamma_distribution.rb
120
+ - test/minitest/distributions/test_geometric_distribution.rb
121
+ - test/minitest/distributions/test_normal_distribution.rb
122
+ - test/minitest/distributions/test_poisson_distribution.rb
123
+ - test/minitest/distributions/test_triangular_distribution.rb
124
+ - test/minitest/distributions/test_uniform_distribution.rb
125
+ - test/minitest/test_croupier_module.rb
126
+ - test/minitest/test_distribution_generators_module.rb
127
+ - test/minitest/test_distributions_module.rb
128
+ - test/rtests.R
@@ -1,17 +0,0 @@
1
- context('** Bernoulli Distribution **')
2
-
3
- context('ChiSquare Goodness of Fit test for default success p = 0.5')
4
- croupier_bernoulli <- read.table("../generated_samples/bernoulli_05.data")
5
- cs_result<-summary(goodfit(croupier_bernoulli$V1, type="binomial", method="ML", par=list(size=1, prob=0.5)))
6
-
7
- test_that("p-value > 0.05, bernoulli, p = 0.5", {
8
- expect_true(cs_result['Pearson',3] > 0.05)
9
- })
10
-
11
- context('ChiSquare Goodness of Fit test for success p = 0.75')
12
- croupier_bernoulli <- read.table("../generated_samples/bernoulli_075.data")
13
- cs_result<-summary(goodfit(croupier_bernoulli$V1, type="binomial", method="ML", par=list(size=1, prob=0.75)))
14
-
15
- test_that("p-value > 0.05, bernoulli, p = 0.75", {
16
- expect_true(cs_result['Pearson',3] > 0.05)
17
- })
@@ -1,17 +0,0 @@
1
- context('** Binomial Distribution **')
2
-
3
- context('ChiSquare Goodness of Fit test for p=0.5, size=5')
4
- croupier_binomial <- read.table("../generated_samples/binomial_05_5.data")
5
- cs_result<-summary(goodfit(croupier_binomial$V1, type="binomial", method="ML", par=list(size=5, prob=0.5)))
6
-
7
- test_that("p-value > 0.05, binomial, p = 0.5, size=5", {
8
- expect_true(cs_result['Pearson',3] > 0.05)
9
- })
10
-
11
- context('ChiSquare Goodness of Fit test for p = 0.35, size=17')
12
- croupier_binomial <- read.table("../generated_samples/binomial_035_17.data")
13
- cs_result<-summary(goodfit(croupier_binomial$V1, type="binomial", method="ML", par=list(size=17, prob=0.35)))
14
-
15
- test_that("p-value > 0.05, binomial, p=0.35, size=17", {
16
- expect_true(cs_result['Pearson',3] > 0.05)
17
- })
@@ -1,28 +0,0 @@
1
- context('** Cauchy Distribution **')
2
- # Run a K-S test on the Croupier sample against a Cauchy R-generated sample
3
- # Accept Croupier's sample as Cauchy if p-value > 0.05
4
- # Also check for a statistic near 0
5
-
6
- context('Kolmogorov-Smirnov test for default (location, scale) = (0,1)')
7
- croupier_cauchy <- read.table("../generated_samples/cauchy_0_1.data")
8
- ks_result<-ks.test(croupier_cauchy$V1, "pcauchy")
9
-
10
- test_that("p-value > 0.05, cauchy, location=0, scale=1", {
11
- expect_true(ks_result$p.value > 0.05)
12
- })
13
-
14
- test_that("statistic converging to 0", {
15
- expect_true(as.numeric(ks_result$statistic) < 0.05)
16
- })
17
-
18
- context('Kolmogorov-Smirnov test for given (location, scale) = (12, 3)')
19
- croupier_cauchy <- read.table("../generated_samples/cauchy_12_3.data")
20
- ks_result<-ks.test(croupier_cauchy$V1, "pcauchy", location=12, scale=3)
21
-
22
- test_that("p-value > 0.05, cauchy, location=12, scale=3", {
23
- expect_true(ks_result$p.value > 0.05)
24
- })
25
-
26
- test_that("statistic converging to 0", {
27
- expect_true(as.numeric(ks_result$statistic) < 0.05)
28
- })
@@ -1,28 +0,0 @@
1
- context('** Exponential Distribution **')
2
- # Run a K-S test on the Croupier sample against a exponential R-generated sample
3
- # Accept Croupier's sample as exponential if p-value > 0.05
4
- # Also check for a statistic near 0
5
-
6
- context('Kolmogorov-Smirnov test for default lambda = 1')
7
- croupier_exponential <- read.table("../generated_samples/exponential_1.data")
8
- ks_result<-ks.test(croupier_exponential$V1, "pexp")
9
-
10
- test_that("p-value > 0.05, exponential, lambda=1", {
11
- expect_true(ks_result$p.value > 0.05)
12
- })
13
-
14
- test_that("statistic converging to 0", {
15
- expect_true(as.numeric(ks_result$statistic) < 0.05)
16
- })
17
-
18
- context('Kolmogorov-Smirnov test for given lambda = 1.6')
19
- croupier_exponential <- read.table("../generated_samples/exponential_1_6.data")
20
- ks_result<-ks.test(croupier_exponential$V1, "pexp", rate = 1.6)
21
-
22
- test_that("p-value > 0.05, exponential, lambda=1.6", {
23
- expect_true(ks_result$p.value > 0.05)
24
- })
25
-
26
- test_that("statistic converging to 0", {
27
- expect_true(as.numeric(ks_result$statistic) < 0.05)
28
- })
@@ -1,27 +0,0 @@
1
- context('** Gamma Distribution **')
2
-
3
- context('Kolmogorov-Smirnov test for gamma, shape=1.0, scale=1.0')
4
- croupier_gamma <- read.table("../generated_samples/gamma_1_1.data")
5
- ks_result<-ks.test(croupier_gamma$V1, "pgamma", shape = 1.0, scale=1.0)
6
-
7
- test_that("p-value > 0.05 gamma, shape=1.0, scale=1.0", {
8
- expect_true(ks_result$p.value > 0.05)
9
- })
10
-
11
- test_that("statistic converging to 0 gamma, shape=1.0, scale=1.0", {
12
- expect_true(as.numeric(ks_result$statistic) < 0.05)
13
- })
14
-
15
-
16
- context('Kolmogorov-Smirnov test for gamma, shape=10.35, scale=2.5')
17
- croupier_gamma <- read.table("../generated_samples/gamma_1035_25.data")
18
- ks_result<-ks.test(croupier_gamma$V1, "pgamma", shape=10.35, scale=2.5)
19
-
20
- test_that("p-value > 0.05 gamma, shape=10.35, scale=2.5", {
21
- expect_true(ks_result$p.value > 0.05)
22
- })
23
-
24
- test_that("statistic converging to 0 gamma, shape=10.35, scale=2.5", {
25
- expect_true(as.numeric(ks_result$statistic) < 0.05)
26
- })
27
-
@@ -1,23 +0,0 @@
1
- context('** Geometric Distribution **')
2
-
3
- # It uses the fact that it is equivalent to a negative binomial
4
- # distribution with parameters size=1 and prob = p (Wikipedia
5
- # set p_{nbinomial} to be the fail probability while R takes
6
- # it as the success one).
7
- # Besides, since for the equality to hold the support must start
8
- # at zero, it just substracts one from the vector of samples.
9
- context('ChiSquare Goodness of Fit test for p=0.5')
10
- croupier_geometric <- read.table("../generated_samples/geometric_05.data")
11
- cs_result<-summary(goodfit(croupier_geometric$V1 - 1, type="nbinomial", method="ML", par=list(size=1, prob=0.5)))
12
-
13
- test_that("p-value > 0.05, geometric, p = 0.5", {
14
- expect_true(cs_result['Pearson',3] > 0.05)
15
- })
16
-
17
- context('ChiSquare Goodness of Fit test for p = 0.05')
18
- croupier_geometric <- read.table("../generated_samples/geometric_005.data")
19
- cs_result<-summary(goodfit(croupier_geometric$V1 - 1, type="nbinomial", method="ML", par=list(size=1, prob=0.05)))
20
-
21
- test_that("p-value > 0.05, geometric, p=0.05", {
22
- expect_true(cs_result['Pearson',3] > 0.05)
23
- })
@@ -1,17 +0,0 @@
1
- context('** Negative Binomial Distribution **')
2
-
3
- context('ChiSquare Goodness of Fit test for prob=0.5, size=5')
4
- croupier_nbinomial <- read.table("../generated_samples/nbinomial_05_5.data")
5
- cs_result<-summary(goodfit(croupier_nbinomial$V1, type="nbinomial", method="ML", par=list(size=5, prob=0.5)))
6
-
7
- test_that("p-value > 0.05, nbinomial, prob = 0.5, size=5", {
8
- expect_true(cs_result['Pearson',3] > 0.05)
9
- })
10
-
11
- context('ChiSquare Goodness of Fit test for prob = 0.25, size=15')
12
- croupier_nbinomial <- read.table("../generated_samples/nbinomial_025_15.data")
13
- cs_result<-summary(goodfit(croupier_nbinomial$V1, type="nbinomial", method="ML", par=list(size=15, prob=0.25)))
14
-
15
- test_that("p-value > 0.05, nbinomial, prob=0.25, size=15", {
16
- expect_true(cs_result['Pearson',3] > 0.05)
17
- })
@@ -1,52 +0,0 @@
1
- context('** Normal Distribution **')
2
- # Run a K-S test on the Croupier sample against a exponential R-generated sample
3
- # Accept Croupier's sample as normal if p-value > 0.05
4
- # Also check for a statistic near 0
5
-
6
- context('Kolmogorov-Smirnov test for default mean = 0 and std = 1')
7
- croupier_normal <- read.table("../generated_samples/normal_0_1.data")
8
- ks_result<-ks.test(croupier_normal$V1, "pnorm")
9
-
10
- test_that("p-value > 0.05, normal (0,1)", {
11
- expect_true(ks_result$p.value > 0.05)
12
- })
13
-
14
- test_that("statistic converging to 0, normal(0,1)", {
15
- expect_true(as.numeric(ks_result$statistic) < 0.05)
16
- })
17
-
18
- context('Shapiro test for default mean = 0 and std = 1')
19
- croupier_normal <- read.table("../generated_samples/normal_0_1.data")
20
- s_result<-shapiro.test(croupier_normal$V1[1:5000])
21
-
22
- test_that("p-value > 0.05, normal (0,1)", {
23
- expect_true(s_result$p.value > 0.05)
24
- })
25
-
26
- test_that("statistic converging to 0, normal(0,1)", {
27
- expect_true(as.numeric(ks_result$statistic) < 0.05)
28
- })
29
-
30
- context('Kolmogorov-Smirnov test for given mean = 5 and std = 6')
31
- croupier_normal <- read.table("../generated_samples/normal_5_6.data")
32
- ks_result<-ks.test((croupier_normal$V1 - 5)/6, "pnorm")
33
-
34
- test_that("p-value > 0.05, normal(5,6)", {
35
- expect_true(ks_result$p.value > 0.05)
36
- })
37
-
38
- test_that("statistic converging to 0, normal(5,6)", {
39
- expect_true(as.numeric(ks_result$statistic) < 0.05)
40
- })
41
-
42
- context('Shapiro test for default mean = 5 and std = 1')
43
- croupier_normal <- read.table("../generated_samples/normal_0_1.data")
44
- s_result<-shapiro.test((croupier_normal$V1[1:5000] - 5 ) / 6)
45
-
46
- test_that("p-value > 0.05, normal(5,6)", {
47
- expect_true(s_result$p.value > 0.05)
48
- })
49
-
50
- test_that("statistic converging to 0, normal(5,6)", {
51
- expect_true(as.numeric(ks_result$statistic) < 0.05)
52
- })
@@ -1,17 +0,0 @@
1
- context('** Poisson Distribution **')
2
-
3
- context('ChiSquare Goodness of Fit test for mean = 5')
4
- croupier_poisson <- read.table("../generated_samples/poisson_5.data")
5
- cs_result<-summary(goodfit(croupier_poisson$V1, type="poisson", method="ML", par=list(lambda=5)))
6
-
7
- test_that("p-value > 0.05, poisson mean = 5", {
8
- expect_true(cs_result['Pearson',3] > 0.05)
9
- })
10
-
11
- context('ChiSquare Goodness of Fit test for mean = 50')
12
- croupier_poisson <- read.table("../generated_samples/poisson_50.data")
13
- cs_result<-summary(goodfit(croupier_poisson$V1, type="poisson", method="ML", par=list(lambda=50)))
14
-
15
- test_that("err, poisson lambda = 50", {
16
- expect_true(cs_result['Pearson',3] > 0.05)
17
- })
@@ -1,28 +0,0 @@
1
- context('** Triangular Distribution **')
2
- # Run a K-S test on the Croupier sample against a exponential R-generated sample
3
- # Accept Croupier's sample as exponential if p-value > 0.05
4
- # Also check for a statistic near 0
5
-
6
- context('Kolmogorov-Smirnov test for a = -1, b = 5, c=4')
7
- croupier_exponential <- read.table("../generated_samples/triangular_-1_5_4.data")
8
- ks_result<-ks.test(croupier_exponential$V1, "ptriangle", a=-1, b=5, c=4)
9
-
10
- test_that("p-value > 0.05 triangular, not default parameters", {
11
- expect_true(ks_result$p.value > 0.05)
12
- })
13
-
14
- test_that("statistic converging to 0", {
15
- expect_true(as.numeric(ks_result$statistic) < 0.05)
16
- })
17
-
18
- context('Kolmogorov-Smirnov test for default values a=0, b=1, c=0.5')
19
- croupier_exponential <- read.table("../generated_samples/triangular_0_1_05.data")
20
- ks_result<-ks.test(croupier_exponential$V1, "ptriangle", a=0, b=1, c=0.5)
21
-
22
- test_that("p-value > 0.05 triangular, default parameters", {
23
- expect_true(ks_result$p.value > 0.05)
24
- })
25
-
26
- test_that("statistic converging to 0", {
27
- expect_true(as.numeric(ks_result$statistic) < 0.05)
28
- })
@@ -1,30 +0,0 @@
1
- context('** Uniform Distribution **')
2
- # Run a K-S test on the Croupier sample against a uniform R-generated sample
3
- # Accept Croupier's sample as uniform if p-value > 0.05
4
- # Also check for a statistic near 0
5
-
6
- context('Kolmogorov-Smirnov test for default sample in [0,1]')
7
- croupier_uniform_0_1 <- read.table("../generated_samples/uniform_0_1.data")
8
- ks_result<-ks.test(croupier_uniform_0_1$V1, "punif")
9
-
10
- test_that("p-value > 0.05, uniform, [0,1]", {
11
- expect_true(ks_result$p.value > 0.05)
12
- })
13
-
14
- test_that("statistic converging to 0", {
15
- expect_true(as.numeric(ks_result$statistic) < 0.05)
16
- })
17
-
18
-
19
- context('Kolmogorov-Smirnov test for sample with custom interval')
20
- croupier_uniform_5_33 <- read.table("../generated_samples/uniform_5_33.data")
21
- ks_result<-ks.test(croupier_uniform_5_33$V1, "punif", min = 5, max = 33)
22
-
23
- test_that("p-value > 0.05, uniform, [5,33]", {
24
- expect_true(ks_result$p.value > 0.05)
25
- })
26
-
27
- test_that("statistic converging to 0", {
28
- expect_true(as.numeric(ks_result$statistic) < 0.05)
29
- })
30
-
data/test/testsuite.R DELETED
@@ -1,37 +0,0 @@
1
- #!/usr/bin/env Rscript
2
- #
3
- # This script runs all the R tests of the croupier gem for all the distributions.
4
- #
5
- # Running the script:
6
- # Option 1, Via Rscript:
7
- # $> Rscript testsuite.R
8
- #
9
- # Option 2, from the R console:
10
- # source('testsuite.R')
11
- #
12
- # Dependencies:
13
- # In order to run the tests you need to have installed the following packages:
14
- #
15
- # - testthat
16
- # - triangle
17
- # - vcd
18
- #
19
- # Croupier will try to install them automatically if they are not included
20
- # in your R installation.
21
-
22
- if(require('testthat') == FALSE) {
23
- install.packages('testthat', repos = "http://cran.r-project.org/", type="source")
24
- require('testthat')
25
- }
26
-
27
- if(require('triangle') == FALSE) {
28
- install.packages('triangle')
29
- require('triangle')
30
- }
31
- if(require('vcd') == FALSE) {
32
- install.packages('vcd')
33
- require('vcd')
34
- }
35
- options(warn=-1)
36
- test_dir("./distributions/R_tests/")
37
- options(warn=0)