byar 0.0.1 → 0.1.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.
Files changed (2) hide show
  1. data/lib/byar.rb +92 -3
  2. metadata +17 -26
data/lib/byar.rb CHANGED
@@ -1,13 +1,102 @@
1
+ ##
2
+ # Byar is a Byar's approximation confidence interval tool with SMR calculation.
3
+ #
4
+ # Can be used with class-level methods or as instantiated object.
5
+ #
6
+ # Class-level example with observed value 100 and expected value 90:
7
+ #
8
+ # Byar.upper(100, 90) # => 1.3514260807978444, equals to SMR of 135.1
9
+ #
10
+ # Object instance example with observed value 100 and expected value 90:
11
+ #
12
+ # b = Byar.new(100)
13
+ # b.upper_bound # => 121.628347271806
14
+ # b.lower(90) # => 0.9040199067337297, equals to SMR of 90.4
15
+ #
1
16
  class Byar
17
+ ##
18
+ # Z_VALUE defaults to 1.96 for 95% confidence interval
19
+ #
20
+ Z_VALUE = 1.96
21
+
22
+ attr_writer :z_value
23
+
24
+ ##
25
+ # Create new Byar approximation calculator for +obs+ observed cases
26
+ def initialize(obs)
27
+ @obs = obs
28
+ end
29
+
30
+ ##
31
+ # Calculate SMR-like lower boundary (1 equals SMR of 100)
32
+ #
33
+ # Give +obs+ observed and +exp+ expected values to return a lower SMR-like
34
+ # boundary value (0 - Infinite)
2
35
  def self.lower(obs, exp)
3
36
  return nil if exp == 0
4
- return 0 if obs == 0
5
- obs.quo(exp) * (1 - 1.quo(9 * obs) - 1.96.quo(3 * Math.sqrt(obs))) ** 3
37
+ lower_bound(obs).quo(exp)
6
38
  end
7
39
 
40
+ ##
41
+ # Calculate SMR-like upper boundary (1 equals SMR of 100)
42
+ #
43
+ # Give +obs+ observed and +exp+ expected values to return an upper SMR-like
44
+ # boundary value (0 - Infinite)
8
45
  def self.upper(obs, exp)
9
46
  return nil if exp == 0
47
+ upper_bound(obs).quo(exp)
48
+ end
49
+
50
+ ##
51
+ # Calculate lower boundary for observed cases
52
+ def self.lower_bound(obs)
53
+ return 0 if obs == 0
54
+ obs * (1 - 1.quo(9 * obs) - Z_VALUE.quo(3 * Math.sqrt(obs))) ** 3
55
+ end
56
+
57
+ ##
58
+ # Calculate upper boundary for observed cases
59
+ def self.upper_bound(obs)
10
60
  obs = obs + 1
11
- (obs).quo(exp) * (1 - 1.quo(9 * (obs)) + 1.96.quo(3 * Math.sqrt(obs))) ** 3
61
+ obs * (1 - 1.quo(9 * obs) + Z_VALUE.quo(3 * Math.sqrt(obs))) ** 3
62
+ end
63
+
64
+ def self.z_value=(value)
65
+ @z_value = value
66
+ end
67
+
68
+ def self.z_value
69
+ @z_value ||= Z_VALUE
70
+ end
71
+
72
+ ##
73
+ # Give lower SMR-like boundary for +expected+ cases
74
+ def lower(expected)
75
+ self.class.lower(@obs, expected)
76
+ end
77
+
78
+ ##
79
+ # Give upper SMR-like boundary for +expected+ cases
80
+ def upper(expected)
81
+ self.class.upper(@obs, expected)
82
+ end
83
+
84
+ ##
85
+ # Give lower boundary for observed value
86
+ def lower_bound
87
+ self.class.lower_bound(@obs)
88
+ end
89
+
90
+ ##
91
+ # Give upper boundary for observed value
92
+ def upper_bound
93
+ self.class.upper_bound(@obs)
12
94
  end
95
+
96
+ ##
97
+ # Give object's Z value, with fallback to Class variable or Z_VALUE
98
+ def z_value
99
+ @z_value ||= self.class.z_value
100
+ end
101
+
13
102
  end
metadata CHANGED
@@ -1,54 +1,45 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: byar
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
4
5
  prerelease:
5
- version: 0.0.1
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Floris Huetink
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-09-02 00:00:00 Z
12
+ date: 2012-10-29 00:00:00.000000000 Z
14
13
  dependencies: []
15
-
16
14
  description: Byar's approximation for use in (H)SMR calculations
17
15
  email: floris@avocado.nl
18
16
  executables: []
19
-
20
17
  extensions: []
21
-
22
18
  extra_rdoc_files: []
23
-
24
- files:
19
+ files:
25
20
  - lib/byar.rb
26
21
  homepage: https://github.com/florish/byar
27
22
  licenses: []
28
-
29
23
  post_install_message:
30
24
  rdoc_options: []
31
-
32
- require_paths:
25
+ require_paths:
33
26
  - lib
34
- required_ruby_version: !ruby/object:Gem::Requirement
27
+ required_ruby_version: !ruby/object:Gem::Requirement
35
28
  none: false
36
- requirements:
37
- - - ">="
38
- - !ruby/object:Gem::Version
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
39
32
  version: 1.9.2
40
- required_rubygems_version: !ruby/object:Gem::Requirement
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
41
34
  none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- version: "0"
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
46
39
  requirements: []
47
-
48
40
  rubyforge_project:
49
- rubygems_version: 1.8.6
41
+ rubygems_version: 1.8.24
50
42
  signing_key:
51
43
  specification_version: 3
52
44
  summary: Byar's approximation
53
45
  test_files: []
54
-