ruby-statistics 2.1.0 → 3.0.0
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.
- checksums.yaml +4 -4
 - data/.github/dependabot.yml +15 -0
 - data/.github/workflows/ruby.yml +35 -0
 - data/.travis.yml +5 -3
 - data/README.md +5 -4
 - data/lib/math.rb +6 -5
 - data/lib/statistics/distribution/bernoulli.rb +1 -1
 - data/lib/statistics/distribution/beta.rb +2 -2
 - data/lib/statistics/distribution/empirical.rb +1 -1
 - data/lib/statistics/distribution/f.rb +8 -8
 - data/lib/statistics/distribution/geometric.rb +1 -1
 - data/lib/statistics/distribution/logseries.rb +2 -2
 - data/lib/statistics/distribution/negative_binomial.rb +4 -4
 - data/lib/statistics/distribution/normal.rb +59 -3
 - data/lib/statistics/distribution/poisson.rb +2 -2
 - data/lib/statistics/distribution/t_student.rb +3 -3
 - data/lib/statistics/distribution/uniform.rb +2 -2
 - data/lib/statistics/distribution/weibull.rb +2 -2
 - data/lib/statistics/distribution.rb +0 -4
 - data/lib/statistics/spearman_rank_coefficient.rb +4 -4
 - data/lib/statistics/statistical_test/chi_squared_test.rb +2 -2
 - data/lib/statistics/statistical_test/f_test.rb +4 -4
 - data/lib/statistics/statistical_test/kolmogorov_smirnov_test.rb +1 -1
 - data/lib/statistics/statistical_test/t_test.rb +6 -6
 - data/lib/statistics/statistical_test/wilcoxon_rank_sum_test.rb +2 -2
 - data/lib/statistics/version.rb +1 -1
 - data/ruby-statistics.gemspec +4 -4
 - metadata +27 -44
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: d9651bb87c7c5e4b3b0c8d4dcdfce61e1c997dab203f8efac779fbd5894684f1
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: d08439506ff0edecf6366875b5af3352c63bf059bbb7a1ac820d491d803f3ae4
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 60651ef8cd377bda6611b2e8390dbc0697c2088a16addfd125785fa90be770604e551f33127a3d0f3ad2804d9824e59ff5b914598af5daec19c0696fcb5c051e
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: f34f9b4826fa60c71535c26070127fbe71d6ca9a37b14d3c07364579a9c186db8964318bfe9343537c9e2bc93b1e0706c9b707dc922bd64c9a4af77b2fd9d983
         
     | 
| 
         @@ -0,0 +1,15 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # To get started with Dependabot version updates, you'll need to specify which
         
     | 
| 
      
 2 
     | 
    
         
            +
            # package ecosystems to update and where the package manifests are located.
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Please see the documentation for all configuration options:
         
     | 
| 
      
 4 
     | 
    
         
            +
            # https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            version: 2
         
     | 
| 
      
 7 
     | 
    
         
            +
            updates:
         
     | 
| 
      
 8 
     | 
    
         
            +
              - package-ecosystem: "bundler" # See documentation for possible values
         
     | 
| 
      
 9 
     | 
    
         
            +
                directory: "/" # Location of package manifests
         
     | 
| 
      
 10 
     | 
    
         
            +
                schedule:
         
     | 
| 
      
 11 
     | 
    
         
            +
                  interval: "weekly"
         
     | 
| 
      
 12 
     | 
    
         
            +
              - package-ecosystem: "github-actions" # See documentation for possible values
         
     | 
| 
      
 13 
     | 
    
         
            +
                directory: "/" # Location of package manifests
         
     | 
| 
      
 14 
     | 
    
         
            +
                schedule:
         
     | 
| 
      
 15 
     | 
    
         
            +
                  interval: "weekly"
         
     | 
| 
         @@ -0,0 +1,35 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            name: Ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            on: [push]
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            jobs:
         
     | 
| 
      
 6 
     | 
    
         
            +
              build:
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                runs-on: ubuntu-latest
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                steps:
         
     | 
| 
      
 11 
     | 
    
         
            +
                - uses: actions/checkout@v2.3.4
         
     | 
| 
      
 12 
     | 
    
         
            +
                - name: Set up Ruby 2.6
         
     | 
| 
      
 13 
     | 
    
         
            +
                  uses: actions/setup-ruby@v1.1.3
         
     | 
| 
      
 14 
     | 
    
         
            +
                  with:
         
     | 
| 
      
 15 
     | 
    
         
            +
                    ruby-version: 2.6.x
         
     | 
| 
      
 16 
     | 
    
         
            +
                - name: Build and test with Rake
         
     | 
| 
      
 17 
     | 
    
         
            +
                  run: |
         
     | 
| 
      
 18 
     | 
    
         
            +
                    gem install bundler
         
     | 
| 
      
 19 
     | 
    
         
            +
                    bundle install --jobs 2 --retry 1
         
     | 
| 
      
 20 
     | 
    
         
            +
                    bundle exec rake
         
     | 
| 
      
 21 
     | 
    
         
            +
              build_2_7:
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                runs-on: ubuntu-latest
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                steps:
         
     | 
| 
      
 26 
     | 
    
         
            +
                - uses: actions/checkout@v2.3.4
         
     | 
| 
      
 27 
     | 
    
         
            +
                - name: Set up Ruby 2.7
         
     | 
| 
      
 28 
     | 
    
         
            +
                  uses: actions/setup-ruby@v1.1.3
         
     | 
| 
      
 29 
     | 
    
         
            +
                  with:
         
     | 
| 
      
 30 
     | 
    
         
            +
                    ruby-version: 2.7.x
         
     | 
| 
      
 31 
     | 
    
         
            +
                - name: Build and test with Rake
         
     | 
| 
      
 32 
     | 
    
         
            +
                  run: |
         
     | 
| 
      
 33 
     | 
    
         
            +
                    gem install bundler
         
     | 
| 
      
 34 
     | 
    
         
            +
                    bundle install --jobs 2 --retry 1
         
     | 
| 
      
 35 
     | 
    
         
            +
                    bundle exec rake
         
     | 
    
        data/.travis.yml
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | 
         @@ -5,10 +5,11 @@ 
     | 
|
| 
       5 
5 
     | 
    
         
             
            A basic ruby gem that implements some statistical methods, functions and concepts to be used in any ruby environment without depending on any mathematical software like `R`, `Matlab`, `Octave` or similar.
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
            Unit test runs under the following ruby versions:
         
     | 
| 
       8 
     | 
    
         
            -
            * Ruby 2. 
     | 
| 
       9 
     | 
    
         
            -
            * Ruby 2. 
     | 
| 
       10 
     | 
    
         
            -
            * Ruby 2. 
     | 
| 
       11 
     | 
    
         
            -
            * Ruby 2.5. 
     | 
| 
      
 8 
     | 
    
         
            +
            * Ruby 2.5.1.
         
     | 
