packages feed

statistics 0.10.3.1 → 0.10.4.0

raw patch · 20 files changed

+164/−154 lines, 20 filesdep +binarydep +vector-binary-instancesdep ~basedep ~deepseqPVP ok

version bump matches the API change (PVP)

Dependencies added: binary, vector-binary-instances

Dependency ranges changed: base, deepseq

API changes (from Hackage documentation)

+ Statistics.Distribution.Beta: instance Binary BetaDistribution
+ Statistics.Distribution.Beta: instance Constructor C1_0BetaDistribution
+ Statistics.Distribution.Beta: instance Data BetaDistribution
+ Statistics.Distribution.Beta: instance Datatype D1BetaDistribution
+ Statistics.Distribution.Beta: instance Generic BetaDistribution
+ Statistics.Distribution.Beta: instance Selector S1_0_0BetaDistribution
+ Statistics.Distribution.Beta: instance Selector S1_0_1BetaDistribution
+ Statistics.Distribution.Binomial: instance Binary BinomialDistribution
+ Statistics.Distribution.Binomial: instance Constructor C1_0BinomialDistribution
+ Statistics.Distribution.Binomial: instance Data BinomialDistribution
+ Statistics.Distribution.Binomial: instance Datatype D1BinomialDistribution
+ Statistics.Distribution.Binomial: instance Generic BinomialDistribution
+ Statistics.Distribution.Binomial: instance Selector S1_0_0BinomialDistribution
+ Statistics.Distribution.Binomial: instance Selector S1_0_1BinomialDistribution
+ Statistics.Distribution.CauchyLorentz: instance Binary CauchyDistribution
+ Statistics.Distribution.CauchyLorentz: instance Constructor C1_0CauchyDistribution
+ Statistics.Distribution.CauchyLorentz: instance Data CauchyDistribution
+ Statistics.Distribution.CauchyLorentz: instance Datatype D1CauchyDistribution
+ Statistics.Distribution.CauchyLorentz: instance Generic CauchyDistribution
+ Statistics.Distribution.CauchyLorentz: instance Selector S1_0_0CauchyDistribution
+ Statistics.Distribution.CauchyLorentz: instance Selector S1_0_1CauchyDistribution
+ Statistics.Distribution.ChiSquared: instance Binary ChiSquared
+ Statistics.Distribution.ChiSquared: instance Constructor C1_0ChiSquared
+ Statistics.Distribution.ChiSquared: instance Data ChiSquared
+ Statistics.Distribution.ChiSquared: instance Datatype D1ChiSquared
+ Statistics.Distribution.ChiSquared: instance Eq ChiSquared
+ Statistics.Distribution.ChiSquared: instance Generic ChiSquared
+ Statistics.Distribution.ChiSquared: instance Read ChiSquared
+ Statistics.Distribution.Exponential: instance Binary ExponentialDistribution
+ Statistics.Distribution.Exponential: instance Constructor C1_0ExponentialDistribution
+ Statistics.Distribution.Exponential: instance Data ExponentialDistribution
+ Statistics.Distribution.Exponential: instance Datatype D1ExponentialDistribution
+ Statistics.Distribution.Exponential: instance Generic ExponentialDistribution
+ Statistics.Distribution.Exponential: instance Selector S1_0_0ExponentialDistribution
+ Statistics.Distribution.FDistribution: instance Binary FDistribution
+ Statistics.Distribution.FDistribution: instance Constructor C1_0FDistribution
+ Statistics.Distribution.FDistribution: instance Data FDistribution
+ Statistics.Distribution.FDistribution: instance Datatype D1FDistribution
+ Statistics.Distribution.FDistribution: instance Generic FDistribution
+ Statistics.Distribution.FDistribution: instance Selector S1_0_0FDistribution
+ Statistics.Distribution.FDistribution: instance Selector S1_0_1FDistribution
+ Statistics.Distribution.FDistribution: instance Selector S1_0_2FDistribution
+ Statistics.Distribution.Gamma: instance Binary GammaDistribution
+ Statistics.Distribution.Gamma: instance Constructor C1_0GammaDistribution
+ Statistics.Distribution.Gamma: instance Data GammaDistribution
+ Statistics.Distribution.Gamma: instance Datatype D1GammaDistribution
+ Statistics.Distribution.Gamma: instance Generic GammaDistribution
+ Statistics.Distribution.Gamma: instance Selector S1_0_0GammaDistribution
+ Statistics.Distribution.Gamma: instance Selector S1_0_1GammaDistribution
+ Statistics.Distribution.Geometric: instance Binary GeometricDistribution
+ Statistics.Distribution.Geometric: instance Constructor C1_0GeometricDistribution
+ Statistics.Distribution.Geometric: instance Data GeometricDistribution
+ Statistics.Distribution.Geometric: instance Datatype D1GeometricDistribution
+ Statistics.Distribution.Geometric: instance Generic GeometricDistribution
+ Statistics.Distribution.Geometric: instance Selector S1_0_0GeometricDistribution
+ Statistics.Distribution.Hypergeometric: instance Binary HypergeometricDistribution
+ Statistics.Distribution.Hypergeometric: instance Constructor C1_0HypergeometricDistribution
+ Statistics.Distribution.Hypergeometric: instance Data HypergeometricDistribution
+ Statistics.Distribution.Hypergeometric: instance Datatype D1HypergeometricDistribution
+ Statistics.Distribution.Hypergeometric: instance Generic HypergeometricDistribution
+ Statistics.Distribution.Hypergeometric: instance Selector S1_0_0HypergeometricDistribution
+ Statistics.Distribution.Hypergeometric: instance Selector S1_0_1HypergeometricDistribution
+ Statistics.Distribution.Hypergeometric: instance Selector S1_0_2HypergeometricDistribution
+ Statistics.Distribution.Normal: instance Binary NormalDistribution
+ Statistics.Distribution.Normal: instance Constructor C1_0NormalDistribution
+ Statistics.Distribution.Normal: instance Data NormalDistribution
+ Statistics.Distribution.Normal: instance Datatype D1NormalDistribution
+ Statistics.Distribution.Normal: instance Generic NormalDistribution
+ Statistics.Distribution.Normal: instance Selector S1_0_0NormalDistribution
+ Statistics.Distribution.Normal: instance Selector S1_0_1NormalDistribution
+ Statistics.Distribution.Normal: instance Selector S1_0_2NormalDistribution
+ Statistics.Distribution.Normal: instance Selector S1_0_3NormalDistribution
+ Statistics.Distribution.Poisson: instance Binary PoissonDistribution
+ Statistics.Distribution.Poisson: instance Constructor C1_0PoissonDistribution
+ Statistics.Distribution.Poisson: instance Data PoissonDistribution
+ Statistics.Distribution.Poisson: instance Datatype D1PoissonDistribution
+ Statistics.Distribution.Poisson: instance Generic PoissonDistribution
+ Statistics.Distribution.Poisson: instance Selector S1_0_0PoissonDistribution
+ Statistics.Distribution.StudentT: instance Binary StudentT
+ Statistics.Distribution.StudentT: instance Constructor C1_0StudentT
+ Statistics.Distribution.StudentT: instance Data StudentT
+ Statistics.Distribution.StudentT: instance Datatype D1StudentT
+ Statistics.Distribution.StudentT: instance Generic StudentT
+ Statistics.Distribution.StudentT: instance Selector S1_0_0StudentT
+ Statistics.Distribution.Transform: instance Binary d => Binary (LinearTransform d)
+ Statistics.Distribution.Transform: instance Constructor C1_0LinearTransform
+ Statistics.Distribution.Transform: instance Data d => Data (LinearTransform d)
+ Statistics.Distribution.Transform: instance Datatype D1LinearTransform
+ Statistics.Distribution.Transform: instance Generic (LinearTransform d)
+ Statistics.Distribution.Transform: instance Selector S1_0_0LinearTransform
+ Statistics.Distribution.Transform: instance Selector S1_0_1LinearTransform
+ Statistics.Distribution.Transform: instance Selector S1_0_2LinearTransform
+ Statistics.Distribution.Uniform: instance Binary UniformDistribution
+ Statistics.Distribution.Uniform: instance Constructor C1_0UniformDistribution
+ Statistics.Distribution.Uniform: instance Data UniformDistribution
+ Statistics.Distribution.Uniform: instance Datatype D1UniformDistribution
+ Statistics.Distribution.Uniform: instance Generic UniformDistribution
+ Statistics.Distribution.Uniform: instance Selector S1_0_0UniformDistribution
+ Statistics.Distribution.Uniform: instance Selector S1_0_1UniformDistribution
+ Statistics.Math.RootFinding: instance Binary a => Binary (Root a)
+ Statistics.Math.RootFinding: instance Constructor C1_0Root
+ Statistics.Math.RootFinding: instance Constructor C1_1Root
+ Statistics.Math.RootFinding: instance Constructor C1_2Root
+ Statistics.Math.RootFinding: instance Data a => Data (Root a)
+ Statistics.Math.RootFinding: instance Datatype D1Root
+ Statistics.Math.RootFinding: instance Generic (Root a)
+ Statistics.Resampling: instance Binary Resample
+ Statistics.Resampling: instance Constructor C1_0Resample
+ Statistics.Resampling: instance Data Resample
+ Statistics.Resampling: instance Datatype D1Resample
+ Statistics.Resampling: instance Generic Resample
+ Statistics.Resampling: instance Read Resample
+ Statistics.Resampling: instance Selector S1_0_0Resample
+ Statistics.Resampling: instance Typeable Resample
+ Statistics.Resampling.Bootstrap: instance Binary Estimate
+ Statistics.Resampling.Bootstrap: instance Constructor C1_0Estimate
+ Statistics.Resampling.Bootstrap: instance Datatype D1Estimate
+ Statistics.Resampling.Bootstrap: instance Generic Estimate
+ Statistics.Resampling.Bootstrap: instance Read Estimate
+ Statistics.Resampling.Bootstrap: instance Selector S1_0_0Estimate
+ Statistics.Resampling.Bootstrap: instance Selector S1_0_1Estimate
+ Statistics.Resampling.Bootstrap: instance Selector S1_0_2Estimate
+ Statistics.Resampling.Bootstrap: instance Selector S1_0_3Estimate
+ Statistics.Sample.KernelDensity.Simple: instance Binary Points
+ Statistics.Sample.KernelDensity.Simple: instance Constructor C1_0Points
+ Statistics.Sample.KernelDensity.Simple: instance Data Points
+ Statistics.Sample.KernelDensity.Simple: instance Datatype D1Points
+ Statistics.Sample.KernelDensity.Simple: instance Generic Points
+ Statistics.Sample.KernelDensity.Simple: instance Read Points
+ Statistics.Sample.KernelDensity.Simple: instance Selector S1_0_0Points
+ Statistics.Sample.KernelDensity.Simple: instance Typeable Points
+ Statistics.Sample.Powers: instance Binary Powers
+ Statistics.Sample.Powers: instance Constructor C1_0Powers
+ Statistics.Sample.Powers: instance Data Powers
+ Statistics.Sample.Powers: instance Datatype D1Powers
+ Statistics.Sample.Powers: instance Generic Powers
+ Statistics.Sample.Powers: instance Read Powers
+ Statistics.Sample.Powers: instance Typeable Powers

