Packages
Descriptive Statistics is a library that allows you to compute simple descriptive statistics in Elixir. Inspired by https://github.com/thirtysixthspan/descriptive_statistics.
Current section
Files
Jump to
Current section
Files
lib/descriptive_statistics.ex
defmodule DescriptiveStatistics do
def sum ary do
:lists.sum ary
end
def sort ary do
Enum.sort ary
end
def max([]), do: nil
def max ary do
Enum.max ary
end
def min([]), do: nil
def min ary do
Enum.min ary
end
def length ary do
Kernel.length ary
end
def mean([]), do: nil
def mean ary do
sum(ary) / __MODULE__.length(ary)
end
def median([]), do: nil
def median ary do
sorted = sort(ary)
length = __MODULE__.length(ary)
half = div(length, 2)
if(rem(length, 2) == 0) do
mean([
Enum.at(sorted, half - 1),
Enum.at(sorted, half)
])
else
Enum.at(sorted, half)
end
end
def variance([]), do: nil
def variance ary do
mean = mean(ary)
sum(Enum.map(ary, &((mean - &1) * (mean - &1)))) / __MODULE__.length(ary)
end
def standard_deviation([]), do: nil
def standard_deviation(ary) do
:math.sqrt(variance(ary))
end
end