| 
      
 9 
     | 
    
         
            +
            * Ruby 2.6.0.
         
     | 
| 
      
 10 
     | 
    
         
            +
            * Ruby 2.6.3.
         
     | 
| 
      
 11 
     | 
    
         
            +
            * Ruby 2.6.5.
         
     | 
| 
      
 12 
     | 
    
         
            +
            * Ruby 2.7.
         
     | 
| 
       12 
13 
     | 
    
         | 
| 
       13 
14 
     | 
    
         
             
            We got the inspiration from the folks at [JStat](https://github.com/jstat/jstat) and some interesting lectures about [Keystroke dynamics](http://www.biometric-solutions.com/keystroke-dynamics.html).
         
     | 
| 
       14 
15 
     | 
    
         | 
    
        data/lib/math.rb
    CHANGED
    
    | 
         @@ -9,11 +9,11 @@ module Math 
     | 
|
| 
       9 
9 
     | 
    
         
             
              end
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
11 
     | 
    
         
             
              def self.combination(n, r)
         
     | 
| 
       12 
     | 
    
         
            -
                self.factorial(n)/(self.factorial(r) * self.factorial(n - r)). 
     | 
| 
      
 12 
     | 
    
         
            +
                self.factorial(n)/(self.factorial(r) * self.factorial(n - r)).to_r # n!/(r! * [n - r]!)
         
     | 
| 
       13 
13 
     | 
    
         
             
              end
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
       15 
15 
     | 
    
         
             
              def self.permutation(n, k)
         
     | 
| 
       16 
     | 
    
         
            -
                self.factorial(n)/self.factorial(n - k). 
     | 
| 
      
 16 
     | 
    
         
            +
                self.factorial(n)/self.factorial(n - k).to_r
         
     | 
| 
       17 
17 
     | 
    
         
             
              end
         
     | 
| 
       18 
18 
     | 
    
         | 
| 
       19 
19 
     | 
    
         
             
              # Function adapted from the python implementation that exists in https://en.wikipedia.org/wiki/Simpson%27s_rule#Sample_implementation
         
     | 
| 
         @@ -24,7 +24,8 @@ module Math 
     | 
|
| 
       24 
24 
     | 
    
         
             
                  return
         
     | 
| 
       25 
25 
     | 
    
         
             
                end
         
     | 
| 
       26 
26 
     | 
    
         | 
| 
       27 
     | 
    
         
            -
                h = (b - a)/n. 
     | 
| 
      
 27 
     | 
    
         
            +
                h = (b - a)/n.to_r
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
       28 
29 
     | 
    
         
             
                resA = yield(a)
         
     | 
| 
       29 
30 
     | 
    
         
             
                resB = yield(b)
         
     | 
| 
       30 
31 
     | 
    
         | 
| 
         @@ -45,7 +46,7 @@ module Math 
     | 
|
| 
       45 
46 
     | 
    
         | 
| 
       46 
47 
     | 
    
         
             
              def self.lower_incomplete_gamma_function(s, x)
         
     | 
| 
       47 
48 
     | 
    
         
             
                # The greater the iterations, the better. That's why we are iterating 10_000 * x times
         
     | 
| 
       48 
     | 
    
         
            -
                self.simpson_rule(0, x, (10_000 * x.round).round) do |t|
         
     | 
| 
      
 49 
     | 
    
         
            +
                self.simpson_rule(0, x.to_r, (10_000 * x.round).round) do |t|
         
     | 
| 
       49 
50 
     | 
    
         
             
                  (t ** (s - 1)) * Math.exp(-t)
         
     | 
| 
       50 
51 
     | 
    
         
             
                end
         
     | 
| 
       51 
52 
     | 
    
         
             
              end
         
     | 
| 
         @@ -72,7 +73,7 @@ module Math 
     | 
|
| 
       72 
73 
     | 
    
         
             
                # To avoid overflow problems, the implementation applies the logarithm properties
         
     | 
| 
       73 
74 
     | 
    
         
             
                # to calculate in a faster and safer way the values.
         
     | 
| 
       74 
75 
     | 
    
         
             
                lbet_ab = (Math.lgamma(alp)[0] + Math.lgamma(bet)[0] - Math.lgamma(alp + bet)[0]).freeze
         
     | 
| 
       75 
     | 
    
         
            -
                front = (Math.exp(Math.log(x) * alp + Math.log(1.0 - x) * bet - lbet_ab) / alp. 
     | 
| 
      
 76 
     | 
    
         
            +
                front = (Math.exp(Math.log(x) * alp + Math.log(1.0 - x) * bet - lbet_ab) / alp.to_r).freeze
         
     | 
| 
       76 
77 
     | 
    
         | 
| 
       77 
78 
     | 
    
         
             
                # This is the non-log version of the left part of the formula (before the continuous fraction)
         
     | 
| 
       78 
79 
     | 
    
         
             
                # down_left = alp * self.beta_function(alp, bet)
         
     | 
| 
         @@ -10,7 +10,7 @@ module Statistics 
     | 
|
| 
       10 
10 
     | 
    
         | 
| 
       11 
11 
     | 
    
         
             
                  # Formula extracted from http://www.itl.nist.gov/div898/handbook/eda/section3/eda3665.htm#CDF
         
     | 
| 
       12 
12 
     | 
    
         
             
                  def cumulative_function(value)
         
     | 
| 
       13 
     | 
    
         
            -
                    k = d2/(d2 + d1 * value. 
     | 
| 
      
 13 
     | 
    
         
            +
                    k = d2/(d2 + d1 * value.to_r)
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
       15 
15 
     | 
    
         
             
                    1 - Math.incomplete_beta_function(k, d2/2.0, d1/2.0)
         
     | 
| 
       16 
16 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -18,28 +18,28 @@ module Statistics 
     | 
|
| 
       18 
18 
     | 
    
         
             
                  def density_function(value)
         
     | 
| 
       19 
19 
     | 
    
         
             
                    return if d1 < 0 || d2 < 0 # F-pdf is well defined for the [0, +infinity) interval.
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
       21 
     | 
    
         
            -
                    val = value. 
     | 
| 
      
 21 
     | 
    
         
            +
                    val = value.to_r
         
     | 
| 
       22 
22 
     | 
    
         
             
                    upper = ((d1 * val) ** d1) * (d2**d2)
         
     | 
| 
       23 
23 
     | 
    
         
             
                    lower = (d1 * val + d2) ** (d1 + d2)
         
     | 
| 
       24 
     | 
    
         
            -
                    up = Math.sqrt(upper/lower. 
     | 
| 
      
 24 
     | 
    
         
            +
                    up = Math.sqrt(upper/lower.to_r)
         
     | 
| 
       25 
25 
     | 
    
         
             
                    down = val * Math.beta_function(d1/2.0, d2/2.0)
         
     | 
| 
       26 
26 
     | 
    
         | 
| 
       27 
     | 
    
         
            -
                    up/down. 
     | 
| 
      
 27 
     | 
    
         
            +
                    up/down.to_r
         
     | 
| 
       28 
28 
     | 
    
         
             
                  end
         
     | 
| 
       29 
29 
     | 
    
         | 
| 
       30 
30 
     | 
    
         
             
                  def mean
         
     | 
| 
       31 
31 
     | 
    
         
             
                    return if d2 <= 2
         
     | 
| 
       32 
32 
     | 
    
         | 
| 
       33 
     | 
    
         
            -
                    d2/(d2 - 2). 
     | 
| 
      
 33 
     | 
    
         
            +
                    d2/(d2 - 2).to_r
         
     | 
| 
       34 
34 
     | 
    
         
             
                  end
         
     | 
| 
       35 
35 
     | 
    
         | 
| 
       36 
36 
     | 
    
         
             
                  def mode
         
     | 
| 
       37 
37 
     | 
    
         
             
                    return if d1 <= 2
         
     | 
| 
       38 
38 
     | 
    
         | 
| 
       39 
     | 
    
         
            -
                    left = (d1 - 2)/d1. 
     | 
| 
       40 
     | 
    
         
            -
                    right = d2/(d2 + 2). 
     | 
| 
      
 39 
     | 
    
         
            +
                    left = (d1 - 2)/d1.to_r
         
     | 
| 
      
 40 
     | 
    
         
            +
                    right = d2/(d2 + 2).to_r
         
     | 
| 
       41 
41 
     | 
    
         | 
| 
       42 
     | 
    
         
            -
                    left * right
         
     | 
| 
      
 42 
     | 
    
         
            +
                    (left * right).to_f
         
     | 
| 
       43 
43 
     | 
    
         
             
                  end
         
     | 
| 
       44 
44 
     | 
    
         
             
                end
         
     | 
| 
       45 
45 
     | 
    
         
             
              end
         
     | 
| 
         @@ -6,7 +6,7 @@ module Statistics 
     | 
|
| 
       6 
6 
     | 
    
         
             
                    k = k.to_i
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
8 
     | 
    
         
             
                    left = (-1.0 / Math.log(1.0 - p))
         
     | 
| 
       9 
     | 
    
         
            -
                    right = (p ** k). 
     | 
| 
      
 9 
     | 
    
         
            +
                    right = (p ** k).to_r
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
11 
     | 
    
         
             
                    left * right / k
         
     | 
| 
       12 
12 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -44,7 +44,7 @@ module Statistics 
     | 
|
| 
       44 
44 
     | 
    
         
             
                    up = p + Math.log(1.0 - p)
         
     | 
| 
       45 
45 
     | 
    
         
             
                    down = ((1.0 - p) ** 2) * (Math.log(1.0 - p) ** 2)
         
     | 
| 
       46 
46 
     | 
    
         | 
| 
       47 
     | 
    
         
            -
                    (-1.0 * p) * (up / down. 
     | 
| 
      
 47 
     | 
    
         
            +
                    (-1.0 * p) * (up / down.to_r)
         
     | 
| 
       48 
48 
     | 
    
         
             
                  end
         
     | 
| 
       49 
49 
     | 
    
         
             
                end
         
     | 
| 
       50 
50 
     | 
    
         
             
              end
         
     | 
| 
         @@ -25,21 +25,21 @@ module Statistics 
     | 
|
| 
       25 
25 
     | 
    
         
             
                  end
         
     | 
| 
       26 
26 
     | 
    
         | 
| 
       27 
27 
     | 
    
         
             
                  def mean
         
     | 
| 
       28 
     | 
    
         
            -
                    (probability_per_trial * number_of_failures)/(1 - probability_per_trial). 
     | 
| 
      
 28 
     | 
    
         
            +
                    (probability_per_trial * number_of_failures)/(1 - probability_per_trial).to_r
         
     | 
| 
       29 
29 
     | 
    
         
             
                  end
         
     | 
| 
       30 
30 
     | 
    
         | 
| 
       31 
31 
     | 
    
         
             
                  def variance
         
     | 
| 
       32 
     | 
    
         
            -
                    (probability_per_trial * number_of_failures)/((1 - probability_per_trial) ** 2). 
     | 
| 
      
 32 
     | 
    
         
            +
                    (probability_per_trial * number_of_failures)/((1 - probability_per_trial) ** 2).to_r
         
     | 
| 
       33 
33 
     | 
    
         
             
                  end
         
     | 
| 
       34 
34 
     | 
    
         | 
| 
       35 
35 
     | 
    
         
             
                  def skewness
         
     | 
| 
       36 
     | 
    
         
            -
                    (1 + probability_per_trial). 
     | 
| 
      
 36 
     | 
    
         
            +
                    (1 + probability_per_trial).to_r / Math.sqrt(probability_per_trial * number_of_failures)
         
     | 
| 
       37 
37 
     | 
    
         
             
                  end
         
     | 
| 
       38 
38 
     | 
    
         | 
| 
       39 
39 
     | 
    
         
             
                  def mode
         
     | 
| 
       40 
40 
     | 
    
         
             
                    if number_of_failures > 1
         
     | 
| 
       41 
41 
     | 
    
         
             
                      up = probability_per_trial * (number_of_failures - 1)
         
     | 
| 
       42 
     | 
    
         
            -
                      down = (1 - probability_per_trial). 
     | 
| 
      
 42 
     | 
    
         
            +
                      down = (1 - probability_per_trial).to_r
         
     | 
| 
       43 
43 
     | 
    
         | 
| 
       44 
44 
     | 
    
         
             
                      (up/down).floor
         
     | 
| 
       45 
45 
     | 
    
         
             
                    elsif number_of_failures <= 1
         
     | 
| 
         @@ -5,9 +5,9 @@ module Statistics 
     | 
|
| 
       5 
5 
     | 
    
         
             
                  alias_method :mode, :mean
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
                  def initialize(avg, std)
         
     | 
| 
       8 
     | 
    
         
            -
                    self.mean = avg. 
     | 
| 
       9 
     | 
    
         
            -
                    self.standard_deviation = std. 
     | 
| 
       10 
     | 
    
         
            -
                    self.variance = std. 
     | 
| 
      
 8 
     | 
    
         
            +
                    self.mean = avg.to_r
         
     | 
| 
      
 9 
     | 
    
         
            +
                    self.standard_deviation = std.to_r
         
     | 
| 
      
 10 
     | 
    
         
            +
                    self.variance = std.to_r**2
         
     | 
| 
       11 
11 
     | 
    
         
             
                  end
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
13 
     | 
    
         
             
                  def cumulative_function(value)
         
     | 
| 
         @@ -79,5 +79,61 @@ module Statistics 
     | 
|
| 
       79 
79 
     | 
    
         
             
                    euler/Math.sqrt(2 * Math::PI)
         
     | 
| 
       80 
80 
     | 
    
         
             
                  end
         
     | 
| 
       81 
81 
     | 
    
         
             
                end
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
      
 83 
     | 
    
         
            +
                # Inverse Standard Normal distribution:
         
     | 
| 
      
 84 
     | 
    
         
            +
                # References:
         
     | 
| 
      
 85 
     | 
    
         
            +
                # https://en.wikipedia.org/wiki/Inverse_distribution
         
     | 
| 
      
 86 
     | 
    
         
            +
                # http://www.source-code.biz/snippets/vbasic/9.htm
         
     | 
| 
      
 87 
     | 
    
         
            +
                class InverseStandardNormal < StandardNormal
         
     | 
| 
      
 88 
     | 
    
         
            +
                  A1 = -39.6968302866538
         
     | 
| 
      
 89 
     | 
    
         
            +
                  A2 = 220.946098424521
         
     | 
| 
      
 90 
     | 
    
         
            +
                  A3 = -275.928510446969
         
     | 
| 
      
 91 
     | 
    
         
            +
                  A4 = 138.357751867269
         
     | 
| 
      
 92 
     | 
    
         
            +
                  A5 = -30.6647980661472
         
     | 
| 
      
 93 
     | 
    
         
            +
                  A6 = 2.50662827745924
         
     | 
| 
      
 94 
     | 
    
         
            +
                  B1 = -54.4760987982241
         
     | 
| 
      
 95 
     | 
    
         
            +
                  B2 = 161.585836858041
         
     | 
| 
      
 96 
     | 
    
         
            +
                  B3 = -155.698979859887
         
     | 
| 
      
 97 
     | 
    
         
            +
                  B4 = 66.8013118877197
         
     | 
| 
      
 98 
     | 
    
         
            +
                  B5 = -13.2806815528857
         
     | 
| 
      
 99 
     | 
    
         
            +
                  C1 = -7.78489400243029E-03
         
     | 
| 
      
 100 
     | 
    
         
            +
                  C2 = -0.322396458041136
         
     | 
| 
      
 101 
     | 
    
         
            +
                  C3 = -2.40075827716184
         
     | 
| 
      
 102 
     | 
    
         
            +
                  C4 = -2.54973253934373
         
     | 
| 
      
 103 
     | 
    
         
            +
                  C5 = 4.37466414146497
         
     | 
| 
      
 104 
     | 
    
         
            +
                  C6 = 2.93816398269878
         
     | 
| 
      
 105 
     | 
    
         
            +
                  D1 = 7.78469570904146E-03
         
     | 
| 
      
 106 
     | 
    
         
            +
                  D2 = 0.32246712907004
         
     | 
| 
      
 107 
     | 
    
         
            +
                  D3 = 2.445134137143
         
     | 
| 
      
 108 
     | 
    
         
            +
                  D4 = 3.75440866190742
         
     | 
| 
      
 109 
     | 
    
         
            +
                  P_LOW = 0.02425
         
     | 
| 
      
 110 
     | 
    
         
            +
                  P_HIGH = 1 - P_LOW
         
     | 
| 
      
 111 
     | 
    
         
            +
             
     | 
| 
      
 112 
     | 
    
         
            +
                  def density_function(_)
         
     | 
| 
      
 113 
     | 
    
         
            +
                    raise NotImplementedError
         
     | 
| 
      
 114 
     | 
    
         
            +
                  end
         
     | 
| 
      
 115 
     | 
    
         
            +
             
     | 
| 
      
 116 
     | 
    
         
            +
                  def random(elements: 1, seed: Random.new_seed)
         
     | 
| 
      
 117 
     | 
    
         
            +
                    raise NotImplementedError
         
     | 
| 
      
 118 
     | 
    
         
            +
                  end
         
     | 
| 
      
 119 
     | 
    
         
            +
             
     | 
| 
      
 120 
     | 
    
         
            +
                  def cumulative_function(value)
         
     | 
| 
      
 121 
     | 
    
         
            +
                    return if value < 0.0 || value > 1.0
         
     | 
| 
      
 122 
     | 
    
         
            +
                    return -1.0 * Float::INFINITY if value.zero?
         
     | 
| 
      
 123 
     | 
    
         
            +
                    return Float::INFINITY if value == 1.0
         
     | 
| 
      
 124 
     | 
    
         
            +
             
     | 
| 
      
 125 
     | 
    
         
            +
                    if value < P_LOW
         
     | 
| 
      
 126 
     | 
    
         
            +
                      q = Math.sqrt((Math.log(value) * -2.0))
         
     | 
| 
      
 127 
     | 
    
         
            +
                      (((((C1 * q + C2) * q + C3) * q + C4) * q + C5) * q + C6) / ((((D1 * q + D2) * q + D3) * q + D4) * q + 1.0)
         
     | 
| 
      
 128 
     | 
    
         
            +
                    elsif value <= P_HIGH
         
     | 
| 
      
 129 
     | 
    
         
            +
                      q = value - 0.5
         
     | 
| 
      
 130 
     | 
    
         
            +
                      r = q ** 2
         
     | 
| 
      
 131 
     | 
    
         
            +
                      (((((A1 * r + A2) * r + A3) * r + A4) * r + A5) * r + A6) * q / (((((B1 * r + B2) * r + B3) * r + B4) * r + B5) * r + 1.0)
         
     | 
| 
      
 132 
     | 
    
         
            +
                    else
         
     | 
| 
      
 133 
     | 
    
         
            +
                      q = Math.sqrt((Math.log(1 - value) * -2.0))
         
     | 
| 
      
 134 
     | 
    
         
            +
                      - (((((C1 * q + C2) * q + C3) * q + C4) * q + C5) * q + C6) / ((((D1 * q + D2) * q + D3) * q + D4) * q + 1)
         
     | 
| 
      
 135 
     | 
    
         
            +
                    end
         
     | 
| 
      
 136 
     | 
    
         
            +
                  end
         
     | 
| 
      
 137 
     | 
    
         
            +
                end
         
     | 
| 
       82 
138 
     | 
    
         
             
              end
         
     | 
| 
       83 
139 
     | 
    
         
             
            end
         
     | 
| 
         @@ -18,7 +18,7 @@ module Statistics 
     | 
|
| 
       18 
18 
     | 
    
         
             
                    upper = (expected_number_of_occurrences ** k) * Math.exp(-expected_number_of_occurrences)
         
     | 
| 
       19 
19 
     | 
    
         
             
                    lower = Math.factorial(k)
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
       21 
     | 
    
         
            -
                    upper/lower. 
     | 
| 
      
 21 
     | 
    
         
            +
                    upper/lower.to_r
         
     | 
| 
       22 
22 
     | 
    
         
             
                  end
         
     | 
| 
       23 
23 
     | 
    
         | 
| 
       24 
24 
     | 
    
         
             
                  def cumulative_function(k)
         
     | 
| 
         @@ -31,7 +31,7 @@ module Statistics 
     | 
|
| 
       31 
31 
     | 
    
         | 
| 
       32 
32 
     | 
    
         
             
                    # We need the right tail, i.e.: The upper incomplete gamma function. This can be
         
     | 
| 
       33 
33 
     | 
    
         
             
                    # achieved by doing a substraction between 1 and the lower incomplete gamma function.
         
     | 
| 
       34 
     | 
    
         
            -
                    1 - (upper/lower. 
     | 
| 
      
 34 
     | 
    
         
            +
                    1 - (upper/lower.to_r)
         
     | 
| 
       35 
35 
     | 
    
         
             
                  end
         
     | 
| 
       36 
36 
     | 
    
         
             
                end
         
     | 
| 
       37 
37 
     | 
    
         
             
              end
         
     | 
| 
         @@ -29,7 +29,7 @@ module Statistics 
     | 
|
| 
       29 
29 
     | 
    
         
             
                    upper = Math.gamma((degrees_of_freedom + 1)/2.0)
         
     | 
| 
       30 
30 
     | 
    
         
             
                    lower = Math.sqrt(degrees_of_freedom * Math::PI) * Math.gamma(degrees_of_freedom/2.0)
         
     | 
| 
       31 
31 
     | 
    
         
             
                    left = upper/lower
         
     | 
| 
       32 
     | 
    
         
            -
                    right = (1 + ((value ** 2)/degrees_of_freedom. 
     | 
| 
      
 32 
     | 
    
         
            +
                    right = (1 + ((value ** 2)/degrees_of_freedom.to_r)) ** -((degrees_of_freedom + 1)/2.0)
         
     | 
| 
       33 
33 
     | 
    
         | 
| 
       34 
34 
     | 
    
         
             
                    left * right
         
     | 
| 
       35 
35 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -64,8 +64,8 @@ module Statistics 
     | 
|
| 
       64 
64 
     | 
    
         
             
                      results << Math.simpson_rule(threshold, y, 10_000) do |t|
         
     | 
| 
       65 
65 
     | 
    
         
             
                        up = Math.gamma((v+1)/2.0)
         
     | 
| 
       66 
66 
     | 
    
         
             
                        down = Math.sqrt(Math::PI * v) * Math.gamma(v/2.0)
         
     | 
| 
       67 
     | 
    
         
            -
                        right = (1 + ((y ** 2)/v. 
     | 
| 
       68 
     | 
    
         
            -
                        left = up/down. 
     | 
| 
      
 67 
     | 
    
         
            +
                        right = (1 + ((y ** 2)/v.to_r)) ** ((v+1)/2.0)
         
     | 
| 
      
 68 
     | 
    
         
            +
                        left = up/down.to_r
         
     | 
| 
       69 
69 
     | 
    
         | 
| 
       70 
70 
     | 
    
         
             
                        left * right
         
     | 
| 
       71 
71 
     | 
    
         
             
                      end
         
     | 
| 
         @@ -14,7 +14,7 @@ module Statistics 
     | 
|
| 
       14 
14 
     | 
    
         
             
                    if rankings.fetch(value, false)
         
     | 
| 
       15 
15 
     | 
    
         
             
                      rankings[value][:rank] += (temporal_ranking + rankings[value][:counter])
         
     | 
| 
       16 
16 
     | 
    
         
             
                      rankings[value][:counter] += 1
         
     | 
| 
       17 
     | 
    
         
            -
                      rankings[value][:tie_rank] = rankings[value][:rank] / rankings[value][:counter]. 
     | 
| 
      
 17 
     | 
    
         
            +
                      rankings[value][:tie_rank] = rankings[value][:rank] / rankings[value][:counter].to_r
         
     | 
| 
       18 
18 
     | 
    
         
             
                    else
         
     | 
| 
       19 
19 
     | 
    
         
             
                      rankings[value] = { counter: 1, rank: temporal_ranking, tie_rank: temporal_ranking }
         
     | 
| 
       20 
20 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -35,7 +35,7 @@ module Statistics 
     | 
|
| 
       35 
35 
     | 
    
         
             
                  return if set_one.size == 0 && set_two.size == 0
         
     | 
| 
       36 
36 
     | 
    
         | 
| 
       37 
37 
     | 
    
         
             
                  set_one_mean, set_two_mean = set_one.mean, set_two.mean
         
     | 
| 
       38 
     | 
    
         
            -
                  have_tie_ranks = (set_one + set_two).any? { |rank| rank.is_a?(Float) }
         
     | 
| 
      
 38 
     | 
    
         
            +
                  have_tie_ranks = (set_one + set_two).any? { |rank| rank.is_a?(Float) || rank.is_a?(Rational) }
         
     | 
| 
       39 
39 
     | 
    
         | 
| 
       40 
40 
     | 
    
         
             
                  if have_tie_ranks
         
     | 
| 
       41 
41 
     | 
    
         
             
                    numerator = 0
         
     | 
| 
         @@ -54,7 +54,7 @@ module Statistics 
     | 
|
| 
       54 
54 
     | 
    
         | 
| 
       55 
55 
     | 
    
         
             
                    denominator = Math.sqrt(squared_differences_set_one * squared_differences_set_two)
         
     | 
| 
       56 
56 
     | 
    
         | 
| 
       57 
     | 
    
         
            -
                    numerator / denominator. 
     | 
| 
      
 57 
     | 
    
         
            +
                    numerator / denominator.to_r # This is rho or spearman's coefficient.
         
     | 
| 
       58 
58 
     | 
    
         
             
                  else
         
     | 
| 
       59 
59 
     | 
    
         
             
                    sum_squared_differences = set_one.each_with_index.reduce(0) do |memo, (rank_one, index)|
         
     | 
| 
       60 
60 
     | 
    
         
             
                      memo += ((rank_one - set_two[index]) ** 2)
         
     | 
| 
         @@ -64,7 +64,7 @@ module Statistics 
     | 
|
| 
       64 
64 
     | 
    
         
             
                    numerator = 6 * sum_squared_differences
         
     | 
| 
       65 
65 
     | 
    
         
             
                    denominator = ((set_one.size ** 3) - set_one.size)
         
     | 
| 
       66 
66 
     | 
    
         | 
| 
       67 
     | 
    
         
            -
                    1.0 - (numerator / denominator. 
     | 
| 
      
 67 
     | 
    
         
            +
                    1.0 - (numerator / denominator.to_r) # This is rho or spearman's coefficient.
         
     | 
| 
       68 
68 
     | 
    
         
             
                  end
         
     | 
| 
       69 
69 
     | 
    
         
             
                end
         
     | 
| 
       70 
70 
     | 
    
         
             
              end
         
     | 
| 
         @@ -8,12 +8,12 @@ module Statistics 
     | 
|
| 
       8 
8 
     | 
    
         
             
                    statistic = if expected.is_a? Numeric
         
     | 
| 
       9 
9 
     | 
    
         
             
                                  observed.reduce(0) do |memo, observed_value|
         
     | 
| 
       10 
10 
     | 
    
         
             
                                    up = (observed_value - expected) ** 2
         
     | 
| 
       11 
     | 
    
         
            -
                                    memo += (up/expected. 
     | 
| 
      
 11 
     | 
    
         
            +
                                    memo += (up/expected.to_r)
         
     | 
| 
       12 
12 
     | 
    
         
             
                                  end
         
     | 
| 
       13 
13 
     | 
    
         
             
                                else
         
     | 
| 
       14 
14 
     | 
    
         
             
                                  expected.each_with_index.reduce(0) do |memo, (expected_value, index)|
         
     | 
| 
       15 
15 
     | 
    
         
             
                                    up = (observed[index] - expected_value) ** 2
         
     | 
| 
       16 
     | 
    
         
            -
                                    memo += (up/expected_value. 
     | 
| 
      
 16 
     | 
    
         
            +
                                    memo += (up/expected_value.to_r)
         
     | 
| 
       17 
17 
     | 
    
         
             
                                  end
         
     | 
| 
       18 
18 
     | 
    
         
             
                                end
         
     | 
| 
       19 
19 
     | 
    
         | 
| 
         @@ -19,7 +19,7 @@ module Statistics 
     | 
|
| 
       19 
19 
     | 
    
         
             
                    if args.size == 2
         
     | 
| 
       20 
20 
     | 
    
         
             
                      variances = [args[0].variance, args[1].variance]
         
     | 
| 
       21 
21 
     | 
    
         | 
| 
       22 
     | 
    
         
            -
                      f_score = variances.max/variances.min. 
     | 
| 
      
 22 
     | 
    
         
            +
                      f_score = variances.max/variances.min.to_r
         
     | 
| 
       23 
23 
     | 
    
         
             
                      df1 = 1 # k-1 (k = 2)
         
     | 
| 
       24 
24 
     | 
    
         
             
                      df2 = args.flatten.size - 2 # N-k (k = 2)
         
     | 
| 
       25 
25 
     | 
    
         
             
                    elsif args.size > 2
         
     | 
| 
         @@ -37,18 +37,18 @@ module Statistics 
     | 
|
| 
       37 
37 
     | 
    
         
             
                      variance_between_groups = iterator.reduce(0) do |summation, (size, index)|
         
     | 
| 
       38 
38 
     | 
    
         
             
                        inner_calculation = size * ((sample_means[index] - overall_mean) ** 2)
         
     | 
| 
       39 
39 
     | 
    
         | 
| 
       40 
     | 
    
         
            -
                        summation += (inner_calculation / (total_groups - 1). 
     | 
| 
      
 40 
     | 
    
         
            +
                        summation += (inner_calculation / (total_groups - 1).to_r)
         
     | 
| 
       41 
41 
     | 
    
         
             
                      end
         
     | 
| 
       42 
42 
     | 
    
         | 
| 
       43 
43 
     | 
    
         
             
                      # Variance within groups
         
     | 
| 
       44 
44 
     | 
    
         
             
                      variance_within_groups = (0...total_groups).reduce(0) do |outer_summation, group_index|
         
     | 
| 
       45 
45 
     | 
    
         
             
                        outer_summation += args[group_index].reduce(0) do |inner_sumation, observation|
         
     | 
| 
       46 
46 
     | 
    
         
             
                          inner_calculation = ((observation - sample_means[group_index]) ** 2)
         
     | 
| 
       47 
     | 
    
         
            -
                          inner_sumation += (inner_calculation / (total_elements - total_groups). 
     | 
| 
      
 47 
     | 
    
         
            +
                          inner_sumation += (inner_calculation / (total_elements - total_groups).to_r)
         
     | 
| 
       48 
48 
     | 
    
         
             
                        end
         
     | 
| 
       49 
49 
     | 
    
         
             
                      end
         
     | 
| 
       50 
50 
     | 
    
         | 
| 
       51 
     | 
    
         
            -
                      f_score = variance_between_groups/variance_within_groups. 
     | 
| 
      
 51 
     | 
    
         
            +
                      f_score = variance_between_groups/variance_within_groups.to_r
         
     | 
| 
       52 
52 
     | 
    
         
             
                      df1 = total_groups - 1
         
     | 
| 
       53 
53 
     | 
    
         
             
                      df2 = total_elements - total_groups
         
     | 
| 
       54 
54 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -17,7 +17,7 @@ module Statistics 
     | 
|
| 
       17 
17 
     | 
    
         | 
| 
       18 
18 
     | 
    
         
             
                    # TODO: Validate calculation of Common alpha.
         
     | 
| 
       19 
19 
     | 
    
         
             
                    common_alpha = Math.sqrt((-0.5 * Math.log(alpha)))
         
     | 
| 
       20 
     | 
    
         
            -
                    radicand = (group_one.size + group_two.size) / (group_one.size * group_two.size). 
     | 
| 
      
 20 
     | 
    
         
            +
                    radicand = (group_one.size + group_two.size) / (group_one.size * group_two.size).to_r
         
     | 
| 
       21 
21 
     | 
    
         | 
| 
       22 
22 
     | 
    
         
             
                    critical_d = common_alpha * Math.sqrt(radicand)
         
     | 
| 
       23 
23 
     | 
    
         
             
                    # critical_d = self.critical_d(alpha: alpha, n: samples.size)
         
     | 
| 
         @@ -21,9 +21,9 @@ module Statistics 
     | 
|
| 
       21 
21 
     | 
    
         
             
                                raise ZeroStdError, ZeroStdError::STD_ERROR_MSG if data_std == 0
         
     | 
| 
       22 
22 
     | 
    
         | 
| 
       23 
23 
     | 
    
         
             
                                comparison_mean = args[0]
         
     | 
| 
       24 
     | 
    
         
            -
                                degrees_of_freedom = args[1].size
         
     | 
| 
      
 24 
     | 
    
         
            +
                                degrees_of_freedom = args[1].size - 1
         
     | 
| 
       25 
25 
     | 
    
         | 
| 
       26 
     | 
    
         
            -
                                (data_mean - comparison_mean)/(data_std / Math.sqrt(args[1].size). 
     | 
| 
      
 26 
     | 
    
         
            +
                                (data_mean - comparison_mean)/(data_std / Math.sqrt(args[1].size).to_r).to_r
         
     | 
| 
       27 
27 
     | 
    
         
             
                              else
         
     | 
| 
       28 
28 
     | 
    
         
             
                                sample_left_mean = args[0].mean
         
     | 
| 
       29 
29 
     | 
    
         
             
                                sample_left_variance = args[0].variance
         
     | 
| 
         @@ -31,12 +31,12 @@ module Statistics 
     | 
|
| 
       31 
31 
     | 
    
         
             
                                sample_right_mean = args[1].mean
         
     | 
| 
       32 
32 
     | 
    
         
             
                                degrees_of_freedom = args.flatten.size - 2
         
     | 
| 
       33 
33 
     | 
    
         | 
| 
       34 
     | 
    
         
            -
                                left_root = sample_left_variance/args[0].size. 
     | 
| 
       35 
     | 
    
         
            -
                                right_root = sample_right_variance/args[1].size. 
     | 
| 
      
 34 
     | 
    
         
            +
                                left_root = sample_left_variance/args[0].size.to_r
         
     | 
| 
      
 35 
     | 
    
         
            +
                                right_root = sample_right_variance/args[1].size.to_r
         
     | 
| 
       36 
36 
     | 
    
         | 
| 
       37 
37 
     | 
    
         
             
                                standard_error = Math.sqrt(left_root + right_root)
         
     | 
| 
       38 
38 
     | 
    
         | 
| 
       39 
     | 
    
         
            -
                                (sample_left_mean - sample_right_mean).abs/standard_error. 
     | 
| 
      
 39 
     | 
    
         
            +
                                (sample_left_mean - sample_right_mean).abs/standard_error.to_r
         
     | 
| 
       40 
40 
     | 
    
         
             
                              end
         
     | 
| 
       41 
41 
     | 
    
         | 
| 
       42 
42 
     | 
    
         
             
                    t_distribution = Distribution::TStudent.new(degrees_of_freedom)
         
     | 
| 
         @@ -72,7 +72,7 @@ module Statistics 
     | 
|
| 
       72 
72 
     | 
    
         | 
| 
       73 
73 
     | 
    
         
             
                    down = difference_std/Math.sqrt(differences.size)
         
     | 
| 
       74 
74 
     | 
    
         | 
| 
       75 
     | 
    
         
            -
                    t_score = (differences.mean - 0)/down. 
     | 
| 
      
 75 
     | 
    
         
            +
                    t_score = (differences.mean - 0)/down.to_r
         
     | 
| 
       76 
76 
     | 
    
         | 
| 
       77 
77 
     | 
    
         
             
                    probability = Distribution::TStudent.new(degrees_of_freedom).cumulative_function(t_score)
         
     | 
| 
       78 
78 
     | 
    
         | 
| 
         @@ -73,7 +73,7 @@ module Statistics 
     | 
|
| 
       73 
73 
     | 
    
         
             
                                memo += ((t[:counter] ** 3) - t[:counter])/12.0
         
     | 
| 
       74 
74 
     | 
    
         
             
                              end
         
     | 
| 
       75 
75 
     | 
    
         | 
| 
       76 
     | 
    
         
            -
                    left = (total_group_one * total_group_two)/(n * (n - 1)). 
     | 
| 
      
 76 
     | 
    
         
            +
                    left = (total_group_one * total_group_two)/(n * (n - 1)).to_r
         
     | 
| 
       77 
77 
     | 
    
         
             
                    right = (((n ** 3) - n)/12.0) - rank_sum
         
     | 
| 
       78 
78 
     | 
    
         | 
| 
       79 
79 
     | 
    
         
             
                    Math.sqrt(left * right)
         
     | 
| 
         @@ -82,7 +82,7 @@ module Statistics 
     | 
|
| 
       82 
82 
     | 
    
         
             
                  private def ranked_sum_for(total, group)
         
     | 
| 
       83 
83 
     | 
    
         
             
                    # sum rankings per group
         
     | 
| 
       84 
84 
     | 
    
         
             
                    group.reduce(0) do |memo, element|
         
     | 
| 
       85 
     | 
    
         
            -
                      rank_of_element = total[element][:rank] / total[element][:counter]. 
     | 
| 
      
 85 
     | 
    
         
            +
                      rank_of_element = total[element][:rank] / total[element][:counter].to_r
         
     | 
| 
       86 
86 
     | 
    
         
             
                      memo += rank_of_element
         
     | 
| 
       87 
87 
     | 
    
         
             
                    end
         
     | 
| 
       88 
88 
     | 
    
         
             
                  end
         
     | 
    
        data/lib/statistics/version.rb
    CHANGED
    
    
    
        data/ruby-statistics.gemspec
    CHANGED
    
    | 
         @@ -27,9 +27,9 @@ Gem::Specification.new do |spec| 
     | 
|
| 
       27 
27 
     | 
    
         
             
              spec.executables   = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
         
     | 
| 
       28 
28 
     | 
    
         
             
              spec.require_paths = ["lib"]
         
     | 
| 
       29 
29 
     | 
    
         | 
| 
       30 
     | 
    
         
            -
              spec.add_development_dependency " 
     | 
| 
       31 
     | 
    
         
            -
              spec.add_development_dependency " 
     | 
| 
       32 
     | 
    
         
            -
              spec.add_development_dependency "rspec", '~> 3.6', '>= 3.6.0'
         
     | 
| 
      
 30 
     | 
    
         
            +
              spec.add_development_dependency "rake", '>= 12.0.0', '~> 13.0'
         
     | 
| 
      
 31 
     | 
    
         
            +
              spec.add_development_dependency "rspec", '>= 3.6.0'
         
     | 
| 
       33 
32 
     | 
    
         
             
              spec.add_development_dependency "grb", '~> 0.4.1', '>= 0.4.1'
         
     | 
| 
       34 
     | 
    
         
            -
              spec.add_development_dependency 'byebug', ' 
     | 
| 
      
 33 
     | 
    
         
            +
              spec.add_development_dependency 'byebug', '>= 9.1.0'
         
     | 
| 
      
 34 
     | 
    
         
            +
              spec.add_development_dependency 'pry'
         
     | 
| 
       35 
35 
     | 
    
         
             
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,62 +1,39 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: ruby-statistics
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version:  
     | 
| 
      
 4 
     | 
    
         
            +
              version: 3.0.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - esteban zapata
         
     | 
| 
       8 
     | 
    
         
            -
            autorequire: 
     | 
| 
      
 8 
     | 
    
         
            +
            autorequire:
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: exe
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date:  
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2021-10-08 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
     | 
    
         
            -
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
     | 
    
         
            -
              name: bundler
         
     | 
| 
       15 
     | 
    
         
            -
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       16 
     | 
    
         
            -
                requirements:
         
     | 
| 
       17 
     | 
    
         
            -
                - - "~>"
         
     | 
| 
       18 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       19 
     | 
    
         
            -
                    version: '1.15'
         
     | 
| 
       20 
     | 
    
         
            -
                - - ">="
         
     | 
| 
       21 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       22 
     | 
    
         
            -
                    version: 1.15.4
         
     | 
| 
       23 
     | 
    
         
            -
              type: :development
         
     | 
| 
       24 
     | 
    
         
            -
              prerelease: false
         
     | 
| 
       25 
     | 
    
         
            -
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       26 
     | 
    
         
            -
                requirements:
         
     | 
| 
       27 
     | 
    
         
            -
                - - "~>"
         
     | 
| 
       28 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       29 
     | 
    
         
            -
                    version: '1.15'
         
     | 
| 
       30 
     | 
    
         
            -
                - - ">="
         
     | 
| 
       31 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       32 
     | 
    
         
            -
                    version: 1.15.4
         
     | 
| 
       33 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       34 
14 
     | 
    
         
             
              name: rake
         
     | 
| 
       35 
15 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       36 
16 
     | 
    
         
             
                requirements:
         
     | 
| 
       37 
     | 
    
         
            -
                - - "~>"
         
     | 
| 
       38 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       39 
     | 
    
         
            -
                    version: '12.0'
         
     | 
| 
       40 
17 
     | 
    
         
             
                - - ">="
         
     | 
| 
       41 
18 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       42 
19 
     | 
    
         
             
                    version: 12.0.0
         
     | 
| 
      
 20 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 21 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 22 
     | 
    
         
            +
                    version: '13.0'
         
     | 
| 
       43 
23 
     | 
    
         
             
              type: :development
         
     | 
| 
       44 
24 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       45 
25 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       46 
26 
     | 
    
         
             
                requirements:
         
     | 
| 
       47 
     | 
    
         
            -
                - - "~>"
         
     | 
| 
       48 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       49 
     | 
    
         
            -
                    version: '12.0'
         
     | 
| 
       50 
27 
     | 
    
         
             
                - - ">="
         
     | 
| 
       51 
28 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       52 
29 
     | 
    
         
             
                    version: 12.0.0
         
     | 
| 
      
 30 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 31 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 32 
     | 
    
         
            +
                    version: '13.0'
         
     | 
| 
       53 
33 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       54 
34 
     | 
    
         
             
              name: rspec
         
     | 
| 
       55 
35 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       56 
36 
     | 
    
         
             
                requirements:
         
     | 
| 
       57 
     | 
    
         
            -
                - - "~>"
         
     | 
| 
       58 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       59 
     | 
    
         
            -
                    version: '3.6'
         
     | 
| 
       60 
37 
     | 
    
         
             
                - - ">="
         
     | 
| 
       61 
38 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       62 
39 
     | 
    
         
             
                    version: 3.6.0
         
     | 
| 
         @@ -64,9 +41,6 @@ dependencies: 
     | 
|
| 
       64 
41 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       65 
42 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       66 
43 
     | 
    
         
             
                requirements:
         
     | 
| 
       67 
     | 
    
         
            -
                - - "~>"
         
     | 
| 
       68 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       69 
     | 
    
         
            -
                    version: '3.6'
         
     | 
| 
       70 
44 
     | 
    
         
             
                - - ">="
         
     | 
| 
       71 
45 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       72 
46 
     | 
    
         
             
                    version: 3.6.0
         
     | 
| 
         @@ -94,9 +68,6 @@ dependencies: 
     | 
|
| 
       94 
68 
     | 
    
         
             
              name: byebug
         
     | 
| 
       95 
69 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       96 
70 
     | 
    
         
             
                requirements:
         
     | 
| 
       97 
     | 
    
         
            -
                - - "~>"
         
     | 
| 
       98 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       99 
     | 
    
         
            -
                    version: 9.1.0
         
     | 
| 
       100 
71 
     | 
    
         
             
                - - ">="
         
     | 
| 
       101 
72 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       102 
73 
     | 
    
         
             
                    version: 9.1.0
         
     | 
| 
         @@ -104,12 +75,23 @@ dependencies: 
     | 
|
| 
       104 
75 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       105 
76 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       106 
77 
     | 
    
         
             
                requirements:
         
     | 
| 
       107 
     | 
    
         
            -
                - - " 
     | 
| 
      
 78 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       108 
79 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       109 
80 
     | 
    
         
             
                    version: 9.1.0
         
     | 
| 
      
 81 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 82 
     | 
    
         
            +
              name: pry
         
     | 
| 
      
 83 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 84 
     | 
    
         
            +
                requirements:
         
     | 
| 
       110 
85 
     | 
    
         
             
                - - ">="
         
     | 
| 
       111 
86 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       112 
     | 
    
         
            -
                    version:  
     | 
| 
      
 87 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 88 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 89 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 90 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 91 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 92 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 93 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 94 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       113 
95 
     | 
    
         
             
            description: |-
         
     | 
| 
       114 
96 
     | 
    
         
             
              This gem is intended to accomplish the same purpose as jStat js library:
         
     | 
| 
       115 
97 
     | 
    
         
             
                                        to provide ruby with statistical capabilities without the need
         
     | 
| 
         @@ -122,6 +104,8 @@ executables: [] 
     | 
|
| 
       122 
104 
     | 
    
         
             
            extensions: []
         
     | 
| 
       123 
105 
     | 
    
         
             
            extra_rdoc_files: []
         
     | 
| 
       124 
106 
     | 
    
         
             
            files:
         
     | 
| 
      
 107 
     | 
    
         
            +
            - ".github/dependabot.yml"
         
     | 
| 
      
 108 
     | 
    
         
            +
            - ".github/workflows/ruby.yml"
         
     | 
| 
       125 
109 
     | 
    
         
             
            - ".gitignore"
         
     | 
| 
       126 
110 
     | 
    
         
             
            - ".rspec"
         
     | 
| 
       127 
111 
     | 
    
         
             
            - ".travis.yml"
         
     | 
| 
         @@ -165,7 +149,7 @@ homepage: https://github.com/estebanz01/ruby-statistics 
     | 
|
| 
       165 
149 
     | 
    
         
             
            licenses:
         
     | 
| 
       166 
150 
     | 
    
         
             
            - MIT
         
     | 
| 
       167 
151 
     | 
    
         
             
            metadata: {}
         
     | 
| 
       168 
     | 
    
         
            -
            post_install_message: 
     | 
| 
      
 152 
     | 
    
         
            +
            post_install_message:
         
     | 
| 
       169 
153 
     | 
    
         
             
            rdoc_options: []
         
     | 
| 
       170 
154 
     | 
    
         
             
            require_paths:
         
     | 
| 
       171 
155 
     | 
    
         
             
            - lib
         
     | 
| 
         @@ -180,9 +164,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       180 
164 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       181 
165 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       182 
166 
     | 
    
         
             
            requirements: []
         
     | 
| 
       183 
     | 
    
         
            -
             
     | 
| 
       184 
     | 
    
         
            -
             
     | 
| 
       185 
     | 
    
         
            -
            signing_key: 
         
     | 
| 
      
 167 
     | 
    
         
            +
            rubygems_version: 3.1.4
         
     | 
| 
      
 168 
     | 
    
         
            +
            signing_key:
         
     | 
| 
       186 
169 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       187 
170 
     | 
    
         
             
            summary: A ruby gem for som specific statistics. Inspired by the jStat js library.
         
     | 
| 
       188 
171 
     | 
    
         
             
            test_files: []
         
     |