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_1...@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 <drjimle...@gmail.com>
> Sent: Tuesday, April 5, 2016 2:38 AM
> To: tan sj
> Cc: r-help@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_1...@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@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.

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

Reply via email to