MathGroup Archive 2010

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Kolmogorov-Smirnov 2-sample test

On Jul 18, 11:10 pm, Aaron Bramson <aaronbram... at> wrote:
> Hello Everybody,
> I would like to perform a 2-sample k-s test.  I've seen some posts on the
> archive about the one-sample goodness-of-fit version of the
> Kolgomorov-Smirnov test, but I'm interested in the 2-sample version.
> Here's a description of the method:


> I think all the necessary components are available; e.g.
> Accumulate[BinCounts[_list_]] to get the ecdf of both datasets, abs, max of
> a list, etc.  But the data management is a bit above my current skill
> level.  Also, since all other software packages seem to include this test
> capability, I would be really surprised if there
> wasn't a package somewhere that included it by now, but I've searched a lot
> and can't find it.  Can anybody help me locate this this?
> Alternatively, would anybody like to work with me to build this in case it
> can't be found?
> Thanks in Advance,
> Aaron

This is based on code by Thomas Waterhouse, taken from

The arguments y1 and y2 are lists of data. It returns {x,p},
where x is the usual K-S test statistic n1*n2*Max|cdf1-cdf2|,
and p is the corresponding p-value, conditional on
the distribution of ties in the pooled data.

ks2[y1_,y2_] := Block[{n1 = Length@y1, n2 = Length@y2,
pool = Sort@Join[y1,y2], x,n,u}, {x =
n = n1+n2; u = Table[0,{n2+1}]; Do[ Which[
i+j == 0, u[[j+1]] = 1,
i+j < n && pool[[i+j]] < pool[[i+j+1]] && Abs[n2*i-n1*j] >= x,
          u[[j+1]] = 0,
i == 0, u[[j+1]] = u[[j]],
j > 0, u[[j+1]] += u[[j]]], {i,0,n1},{j,0,n2}];
N[1 - Last@u/Multinomial[n1,n2]]} ]

  • Prev by Date: Scoping constructs Block, Module, ModuleBlock violate principle of
  • Next by Date: Re: Transform differential equation by tranformation rule
  • Previous by thread: Re: Kolmogorov-Smirnov 2-sample test
  • Next by thread: Re: Kolmogorov-Smirnov 2-sample test