Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/FSharp.Stats/FSharp.Stats.fsproj
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@
<Compile Include="Testing\FTest.fs" />
<Compile Include="Testing\FriedmanTest.fs" />
<Compile Include="Testing\HTest.fs" />
<Compile Include="Testing\KolmogorovSmirnov.fs" />
<Compile Include="Testing\ChiSquareTest.fs" />
<Compile Include="Testing\Bartlett.fs" />
<Compile Include="Testing\PostHoc.fs" />
Expand Down
21 changes: 21 additions & 0 deletions src/FSharp.Stats/Testing/KolmogorovSmirnov.fs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
namespace FSharp.Stats.Testing

open FSharp.Stats.Distributions

module KolmogorovSmirnov =

/// Tests the input values with the Kolmogorov-Smirnov Goodness of Fit-test against a normal distribution and returns a p-Value.
/// The p-value indicates how likely it is to observe such a distribution under the assumption that the null hypothesis is true (= sample distribution normally distributed).
/// In short: The lower the p-value, the more likely it is that the sample does NOT originate from a normal distribution.
let goF values =
let lVals = Array.length values |> float
let rankedVals = Array.sort values
let rankedNormVals = rankedVals |> Array.mapi (fun i _ -> float i / lVals)
let meanVals = FSharp.Stats.Seq.mean values
let stdVals = FSharp.Stats.Seq.stDev values
let nD = FSharp.Stats.Distributions.Continuous.normal meanVals stdVals
let cum = rankedVals |> Array.map (fun v -> nD.CDF v)
let deltaCumVals = (cum, rankedNormVals) ||> Array.map2 (fun c v -> System.Math.Abs (c - v))
let kS = Array.max deltaCumVals
kS
Continuous.kolmogorov