[R] Odp: random sampling with levels and with replacement

Petr PIKAL petr.pikal at precheza.cz
Fri Apr 8 11:11:01 CEST 2011


Hi

r-help-bounces at r-project.org napsal dne 08.04.2011 09:31:44:

> Dear all,
> i have a dataset of about 400 records , with a variable that has  two 
levels 
> 40 bad and 360 good among other variables,how do i come up  with10 
random 
> samples that have the composition of as the main sample  but maintaining 
the 
> 40 bad 360 good with replacement, i recently discovered that my random 
samples
> generated dont maintain the ratio. My code is as  :
> 
> mysample <- final[sample(1:nrow(final), 400,replace=TRUE),] 
> 
> does not give me the ratio of 40 bad and 360 good can anyone give me 
some 
> pointers please?

If you sample 400 items with replacement 400 times you will only 
accidentally get exact proportion of good and bad. Consider that in each 
sample your chance to get bad one is 40/360 but it does not mean that from 
400 random picks you will get exactly 40 bad items.

If you just want shuffle your rows use sampling without replacement.

mysample <- final[sample(1:nrow(final), 400),] 

In that case you get the same data but with random row order.

But if you want to do sample with replacement you will get on average the 
proportion of good and bad items. You can check it e.g. by

x<-c(rep("g", 360), rep("b",40))
res<-rep(NA, 1000)
for( i in 1:1000) {

y<-table(sample(x,400, replace=T))
res[i]<-y[1]/y[2]
hist(res)
abline(v=40/360, col=2)
}

Regards
Petr



> 
> 
> 
> Thanks,
> Taby
> 
> 
> 
> 
>    [[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.



More information about the R-help mailing list