[R] Listing tables together from random samples from a generated population?

2011-11-10 Thread Simon Kiss
.
HI there,
I'd like to show demonstrate how the chi-squared distribution works, so I've 
come up with a sample data frame of two categorical variables
y-data.frame(gender=sample(c('Male', 'Female'), size=10, replace=TRUE, 
c(0.5, 0.5)), tea=sample(c('Yes', 'No'), size=10, replace=TRUE, c(0.5, 
0.5)))

And I'd like to create a list of 100 different samples of those two variables 
and the resulting 2X2 contingency tables

table(.y[sample(nrow(.y), 100), ])

How would I combine these 100 tables into a list? I'd like to be able to go in 
and find some of the extreme values to show how the sampling distribution of 
the chi-square values.

I can already get a histogram of 100 different chi-squared values that shows 
the distribution nicely (see below), but I'd like to actually show the 
underlying tables, for demonstration's sake.

 .z-vector()
for (i in 1:100) {
.z-c(.z, chisq.test(table(.y[sample(nrow(.y), 200), ]))$statistic)
}
hist(.z, xlab='Chi-Square Value', main=Chi-Squared Values From 100 different 
samples asking\nabout gender and tea/coffee drinking)
abline(v=3.84, lty=2)

Thank you in advance,
Simon Kiss

*
Simon J. Kiss, PhD
Assistant Professor, Wilfrid Laurier University
73 George Street
Brantford, Ontario, Canada
N3T 2C9
Cell: +1 905 746 7606

__
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.


Re: [R] Listing tables together from random samples from a generated population?

2011-11-10 Thread Jean V Adams
You could try something like this:
tables - lapply(seq(100), function(i) table(.y[sample(nrow(.y), 
200), ]))

Then you could conduct the chi-squared tests
chisqs - lapply(tables, chisq.test)
and save the values
.z - sapply(chisqs, [[, statistic)

Jean

---

Simon Kiss wrote on 11/10/2011 15:48:38:

HI there, 
I'd like to show demonstrate how the chi-squared distribution works, so 
I've come up with a sample data frame of two categorical variables 
y-data.frame(gender=sample(c('Male', 'Female'), size=10, 
replace=TRUE, c(0.5, 0.5)), tea=sample(c('Yes', 'No'), size=10, 
replace=TRUE, c(0.5, 0.5)))

And I'd like to create a list of 100 different samples of those two 
variables and the resulting 2X2 contingency tables

table(.y[sample(nrow(.y), 100), ])

How would I combine these 100 tables into a list? I'd like to be able to 
go in and find some of the extreme values to show how the sampling 
distribution of the chi-square values.

I can already get a histogram of 100 different chi-squared values that 
shows the distribution nicely (see below), but I'd like to actually show 
the underlying tables, for demonstration's sake.

 .z-vector() 
for (i in 1:100) { 
.z-c(.z, chisq.test(table(.y[sample(nrow(.y), 200), ]))$statistic) 
} 
hist(.z, xlab='Chi-Square Value', main=Chi-Squared Values From 100 
different samples asking\nabout gender and tea/coffee drinking) 
abline(v=3.84, lty=2)

Thank you in advance, 
Simon Kiss

Simon J. Kiss, PhD 
Assistant Professor, Wilfrid Laurier University 73 George Street 
Brantford, Ontario, Canada 
N3T 2C9 
Cell: +1 905 746 7606
[[alternative HTML version deleted]]

__
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.


Re: [R] Listing tables together from random samples from a generated population?

2011-11-10 Thread Dennis Murphy
Hi:

There are two ways you could go about this: lists or arrays. It's
pretty easy to generate an array, a little more work to get the list.
I'm assuming the objective is to extract a chi-square statistic from
each table, so I'll show a couple of ways to do that, too.

library('plyr')

## Start with the data:
y-data.frame(gender=sample(c('Male', 'Female'), size=10,
replace=TRUE, c(0.5, 0.5)),
 tea=sample(c('Yes', 'No'),  size=10,
replace=TRUE, c(0.5, 0.5)))
## Function to produce a table:
tabfun - function(d) table(d[sample(seq_len(nrow(d)), 100), ])
x2stat - function(m) chisq.test(m)$statistic

## Array version:

tbarr - replicate(100, tabfun(y))
# X^2 statistics using apply() from base R and
# aaply() from plyr:
u1 - apply(tablist, 3, x2stat)
u2 - aaply(tablist, 3, x2stat)

## List version:

tblst - vector('list', 100)
for(i in seq_along(tblst)) tblst[[i]] - tabfun(y)

v1 - unname(do.call(c, lapply(tblst, x2stat)))
v2 - laply(tblst, x2stat)

From here, it's easy to do the histogram :)

HTH,
Dennis


On Thu, Nov 10, 2011 at 12:48 PM, Simon Kiss sjk...@gmail.com wrote:
 .
 HI there,
 I'd like to show demonstrate how the chi-squared distribution works, so I've 
 come up with a sample data frame of two categorical variables
 y-data.frame(gender=sample(c('Male', 'Female'), size=10, replace=TRUE, 
 c(0.5, 0.5)), tea=sample(c('Yes', 'No'), size=10, replace=TRUE, c(0.5, 
 0.5)))

 And I'd like to create a list of 100 different samples of those two variables 
 and the resulting 2X2 contingency tables

 table(.y[sample(nrow(.y), 100), ])

 How would I combine these 100 tables into a list? I'd like to be able to go 
 in and find some of the extreme values to show how the sampling distribution 
 of the chi-square values.

 I can already get a histogram of 100 different chi-squared values that shows 
 the distribution nicely (see below), but I'd like to actually show the 
 underlying tables, for demonstration's sake.

  .z-vector()
 for (i in 1:100) {
 .z-c(.z, chisq.test(table(.y[sample(nrow(.y), 200), ]))$statistic)
 }
 hist(.z, xlab='Chi-Square Value', main=Chi-Squared Values From 100 different 
 samples asking\nabout gender and tea/coffee drinking)
 abline(v=3.84, lty=2)

 Thank you in advance,
 Simon Kiss

 *
 Simon J. Kiss, PhD
 Assistant Professor, Wilfrid Laurier University
 73 George Street
 Brantford, Ontario, Canada
 N3T 2C9
 Cell: +1 905 746 7606

 __
 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.


__
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.