Class: Array
- Inherits:
-
Object
- Object
- Array
- Defined in:
- lib/rstat/core_ext/array/sum.rb,
lib/rstat/core_ext/array/product.rb,
lib/rstat/core_ext/array/descriptive_statistics/shape/moment.rb,
lib/rstat/core_ext/array/descriptive_statistics/location/mean.rb,
lib/rstat/core_ext/array/descriptive_statistics/location/mode.rb,
lib/rstat/core_ext/array/descriptive_statistics/shape/kurtosis.rb,
lib/rstat/core_ext/array/descriptive_statistics/shape/skewness.rb,
lib/rstat/core_ext/array/descriptive_statistics/shape/variance.rb,
lib/rstat/core_ext/array/descriptive_statistics/location/median.rb,
lib/rstat/core_ext/array/descriptive_statistics/dispersion/range.rb,
lib/rstat/core_ext/array/descriptive_statistics/index_of_dispersion.rb,
lib/rstat/core_ext/array/descriptive_statistics/dispersion/percentile.rb,
lib/rstat/core_ext/array/descriptive_statistics/dispersion/standard_deviation.rb
Instance Method Summary collapse
- #arithmetric_mean ⇒ Object
- #central_moment(k) ⇒ Object
- #coefficient_of_dispersion ⇒ Object
- #coefficient_of_variation ⇒ Object
- #dispersion_index ⇒ Object
- #fano_factor ⇒ Object
- #geometric_mean ⇒ Object
- #harmonic_mean ⇒ Object
- #index_of_dispersion ⇒ Object
- #interquartile_range ⇒ Object
- #iqr ⇒ Object
- #kurtosis ⇒ Object
- #mean ⇒ Object
- #median ⇒ Object
- #middle_fifty ⇒ Object
- #midspread ⇒ Object
- #mode ⇒ Object
- #percentile(p) ⇒ Object
- #power_mean(p = 1) ⇒ Object
- #product ⇒ Object
- #quadratic_mean ⇒ Object
- #range ⇒ Object
- #raw_moment(k) ⇒ Object
- #skewness ⇒ Object
- #standard_deviation ⇒ Object
- #std_dev ⇒ Object
- #sum ⇒ Object
- #variance ⇒ Object
- #variance_to_mean_ratio ⇒ Object
- #vmr ⇒ Object
Instance Method Details
#arithmetric_mean ⇒ Object
6 7 8 |
# File 'lib/rstat/core_ext/array/descriptive_statistics/location/mean.rb', line 6 def arithmetric_mean self.mean end |
#central_moment(k) ⇒ Object
2 3 4 5 6 7 8 9 10 |
# File 'lib/rstat/core_ext/array/descriptive_statistics/shape/moment.rb', line 2 def central_moment(k) if k < 0 nil else mean = self.mean (1.0 / self.length) * self.map{ |x| (x - mean) ** k }.sum end end |
#coefficient_of_dispersion ⇒ Object
10 11 12 |
# File 'lib/rstat/core_ext/array/descriptive_statistics/index_of_dispersion.rb', line 10 def coefficient_of_dispersion self.index_of_dispersion end |
#coefficient_of_variation ⇒ Object
10 11 12 |
# File 'lib/rstat/core_ext/array/descriptive_statistics/dispersion/standard_deviation.rb', line 10 def coefficient_of_variation self.standard_deviation / self.mean end |
#dispersion_index ⇒ Object
6 7 8 |
# File 'lib/rstat/core_ext/array/descriptive_statistics/index_of_dispersion.rb', line 6 def dispersion_index self.index_of_dispersion end |
#fano_factor ⇒ Object
22 23 24 |
# File 'lib/rstat/core_ext/array/descriptive_statistics/index_of_dispersion.rb', line 22 def fano_factor self.index_of_dispersion end |
#geometric_mean ⇒ Object
10 11 12 |
# File 'lib/rstat/core_ext/array/descriptive_statistics/location/mean.rb', line 10 def geometric_mean self.product.to_f ** (1.0 / self.length) end |
#harmonic_mean ⇒ Object
14 15 16 |
# File 'lib/rstat/core_ext/array/descriptive_statistics/location/mean.rb', line 14 def harmonic_mean self.length / self.map{ |x| 1.0 / x }.sum.to_f end |
#index_of_dispersion ⇒ Object
2 3 4 |
# File 'lib/rstat/core_ext/array/descriptive_statistics/index_of_dispersion.rb', line 2 def index_of_dispersion self.variance / self.mean end |
#interquartile_range ⇒ Object
10 11 12 |
# File 'lib/rstat/core_ext/array/descriptive_statistics/dispersion/percentile.rb', line 10 def interquartile_range self.percentile(75) - self.percentile(25) end |
#iqr ⇒ Object
14 15 16 |
# File 'lib/rstat/core_ext/array/descriptive_statistics/dispersion/percentile.rb', line 14 def iqr self.interquartile_range end |
#kurtosis ⇒ Object
2 3 4 |
# File 'lib/rstat/core_ext/array/descriptive_statistics/shape/kurtosis.rb', line 2 def kurtosis (self.central_moment(4) / self.variance ** 2) - 3 end |
#mean ⇒ Object
2 3 4 |
# File 'lib/rstat/core_ext/array/descriptive_statistics/location/mean.rb', line 2 def mean self.sum.to_f / self.length end |
#median ⇒ Object
2 3 4 5 6 7 8 9 10 11 12 13 14 |
# File 'lib/rstat/core_ext/array/descriptive_statistics/location/median.rb', line 2 def median if self.length != 0 copy = self.sort if copy.length % 2 == 0 (copy[copy.length / 2 - 1] + copy[copy.length / 2]) / 2.0 else copy[copy.length / 2] end else nil end end |
#middle_fifty ⇒ Object
22 23 24 |
# File 'lib/rstat/core_ext/array/descriptive_statistics/dispersion/percentile.rb', line 22 def middle_fifty self.interquartile_range end |
#midspread ⇒ Object
18 19 20 |
# File 'lib/rstat/core_ext/array/descriptive_statistics/dispersion/percentile.rb', line 18 def midspread self.interquartile_range end |
#mode ⇒ Object
2 3 4 5 6 7 8 9 10 11 12 13 14 |
# File 'lib/rstat/core_ext/array/descriptive_statistics/location/mode.rb', line 2 def mode if self.length <= 1 return self end seen = Hash.new(0) self.each{ |value| seen[value] += 1 } max = seen.values.max seen.find_all{ |key, value| value == max }.map{ |key, value| key }.sort end |
#percentile(p) ⇒ Object
2 3 4 5 6 7 8 |
# File 'lib/rstat/core_ext/array/descriptive_statistics/dispersion/percentile.rb', line 2 def percentile(p) if p < 0 || p > 100 nil else self.sort[((p.to_f / 100.0) * self.length.to_f) - 0.5] end end |
#power_mean(p = 1) ⇒ Object
22 23 24 |
# File 'lib/rstat/core_ext/array/descriptive_statistics/location/mean.rb', line 22 def power_mean(p = 1) ((1.0 / self.length) * self.map{ |x| x ** p }.sum.to_f) ** (1.0 / p) end |
#product ⇒ Object
2 3 4 |
# File 'lib/rstat/core_ext/array/product.rb', line 2 def product self.inject(:*) end |
#quadratic_mean ⇒ Object
18 19 20 |
# File 'lib/rstat/core_ext/array/descriptive_statistics/location/mean.rb', line 18 def quadratic_mean self.power_mean(2) end |
#range ⇒ Object
2 3 4 |
# File 'lib/rstat/core_ext/array/descriptive_statistics/dispersion/range.rb', line 2 def range self.max - self.min end |
#raw_moment(k) ⇒ Object
12 13 14 15 16 17 18 |
# File 'lib/rstat/core_ext/array/descriptive_statistics/shape/moment.rb', line 12 def raw_moment(k) if k < 0 nil else (1.0 / self.length) * self.map{ |x| x ** k }.sum end end |
#skewness ⇒ Object
2 3 4 |
# File 'lib/rstat/core_ext/array/descriptive_statistics/shape/skewness.rb', line 2 def skewness self.central_moment(3) / (self.variance ** 1.5) end |
#standard_deviation ⇒ Object
2 3 4 |
# File 'lib/rstat/core_ext/array/descriptive_statistics/dispersion/standard_deviation.rb', line 2 def standard_deviation Math.sqrt(self.variance) end |
#std_dev ⇒ Object
6 7 8 |
# File 'lib/rstat/core_ext/array/descriptive_statistics/dispersion/standard_deviation.rb', line 6 def std_dev self.standard_deviation end |
#sum ⇒ Object
2 3 4 |
# File 'lib/rstat/core_ext/array/sum.rb', line 2 def sum self.inject(:+) end |
#variance ⇒ Object
2 3 4 |
# File 'lib/rstat/core_ext/array/descriptive_statistics/shape/variance.rb', line 2 def variance self.central_moment 2 end |
#variance_to_mean_ratio ⇒ Object
14 15 16 |
# File 'lib/rstat/core_ext/array/descriptive_statistics/index_of_dispersion.rb', line 14 def variance_to_mean_ratio self.index_of_dispersion end |
#vmr ⇒ Object
18 19 20 |
# File 'lib/rstat/core_ext/array/descriptive_statistics/index_of_dispersion.rb', line 18 def vmr self.index_of_dispersion end |