tan sj
2016-Apr-05 01:15 UTC
[R] R-dvel [robustness Simulation study of 2 sample test on several combination of factors ]
hi, i am new in this field. do favorite<http://stackoverflow.com/questions/36404707/simulation-study-of-2-sample-test-on-different-combination-of-factors#> If I wish to conduct a simulation on the robustness of two sample test by using R language, is that any ways in writing the code? There are several factors (sample sizes-(10,10),(10,25),(25,25),(25,50),(25,100),50,25),(50,100), (100,25),(100,100)) (standard deviation ratio- (1.00, 1.50, 2.00, 2.50, 3.00 and 3.50)) distribution of gamma distribution with unequal skewness and equal skewness I wish to test the pooled variance t test and welch t test and mann whitney by using the above combination of factors. But how can I combine them by using for loop or apply function?? I am intending to use apply function but i am stucking. If i use for loop function, can i use for loop with vectors ? for (a in c(25,50,100)) #first group of sample sizes { for (b in c(25,50,100)) #second group of sample sizes { for (d in c(4,4.4,5,6,8)) #different SDs of first sample the above code is an example that I would like to modified but I found I have different sets of sample sizes. So if for loop with vectors, as shown in the code above, will the computer run from part (a) 25, to part(b) 25, then to the part (d) 4? then again the rotation 50->50->4.4? ?I hope can hear any news from this website ....please..thanks you. Regards sst [[alternative HTML version deleted]]
Jim Lemon
2016-Apr-05 02:38 UTC
[R] R-dvel [robustness Simulation study of 2 sample test on several combination of factors ]
Hi sst, You could set up your sample sizes as a matrix if you don't want all of the combinations: sample_sizes<-matrix(c(10,10,10,25,25,25,...),nrow=2) and then use one loop for the sample sizes: for(ss in 1:dim(sample_sizes)[2]) { ss1<-sample_sizes[1,ss] ss2<-sample_sizes[2,ss] then step through your SDs: for(ssd in c(4,4.4,5,6,8)) { Jim On Tue, Apr 5, 2016 at 11:15 AM, tan sj <sj_style_1125 at outlook.com> wrote:> hi, i am new in this field. > > > do > favorite<http://stackoverflow.com/questions/36404707/simulation-study-of-2-sample-test-on-different-combination-of-factors#> > > > If I wish to conduct a simulation on the robustness of two sample test by using R language, is that any ways in writing the code? > There are several factors > (sample sizes-(10,10),(10,25),(25,25),(25,50),(25,100),50,25),(50,100), (100,25),(100,100)) > > (standard deviation ratio- (1.00, 1.50, 2.00, 2.50, 3.00 and 3.50)) > distribution of gamma distribution with unequal skewness and equal skewness > > I wish to test the pooled variance t test and welch t test and mann whitney by using the above combination of factors. But how can I combine them by using for loop or apply function?? > I am intending to use apply function but i am stucking. If i use for loop function, can i use for loop with vectors ? > for (a in c(25,50,100)) #first group of sample sizes > { for (b in c(25,50,100)) #second group of sample sizes > { for (d in c(4,4.4,5,6,8)) #different SDs of first sample > the above code is an example that I would like to modified but I found I have different sets of sample sizes. > > So if for loop with vectors, as shown in the code above, will the computer run from part (a) 25, to part(b) 25, then to the part (d) 4? then again the rotation 50->50->4.4? > > ?I hope can hear any news from this website ....please..thanks you. > > Regards > sst > > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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.
Jim Lemon
2016-Apr-05 11:00 UTC
[R] R-dvel [robustness Simulation study of 2 sample test on several combination of factors ]
Okay, here is a more complete example: sample_sizes<- matrix(c(10,10,10,25,25,25,25,50,25,100,50,25,50,100,100,25,100,100), nrow=2) # see what it looks like sample_sizes ssds<-c(4,4.4,5,6,8) nssds<-length(ssds) results<-list() # first loop steps through the sample for(ss in 1:dim(sample_sizes)[2]) { # get the two sample sizes ss1<-sample_sizes[1,ss] ss2<-sample_sizes[2,ss] then step through your SDs: ssd_index<-1 for(ssd in ssds) { # generate the two samples with the SDs sample1<-rnorm(ss1,ssd) sample2<-rnorm(ss2,ssd) # here run your tests, recording the results that you want results[[(ss-1)*nssds+ssd_index]]<-<your_test> ssd_index<-ssd_index+1 } } The list "results" should now contain the results of whatever test you run. Be careful to get the order right. Jim On Tue, Apr 5, 2016 at 8:07 PM, tan sj <sj_style_1125 at outlook.com> wrote:> hi, Jim, > i am not very clear about yours idea. > How can i able to test them under the combination of factors? > I am now trying to do three for loops....but i am stucking .... > Please, I need help .... > ________________________________________
Jim Lemon
2016-Apr-06 04:00 UTC
[R] R-dvel [robustness Simulation study of 2 sample test on several combination of factors ]
You have quite a few mistakes in your example. The code below works for me - you can wrap it in a function if you like. I think you will need a lot more practice before you can write something like this in R as you are missing close braces and haven't really worked out the difference between the number of calculations you are doing for each replication and the number of replications. It takes 5-10 minutes to run. ## Put the samples sizes into matrix then use a loop for sample sizes sample_sizes<- matrix(c(10,10,10,25,25,25,25,50,25,100,50,25,50,100,100,25,100,100), nrow=2) #create vector to combine all std deviations sds<-c(4,6,8,10,12,14) # this number is needed below nsds<-length(sds) set.seed(8) #number of simulations nSims<-10000 #set significance level,alpha for the whole simulatio alpha<-0.05 #set empty vector of length no.of _calculations_ to store p-values # Note: you have 54 calculations, not 10000 ncalcs<-dim(sample_sizes)[2]*nsds t_equal <-c(rep(0,length=ncalcs)) t_unequal <-c(rep(0,length=ncalcs)) mann <-c(rep(0,length=ncalcs)) #set up matrix for storing data from the vectors # but you do want 10000 replications of each calculation matrix_Equal<-matrix(rep(NA,ncalcs*nSims),nrow=nSims) matrix_Unequal<-matrix(rep(NA,ncalcs*nSims),nrow=nSims) matrix_mann<-matrix(rep(NA,ncalcs*nSims),nrow=nSims) ############Simulations for (sim in 1:nSims){ # this loop steps through the sample sizes for(ss in 1:dim(sample_sizes)[2]) { m<-sample_sizes[1,ss] n<-sample_sizes[2,ss] # initialize the index for results i<-1 for (sd in sds) { #first group's standard deviation #generate random samples from 2 normal distribution x_norm1<-rnorm(m,5,sds) y_norm2<-rnorm(n,5,4) #extract p-value out and store it in vectors t_equal[(ss-1)*nsds+i]<-t.test(x_norm1,y_norm2,var.equal=TRUE)$p.value t_unequal[(ss-1)*nsds+i]<-t.test(x_norm1,y_norm2,var.equal=FALSE)$p.value mann[(ss-1)*nsds+i] <-wilcox.test(x_norm1,y_norm2)$p.value i<-i+1 } } #store the current result into matrices by rows matrix_Equal[sim,]<-t_equal matrix_Unequal[sim,]<-t_unequal matrix_mann[sim,]<-mann } ##print results matrix_Equal matrix_Unequal matrix_mann Jim On Wed, Apr 6, 2016 at 12:43 AM, tan sj <sj_style_1125 at outlook.com> wrote:> Hi, Jim, i read through your example, > I tried to write a code modified yours example and my ideas ... > In last email, you replied that "results[[(ss-1)*nssds+ssd_index]]<-<your_test>" ,can i know further about this ? Because i am not very understand about this . > I am sorry that i am really a new bird in this field... > but the code turn out it have some error ... > Below shown my attempt... > > ## Put the samples sizes into matrix then use a loop for sample sizes > sample_sizes<- > matrix(c(10,10,10,25,25,25,25,50,25,100,50,25,50,100,100,25,100,100), > nrow=2) > > #create vector to combine all std deviations > sds<-c(4,6,8,10,12,14) > > set.seed(8) > > #number of simulations > nSims<-10000 > #set significance level,alpha for the whole simulatio > alpha<-0.05 > > #set empty vector of length no.of simulation(10000) to store p-value > t_equal <-c(length=nSims) > t_unequal <-c(length=nSims) > mann <-c(length=nSims) > > #set up matrix for storing data from the vectors > matrix_Equal<-matrix(t_equal,nrow=nSims) > matrix_Unequal<-matrix(t_unequal,nrow=nSims) > matrix_mann<-matrix(mann,nrow=nSims) > > ############Simulations > > #BULID A FUNCTION for a collection of statement > f<-function(m,n,sd) > { > for (i in 1:nSims){ > > # this loop steps through the sample sizes > for(ss in 1:dim(sample_sizes)[2]) > { > m<-sample_sizes[1,ss] > n<-sample_sizes[2,ss] > { > for (sd in sds) #first group's standard deviation > { > #generate random samples from 2 normal distribution > x_norm1<-rnorm(m,5,sds) > y_norm2<-rnorm(n,5,4) > > #extract p-value out and store it in vectors > t_equal[i]<-t.test(x_norm1,y_norm2,var.equal=TRUE)$p.value > t_unequal[i]<-t.test(x_norm1,y_norm2,var.equal=FALSE)$p.value > mann[i] <-wilcox.test(x_norm1,y_norm2)$p.value > > ##store the result into matrix defined before > matrix_Equal<-t_equal > matrix_Unequal<-t_unequal > matrix_mann<-mann > > ##print results > matrix_Equal > matrix_Unequal > matrix_mann > > } > } > } > } > } > ________________________________________ > From: Jim Lemon <drjimlemon at gmail.com> > Sent: Tuesday, April 5, 2016 2:38 AM > To: tan sj > Cc: r-help at r-project.org > Subject: Re: [R] R-dvel [robustness Simulation study of 2 sample test on several combination of factors ] > > Hi sst, > You could set up your sample sizes as a matrix if you don't want all > of the combinations: > > sample_sizes<-matrix(c(10,10,10,25,25,25,...),nrow=2) > > and then use one loop for the sample sizes: > > for(ss in 1:dim(sample_sizes)[2]) { > ss1<-sample_sizes[1,ss] > ss2<-sample_sizes[2,ss] > > then step through your SDs: > > for(ssd in c(4,4.4,5,6,8)) { > > Jim > > On Tue, Apr 5, 2016 at 11:15 AM, tan sj <sj_style_1125 at outlook.com> wrote: >> hi, i am new in this field. >> >> >> do >> favorite<http://stackoverflow.com/questions/36404707/simulation-study-of-2-sample-test-on-different-combination-of-factors#> >> >> >> If I wish to conduct a simulation on the robustness of two sample test by using R language, is that any ways in writing the code? >> There are several factors >> (sample sizes-(10,10),(10,25),(25,25),(25,50),(25,100),50,25),(50,100), (100,25),(100,100)) >> >> (standard deviation ratio- (1.00, 1.50, 2.00, 2.50, 3.00 and 3.50)) >> distribution of gamma distribution with unequal skewness and equal skewness >> >> I wish to test the pooled variance t test and welch t test and mann whitney by using the above combination of factors. But how can I combine them by using for loop or apply function?? >> I am intending to use apply function but i am stucking. If i use for loop function, can i use for loop with vectors ? >> for (a in c(25,50,100)) #first group of sample sizes >> { for (b in c(25,50,100)) #second group of sample sizes >> { for (d in c(4,4.4,5,6,8)) #different SDs of first sample >> the above code is an example that I would like to modified but I found I have different sets of sample sizes. >> >> So if for loop with vectors, as shown in the code above, will the computer run from part (a) 25, to part(b) 25, then to the part (d) 4? then again the rotation 50->50->4.4? >> >> ?I hope can hear any news from this website ....please..thanks you. >> >> Regards >> sst >> >> >> [[alternative HTML version deleted]] >> >> ______________________________________________ >> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >> 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.
Michael Friendly
2016-Apr-06 13:03 UTC
[R] R-dvel [robustness Simulation study of 2 sample test on several combination of factors ]
On 4/4/2016 9:15 PM, tan sj wrote:> hi, i am new in this field. > > > do > favorite<http://stackoverflow.com/questions/36404707/simulation-study-of-2-sample-test-on-different-combination-of-factors#> > > > If I wish to conduct a simulation on the robustness of two sample test by using R language, is that any ways in writing the code? > There are several factors > (sample sizes-(10,10),(10,25),(25,25),(25,50),(25,100),50,25),(50,100), (100,25),(100,100)) > > (standard deviation ratio- (1.00, 1.50, 2.00, 2.50, 3.00 and 3.50)) > distribution of gamma distribution with unequal skewness and equal skewness > > I wish to test the pooled variance t test and welch t test and mann whitney by using the above combination of factors. But how can I combine them by using for loop or apply function?? > I am intending to use apply function but i am stucking. If i use for loop function, can i use for loop with vectors ? > for (a in c(25,50,100)) #first group of sample sizes > { for (b in c(25,50,100)) #second group of sample sizes > { for (d in c(4,4.4,5,6,8)) #different SDs of first sample > the above code is an example that I would like to modified but I found I have different sets of sample sizes. >Don't try to code this yourself-- you'll run into a mess. Instead, use the lovely SimDesign package, https://github.com/philchalmers/SimDesign designed for just this purpose. There are also some nice tutorial examples on a wiki, https://github.com/philchalmers/SimDesign/wiki best, -Michael
tan sj
2016-Apr-06 15:54 UTC
[R] R-dvel [robustness Simulation study of 2 sample test on several combination of factors ]
Hi, i think i have figured the purpose of using this index (i-1)*5+j in the previous example that you gave. It is because that i have to consider the outer loop and inner loop also... so the iterative for i need to minus one because it have ran one times simulation already ,then times the number of sizes of inner loop, then plus the iterative of j.... then for the simulation, i think there will be ((ss-1)*nsds +sim) for the index in the body of for loop... Is it correct? Sent from my phone On Jim Lemon <drjimlemon at gmail.com>, Apr 6, 2016 6:52 PM wrote: You are running through two loops and putting the output into a vector. Without this calculation you will overwrite the same elements of the output vector instead of advancing through it. Try this example: # like your 54 element vector of calculations for one condition testmat1<-rep(0,25) testmat2<-rep(0,25) # now try to fill it with the inner loop index for(i in 1:5) { for(j in 1:5) { testmat1[j]<-i+j } } # do it again using a calculation similar to your question for(i in 1:5) { for(j in 1:5) { testmat2[(i-1)*5+j]<-i+j } } testmat1 testmat2 Try out some other things with this. It will give you an idea of how to index elements of vectors. You could also use a matrix and then convert it into a vector using as.vector: testmat3<-matrix(0,nrow=5,ncol=5) for(i in 1:5) { for(j in 1:5) { testmat3[i,j]<-i+j } } as.vector(testmat3) Jim On Wed, Apr 6, 2016 at 8:04 PM, tan sj <sj_style_1125 at outlook.com> wrote:> Hi, i am sorry to interrupt, can I ask about this few problems? > > t_equal[(ss-1)*nsds+i]<-t.test(x_norm1,y_norm2,var.equal=TRUE)$p.value > 1. From above, what do "[(ss-1)*nsds+i]" brings to the code? > > 2. what is the purpose of having i (the iterative) here ? I see that dr. have set the sim as the iterative then why need to set i <-1 and set it as i<-i+1? > > they are confusing me..... > I am sorry if these are very simple problem.... > > > ________________________________________ > From: Jim Lemon <drjimlemon at gmail.com> > Sent: Wednesday, April 6, 2016 4:00 AM > To: tan sj; r-help mailing list > Subject: Re: [R] R-dvel [robustness Simulation study of 2 sample test on several combination of factors ] > > You have quite a few mistakes in your example. The code below works > for me - you can wrap it in a function if you like. I think you will > need a lot more practice before you can write something like this in R > as you are missing close braces and haven't really worked out the > difference between the number of calculations you are doing for each > replication and the number of replications. It takes 5-10 minutes to > run. > > ## Put the samples sizes into matrix then use a loop for sample sizes > sample_sizes<- > matrix(c(10,10,10,25,25,25,25,50,25,100,50,25,50,100,100,25,100,100), > nrow=2) > > #create vector to combine all std deviations > sds<-c(4,6,8,10,12,14) > # this number is needed below > nsds<-length(sds) > set.seed(8) > > #number of simulations > nSims<-10000 > #set significance level,alpha for the whole simulatio > alpha<-0.05 > > #set empty vector of length no.of _calculations_ to store p-values > # Note: you have 54 calculations, not 10000 > ncalcs<-dim(sample_sizes)[2]*nsds > t_equal <-c(rep(0,length=ncalcs)) > t_unequal <-c(rep(0,length=ncalcs)) > mann <-c(rep(0,length=ncalcs)) > > #set up matrix for storing data from the vectors > # but you do want 10000 replications of each calculation > matrix_Equal<-matrix(rep(NA,ncalcs*nSims),nrow=nSims) > matrix_Unequal<-matrix(rep(NA,ncalcs*nSims),nrow=nSims) > matrix_mann<-matrix(rep(NA,ncalcs*nSims),nrow=nSims) > > ############Simulations > > for (sim in 1:nSims){ > # this loop steps through the sample sizes > for(ss in 1:dim(sample_sizes)[2]) { > m<-sample_sizes[1,ss] > n<-sample_sizes[2,ss] > # initialize the index for results > i<-1 > for (sd in sds) { #first group's standard deviation > #generate random samples from 2 normal distribution > x_norm1<-rnorm(m,5,sds) > y_norm2<-rnorm(n,5,4) > #extract p-value out and store it in vectors > t_equal[(ss-1)*nsds+i]<-t.test(x_norm1,y_norm2,var.equal=TRUE)$p.value > t_unequal[(ss-1)*nsds+i]<-t.test(x_norm1,y_norm2,var.equal=FALSE)$p.value > mann[(ss-1)*nsds+i] <-wilcox.test(x_norm1,y_norm2)$p.value > i<-i+1 > } > } > #store the current result into matrices by rows > matrix_Equal[sim,]<-t_equal > matrix_Unequal[sim,]<-t_unequal > matrix_mann[sim,]<-mann > } > ##print results > matrix_Equal > matrix_Unequal > matrix_mann > > Jim > > On Wed, Apr 6, 2016 at 12:43 AM, tan sj <sj_style_1125 at outlook.com> wrote: >> Hi, Jim, i read through your example, >> I tried to write a code modified yours example and my ideas ... >> In last email, you replied that "results[[(ss-1)*nssds+ssd_index]]<-<your_test>" ,can i know further about this ? Because i am not very understand about this . >> I am sorry that i am really a new bird in this field... >> but the code turn out it have some error ... >> Below shown my attempt... >> >> ## Put the samples sizes into matrix then use a loop for sample sizes >> sample_sizes<- >> matrix(c(10,10,10,25,25,25,25,50,25,100,50,25,50,100,100,25,100,100), >> nrow=2) >> >> #create vector to combine all std deviations >> sds<-c(4,6,8,10,12,14) >> >> set.seed(8) >> >> #number of simulations >> nSims<-10000 >> #set significance level,alpha for the whole simulatio >> alpha<-0.05 >> >> #set empty vector of length no.of simulation(10000) to store p-value >> t_equal <-c(length=nSims) >> t_unequal <-c(length=nSims) >> mann <-c(length=nSims) >> >> #set up matrix for storing data from the vectors >> matrix_Equal<-matrix(t_equal,nrow=nSims) >> matrix_Unequal<-matrix(t_unequal,nrow=nSims) >> matrix_mann<-matrix(mann,nrow=nSims) >> >> ############Simulations >> >> #BULID A FUNCTION for a collection of statement >> f<-function(m,n,sd) >> { >> for (i in 1:nSims){ >> >> # this loop steps through the sample sizes >> for(ss in 1:dim(sample_sizes)[2]) >> { >> m<-sample_sizes[1,ss] >> n<-sample_sizes[2,ss] >> { >> for (sd in sds) #first group's standard deviation >> { >> #generate random samples from 2 normal distribution >> x_norm1<-rnorm(m,5,sds) >> y_norm2<-rnorm(n,5,4) >> >> #extract p-value out and store it in vectors >> t_equal[i]<-t.test(x_norm1,y_norm2,var.equal=TRUE)$p.value >> t_unequal[i]<-t.test(x_norm1,y_norm2,var.equal=FALSE)$p.value >> mann[i] <-wilcox.test(x_norm1,y_norm2)$p.value >> >> ##store the result into matrix defined before >> matrix_Equal<-t_equal >> matrix_Unequal<-t_unequal >> matrix_mann<-mann >> >> ##print results >> matrix_Equal >> matrix_Unequal >> matrix_mann >> >> } >> } >> } >> } >> } >> ________________________________________ >> From: Jim Lemon <drjimlemon at gmail.com> >> Sent: Tuesday, April 5, 2016 2:38 AM >> To: tan sj >> Cc: r-help at r-project.org >> Subject: Re: [R] R-dvel [robustness Simulation study of 2 sample test on several combination of factors ] >> >> Hi sst, >> You could set up your sample sizes as a matrix if you don't want all >> of the combinations: >> >> sample_sizes<-matrix(c(10,10,10,25,25,25,...),nrow=2) >> >> and then use one loop for the sample sizes: >> >> for(ss in 1:dim(sample_sizes)[2]) { >> ss1<-sample_sizes[1,ss] >> ss2<-sample_sizes[2,ss] >> >> then step through your SDs: >> >> for(ssd in c(4,4.4,5,6,8)) { >> >> Jim >> >> On Tue, Apr 5, 2016 at 11:15 AM, tan sj <sj_style_1125 at outlook.com> wrote: >>> hi, i am new in this field. >>> >>> >>> do >>> favorite<http://stackoverflow.com/questions/36404707/simulation-study-of-2-sample-test-on-different-combination-of-factors#> >>> >>> >>> If I wish to conduct a simulation on the robustness of two sample test by using R language, is that any ways in writing the code? >>> There are several factors >>> (sample sizes-(10,10),(10,25),(25,25),(25,50),(25,100),50,25),(50,100), (100,25),(100,100)) >>> >>> (standard deviation ratio- (1.00, 1.50, 2.00, 2.50, 3.00 and 3.50)) >>> distribution of gamma distribution with unequal skewness and equal skewness >>> >>> I wish to test the pooled variance t test and welch t test and mann whitney by using the above combination of factors. But how can I combine them by using for loop or apply function?? >>> I am intending to use apply function but i am stucking. If i use for loop function, can i use for loop with vectors ? >>> for (a in c(25,50,100)) #first group of sample sizes >>> { for (b in c(25,50,100)) #second group of sample sizes >>> { for (d in c(4,4.4,5,6,8)) #different SDs of first sample >>> the above code is an example that I would like to modified but I found I have different sets of sample sizes. >>> >>> So if for loop with vectors, as shown in the code above, will the computer run from part (a) 25, to part(b) 25, then to the part (d) 4? then again the rotation 50->50->4.4? >>> >>> ?I hope can hear any news from this website ....please..thanks you. >>> >>> Regards >>> sst >>> >>> >>> [[alternative HTML version deleted]] >>> >>> ______________________________________________ >>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >>> 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.[[alternative HTML version deleted]]
Apparently Analagous Threads
- R-dvel [robustness Simulation study of 2 sample test on several combination of factors ]
- use switch or function in connecting different cases.
- R: use switch or function in connecting different cases.
- R-dvel [robustness Simulation study of 2 sample test on several combination of factors ]
- problem on simulation code (the loop unable to function effectively)