On 10/14/2011 4:10 PM, Bert Gunter wrote:
If I understand what you want to do, it's simple. 2^15 is small (only about 33000), so you can generate all the possible means (sums, actually) and and find the population quantile for your result. If avals is the vector of 15 absolute values, the complete distribution is:

allsums <- as.matrix(expand.grid(as.data.frame(matrix(rep(c(-1,1),15), nr =2)))) %*% avals

This was instantaneous on my machine.
That's beautiful, Bert.  Thanks!  Here is my fleshed-out example

mean(ZeaMays$diff)
# complete permutation distribution of diff, for all 2^15 ways of assigning
# one value to cross and the other to self
allmeans <- as.matrix(expand.grid(as.data.frame(matrix(rep(c(-1,1),15), nr =2)))) %*% abs(ZeaMays$diff) / 15

# upper-tail p-value
sum(allmeans > mean(ZeaMays$diff)) / 2^15
# two-tailed p-value
sum(abs(allmeans) > mean(ZeaMays$diff)) / 2^15

hist(allmeans, breaks=64, xlab="Mean difference, cross-self",
    main="Histogram of all mean differences")
abline(v=mean(ZeaMays$diff), col="red", lwd=2)
abline(v=-mean(ZeaMays$diff), col="red", lwd=2, lty=2)


--
Michael Friendly     Email: friendly AT yorku DOT ca
Professor, Psychology Dept.
York University      Voice: 416 736-5115 x66249 Fax: 416 736-5814
4700 Keele Street    Web:   http://www.datavis.ca
Toronto, ONT  M3J 1P3 CANADA

______________________________________________
R-help@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.

Reply via email to