[R] Can I use "mcnemar.test" for 3*3 tables (or is there a bug in the command?)
David Freedman
3.14david at gmail.com
Sun Jul 19 14:47:57 CEST 2009
There is a function mh_test in the coin package.
library(coin)
mh_test(tt)
The documentation states, "The null hypothesis of independence of row and
column totals is tested. The corresponding test for binary factors x and y
is known as McNemar test. For larger tables, Stuart’s W0 statistic (Stuart,
1955, Agresti, 2002, page 422, also known as Stuart-Maxwell test) is
computed."
hth, david freedman
Tal Galili wrote:
>
> Hello all,
>
> I wish to perform a mcnemar test for a 3 by 3 matrix.
> By running the slandered R command I am getting a result but I am not sure
> I
> am getting the correct one.
> Here is an example code:
>
> (tt <- as.table(t(matrix(c(1,4,1 ,
> 0,5,5,
> 3,1,5), ncol = 3))))
> mcnemar.test(tt, correct=T)
> #And I get:
> McNemar's Chi-squared test
> data: tt
> McNemar's chi-squared = 7.6667, df = 3, p-value = *0.05343*
>
>
> Now I was wondering if the test I just performed is the correct one.
>>From looking at the Wikipedia article on mcnemar (
> http://en.wikipedia.org/wiki/McNemar's_test), it is said that:
> "The Stuart-Maxwell
> test<http://ourworld.compuserve.com/homepages/jsuebersax/mcnemar.htm>
> is
> different generalization of the McNemar test, used for testing marginal
> homogeneity in a square table with more than two rows/columns"
>
>>From searching for a Stuart-Maxwell
> test<http://ourworld.compuserve.com/homepages/jsuebersax/mcnemar.htm>
> in
> google, I found an algorithm here:
> http://www.m-hikari.com/ams/ams-password-2009/ams-password9-12-2009/abbasiAMS9-12-2009.pdf
>
>>From running this algorithm I am getting a different P value, here is the
> (somewhat ugly) code I produced for this:
> get.d <- function(xx)
> {
> length1 <- dim(xx)[1]
> ret1 <- margin.table(xx,1) - margin.table(xx,2)
> return(ret1)
> }
>
> get.s <- function(xx)
> {
> the.s <- xx
> for( i in 1:dim(xx)[1])
> {
> for(j in 1:dim(xx)[2])
> {
> if(i == j)
> {
> the.s[i,j] <- margin.table(xx,1)[i] + margin.table(xx,2)[i] -
> 2*xx[i,i]
> } else {
> the.s[i,j] <- -(xx[i,j] + xx[j,i])
> }
> }
> }
> return(the.s)
> }
>
> chi.statistic <- t(get.d(tt)[-3]) %*% solve(get.s(tt)[-3,-3]) %*%
> get.d(tt)[-3]
> paste("the P value:", pchisq(chi.statistic, 2))
>
> #and the result was:
> "the P value: 0.268384371053358"
>
>
>
> So to summarize my questions:
> 1) can I use "mcnemar.test" for 3*3 (or more) tables ?
> 2) if so, what test is being performed (
> Stuart-Maxwell<http://ourworld.compuserve.com/homepages/jsuebersax/mcnemar.htm>)
> ?
> 3) Do you have a recommended link to an explanation of the algorithm
> employed?
>
>
> Thanks,
> Tal
>
>
>
>
>
> --
> ----------------------------------------------
>
>
> My contact information:
> Tal Galili
> Phone number: 972-50-3373767
> FaceBook: Tal Galili
> My Blogs:
> http://www.r-statistics.com/
> http://www.talgalili.com
> http://www.biostatistics.co.il
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> 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.
>
>
--
View this message in context: http://www.nabble.com/Can-I-use-%22mcnemar.test%22-for-3*3-tables-%28or-is-there-a-bug-in-the-command-%29-tp24556414p24556693.html
Sent from the R help mailing list archive at Nabble.com.
More information about the R-help
mailing list