sig
  type test_alternative = Less | Greater | TwoSided
  type test_result = { test_statistic : float; test_pvalue : float; }
  val run_test :
    ?significance_level:float ->
    (unit -> Tests.test_result) -> [ `NotSignificant | `Significant ]
  module T :
    sig
      val one_sample :
        float array ->
        ?mean:float ->
        ?alternative:Tests.test_alternative -> unit -> Tests.test_result
      val two_sample_independent :
        float array ->
        float array ->
        ?equal_variance:bool ->
        ?mean:float ->
        ?alternative:Tests.test_alternative -> unit -> Tests.test_result
      val two_sample_paired :
        float array ->
        float array ->
        ?mean:float ->
        ?alternative:Tests.test_alternative -> unit -> Tests.test_result
    end
  module ChiSquared :
    sig
      val goodness_of_fit :
        float array ->
        ?expected:float array -> ?df:int -> unit -> Tests.test_result
      val independence :
        float array array -> ?correction:bool -> unit -> Tests.test_result
    end
  module KolmogorovSmirnov :
    sig
      val goodness_of_fit :
        float array ->
        cumulative_probability:(float -> float) ->
        ?alternative:Tests.test_alternative -> unit -> Tests.test_result
      val two_sample :
        float array ->
        float array ->
        ?alternative:Tests.test_alternative -> unit -> Tests.test_result
    end
  module MannWhitneyU :
    sig
      val two_sample_independent :
        'a array ->
        'a array ->
        ?alternative:Tests.test_alternative ->
        ?correction:bool -> unit -> Tests.test_result
    end
  module WilcoxonT :
    sig
      val one_sample :
        float array ->
        ?shift:float ->
        ?alternative:Tests.test_alternative ->
        ?correction:bool -> unit -> Tests.test_result
      val two_sample_paired :
        float array ->
        float array ->
        ?alternative:Tests.test_alternative ->
        ?correction:bool -> unit -> Tests.test_result
    end
  module Sign :
    sig
      val one_sample :
        float array ->
        ?shift:float ->
        ?alternative:Tests.test_alternative -> unit -> Tests.test_result
      val two_sample_paired :
        float array ->
        float array ->
        ?alternative:Tests.test_alternative -> unit -> Tests.test_result
    end
  module Multiple :
    sig
      type adjustment_method = HolmBonferroni | BenjaminiHochberg
      val adjust :
        float array -> Tests.Multiple.adjustment_method -> float array
    end
end