    -- |
    -- Module    : Statistics.Types
    -- Copyright : (c) 2009 Bryan O'Sullivan
    -- License   : BSD3
    --
    -- Maintainer  : bos@serpentine.com
    -- Stability   : experimental
    -- Portability : portable
    --
    -- Types for working with statistics.

    module Statistics.Types
        (
          Estimator(..)
        , Sample
        , WeightedSample
        , Weights
        ) where

    import qualified Data.Vector.Unboxed as U (Vector)

    -- | Sample data.
    type Sample = U.Vector Double

    -- | Sample with weights. First element of sample is data, second is weight
    type WeightedSample = U.Vector (Double,Double)

    -- | An estimator of a property of a sample, such as its 'mean'.
    --
    -- The use of an algebraic data type here allows functions such as
    -- 'jackknife' and 'bootstrapBCA' to use more efficient algorithms
    -- when possible.
    data Estimator = Mean
                   | Variance
                   | VarianceUnbiased
                   | StdDev
                   | Function (Sample -> Double)

    -- | Weights for affecting the importance of elements of a sample.
    type Weights = U.Vector Double