26 lines
612 B
Ruby
26 lines
612 B
Ruby
module Statistics
|
|
module Distribution
|
|
class Empirical
|
|
attr_accessor :samples
|
|
|
|
def initialize(samples:)
|
|
self.samples = samples
|
|
end
|
|
|
|
# Formula grabbed from here: https://statlect.com/asymptotic-theory/empirical-distribution
|
|
def cumulative_function(x:)
|
|
cumulative_sum = samples.reduce(0) do |summation, sample|
|
|
summation += if sample <= x
|
|
1
|
|
else
|
|
0
|
|
end
|
|
|
|
summation
|
|
end
|
|
|
|
cumulative_sum / samples.size.to_f
|
|
end
|
|
end
|
|
end
|
|
end
|