An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20110413/50c9c115/attachment.pl>
Previously attainable fisher's exact test
6 messages · (Ted Harding), Jim Silverton, Peter Dalgaard
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 ... !). Ted. -------------------------------------------------------------------- E-Mail: (Ted Harding) <ted.harding at wlandres.net> Fax-to-email: +44 (0)870 094 0861 Date: 14-Apr-11 Time: 00:28:59 ------------------------------ XFMail ------------------------------
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
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20110414/eea40150/attachment.pl>
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 ------------------------------
On Apr 14, 2011, at 16:55 , 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.
Well, you might have said so... For one-sided tests, just add/subtract matrix(c(1,-1,1,1),2) and recompute. Otherwise, I guess that you get to play with dhyper and phyper because you need to know where the opposite tail starts. Check the internals of fisher.test.
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.
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