Safe Haskell | None |
---|---|
Language | Haskell2010 |
DataForecast.TimeSeries
Description
- data TimeSeries parts where
- TimeSeries :: SPeriod p -> SummaryData -> Subparts subparts -> TimeSeries (p ': subparts)
- getSD :: TimeSeries parts -> SummaryData
- setSD :: SummaryData -> TimeSeries parts -> TimeSeries parts
- getSub :: TimeSeries (p ': subparts) -> Subparts subparts
- setSub :: Subparts subparts -> TimeSeries (p ': subparts) -> TimeSeries (p ': subparts)
- class BuildTS p where
- raw :: BuildTS p => Double -> TimeSeries '[p]
- fromRawData :: (BuildTS p, BuildTS parts) => [Double] -> TimeSeries '[p, parts]
- fromParts :: BuildTS part => [TimeSeries subparts] -> TimeSeries (part ': subparts)
- data TsPeriod
- data SPeriod x where
- data SummaryData = SummaryData {}
- defaultSummary :: SummaryData
- summaryWithTotal :: Double -> SummaryData
- setSdTotal :: Double -> SummaryData -> SummaryData
- setSdMean :: Double -> SummaryData -> SummaryData
- data Subparts parts = Subparts {
- subs :: [TimeSeries parts]
TimeSeries
data TimeSeries parts where Source #
Time series date representation with the resolution breakdown encoded in the type.
parts
has kind '[TsPeriod]' which represents the hierarchical breakdown of
your data. You are responsible for providing the correct type hierarchy for
your data initially, but once you have done that the library ensures that all
analysis performed is valid.
In general you should not use the TimeSeries
constructor directly, instead
use the raw
and fromParts
construction functions defined below.
Constructors
TimeSeries :: SPeriod p -> SummaryData -> Subparts subparts -> TimeSeries (p ': subparts) |
Instances
Eq (TimeSeries parts) Source # | |
Show (TimeSeries parts) Source # | |
getSD :: TimeSeries parts -> SummaryData Source #
Get the SummaryData
out of a TimeSeries.
setSD :: SummaryData -> TimeSeries parts -> TimeSeries parts Source #
Set the SummaryData
field of a TimeSeries
. We can't use record syntax
because https://ghc.haskell.org/trac/ghc/ticket/2595 is not implemented.
getSub :: TimeSeries (p ': subparts) -> Subparts subparts Source #
Get the Subparts
out of a TimeSeries
.
setSub :: Subparts subparts -> TimeSeries (p ': subparts) -> TimeSeries (p ': subparts) Source #
Set the Subparts
of the TimeSeries
.
Construction.
class BuildTS p where Source #
Typeclass for constructing TimeSeries
with default data.
This is used by several of the TimeSeries
construction functions such as
raw
. It provides a convenient way for constructing time series of different
types with the same functions and allowing the concrete type to be pinned down
by a type signature.
Minimal complete definition
Methods
build :: SummaryData -> Subparts rest -> TimeSeries (p ': rest) Source #
raw :: BuildTS p => Double -> TimeSeries '[p] Source #
Construct a leaf TimeSeries
with the given rawData
.
Usually you should not need to use this directly and can instead use
fromRawData
.
Example:
raw 42 :: TimeSeries '[ 'Year ]
fromRawData :: (BuildTS p, BuildTS parts) => [Double] -> TimeSeries '[p, parts] Source #
Construct a TimeSeries
given the constituent raw data.
Example:
yearByQuarter :: TimeSeries '[ 'Year, 'Quarter ] yearByQuarter = fromRawData [ 10, 20, 30, 15 ]
fromParts :: BuildTS part => [TimeSeries subparts] -> TimeSeries (part ': subparts) Source #
Construct a TimeSeries
given the constituent TimeSeries
parts.
TsPeriod
Use promoted constructors to represent the different timeseries that we have. When using these as kinds you must prefix them with a single quote (').
Example:
raw 4 :: TimeSeries '[ 'Day ]
The singleton for the promoted TsPeriod
type.
See https://www.schoolofhaskell.com/user/konn/prove-your-haskell-for-great-safety/dependent-types-in-haskell#singleton-patterns for details.
SummaryData
data SummaryData Source #
The summarization of the entire time series rooted at the current 'TimeSeries.
Instances
defaultSummary :: SummaryData Source #
The default SummaryData
with Nothing
for the sdtotal
and sdmean
.
summaryWithTotal :: Double -> SummaryData Source #
Construct a SummaryData
with the sdtotal
set.
setSdTotal :: Double -> SummaryData -> SummaryData Source #
Set the total for the SummaryData
.
setSdMean :: Double -> SummaryData -> SummaryData Source #
Set the mean for the SummaryData
.
Subparts
The constituent components of a TimeSeries
. If the TimeSeries
is just a
leaf with raw data then subs
will be Nothing
.
Constructors
Subparts | |
Fields
|