croupier 1.6.0 → 2.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
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)