Sha256: 58517b8a1d3e1cb13258ee3997907bb50b888746fbdd8b2a22eb03ec4d0559b7
Contents?: true
Size: 979 Bytes
Versions: 3
Compression:
Stored size: 979 Bytes
Contents
module Statistics module Distribution class Weibull attr_accessor :shape, :scale # k and lambda def initialize(k, lamb) self.shape = k.to_f self.scale = lamb.to_f end def cumulative_function(random_value) return 0 if random_value < 0 1 - Math.exp(-((random_value/scale) ** shape)) end def density_function(value) return if shape <= 0 || scale <= 0 return 0 if value < 0 left = shape/scale center = (value/scale)**(shape - 1) right = Math.exp(-((value/scale)**shape)) left * center * right end def mean scale * Math.gamma(1 + (1/shape)) end def mode return 0 if shape <= 1 scale * (((shape - 1)/shape) ** (1/shape)) end def variance left = Math.gamma(1 + (2/shape)) right = Math.gamma(1 + (1/shape)) ** 2 (scale ** 2) * (left - right) end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
ruby-statistics-1.0.2 | lib/statistics/distribution/weibull.rb |
ruby-statistics-1.0.0 | lib/statistics/distribution/weibull.rb |
ruby-statistics-0.5.0 | lib/statistics/distribution/weibull.rb |