Files

Statistics/Distribution/Beta.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveDataTypeable, DeriveGeneric #-} ----------------------------------------------------------------------------- -- | -- Module      :  Statistics.Distribution.Beta@@ -20,10 +20,12 @@   , bdBeta   ) where +import Data.Binary (Binary)+import Data.Data (Data, Typeable)+import GHC.Generics (Generic) import Numeric.SpecFunctions           (incompleteBeta, invIncompleteBeta, logBeta) import Numeric.MathFunctions.Constants (m_NaN) import qualified Statistics.Distribution as D-import Data.Typeable  -- | The beta distribution data BetaDistribution = BD@@ -31,7 +33,9 @@    -- ^ Alpha shape parameter  , bdBeta  :: {-# UNPACK #-} !Double    -- ^ Beta shape parameter- } deriving (Eq,Read,Show,Typeable)+ } deriving (Eq, Read, Show, Typeable, Data, Generic)++instance Binary BetaDistribution  -- | Create beta distribution. Both shape parameters must be positive. betaDistr :: Double             -- ^ Shape parameter alpha
Statistics/Distribution/Binomial.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveDataTypeable, DeriveGeneric #-} -- | -- Module    : Statistics.Distribution.Binomial -- Copyright : (c) 2009 Bryan O'Sullivan@@ -23,7 +23,9 @@     , bdProbability     ) where -import Data.Typeable (Typeable)+import Data.Binary (Binary)+import Data.Data (Data, Typeable)+import GHC.Generics (Generic) import qualified Statistics.Distribution as D import Numeric.SpecFunctions (choose) @@ -34,8 +36,10 @@     -- ^ Number of trials.     , bdProbability :: {-# UNPACK #-} !Double     -- ^ Probability.-    } deriving (Eq, Read, Show, Typeable)+    } deriving (Eq, Read, Show, Typeable, Data, Generic) +instance Binary BinomialDistribution+ instance D.Distribution BinomialDistribution where     cumulative = cumulative @@ -58,7 +62,7 @@  -- This could be slow for big n probability :: BinomialDistribution -> Int -> Double-probability (BD n p) k +probability (BD n p) k   | k < 0 || k > n = 0   | n == 0         = 1   | otherwise      = choose n k * p^k * (1-p)^(n-k)@@ -91,10 +95,10 @@ binomial :: Int                 -- ^ Number of trials.          -> Double              -- ^ Probability.          -> BinomialDistribution-binomial n p +binomial n p   | n < 0          =     error $ msg ++ "number of trials must be non-negative. Got " ++ show n-  | p < 0 || p > 1 = +  | p < 0 || p > 1 =     error $ msg++"probability must be in [0,1] range. Got " ++ show p   | otherwise      = BD n p     where msg = "Statistics.Distribution.Binomial.binomial: "
Statistics/Distribution/CauchyLorentz.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveDataTypeable, DeriveGeneric #-} -- | -- Module    : Statistics.Distribution.CauchyLorentz -- Copyright : (c) 2011 Aleksey Khudyakov@@ -21,10 +21,11 @@   , standardCauchy   ) where -import Data.Typeable (Typeable)+import Data.Binary (Binary)+import Data.Data (Data, Typeable)+import GHC.Generics (Generic) import qualified Statistics.Distribution as D - -- | Cauchy-Lorentz distribution. data CauchyDistribution = CD {     -- | Central value of Cauchy-Lorentz distribution which is its@@ -36,7 +37,9 @@     --   maximum (HWHM).   , cauchyDistribScale  :: {-# UNPACK #-} !Double   }-  deriving (Eq,Show,Read,Typeable)+  deriving (Eq, Show, Read, Typeable, Data, Generic)++instance Binary CauchyDistribution  -- | Cauchy distribution cauchyDistribution :: Double    -- ^ Central point
Statistics/Distribution/ChiSquared.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveDataTypeable, DeriveGeneric #-} -- | -- Module    : Statistics.Distribution.ChiSquared -- Copyright : (c) 2010 Alexey Khudyakov@@ -18,7 +18,9 @@         , chiSquaredNDF         ) where -import Data.Typeable         (Typeable)+import Data.Binary (Binary)+import Data.Data (Data, Typeable)+import GHC.Generics (Generic) import Numeric.SpecFunctions (incompleteGamma,invIncompleteGamma,logGamma)  import qualified Statistics.Distribution         as D@@ -27,8 +29,10 @@  -- | Chi-squared distribution newtype ChiSquared = ChiSquared Int-                     deriving (Show,Typeable)+                     deriving (Eq, Read, Show, Typeable, Data, Generic) +instance Binary ChiSquared+ -- | Get number of degrees of freedom chiSquaredNDF :: ChiSquared -> Int chiSquaredNDF (ChiSquared ndf) = ndf@@ -38,7 +42,7 @@ --   must be positive. chiSquared :: Int -> ChiSquared chiSquared n-  | n <= 0    = error $ +  | n <= 0    = error $      "Statistics.Distribution.ChiSquared.chiSquared: N.D.F. must be positive. Got " ++ show n   | otherwise = ChiSquared n {-# INLINE chiSquared #-}
Statistics/Distribution/Exponential.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveDataTypeable, DeriveGeneric #-} -- | -- Module    : Statistics.Distribution.Exponential -- Copyright : (c) 2009 Bryan O'Sullivan@@ -23,7 +23,9 @@     , edLambda     ) where -import Data.Typeable (Typeable)+import Data.Binary (Binary)+import Data.Data (Data, Typeable)+import GHC.Generics (Generic) import qualified Statistics.Distribution         as D import qualified Statistics.Sample               as S import qualified System.Random.MWC.Distributions as MWC@@ -31,8 +33,10 @@  newtype ExponentialDistribution = ED {       edLambda :: Double-    } deriving (Eq, Read, Show, Typeable)+    } deriving (Eq, Read, Show, Typeable, Data, Generic) +instance Binary ExponentialDistribution+ instance D.Distribution ExponentialDistribution where     cumulative      = cumulative     complCumulative = complCumulative@@ -86,7 +90,7 @@ exponential :: Double            -- ^ &#955; (scale) parameter.             -> ExponentialDistribution exponential l-  | l <= 0 = +  | l <= 0 =     error $ "Statistics.Distribution.Exponential.exponential: scale parameter must be positive. Got " ++ show l   | otherwise = ED l {-# INLINE exponential #-}
Statistics/Distribution/FDistribution.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveDataTypeable, DeriveGeneric #-} -- | -- Module    : Statistics.Distribution.FDistribution -- Copyright : (c) 2011 Aleksey Khudyakov@@ -16,8 +16,10 @@   , fDistributionNDF2   ) where +import Data.Binary (Binary)+import Data.Data (Data, Typeable)+import GHC.Generics (Generic) import qualified Statistics.Distribution as D-import Data.Typeable         (Typeable) import Numeric.SpecFunctions (logBeta, incompleteBeta, invIncompleteBeta)  @@ -27,13 +29,14 @@                        , fDistributionNDF2 :: {-# UNPACK #-} !Double                        , _pdfFactor        :: {-# UNPACK #-} !Double                        }-                   deriving (Eq,Show,Read,Typeable)+                   deriving (Eq, Show, Read, Typeable, Data, Generic) +instance Binary FDistribution  fDistribution :: Int -> Int -> FDistribution fDistribution n m-  | n > 0 && m > 0 = -    let n' = fromIntegral n  +  | n > 0 && m > 0 =+    let n' = fromIntegral n         m' = fromIntegral m         f' = 0.5 * (log m' * m' + log n' * n') - logBeta (0.5*n') (0.5*m')     in F n' m' f'@@ -41,12 +44,12 @@     error "Statistics.Distribution.FDistribution.fDistribution: non-positive number of degrees of freedom"  instance D.Distribution FDistribution where-  cumulative = cumulative +  cumulative = cumulative  instance D.ContDistr FDistribution where   density  = density   quantile = quantile-  + cumulative :: FDistribution -> Double -> Double cumulative (F n m _) x   | x <= 0       = 0@@ -60,7 +63,7 @@  quantile :: FDistribution -> Double -> Double quantile (F n m _) p-  | p >= 0 && p <= 1 = +  | p >= 0 && p <= 1 =     let x = invIncompleteBeta (0.5 * n) (0.5 * m) p     in m * x / (n * (1 - x))   | otherwise =@@ -72,7 +75,7 @@                       | otherwise = Nothing  instance D.MaybeVariance FDistribution where-  maybeStdDev (F n m _) +  maybeStdDev (F n m _)     | m > 4     = Just $ 2 * sqr m * (m + n - 2) / (n * sqr (m - 2) * (m - 4))     | otherwise = Nothing 
Statistics/Distribution/Gamma.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveDataTypeable, DeriveGeneric #-} -- | -- Module    : Statistics.Distribution.Gamma -- Copyright : (c) 2009, 2011 Bryan O'Sullivan@@ -25,7 +25,9 @@     , gdScale     ) where -import Data.Typeable (Typeable)+import Data.Binary (Binary)+import Data.Data (Data, Typeable)+import GHC.Generics (Generic) import Numeric.MathFunctions.Constants (m_pos_inf, m_NaN) import Numeric.SpecFunctions           (incompleteGamma, invIncompleteGamma) import Statistics.Distribution.Poisson.Internal  as Poisson@@ -36,7 +38,9 @@ data GammaDistribution = GD {       gdShape :: {-# UNPACK #-} !Double -- ^ Shape parameter, /k/.     , gdScale :: {-# UNPACK #-} !Double -- ^ Scale parameter, &#977;.-    } deriving (Eq, Read, Show, Typeable)+    } deriving (Eq, Read, Show, Typeable, Data, Generic)++instance Binary GammaDistribution  -- | Create gamma distribution. Both shape and scale parameters must -- be positive.
Statistics/Distribution/Geometric.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveDataTypeable, DeriveGeneric #-} -- | -- Module    : Statistics.Distribution.Geometric -- Copyright : (c) 2009 Bryan O'Sullivan@@ -26,12 +26,16 @@     , gdSuccess     ) where -import Data.Typeable (Typeable)+import Data.Binary (Binary)+import Data.Data (Data, Typeable)+import GHC.Generics (Generic) import qualified Statistics.Distribution as D  newtype GeometricDistribution = GD {       gdSuccess :: Double-    } deriving (Eq, Read, Show, Typeable)+    } deriving (Eq, Read, Show, Typeable, Data, Generic)++instance Binary GeometricDistribution  instance D.Distribution GeometricDistribution where     cumulative = cumulative
Statistics/Distribution/Hypergeometric.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveDataTypeable, DeriveGeneric #-} -- | -- Module    : Statistics.Distribution.Hypergeometric -- Copyright : (c) 2009 Bryan O'Sullivan@@ -27,7 +27,9 @@     , hdK     ) where -import Data.Typeable         (Typeable)+import Data.Binary (Binary)+import Data.Data (Data, Typeable)+import GHC.Generics (Generic) import Numeric.SpecFunctions (choose) import qualified Statistics.Distribution as D @@ -35,7 +37,9 @@       hdM :: {-# UNPACK #-} !Int     , hdL :: {-# UNPACK #-} !Int     , hdK :: {-# UNPACK #-} !Int-    } deriving (Eq, Read, Show, Typeable)+    } deriving (Eq, Read, Show, Typeable, Data, Generic)++instance Binary HypergeometricDistribution  instance D.Distribution HypergeometricDistribution where     cumulative = cumulative
Statistics/Distribution/Normal.hs view
@@ -1,5 +1,4 @@-{-# LANGUAGE BangPatterns #-}-{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE BangPatterns, DeriveDataTypeable, DeriveGeneric #-} -- | -- Module    : Statistics.Distribution.Normal -- Copyright : (c) 2009 Bryan O'Sullivan@@ -21,7 +20,9 @@     , standard     ) where -import Data.Typeable                   (Typeable)+import Data.Binary (Binary)+import Data.Data (Data, Typeable)+import GHC.Generics (Generic) import Numeric.MathFunctions.Constants (m_sqrt_2, m_sqrt_2_pi) import Numeric.SpecFunctions           (erfc, invErfc) import qualified Statistics.Distribution as D@@ -36,7 +37,9 @@     , stdDev     :: {-# UNPACK #-} !Double     , ndPdfDenom :: {-# UNPACK #-} !Double     , ndCdfDenom :: {-# UNPACK #-} !Double-    } deriving (Eq, Read, Show, Typeable)+    } deriving (Eq, Read, Show, Typeable, Data, Generic)++instance Binary NormalDistribution  instance D.Distribution NormalDistribution where     cumulative      = cumulative
Statistics/Distribution/Poisson.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveDataTypeable, DeriveGeneric #-} -- | -- Module    : Statistics.Distribution.Poisson -- Copyright : (c) 2009, 2011 Bryan O'Sullivan@@ -24,7 +24,9 @@     -- $references     ) where -import Data.Typeable (Typeable)+import Data.Binary (Binary)+import Data.Data (Data, Typeable)+import GHC.Generics (Generic) import qualified Statistics.Distribution as D import qualified Statistics.Distribution.Poisson.Internal as I import Numeric.SpecFunctions (incompleteGamma)@@ -33,7 +35,9 @@  newtype PoissonDistribution = PD {       poissonLambda :: Double-    } deriving (Eq, Read, Show, Typeable)+    } deriving (Eq, Read, Show, Typeable, Data, Generic)++instance Binary PoissonDistribution  instance D.Distribution PoissonDistribution where     cumulative (PD lambda) x
Statistics/Distribution/StudentT.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveDataTypeable, DeriveGeneric #-} -- | -- Module    : Statistics.Distribution.StudentT -- Copyright : (c) 2011 Aleksey Khudyakov@@ -16,16 +16,19 @@   , studentTUnstandardized   ) where -+import Data.Binary (Binary)+import Data.Data (Data, Typeable)+import GHC.Generics (Generic) import qualified Statistics.Distribution as D import Statistics.Distribution.Transform (LinearTransform (..))-import Data.Typeable         (Typeable) import Numeric.SpecFunctions (logBeta, incompleteBeta, invIncompleteBeta)  -- | Student-T distribution newtype StudentT = StudentT { studentTndf :: Double }-                   deriving (Eq,Show,Read,Typeable)+                   deriving (Eq, Show, Read, Typeable, Data, Generic) +instance Binary StudentT+ -- | Create Student-T distribution. Number of parameters must be positive. studentT :: Double -> StudentT studentT ndf@@ -33,12 +36,12 @@   | otherwise = modErr "studentT" "non-positive number of degrees of freedom"  instance D.Distribution StudentT where-  cumulative = cumulative +  cumulative = cumulative  instance D.ContDistr StudentT where   density  = density   quantile = quantile-  + cumulative :: StudentT -> Double -> Double cumulative (StudentT ndf) x   | x > 0     = 1 - 0.5 * ibeta@@ -52,11 +55,11 @@  quantile :: StudentT -> Double -> Double quantile (StudentT ndf) p-  | p >= 0 && p <= 1 = +  | p >= 0 && p <= 1 =     let x = invIncompleteBeta (0.5 * ndf) 0.5 (2 * min p (1 - p))     in case sqrt $ ndf * (1 - x) / x of          r | p < 0.5   -> -r-           | otherwise -> r +           | otherwise -> r   | otherwise = modErr "quantile" $ "p must be in [0,1] range. Got: "++show p  
Statistics/Distribution/Transform.hs view
@@ -1,4 +1,5 @@-{-# LANGUAGE FlexibleInstances, UndecidableInstances, FlexibleContexts, DeriveDataTypeable #-}+{-# LANGUAGE DeriveDataTypeable, DeriveGeneric, FlexibleContexts,+    FlexibleInstances, UndecidableInstances #-} -- | -- Module    : Statistics.Distribution.Transform -- Copyright : (c) 2013 John McDonnell;@@ -15,7 +16,9 @@   , scaleAround   ) where -import Data.Typeable         (Typeable)+import Data.Binary (Binary)+import Data.Data (Data, Typeable)+import GHC.Generics (Generic) import Data.Functor          ((<$>)) import qualified Statistics.Distribution as D @@ -30,8 +33,10 @@     -- ^ Scale parameter.   , linTransDistr    :: d     -- ^ Distribution being transformed.-  } deriving (Eq,Show,Read,Typeable)+  } deriving (Eq, Show, Read, Typeable, Data, Generic) +instance (Binary d) => Binary (LinearTransform d)+ -- | Apply linear transformation to distribution. scaleAround :: Double           -- ^ Fixed point             -> Double           -- ^ Scale parameter@@ -51,7 +56,7 @@  instance D.ContDistr d => D.ContDistr (LinearTransform d) where   density  (LinearTransform loc sc dist) x = D.density dist ((x-loc) / sc) / sc-  quantile (LinearTransform loc sc dist) p = loc + sc * D.quantile dist p +  quantile (LinearTransform loc sc dist) p = loc + sc * D.quantile dist p  instance D.MaybeMean d => D.MaybeMean (LinearTransform d) where   maybeMean (LinearTransform loc _ dist) = (+loc) <$> D.maybeMean dist
Statistics/Distribution/Uniform.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveDataTypeable, DeriveGeneric #-} -- | -- Module    : Statistics.Distribution.Uniform -- Copyright : (c) 2011 Aleksey Khudyakov@@ -19,7 +19,9 @@     , uniformB     ) where -import Data.Typeable (Typeable)+import Data.Binary (Binary)+import Data.Data (Data, Typeable)+import GHC.Generics (Generic) import qualified Statistics.Distribution as D import qualified System.Random.MWC       as MWC @@ -28,8 +30,10 @@ data UniformDistribution = UniformDistribution {       uniformA :: {-# UNPACK #-} !Double -- ^ Low boundary of distribution     , uniformB :: {-# UNPACK #-} !Double -- ^ Upper boundary of distribution-    } deriving (Eq, Read, Show, Typeable)+    } deriving (Eq, Read, Show, Typeable, Data, Generic) +instance Binary UniformDistribution+ -- | Create uniform distribution. uniformDistr :: Double -> Double -> UniformDistribution uniformDistr a b@@ -37,7 +41,7 @@   | a < b     = UniformDistribution a b   | otherwise = error "Statistics.Distribution.Uniform.uniform: wrong parameters" -- NOTE: failure is in default branch to guard againist NaNs.-                + instance D.Distribution UniformDistribution where   cumulative (UniformDistribution a b) x     | x < a     = 0
Statistics/Math/RootFinding.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE BangPatterns, DeriveDataTypeable #-}+{-# LANGUAGE BangPatterns, DeriveDataTypeable, DeriveGeneric #-}  -- | -- Module    : Statistics.Math.RootFinding@@ -22,9 +22,11 @@  import Statistics.Function.Comparison +import Data.Binary (Binary) import Control.Applicative import Control.Monad       (MonadPlus(..), ap)-import Data.Typeable       (Typeable)+import Data.Data (Data, Typeable)+import GHC.Generics (Generic)   -- | The result of searching for a root of a mathematical function.@@ -36,7 +38,9 @@             -- error tolerance after the given number of iterations.             | Root a             -- ^ A root was successfully found.-              deriving (Eq, Read, Show, Typeable)+              deriving (Eq, Read, Show, Typeable, Data, Generic)++instance (Binary a) => Binary (Root a)  instance Functor Root where     fmap _ NotBracketed = NotBracketed
Statistics/Resampling.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE BangPatterns #-}+{-# LANGUAGE BangPatterns, DeriveDataTypeable, DeriveGeneric #-}  -- | -- Module    : Statistics.Resampling@@ -21,10 +21,14 @@ import Control.Concurrent (forkIO, newChan, readChan, writeChan) import Control.Monad (forM_, liftM, replicateM_) import Control.Monad.Primitive (PrimMonad, PrimState)+import Data.Binary (Binary(..))+import Data.Data (Data, Typeable) import Data.Vector.Algorithms.Intro (sort)+import Data.Vector.Binary () import Data.Vector.Generic (unsafeFreeze) import Data.Word (Word32) import GHC.Conc (numCapabilities)+import GHC.Generics (Generic) import Statistics.Function (indices) import Statistics.Types (Estimator, Sample) import System.Random.MWC (Gen, initialize, uniform, uniformVector)@@ -36,7 +40,9 @@ -- humble author's brain to go wrong. newtype Resample = Resample {       fromResample :: U.Vector Double-    } deriving (Eq, Show)+    } deriving (Eq, Read, Show, Typeable, Data, Generic)++instance Binary Resample  -- | /O(e*r*s)/ Resample a data set repeatedly, with replacement, -- computing each estimate over the resampled data.
Statistics/Resampling/Bootstrap.hs view
@@ -1,4 +1,5 @@-{-# LANGUAGE DeriveDataTypeable, OverloadedStrings, RecordWildCards #-}+{-# LANGUAGE DeriveDataTypeable, DeriveGeneric, OverloadedStrings,+    RecordWildCards #-}  -- | -- Module    : Statistics.Resampling.Bootstrap@@ -23,9 +24,11 @@ import Control.DeepSeq (NFData) import Control.Exception (assert) import Control.Monad.Par               (parMap,runPar)+import Data.Binary (Binary) import Data.Data (Data) import Data.Typeable (Typeable) import Data.Vector.Unboxed ((!))+import GHC.Generics import Statistics.Distribution (cumulative, quantile) import Statistics.Distribution.Normal import Statistics.Resampling (Resample(..), jackknife)@@ -45,8 +48,9 @@     -- the confidence interval).     , estConfidenceLevel :: {-# UNPACK #-} !Double     -- ^ Confidence level of the confidence intervals.-    } deriving (Eq, Show, Typeable, Data)+    } deriving (Eq, Read, Show, Typeable, Data, Generic) +instance Binary Estimate instance NFData Estimate  -- | Multiply the point, lower bound, and upper bound in an 'Estimate'@@ -86,7 +90,7 @@   where     e est (Resample resample)       | U.length sample == 1 = estimate pt pt pt confidenceLevel-      | otherwise = +      | otherwise =           estimate pt (resample ! lo) (resample ! hi) confidenceLevel       where         pt    = est sample
Statistics/Sample/KernelDensity/Simple.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE DeriveDataTypeable, DeriveGeneric, FlexibleContexts #-} -- | -- Module    : Statistics.Sample.KernelDensity.Simple -- Copyright : (c) 2009 Bryan O'Sullivan@@ -46,6 +46,10 @@     -- $references     ) where +import Data.Binary (Binary(..))+import Data.Data (Data, Typeable)+import Data.Vector.Binary ()+import GHC.Generics (Generic) import Numeric.MathFunctions.Constants (m_1_sqrt_2, m_2_sqrt_pi) import Statistics.Function (minMax) import Statistics.Sample   (stdDev)@@ -55,7 +59,9 @@ -- | Points from the range of a 'Sample'. newtype Points = Points {       fromPoints :: U.Vector Double-    } deriving (Eq, Show)+    } deriving (Eq, Read, Show, Typeable, Data, Generic)++instance Binary Points  -- | Bandwidth estimator for an Epanechnikov kernel. epanechnikovBW :: Double -> Bandwidth
Statistics/Sample/Powers.hs view
@@ -1,5 +1,5 @@-{-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE BangPatterns     #-}+{-# LANGUAGE BangPatterns, DeriveDataTypeable, DeriveGeneric,+    FlexibleContexts #-} -- | -- Module    : Statistics.Sample.Powers -- Copyright : (c) 2009, 2010 Bryan O'Sullivan@@ -47,8 +47,12 @@     -- $references     ) where +import Data.Binary (Binary(..))+import Data.Data (Data, Typeable)+import Data.Vector.Binary () import Data.Vector.Generic   (unsafeFreeze) import Data.Vector.Unboxed   ((!))+import GHC.Generics (Generic) import Prelude hiding (sum) import Statistics.Function   (indexed) import Statistics.Internal   (inlinePerformIO)@@ -59,7 +63,9 @@ import qualified Data.Vector.Unboxed.Mutable as MU  newtype Powers = Powers (U.Vector Double)-    deriving (Eq, Show)+    deriving (Eq, Read, Show, Typeable, Data, Generic)++instance Binary Powers  -- | O(/n/) Collect the /n/ simple powers of a sample. --
statistics.cabal view
@@ -1,5 +1,5 @@ name:           statistics-version:        0.10.3.1+version:        0.10.4.0 synopsis:       A library of statistical types, data, and functions description:   This library provides a number of common functions and types useful@@ -22,6 +22,12 @@   * Common statistical tests for significant differences between     samples.   .+  Changes in 0.10.4.0+  .+  * Support for versions of GHC older than 7.2 is discontinued.+  .+  * All datatypes now support 'Data.Binary' and 'GHC.Generics'.+  .   Changes in 0.10.3.0   .   * Bug fixes@@ -58,83 +64,6 @@   * Modules 'Statistics.Math' and 'Statistics.Constants' are moved to     the @math-functions@ package. They are still available but marked     as deprecated.-  .-  Changed in 0.10.0.1-  .-  * @dct@ and @idct@ now have type @Vector Double -> Vector Double@-  .-  Changes in 0.10.0.0:-  .-  * The type classes @Mean@ and @Variance@ are split in two. This is-    required for distributions which do not have finite variance or-    mean.-  .-  * The @S.Sample.KernelDensity@ module has been renamed, and-    completely rewritten to be much more robust.  The older module-    oversmoothed multi-modal data.  (The older module is still-    available under the name @S.Sample.KernelDensity.Simple@).-  .-  * Histogram computation is added, in @S.Sample.Histogram@.-  .-  * Forward and inverse discrete Fourier and cosine transforms are-    added, in @S.Transform@.-  .-  * Root finding is added, in @S.Math.RootFinding@.-  .-  * The @complCumulative@ function is added to the @Distribution@-    class in order to accurately assess probalities P(X>x) which are-    used in one-tailed tests.-  .-  * A @stdDev@ function is added to the @Variance@ class for-    distributions.-  .-  * The constructor @S.Distribution.normalDistr@ now takes standard-    deviation instead of variance as its parameter.-  .-  * A bug in @S.Quantile.weightedAvg@ is fixed. It produced a wrong-    answer if a sample contained only one element.-  .-  * Bugs in quantile estimations for chi-square and gamma distribution-    are fixed.-  .-  * Integer overlow in @mannWhitneyUCriticalValue@ is fixed. It-    produced incorrect critical values for moderately large-    samples. Something around 20 for 32-bit machines and 40 for 64-bit-    ones.-  .-  * A bug in @mannWhitneyUSignificant@ is fixed. If either sample was-    larger than 20, it produced a completely incorrect answer.-  .-  * One- and two-tailed tests in @S.Tests.NonParametric@ are selected-    with sum types instead of @Bool@.-  .-  * Test results returned as enumeration instead of @Bool@.-  .-  * Performance improvements for Mann-Whitney U and Wilcoxon tests.-  .-  * Module @S.Tests.NonParamtric@ is split into @S.Tests.MannWhitneyU@-    and @S.Tests.WilcoxonT@-  .-  * @sortBy@ is added to @S.Function@.-  .-  * Mean and variance for gamma distribution are fixed.-  .-  * Much faster cumulative probablity functions for Poisson and-    hypergeometric distributions.-  .-  * Better density functions for gamma and Poisson distributions.-  .-  * Student-T, Fisher-Snedecor F-distributions and Cauchy-Lorentz-    distrbution are added.-  .-  * The function @S.Function.create@ is removed. Use @generateM@ from-    the @vector@ package instead.-  .-  * Function to perform approximate comparion of doubles is added to-    @S.Function.Comparison@-  .-  * Regularized incomplete beta function and its inverse are added to-    @S.Function@.  license:        BSD3 license-file:   LICENSE@@ -204,6 +133,7 @@     Statistics.Test.Internal   build-depends:     base < 5,+    binary >= 0.6.3.0,     deepseq >= 1.1.0.2,     erf,     monad-par         >= 0.3.4,@@ -211,7 +141,8 @@     math-functions    >= 0.1.2,     primitive         >= 0.3,     vector            >= 0.7.1,-    vector-algorithms >= 0.4+    vector-algorithms >= 0.4,+    vector-binary-instances >= 0.2.1   if impl(ghc >= 6.10)     build-depends:       base >= 4