Class: Bullshit::NormalDistribution
- Inherits:
-
Object
- Object
- Bullshit::NormalDistribution
- Includes:
- Functions
- Defined in:
- lib/bullshit.rb
Overview
This class is used to compute the Normal Distribution.
Constant Summary
Constants included from Functions
Functions::A, Functions::HALF_LOG_2_PI, Functions::LANCZOS_COEFFICIENTS, Functions::ROOT2
Instance Attribute Summary collapse
-
#mu ⇒ Object
readonly
Returns the value of attribute mu.
-
#sigma ⇒ Object
readonly
Returns the value of attribute sigma.
Instance Method Summary collapse
-
#initialize(mu = 0.0, sigma = 1.0) ⇒ NormalDistribution
constructor
Creates a NormalDistribution instance for the values
mu
andsigma
. -
#inverse_probability(p) ⇒ Object
Returns the inverse cumulative probability value of the NormalDistribution for the probability
p
. -
#probability(x) ⇒ Object
Returns the cumulative probability (p-value) of the NormalDistribution for the value
x
.
Methods included from Functions
beta_regularized, #erf, gammaP_regularized, gammaQ_regularized, log_beta, #log_gamma
Constructor Details
#initialize(mu = 0.0, sigma = 1.0) ⇒ NormalDistribution
Creates a NormalDistribution instance for the values mu
and sigma
.
893 894 895 |
# File 'lib/bullshit.rb', line 893 def initialize(mu = 0.0, sigma = 1.0) @mu, @sigma = mu.to_f, sigma.to_f end |
Instance Attribute Details
#mu ⇒ Object (readonly)
Returns the value of attribute mu.
897 898 899 |
# File 'lib/bullshit.rb', line 897 def mu @mu end |
#sigma ⇒ Object (readonly)
Returns the value of attribute sigma.
899 900 901 |
# File 'lib/bullshit.rb', line 899 def sigma @sigma end |
Instance Method Details
#inverse_probability(p) ⇒ Object
Returns the inverse cumulative probability value of the NormalDistribution for the probability p
.
909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 |
# File 'lib/bullshit.rb', line 909 def inverse_probability(p) case when p <= 0 -1 / 0.0 when p >= 1 1 / 0.0 when p == 0.5 # This is a bit sloppy, maybe improve this later. @mu else begin NewtonBisection.new { |x| probability(x) - p }.solve(nil, 1_000_000) rescue 0 / 0.0 end end end |
#probability(x) ⇒ Object
Returns the cumulative probability (p-value) of the NormalDistribution for the value x
.
903 904 905 |
# File 'lib/bullshit.rb', line 903 def probability(x) 0.5 * (1 + erf((x - @mu) / (@sigma * ROOT2))) end |