PageRenderTime 63ms CodeModel.GetById 34ms RepoModel.GetById 0ms app.codeStats 0ms

/tests/Tests/Parametric.hs

http://github.com/bos/statistics
Haskell | 102 lines | 79 code | 6 blank | 17 comment | 0 complexity | db274fa3f7876eccc0f887fefc575bb0 MD5 | raw file
Possible License(s): BSD-2-Clause
  1. module Tests.Parametric (tests) where
  2. import Data.Maybe (fromJust)
  3. import Statistics.Test.StudentT
  4. import Statistics.Types
  5. import qualified Data.Vector.Unboxed as U
  6. import Test.Tasty (testGroup)
  7. import Tests.Helpers (testEquality)
  8. import qualified Test.Tasty as Tst
  9. tests :: Tst.TestTree
  10. tests = testGroup "Parametric tests" studentTTests
  11. -- 2 samples x 20 obs data
  12. --
  13. -- Both samples are samples from normal distributions with the same variance (= 1.0),
  14. -- but their means are different (0.0 and 0.5, respectively).
  15. --
  16. -- You can reproduce the data with R (3.1.0) as follows:
  17. -- set.seed(0)
  18. -- sample1 = rnorm(20)
  19. -- sample2 = rnorm(20, 0.5)
  20. -- student = t.test(sample1, sample2, var.equal=T)
  21. -- welch = t.test(sample1, sample2)
  22. -- paired = t.test(sample1, sample2, paired=T)
  23. sample1, sample2 :: U.Vector Double
  24. sample1 = U.fromList [
  25. 1.262954284880793e+00,
  26. -3.262333607056494e-01,
  27. 1.329799262922501e+00,
  28. 1.272429321429405e+00,
  29. 4.146414344564082e-01,
  30. -1.539950041903710e+00,
  31. -9.285670347135381e-01,
  32. -2.947204467905602e-01,
  33. -5.767172747536955e-03,
  34. 2.404653388857951e+00,
  35. 7.635934611404596e-01,
  36. -7.990092489893682e-01,
  37. -1.147657009236351e+00,
  38. -2.894615736882233e-01,
  39. -2.992151178973161e-01,
  40. -4.115108327950670e-01,
  41. 2.522234481561323e-01,
  42. -8.919211272845686e-01,
  43. 4.356832993557186e-01,
  44. -1.237538421929958e+00]
  45. sample2 = U.fromList [
  46. 2.757321147216907e-01,
  47. 8.773956459817011e-01,
  48. 6.333363608148415e-01,
  49. 1.304189509744908e+00,
  50. 4.428932256161913e-01,
  51. 1.003607972233726e+00,
  52. 1.585769362145687e+00,
  53. -1.909538396968303e-01,
  54. -7.845993538721883e-01,
  55. 5.467261721883520e-01,
  56. 2.642934435604988e-01,
  57. -4.288825501025439e-02,
  58. 6.668968254321778e-02,
  59. -1.494716467962331e-01,
  60. 1.226750747385451e+00,
  61. 1.651911754087200e+00,
  62. 1.492160365445798e+00,
  63. 7.048689050811874e-02,
  64. 1.738304100853380e+00,
  65. 2.206537181457307e-01]
  66. testTTest :: String
  67. -> PValue Double
  68. -> Test d
  69. -> [Tst.TestTree]
  70. testTTest name pVal test =
  71. [ testEquality name (isSignificant pVal test) NotSignificant
  72. , testEquality name (isSignificant (mkPValue $ pValue pVal + 1e-5) test)
  73. Significant
  74. ]
  75. studentTTests :: [Tst.TestTree]
  76. studentTTests = concat
  77. [ -- R: t.test(sample1, sample2, alt="two.sided", var.equal=T)
  78. testTTest "two-sample t-test SamplesDiffer Student"
  79. (mkPValue 0.03410) (fromJust $ studentTTest SamplesDiffer sample1 sample2)
  80. -- R: t.test(sample1, sample2, alt="two.sided", var.equal=F)
  81. , testTTest "two-sample t-test SamplesDiffer Welch"
  82. (mkPValue 0.03483) (fromJust $ welchTTest SamplesDiffer sample1 sample2)
  83. -- R: t.test(sample1, sample2, alt="two.sided", paired=T)
  84. , testTTest "two-sample t-test SamplesDiffer Paired"
  85. (mkPValue 0.03411) (fromJust $ pairedTTest SamplesDiffer sample12)
  86. -- R: t.test(sample1, sample2, alt="less", var.equal=T)
  87. , testTTest "two-sample t-test BGreater Student"
  88. (mkPValue 0.01705) (fromJust $ studentTTest BGreater sample1 sample2)
  89. -- R: t.test(sample1, sample2, alt="less", var.equal=F)
  90. , testTTest "two-sample t-test BGreater Welch"
  91. (mkPValue 0.01741) (fromJust $ welchTTest BGreater sample1 sample2)
  92. -- R: t.test(sample1, sample2, alt="less", paired=F)
  93. , testTTest "two-sample t-test BGreater Paired"
  94. (mkPValue 0.01705) (fromJust $ pairedTTest BGreater sample12)
  95. ]
  96. where sample12 = U.zip sample1 sample2