# [R] p-values for the dip test

Martin Maechler maechler at stat.math.ethz.ch
Fri Oct 22 09:23:10 CEST 2004

```Hmm, this is rather about reading the (Hartigan)^2 paper ...

>>>>> "Kylie" == Kylie Lange <kylie.lange at flinders.edu.au>
>>>>>     on Fri, 22 Oct 2004 11:17:34 +0930 writes:

Kylie> Hi all,

Kylie> I am using Hartigan & Hartigan's  "dip test" of
Kylie> unimodality via the diptest package in R. The
Kylie> function dip() returns the value of the test
Kylie> statistic but I am having problems calculating the
Kylie> p-value associated with that value. I'm hoping
Kylie> someone here is familiar with this process and can
Kylie> explain it.

Kylie> In the original article there is an example using
Kylie> n=63 and a dip value of 0.059 - which I am able to
Kylie> replicate using dip(). However the article then
Kylie> states:

Kylie> "The dip illustrated in Figure 1 is 0.059 which has a
Kylie> tail probability about 10% from Table 1. (
Kylie> sqrt(63)*D*F(63) is distributed approximately as
Kylie> sqrt(100)*D*F(100) which has 90% point 0.474. Thus
Kylie> D*F(63) has 90% point 0.060. )"

note:  sqrt(100) * D(F_100) =  10 * D(F_100)

i.e. D(F_100) would have 90* point 0.0474

but the second "4" is a simple typo, (not the only one in the
paper, IIRC!);  "s/4/1/" --> you get the correct 0.0471

Kylie> It is the value of 0.474 that I am unable to
Kylie> get. Table 1 is a table of percentage points for
Kylie> various sample sizes. The same table is provided in
Kylie> the diptest package as 'qDiptab' (but at greater
Kylie> accuracy). n=63 is not tabled but n=50 and 100
Kylie> are. In the table for n=100 the value given for 90%
Kylie> is 0.0471 so where does the 0.474 come from?

(see above).

Kylie> Any help appreciated!

you're welcome.
Martin Maechler, ETH Zurich ('diptest' maintainer)

Kylie>  Hartigan JA & Hartigan PM. "The Dip Test of
Kylie> Unimodality", The Annals of Statistics, v13(1):70-84, 1985.

```