McNemar test in R & SPSS
Bob Green wrote:
Peter, Thanks for your reply. To perform the analysis in R, I used the table format suggested in the book by Everitt & Hothorn, whereas in SPSS the analysis was performed directly from the 2 variables, rather than using count data.
You still need the right table. matrix(c(128,29,331,430), ncol =2,....) consists of the two marginal tables, which has strictly less information than the crosstabulation of pre and post values. I expect every text on the McNemar test makes this point, and I'd be highly surprised if E&H really suggested that you should use the table that you did.
There is still something I don't understand - I tried to replicate the syntax from your e-mail but my computer just kept waiting - what am I still doing wrong?
You need to give it the data when it starts with the "0:"-style prompt, end with a blank line, as shown. It's just a device for cutting and pasting your table. I might as well have used d <- matrix(c(311,119,20,9), ncol=2) Or, with the raw data to hand d <- table(preMHT, postMHT)
mctest <- as.table(matrix(c(128,29,331,430), ncol =2, dimnames =
list(group=c("preMHT","postMHT"), assault=c("yes","no"))))
> d <- read.table(stdin())
0: mcnemar.test(as.matrix(d),correct=F) 1: Thanks again Bob At 10:52 PM 26/12/2006 +0100, Peter Dalgaard wrote:
Bob Green wrote:
Hello, I am hoping someone can clarify why I might obtain a quite different value in R & SPSS for a McNemar test I ran. Firstly, here is the R syntax & output R OUTPUT
> mctest <- as.table(matrix(c(128,29,331,430),
+ ncol =2, dimnames = list(group=c("preMHT","postMHT"),
+ assault=c("yes","no"))))
> mctest
assault group yes no preMHT 128 331 postMHT 29 430
> mcnemar.test(mctest,correct=F)
McNemar's Chi-squared test
data: mctest
McNemar's chi-squared = 253.3444, df = 1, p-value < 2.2e-16
SPSS OUTPUT
The same data was inputted in SPSS. Regarding the first table SPSS
generated - it lists the number of cases in each combination of
categories. The diagonal contains the number of cases with the same
response on both variables, while the off diagonal contains cases that
have different responses on the 2 variables. The overall chisquare value
is much lower than the value obtained using R, though still significant.
pre02 & post02
pre02 post02
0 1
0 311 20
1 119 9
Test Statistics(b)
pre02 & post02
N 459
Chi-Square(a) 69.094
Asymp. Sig. .000
a Continuity Corrected
b McNemar Test
Any assistance is much appreciated,
Well, you can't expect R to give the correct result if you feed it the
wrong matrix, can you?
d <- read.table(stdin())
0: 0 1
1: 0 311 20
2: 1 119 9
3:
d
X0 X1
0 311 20
1 119 9
mcnemar.test(as.matrix(d),correct=F)
McNemar's Chi-squared test
data: as.matrix(d)
McNemar's chi-squared = 70.5108, df = 1, p-value < 2.2e-16
mcnemar.test(as.matrix(d),correct=T)
McNemar's Chi-squared test with continuity correction
data: as.matrix(d)
McNemar's chi-squared = 69.0935, df = 1, p-value < 2.2e-16
Bob Green
______________________________________________ R-help at stat.math.ethz.ch 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.
______________________________________________ R-help at stat.math.ethz.ch 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.