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 +7/−3
- Statistics/Distribution/Binomial.hs +10/−6
- Statistics/Distribution/CauchyLorentz.hs +7/−4
- Statistics/Distribution/ChiSquared.hs +8/−4
- Statistics/Distribution/Exponential.hs +8/−4
- Statistics/Distribution/FDistribution.hs +12/−9
- Statistics/Distribution/Gamma.hs +7/−3
- Statistics/Distribution/Geometric.hs +7/−3
- Statistics/Distribution/Hypergeometric.hs +7/−3
- Statistics/Distribution/Normal.hs +7/−4
- Statistics/Distribution/Poisson.hs +7/−3
- Statistics/Distribution/StudentT.hs +11/−8
- Statistics/Distribution/Transform.hs +9/−4
- Statistics/Distribution/Uniform.hs +8/−4
- Statistics/Math/RootFinding.hs +7/−3
- Statistics/Resampling.hs +8/−2
- Statistics/Resampling/Bootstrap.hs +7/−3
- Statistics/Sample/KernelDensity/Simple.hs +8/−2
- Statistics/Sample/Powers.hs +9/−3
- statistics.cabal +10/−79
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 -- ^ λ (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, ϑ.- } 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