Class: Vangrail::BetaBinomialPrior
- Inherits:
-
Object
- Object
- Vangrail::BetaBinomialPrior
- Defined in:
- lib/vangrail/risk_scenario.rb
Overview
Immutable beta-binomial prevalence supplied by a deployment or evaluation.
Instance Attribute Summary collapse
-
#alpha ⇒ Object
readonly
Returns the value of attribute alpha.
-
#beta ⇒ Object
readonly
Returns the value of attribute beta.
Instance Method Summary collapse
- #adjudicate(label) ⇒ Object
-
#initialize(alpha:, beta:) ⇒ BetaBinomialPrior
constructor
A new instance of BetaBinomialPrior.
- #interval(confidence: 0.95) ⇒ Object
- #mean ⇒ Object
- #to_h ⇒ Object
Constructor Details
#initialize(alpha:, beta:) ⇒ BetaBinomialPrior
Returns a new instance of BetaBinomialPrior.
10 11 12 13 14 |
# File 'lib/vangrail/risk_scenario.rb', line 10 def initialize(alpha:, beta:) @alpha = positive(alpha, 'alpha') @beta = positive(beta, 'beta') freeze end |
Instance Attribute Details
#alpha ⇒ Object (readonly)
Returns the value of attribute alpha.
8 9 10 |
# File 'lib/vangrail/risk_scenario.rb', line 8 def alpha @alpha end |
#beta ⇒ Object (readonly)
Returns the value of attribute beta.
8 9 10 |
# File 'lib/vangrail/risk_scenario.rb', line 8 def beta @beta end |
Instance Method Details
#adjudicate(label) ⇒ Object
26 27 28 29 30 31 32 |
# File 'lib/vangrail/risk_scenario.rb', line 26 def adjudicate(label) case label.to_sym when :attack then self.class.new(alpha: alpha + 1, beta: beta) when :benign then self.class.new(alpha: alpha, beta: beta + 1) else raise ArgumentError, "unknown adjudicated label #{label.inspect}" end end |
#interval(confidence: 0.95) ⇒ Object
20 21 22 23 24 |
# File 'lib/vangrail/risk_scenario.rb', line 20 def interval(confidence: 0.95) probability(confidence, 'confidence') tail = (1 - confidence) / 2.0 [Beta.quantile(tail, alpha, beta), Beta.quantile(1 - tail, alpha, beta)].freeze end |
#mean ⇒ Object
16 17 18 |
# File 'lib/vangrail/risk_scenario.rb', line 16 def mean alpha.fdiv(alpha + beta) end |
#to_h ⇒ Object
34 35 36 |
# File 'lib/vangrail/risk_scenario.rb', line 34 def to_h { 'alpha' => alpha, 'beta' => beta, 'mean' => mean }.freeze end |