dataframe-0.3.0.4: tests/Operations/Statistics.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE NumericUnderscores #-}
module Operations.Statistics where
import qualified Data.Vector.Unboxed as VU
import qualified DataFrame as D
import qualified DataFrame.Internal.Column as D
import qualified DataFrame.Internal.DataFrame as D
import qualified DataFrame.Operations.Statistics as D
import Assertions
import Test.HUnit
medianOfOddLengthDataSet :: Test
medianOfOddLengthDataSet =
TestCase
( assertEqual
"Median of an odd length data set"
(D.median' (VU.fromList [179.94, 231.94, 839.06, 534.23, 248.94]))
248.94
)
medianOfEvenLengthDataSet :: Test
medianOfEvenLengthDataSet =
TestCase
( assertEqual
"Median of an even length data set"
(D.median' (VU.fromList [179.94, 231.94, 839.06, 534.23, 248.94, 276.37]))
262.655
)
medianOfEmptyDataSet :: Test
medianOfEmptyDataSet =
TestCase
( assertExpectException
"[Error Case]"
(D.emptyDataSetError "median")
(print $ D.median' (VU.fromList []))
)
skewnessOfDataSetWithSameElements :: Test
skewnessOfDataSetWithSameElements =
TestCase
( assertBool
"Skewness of a data set with the same elements"
(isNaN (D.skewness' (VU.fromList $ replicate 10 42.0)))
)
skewnessOfSymmetricDataSet :: Test
skewnessOfSymmetricDataSet =
TestCase
( assertEqual
"Skewness of a symmetric data set"
(D.skewness' (VU.fromList [-3.0, -2.0, -1.5, 0, 1.5, 2.0, 3.0]))
0
)
skewnessOfSimpleDataSet :: Test
skewnessOfSimpleDataSet =
TestCase
( assertBool
"Skewness of a simple data set"
(abs (D.skewness' (VU.fromList [25, 28, 26, 30, 40, 50, 40]) - 0.566_731_633_676) < 1e-12)
)
skewnessOfEmptyDataSet :: Test
skewnessOfEmptyDataSet =
TestCase
( assertEqual
"Skewness of an empty data set"
(D.skewness' (VU.fromList []))
0
)
tests :: [Test]
tests =
[ TestLabel "medianOfOddLengthDataSet" medianOfOddLengthDataSet
, TestLabel "medianOfEvenLengthDataSet" medianOfEvenLengthDataSet
, TestLabel "medianOfEmptyDataSet" medianOfEmptyDataSet
, TestLabel "skewnessOfDataSetWithSameElements" skewnessOfDataSetWithSameElements
, TestLabel "skewnessOfSymmetricDataSet" skewnessOfSymmetricDataSet
, TestLabel "skewnessOfSimpleDataSet" skewnessOfSimpleDataSet
, TestLabel "skewnessOfEmptyDataSet" skewnessOfEmptyDataSet
]