Packages

Seasonal-trend decomposition for Elixir using STL

Current section

Files

Jump to
ex_stl lib utils.ex
Raw

lib/utils.ex

defmodule Stl.Utils do
@moduledoc """
Utility functions for working with STL decompositions.
"""
@doc """
Calculate the variance of a list of numbers.
## Parameters
* `series` - A list of numbers.
## Returns
The variance of the series.
"""
def var(series) do
mean = Enum.sum(series) / length(series)
sum_squared_diffs =
series
|> Enum.map(&:math.pow(&1 - mean, 2))
|> Enum.sum()
sum_squared_diffs / (length(series) - 1)
end
@doc """
Formats date or datetime value to ISO8601 string.
## Parameters
* `value` - A Date or DateTime value.
## Returns
An ISO8601 formatted string.
"""
def iso8601(%Date{} = date), do: Date.to_iso8601(date)
def iso8601(%DateTime{} = datetime), do: DateTime.to_iso8601(datetime)
def iso8601(other), do: other
end