# Re: [R] Previously attainable fisher's exact test

From: Ted Harding <ted.harding_at_wlandres.net>
Date: Thu, 14 Apr 2011 16:37:48 +0100 (BST)

Thanks for the clarification, Jim. The terminology "previous" was not self-explanatory!

The following implements (in a somewhat crude way, but explicit) a solution to your question:

M <- matrix(c(1, 4, 23, 30), byrow=TRUE, ncol=2)   M

```  #      [,1] [,2]
# [1,]    1    4
# [2,]   23   30
```

fisher.test(M)\$p.value
# [1] 0.3917553
mina <- (-1) ; maxa <- 4
As <- (mina:maxa)
Ps <- numeric(length(As))
for(i in (1:length(As))){
a <- As[i]
dM <- matrix(c(a,-a,-a,a),nrow=2)
Ps[i] <- fisher.test(M+dM)\$p.value
}
Ps
# [1] 0.070002593 0.391755250 1.000000000 0.639558667   # [5] 0.148849134 0.009276064

So, amongst the P-values, the one below the attained one (0.3917553) which is greatest is Ps[5] = 0.148849134. This could be identified by the expression

max(Ps[Ps < fisher.test(M)\$p.value])
# [1] 0.1488491

If fisher.test(M)\$p.value were already the smallest possible value, then this expression would return -Inf.

Ted.

On 14-Apr-11 14:55:36, Jim Silverton wrote:
> What Ted and Peter did were Fisher's exact test, To get the previous
> attainable p-value, what you do is the the fisher exact test p-values
> of
> ALL the possible tables with margins fixed and choose the p-value that
> is
> just below the one for fisher's exact test of the original table.
>
> n Thu, Apr 14, 2011 at 3:01 AM, peter dalgaard <pdalgd_at_gmail.com>
> wrote:
>

```>>
>> On Apr 14, 2011, at 01:29 , (Ted Harding) wrote:
>>
>> > On 13-Apr-11 17:40:53, Jim Silverton wrote:
>> >> I have a matrix say,
>> >>
>> >> 1  4
>> >> 23  30
>> >>
>> >> and I want to find the previously attainable fisher's exact test
>> >> p-value. Is there a way to do this in R?
>> >> --
>> >> Thanks,
>> >> Jim.
>> >
>> > I do not understand what you mean by "previously attainable".
>> >
>> > As far as that particular matrix is concerned, the fisher.test()
>> > function will yield its exact Fisher P-value:
>> >
>> >  M <- matrix(c(1, 4, 23, 30), byrow=TRUE, nrow=2)
>> >  M
>> >  #      [,1] [,2]
>> >  # [1,]    1    4
>> >  # [2,]   23   30
>> >  fisher.test(M)
>> >  #         Fisher's Exact Test for Count Data
>> >  # data:  M
>> >  # p-value = 0.3918
>> >  # alternative hypothesis: true odds ratio is not equal to 1
>> >  # 95 percent confidence interval:
>> >  #  0.006355278 3.653391412
>> >  # sample estimates:
>> >  # odds ratio
>> >  #  0.3316483
>> >
>> > So the P-value is 0.3918 (as attained now, and as attainable
>> > at any time previously if you had done the above ... !).
>> >
>>
>> What Ted said, plus
>>
>> f <- fisher.test(M)
>> f\$p.value
>> # [1] 0.3917553
>>
>>
>> --
>> Peter Dalgaard
>> Center for Statistics, Copenhagen Business School
>> Solbjerg Plads 3, 2000 Frederiksberg, Denmark
>> Phone: (+45)38153501
>> Email: pd.mes_at_cbs.dk  Priv: PDalgd_at_gmail.com
>>
>>
```

>
>
> --
> Thanks,
> Jim.

E-Mail: (Ted Harding) <ted.harding_at_wlandres.net> Fax-to-email: +44 (0)870 094 0861
```Date: 14-Apr-11                                       Time: 16:37:44
------------------------------ XFMail ------------------------------

______________________________________________
```
R-help_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. Received on Thu 14 Apr 2011 - 15:54:20 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Thu 14 Apr 2011 - 16:00:29 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.