# [R] binom.test inside ctest

Kurt Hornik hornik at ci.tuwien.ac.at
Mon Sep 18 00:51:12 CEST 2000

```>>>>> gb  writes:

> Bendix,

> that's what I meant. There are in fact _two_ border points, when you
> look at the two-sided test, 35 and 65. I thougt of taking half of each
> point, but expressed it in a sloppy way.

> The perhaps more interesting thing to discuss is whether this is a
> reasonable thing to do or not. Would the one-sided analogue to add
> half of the probability of the only border point to the p-value be
> equally reasonable? What do the experts say? References?

To start with, the result of binom.test(65, 100, p=0.5) which is
currently reported is not what is intended.  As Peter Dalgaard pointed
out, we need to add some fuzz to protect against differences of order
10^(-18) ...

There was some discussion on what the ``correct'' 2-sided p-value in the
discrete case is.  Some references simply use twice the smaller
one-sided probability.  I think the best approach is to use the prob
of ``observing a value at least as extreme as the one observed'', or
more precisely of ``observing a value no more likely than the one
observed''.  I.e., if X is the test statistic and d its probability
density function and x the value observed, then

p-value = sum_{y: d(y) <= d(x)} d(y)

(see the comment

## Do
##   d <- dbinom(0 : n, n, p)
##   sum(d[d <= dbinom(x, n, p)])
## a bit more efficiently ...

in the code for binom.test().)

I don't have a reference available ... so if anyone else has ...

Simon Fear <fears at roycastle.liv.ac.uk> pointed me to an alternative
definition given in a paper by Vollset [sorry but I think I deleted the
exact reference] which

defines an exact two-sided P value as

P = 2[f P(X=x) + min{P(X<x),P(X>x)}]

where P() is evaluated under the null. This with f=.5 gives
double the mid-P value, if f is one you get the definition in
Cox and Snell. Either way, it is not the analogue of what we
(and many others) have preferred for the Fisher's test.

I have been wanting for some time to take a closer look into this, and
maybe implement the above for the discrete tests in ctest.  No time thus
far ... if someone else wants to give this a shot, pls feel free.

-k

> Göran

> On Tue, 12 Sep 2000, BXC (Bendix Carstensen) wrote:

>>
>> > -----Original Message-----
>> > From: gb [mailto:gb at stat.umu.se]
>> > Sent: 12. september 2000 08:40
>> > To: Mai Zhou
>> > Cc: r-help at stat.math.ethz.ch
>> > Subject: Re: [R] binom.test inside ctest
>> >
>> >
>> > Mai,
>> >
>> > it seems as if binom.test only adds half the probability of
>> > of the border point 65 to the p-value. If you try
>> >
>> > > (1-pbinom(64, 100, p = 0.5)) + pbinom(34, 100, p=0.5)
>> > [1] 0.002653786
>> >
>> > you get the same result as binom.test.
>>
>> Göran,
>>
>> Rather, it adds the border point only once:
>> I think the general idea is:
>>
>> > db <- dbinom(0:100,100,p=0.5)
>> > obs.p <- dbinom(65,100,p=0.5)
>> > sum(db[db<obs.p])+obs.p
>> [1] 0.002653786
>>
>> Bendix
>> >
>> >
>> > Göran
>> >
>> > On Tue, 12 Sep 2000, Mai Zhou wrote:
>> >
>> > > I got
>> > >
>> > > binom.test(65, 100, p=0.5)
>> > >
>> > >
>> > > p-value = 0.002654
>> > >
>> > > I thought in this case (when p=0.5 so a symmetric distribution)
>> > > we should get
>> > >
>> > > p-value = 2*( 1-pbinom(64, 100, p=0.5) ) = 0.003517642
>> > >
>> > > Can somebody explain why the difference?
>> > >
>> > > Thanks.
>> > >
>> > > Mai Zhou
>> > >
>> > -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.
>> > -.-.-.-.-.-.-.-.-
>> > > r-help mailing list -- Read
>> > http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
>> > > Send "info", "help", or "[un]subscribe"
>> > > (in the "body", not the subject !)  To:
>> > r-help-request at stat.math.ethz.ch
>> > >
>> > _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._.
>> > _._._._._._._._._
>> > >
>> >
>> > --
>> >  Göran Broström                      tel: +46 90 786 5223
>> >  Department of Statistics            fax: +46 90 786 6614
>> >  Umeå University
>> >  SE-90187 Umeå, Sweden             e-mail: gb at stat.umu.se
>> >
>>
>> ----------------------
>> Bendix Carstensen
>> Senior Statistician
>> Steno Diabetes Centre
>> Niels Steensens Vej 2
>> DK-2820 Gentofte
>> Denmark
>> tel: +45 44 43 87 38
>> mob: +45 28 25 87 38
>> fax: +45 44 43 73 13
>> bxc at novo.dk
>> www.biostat.ku.dk/~bxc
>> ----------------------
>>
>>

> --
>  Göran Broström, professor           tel: +46 90 786 5223
>  Department of Statistics            fax: +46 90 786 6614
>  Umeå University
>  SE-90187 Umeå, Sweden             e-mail: gb at stat.umu.se

> -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
> r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
> Send "info", "help", or "[un]subscribe"
> (in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
> _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._

```

More information about the R-help mailing list