Re: [R] R [coding : do not run for every row ]
yes, i think that must be some mistake. I just noticed that it run for the nine sample sizes with the column fill in "1" in the result. And yet i am still trying to figure out what is happening. From: Thierry Onkelinx <thierry.onkel...@inbo.be> Sent: Monday, April 18, 2016 10:03 AM To: tan sj; r-help@r-project.org Subject: Re: [R] R [coding : do not run for every row ] Always keep the mailing list in cc. The code runs for each row in the data. However I get the feeling that there is a mismatch between what you think that is in the data and the actual data. ir. Thierry Onkelinx Instituut voor natuur- en bosonderzoek / Research Institute for Nature and Forest team Biometrie & Kwaliteitszorg / team Biometrics & Quality Assurance Kliniekstraat 25 1070 Anderlecht Belgium To call in the statistician after the experiment is done may be no more than asking him to perform a post-mortem examination: he may be able to say what the experiment died of. ~ Sir Ronald Aylmer Fisher The plural of anecdote is not data. ~ Roger Brinner The combination of some data and an aching desire for an answer does not ensure that a reasonable answer can be extracted from a given body of data. ~ John Tukey 2016-04-18 10:35 GMT+02:00 tan sj <sj_style_1...@outlook.com>: > Thanks but it seem like the problem of looping through data is still the > samei am really wondering where is the mistake > > > From: Thierry Onkelinx <thierry.onkel...@inbo.be> > Sent: Monday, April 18, 2016 7:21 AM > To: tan sj > Cc: r-help > Subject: Re: [R] R [coding : do not run for every row ] > > You can make this much more readable with apply functions. > > result <- apply( > all_combine1, > 1, > function(x){ > p.value <- sapply( > seq_len(nSims), > function(sim){ > gamma1 <- rgamma(x["m"], x["sp(skewness1.5)"], x["scp1"]) > gamma2 <- rgamma(x["n"], x["scp1"], 1) > gamma1 <- gamma1 - x["sp(skewness1.5)"] * x["scp1"] > gamma2 <- gamma2 - x["sp(skewness1.5)"] > c( > equal = t.test(gamma1, gamma2, var.equal=TRUE)$p.value, > unequal = t.test(gamma1,gamma2,var.equal=FALSE)$p.value, > mann = wilcox.test(gamma1,gamma2)$p.value > ) > } > ) > rowMeans(p.value <= alpha) > } > ) > cbind(all_combine1, t(result)) > ir. Thierry Onkelinx > Instituut voor natuur- en bosonderzoek / Research Institute for Nature > and Forest > team Biometrie & Kwaliteitszorg / team Biometrics & Quality Assurance > Kliniekstraat 25 > 1070 Anderlecht > Belgium > > To call in the statistician after the experiment is done may be no > more than asking him to perform a post-mortem examination: he may be > able to say what the experiment died of. ~ Sir Ronald Aylmer Fisher > The plural of anecdote is not data. ~ Roger Brinner > The combination of some data and an aching desire for an answer does > not ensure that a reasonable answer can be extracted from a given body > of data. ~ John Tukey > > > 2016-04-18 9:05 GMT+02:00 tan sj <sj_style_1...@outlook.com>: >> Hi, i am sorry, the output should be values between 0 and 0.1 and not >> supposed to be 1.00, it is because they are type 1 error rate. And now i get >> output 1.00 for several samples,rhis is no correct. The loop do not run for >> every row. i do not know where is my mistake. As i use the same concept on >> normal distribution setup, i get the result. >> >> Sent from my phone >> >> On Thierry Onkelinx <thierry.onkel...@inbo.be>, Apr 18, 2016 2:55 PM wrote: >> Dear anonymous, >> >> The big mistake in the output might be obvious to you but not to >> others. Please make clear what the correct output should be or at >> least what is wrong with the current output. >> >> And please DO read the posting guide which asks you not to post in HTML. >> ir. Thierry Onkelinx >> Instituut voor natuur- en bosonderzoek / Research Institute for Nature >> and Forest >> team Biometrie & Kwaliteitszorg / team Biometrics & Quality Assurance >> Kliniekstraat 25 >> 1070 Anderlecht >> Belgium >> >> To call in the statistician after the experiment is done may be no >> more than asking him to perform a post-mortem examination: he may be >> able to say what the experiment died of. ~ Sir Ronald Aylmer Fisher >> The plural of anecdote is not data. ~ Roger Brinner >> The combination of some data and an aching desire for an answer does >> not ensure that a reasonable answer
Re: [R] R [coding : do not run for every row ]
Always keep the mailing list in cc. The code runs for each row in the data. However I get the feeling that there is a mismatch between what you think that is in the data and the actual data. ir. Thierry Onkelinx Instituut voor natuur- en bosonderzoek / Research Institute for Nature and Forest team Biometrie & Kwaliteitszorg / team Biometrics & Quality Assurance Kliniekstraat 25 1070 Anderlecht Belgium To call in the statistician after the experiment is done may be no more than asking him to perform a post-mortem examination: he may be able to say what the experiment died of. ~ Sir Ronald Aylmer Fisher The plural of anecdote is not data. ~ Roger Brinner The combination of some data and an aching desire for an answer does not ensure that a reasonable answer can be extracted from a given body of data. ~ John Tukey 2016-04-18 10:35 GMT+02:00 tan sj <sj_style_1...@outlook.com>: > Thanks but it seem like the problem of looping through data is still the > samei am really wondering where is the mistake > > > From: Thierry Onkelinx <thierry.onkel...@inbo.be> > Sent: Monday, April 18, 2016 7:21 AM > To: tan sj > Cc: r-help > Subject: Re: [R] R [coding : do not run for every row ] > > You can make this much more readable with apply functions. > > result <- apply( > all_combine1, > 1, > function(x){ > p.value <- sapply( > seq_len(nSims), > function(sim){ > gamma1 <- rgamma(x["m"], x["sp(skewness1.5)"], x["scp1"]) > gamma2 <- rgamma(x["n"], x["scp1"], 1) > gamma1 <- gamma1 - x["sp(skewness1.5)"] * x["scp1"] > gamma2 <- gamma2 - x["sp(skewness1.5)"] > c( > equal = t.test(gamma1, gamma2, var.equal=TRUE)$p.value, > unequal = t.test(gamma1,gamma2,var.equal=FALSE)$p.value, > mann = wilcox.test(gamma1,gamma2)$p.value > ) > } > ) > rowMeans(p.value <= alpha) > } > ) > cbind(all_combine1, t(result)) > ir. Thierry Onkelinx > Instituut voor natuur- en bosonderzoek / Research Institute for Nature > and Forest > team Biometrie & Kwaliteitszorg / team Biometrics & Quality Assurance > Kliniekstraat 25 > 1070 Anderlecht > Belgium > > To call in the statistician after the experiment is done may be no > more than asking him to perform a post-mortem examination: he may be > able to say what the experiment died of. ~ Sir Ronald Aylmer Fisher > The plural of anecdote is not data. ~ Roger Brinner > The combination of some data and an aching desire for an answer does > not ensure that a reasonable answer can be extracted from a given body > of data. ~ John Tukey > > > 2016-04-18 9:05 GMT+02:00 tan sj <sj_style_1...@outlook.com>: >> Hi, i am sorry, the output should be values between 0 and 0.1 and not >> supposed to be 1.00, it is because they are type 1 error rate. And now i get >> output 1.00 for several samples,rhis is no correct. The loop do not run for >> every row. i do not know where is my mistake. As i use the same concept on >> normal distribution setup, i get the result. >> >> Sent from my phone >> >> On Thierry Onkelinx <thierry.onkel...@inbo.be>, Apr 18, 2016 2:55 PM wrote: >> Dear anonymous, >> >> The big mistake in the output might be obvious to you but not to >> others. Please make clear what the correct output should be or at >> least what is wrong with the current output. >> >> And please DO read the posting guide which asks you not to post in HTML. >> ir. Thierry Onkelinx >> Instituut voor natuur- en bosonderzoek / Research Institute for Nature >> and Forest >> team Biometrie & Kwaliteitszorg / team Biometrics & Quality Assurance >> Kliniekstraat 25 >> 1070 Anderlecht >> Belgium >> >> To call in the statistician after the experiment is done may be no >> more than asking him to perform a post-mortem examination: he may be >> able to say what the experiment died of. ~ Sir Ronald Aylmer Fisher >> The plural of anecdote is not data. ~ Roger Brinner >> The combination of some data and an aching desire for an answer does >> not ensure that a reasonable answer can be extracted from a given body >> of data. ~ John Tukey >> >> >> 2016-04-17 19:59 GMT+02:00 tan sj <sj_style_1...@outlook.com>: >>> i have combined all the variables in a matrix, and i wish to conduct a >>> simulation row by row. >>> >>> But i found out the code only works for the every first row after a cycle >>> of nine samples. >>> >
Re: [R] R [coding : do not run for every row ]
Hi, i am sorry, the output should be values between 0 and 0.1 and not supposed to be 1.00, it is because they are type 1 error rate. And now i get output 1.00 for several samples,rhis is no correct. The loop do not run for every row. i do not know where is my mistake. As i use the same concept on normal distribution setup, i get the result. Sent from my phone On Thierry Onkelinx, Apr 18, 2016 2:55 PM wrote: Dear anonymous, The big mistake in the output might be obvious to you but not to others. Please make clear what the correct output should be or at least what is wrong with the current output. And please DO read the posting guide which asks you not to post in HTML. ir. Thierry Onkelinx Instituut voor natuur- en bosonderzoek / Research Institute for Nature and Forest team Biometrie & Kwaliteitszorg / team Biometrics & Quality Assurance Kliniekstraat 25 1070 Anderlecht Belgium To call in the statistician after the experiment is done may be no more than asking him to perform a post-mortem examination: he may be able to say what the experiment died of. ~ Sir Ronald Aylmer Fisher The plural of anecdote is not data. ~ Roger Brinner The combination of some data and an aching desire for an answer does not ensure that a reasonable answer can be extracted from a given body of data. ~ John Tukey 2016-04-17 19:59 GMT+02:00 tan sj : > i have combined all the variables in a matrix, and i wish to conduct a > simulation row by row. > > But i found out the code only works for the every first row after a cycle of > nine samples. > > But after check out the code, i don know where is my mistake... > > can anyone pls help > > > #For gamma disribution with equal skewness 1.5 > > #to evaluate the same R function on many different sets of data > library(parallel) > > nSims<-100 > alpha<-0.05 > > #set nrow =nsims because wan storing every p-value simulated > #for gamma distribution with equal skewness > matrix2_equal <-matrix(0,nrow=nSims,ncol=3) > matrix5_unequal<-matrix(0,nrow=nSims,ncol=3) > matrix8_mann <-matrix(0,nrow=nSims,ncol=3) > > # to ensure the reproducity of the result > #here we declare the random seed generator > set.seed(1) > > ## 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) > > #shape parameter for both gamma distribution for equal skewness > #forty five cases for each skewness!! > shp<-rep(16/9,each=5) > > #scale parameter for sample 1 > #scale paramter for sample 2 set as constant 1 > scp1<-c(1,1.5,2,2.5,3) > > #get all combinations with one row of the sample_sizes matrix > ##(use expand.grid)to create a data frame from combination of data > > ss_sd1<- expand.grid(sample_sizes[2,],shp) > scp1<-rep(scp1,9) > > std2<-rep(sd2,9) > > #create a matrix combining the forty five cases of combination of sample > sizes,shape and scale parameter > all_combine1 <- cbind(rep(sample_sizes[1,], 5),ss_sd1,scp1) > > # name the column samples 1 and 2 and standard deviation > colnames(all_combine1) <- c("m", "n","sp(skewness1.5)","scp1") > > ##for the samples sizes into matrix then use a loop for sample sizes > # this loop steps through the all_combine matrix > for(ss in 1:nrow(all_combine1)) > { > #generate samples from the first column and second column > m<-all_combine1[ss,1] > n<-all_combine1[ss,2] > >for (sim in 1:nSims) >{ > #generate 2 random samples from gamma distribution with equal skewness > gamma1<-rgamma(m,all_combine1[ss,3],all_combine1[ss,4]) > gamma2<-rgamma(n,all_combine1[ss,4],1) > > # minus the population mean to ensure that there is no lose of > equality of mean > gamma1<-gamma1-all_combine1[ss,3]*all_combine1[ss,4] > gamma2<-gamma2-all_combine1[ss,3] > > #extract p-value out and store every p-value into matrix > matrix2_equal[sim,1]<-t.test(gamma1,gamma2,var.equal=TRUE)$p.value > matrix5_unequal[sim,2]<-t.test(gamma1,gamma2,var.equal=FALSE)$p.value > matrix8_mann[sim,3] <-wilcox.test(gamma1,gamma2)$p.value > } >##store the result > equal[ss]<- mean(matrix2_equal[,1]<=alpha) > unequal[ss]<-mean(matrix5_unequal[,2]<=alpha) > mann[ss]<- mean(matrix8_mann[,3]<=alpha) > } > > g_equal<-cbind(all_combine1, equal, unequal, mann) > > It is my result but it show a very big mistake TT > m n sp(skewness1.5) scp1 equal unequal mann > 1 10 101.78 1.0 0.360.34 0.34 > 2 10 251.78 1.5 0.840.87 0.90 > 3 25 251.78 2.0 1.001.00 1.00 > 4 25 501.78 2.5 1.001.00 1.00 > 5 25 1001.78 3.0 1.001.00 1.00 > 6 50 251.78 1.0 0.770.77 0.84 > 7 50 1001.78 1.5 1.001.00 1.00 > 8 100 251.78 2.0 1.001.00 1.00 > 9 100 100
Re: [R] R [coding : do not run for every row ]
You can make this much more readable with apply functions. result <- apply( all_combine1, 1, function(x){ p.value <- sapply( seq_len(nSims), function(sim){ gamma1 <- rgamma(x["m"], x["sp(skewness1.5)"], x["scp1"]) gamma2 <- rgamma(x["n"], x["scp1"], 1) gamma1 <- gamma1 - x["sp(skewness1.5)"] * x["scp1"] gamma2 <- gamma2 - x["sp(skewness1.5)"] c( equal = t.test(gamma1, gamma2, var.equal=TRUE)$p.value, unequal = t.test(gamma1,gamma2,var.equal=FALSE)$p.value, mann = wilcox.test(gamma1,gamma2)$p.value ) } ) rowMeans(p.value <= alpha) } ) cbind(all_combine1, t(result)) ir. Thierry Onkelinx Instituut voor natuur- en bosonderzoek / Research Institute for Nature and Forest team Biometrie & Kwaliteitszorg / team Biometrics & Quality Assurance Kliniekstraat 25 1070 Anderlecht Belgium To call in the statistician after the experiment is done may be no more than asking him to perform a post-mortem examination: he may be able to say what the experiment died of. ~ Sir Ronald Aylmer Fisher The plural of anecdote is not data. ~ Roger Brinner The combination of some data and an aching desire for an answer does not ensure that a reasonable answer can be extracted from a given body of data. ~ John Tukey 2016-04-18 9:05 GMT+02:00 tan sj: > Hi, i am sorry, the output should be values between 0 and 0.1 and not > supposed to be 1.00, it is because they are type 1 error rate. And now i get > output 1.00 for several samples,rhis is no correct. The loop do not run for > every row. i do not know where is my mistake. As i use the same concept on > normal distribution setup, i get the result. > > Sent from my phone > > On Thierry Onkelinx , Apr 18, 2016 2:55 PM wrote: > Dear anonymous, > > The big mistake in the output might be obvious to you but not to > others. Please make clear what the correct output should be or at > least what is wrong with the current output. > > And please DO read the posting guide which asks you not to post in HTML. > ir. Thierry Onkelinx > Instituut voor natuur- en bosonderzoek / Research Institute for Nature > and Forest > team Biometrie & Kwaliteitszorg / team Biometrics & Quality Assurance > Kliniekstraat 25 > 1070 Anderlecht > Belgium > > To call in the statistician after the experiment is done may be no > more than asking him to perform a post-mortem examination: he may be > able to say what the experiment died of. ~ Sir Ronald Aylmer Fisher > The plural of anecdote is not data. ~ Roger Brinner > The combination of some data and an aching desire for an answer does > not ensure that a reasonable answer can be extracted from a given body > of data. ~ John Tukey > > > 2016-04-17 19:59 GMT+02:00 tan sj : >> i have combined all the variables in a matrix, and i wish to conduct a >> simulation row by row. >> >> But i found out the code only works for the every first row after a cycle >> of nine samples. >> >> But after check out the code, i don know where is my mistake... >> >> can anyone pls help >> >> >> #For gamma disribution with equal skewness 1.5 >> >> #to evaluate the same R function on many different sets of data >> library(parallel) >> >> nSims<-100 >> alpha<-0.05 >> >> #set nrow =nsims because wan storing every p-value simulated >> #for gamma distribution with equal skewness >> matrix2_equal <-matrix(0,nrow=nSims,ncol=3) >> matrix5_unequal<-matrix(0,nrow=nSims,ncol=3) >> matrix8_mann <-matrix(0,nrow=nSims,ncol=3) >> >> # to ensure the reproducity of the result >> #here we declare the random seed generator >> set.seed(1) >> >> ## 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) >> >> #shape parameter for both gamma distribution for equal skewness >> #forty five cases for each skewness!! >> shp<-rep(16/9,each=5) >> >> #scale parameter for sample 1 >> #scale paramter for sample 2 set as constant 1 >> scp1<-c(1,1.5,2,2.5,3) >> >> #get all combinations with one row of the sample_sizes matrix >> ##(use expand.grid)to create a data frame from combination of data >> >> ss_sd1<- expand.grid(sample_sizes[2,],shp) >> scp1<-rep(scp1,9) >> >> std2<-rep(sd2,9) >> >> #create a matrix combining the forty five cases of combination of sample >> sizes,shape and scale parameter >> all_combine1 <- cbind(rep(sample_sizes[1,], 5),ss_sd1,scp1) >> >> # name the column samples 1 and 2 and standard deviation >> colnames(all_combine1) <- c("m", "n","sp(skewness1.5)","scp1") >> >> ##for the samples sizes into matrix then use a loop for sample sizes >> # this loop steps through the all_combine matrix >> for(ss in 1:nrow(all_combine1)) >> { >> #generate samples from the first column and second column >> m<-all_combine1[ss,1] >> n<-all_combine1[ss,2] >> >>for (sim in 1:nSims) >>
Re: [R] R [coding : do not run for every row ]
Dear anonymous, The big mistake in the output might be obvious to you but not to others. Please make clear what the correct output should be or at least what is wrong with the current output. And please DO read the posting guide which asks you not to post in HTML. ir. Thierry Onkelinx Instituut voor natuur- en bosonderzoek / Research Institute for Nature and Forest team Biometrie & Kwaliteitszorg / team Biometrics & Quality Assurance Kliniekstraat 25 1070 Anderlecht Belgium To call in the statistician after the experiment is done may be no more than asking him to perform a post-mortem examination: he may be able to say what the experiment died of. ~ Sir Ronald Aylmer Fisher The plural of anecdote is not data. ~ Roger Brinner The combination of some data and an aching desire for an answer does not ensure that a reasonable answer can be extracted from a given body of data. ~ John Tukey 2016-04-17 19:59 GMT+02:00 tan sj: > i have combined all the variables in a matrix, and i wish to conduct a > simulation row by row. > > But i found out the code only works for the every first row after a cycle of > nine samples. > > But after check out the code, i don know where is my mistake... > > can anyone pls help > > > #For gamma disribution with equal skewness 1.5 > > #to evaluate the same R function on many different sets of data > library(parallel) > > nSims<-100 > alpha<-0.05 > > #set nrow =nsims because wan storing every p-value simulated > #for gamma distribution with equal skewness > matrix2_equal <-matrix(0,nrow=nSims,ncol=3) > matrix5_unequal<-matrix(0,nrow=nSims,ncol=3) > matrix8_mann <-matrix(0,nrow=nSims,ncol=3) > > # to ensure the reproducity of the result > #here we declare the random seed generator > set.seed(1) > > ## 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) > > #shape parameter for both gamma distribution for equal skewness > #forty five cases for each skewness!! > shp<-rep(16/9,each=5) > > #scale parameter for sample 1 > #scale paramter for sample 2 set as constant 1 > scp1<-c(1,1.5,2,2.5,3) > > #get all combinations with one row of the sample_sizes matrix > ##(use expand.grid)to create a data frame from combination of data > > ss_sd1<- expand.grid(sample_sizes[2,],shp) > scp1<-rep(scp1,9) > > std2<-rep(sd2,9) > > #create a matrix combining the forty five cases of combination of sample > sizes,shape and scale parameter > all_combine1 <- cbind(rep(sample_sizes[1,], 5),ss_sd1,scp1) > > # name the column samples 1 and 2 and standard deviation > colnames(all_combine1) <- c("m", "n","sp(skewness1.5)","scp1") > > ##for the samples sizes into matrix then use a loop for sample sizes > # this loop steps through the all_combine matrix > for(ss in 1:nrow(all_combine1)) > { > #generate samples from the first column and second column > m<-all_combine1[ss,1] > n<-all_combine1[ss,2] > >for (sim in 1:nSims) >{ > #generate 2 random samples from gamma distribution with equal skewness > gamma1<-rgamma(m,all_combine1[ss,3],all_combine1[ss,4]) > gamma2<-rgamma(n,all_combine1[ss,4],1) > > # minus the population mean to ensure that there is no lose of > equality of mean > gamma1<-gamma1-all_combine1[ss,3]*all_combine1[ss,4] > gamma2<-gamma2-all_combine1[ss,3] > > #extract p-value out and store every p-value into matrix > matrix2_equal[sim,1]<-t.test(gamma1,gamma2,var.equal=TRUE)$p.value > matrix5_unequal[sim,2]<-t.test(gamma1,gamma2,var.equal=FALSE)$p.value > matrix8_mann[sim,3] <-wilcox.test(gamma1,gamma2)$p.value > } >##store the result > equal[ss]<- mean(matrix2_equal[,1]<=alpha) > unequal[ss]<-mean(matrix5_unequal[,2]<=alpha) > mann[ss]<- mean(matrix8_mann[,3]<=alpha) > } > > g_equal<-cbind(all_combine1, equal, unequal, mann) > > It is my result but it show a very big mistake TT > m n sp(skewness1.5) scp1 equal unequal mann > 1 10 101.78 1.0 0.360.34 0.34 > 2 10 251.78 1.5 0.840.87 0.90 > 3 25 251.78 2.0 1.001.00 1.00 > 4 25 501.78 2.5 1.001.00 1.00 > 5 25 1001.78 3.0 1.001.00 1.00 > 6 50 251.78 1.0 0.770.77 0.84 > 7 50 1001.78 1.5 1.001.00 1.00 > 8 100 251.78 2.0 1.001.00 1.00 > 9 100 1001.78 2.5 1.001.00 1.00 > 10 10 101.78 3.0 1.001.00 1.00 > 11 10 251.78 1.0 0.480.30 0.55 > 12 25 251.78 1.5 0.990.99 1.00 > 13 25 501.78 2.0 1.001.00 1.00 > 14 25 1001.78 2.5 1.001.00 1.00 > 15 50 251.78 3.0 1.001.00 1.00 > 16 50 1001.78 1.0 0.970.97 1.00 > 17 100 251.78 1.5 1.00
[R] R [coding : do not run for every row ]
i have combined all the variables in a matrix, and i wish to conduct a simulation row by row. But i found out the code only works for the every first row after a cycle of nine samples. But after check out the code, i don know where is my mistake... can anyone pls help #For gamma disribution with equal skewness 1.5 #to evaluate the same R function on many different sets of data library(parallel) nSims<-100 alpha<-0.05 #set nrow =nsims because wan storing every p-value simulated #for gamma distribution with equal skewness matrix2_equal <-matrix(0,nrow=nSims,ncol=3) matrix5_unequal<-matrix(0,nrow=nSims,ncol=3) matrix8_mann <-matrix(0,nrow=nSims,ncol=3) # to ensure the reproducity of the result #here we declare the random seed generator set.seed(1) ## 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) #shape parameter for both gamma distribution for equal skewness #forty five cases for each skewness!! shp<-rep(16/9,each=5) #scale parameter for sample 1 #scale paramter for sample 2 set as constant 1 scp1<-c(1,1.5,2,2.5,3) #get all combinations with one row of the sample_sizes matrix ##(use expand.grid)to create a data frame from combination of data ss_sd1<- expand.grid(sample_sizes[2,],shp) scp1<-rep(scp1,9) std2<-rep(sd2,9) #create a matrix combining the forty five cases of combination of sample sizes,shape and scale parameter all_combine1 <- cbind(rep(sample_sizes[1,], 5),ss_sd1,scp1) # name the column samples 1 and 2 and standard deviation colnames(all_combine1) <- c("m", "n","sp(skewness1.5)","scp1") ##for the samples sizes into matrix then use a loop for sample sizes # this loop steps through the all_combine matrix for(ss in 1:nrow(all_combine1)) { #generate samples from the first column and second column m<-all_combine1[ss,1] n<-all_combine1[ss,2] for (sim in 1:nSims) { #generate 2 random samples from gamma distribution with equal skewness gamma1<-rgamma(m,all_combine1[ss,3],all_combine1[ss,4]) gamma2<-rgamma(n,all_combine1[ss,4],1) # minus the population mean to ensure that there is no lose of equality of mean gamma1<-gamma1-all_combine1[ss,3]*all_combine1[ss,4] gamma2<-gamma2-all_combine1[ss,3] #extract p-value out and store every p-value into matrix matrix2_equal[sim,1]<-t.test(gamma1,gamma2,var.equal=TRUE)$p.value matrix5_unequal[sim,2]<-t.test(gamma1,gamma2,var.equal=FALSE)$p.value matrix8_mann[sim,3] <-wilcox.test(gamma1,gamma2)$p.value } ##store the result equal[ss]<- mean(matrix2_equal[,1]<=alpha) unequal[ss]<-mean(matrix5_unequal[,2]<=alpha) mann[ss]<- mean(matrix8_mann[,3]<=alpha) } g_equal<-cbind(all_combine1, equal, unequal, mann) It is my result but it show a very big mistake TT m n sp(skewness1.5) scp1 equal unequal mann 1 10 101.78 1.0 0.360.34 0.34 2 10 251.78 1.5 0.840.87 0.90 3 25 251.78 2.0 1.001.00 1.00 4 25 501.78 2.5 1.001.00 1.00 5 25 1001.78 3.0 1.001.00 1.00 6 50 251.78 1.0 0.770.77 0.84 7 50 1001.78 1.5 1.001.00 1.00 8 100 251.78 2.0 1.001.00 1.00 9 100 1001.78 2.5 1.001.00 1.00 10 10 101.78 3.0 1.001.00 1.00 11 10 251.78 1.0 0.480.30 0.55 12 25 251.78 1.5 0.990.99 1.00 13 25 501.78 2.0 1.001.00 1.00 14 25 1001.78 2.5 1.001.00 1.00 15 50 251.78 3.0 1.001.00 1.00 16 50 1001.78 1.0 0.970.97 1.00 17 100 251.78 1.5 1.001.00 1.00 18 100 1001.78 2.0 1.001.00 1.00 19 10 101.78 2.5 1.001.00 1.00 20 10 251.78 3.0 1.001.00 1.00 21 25 251.78 1.0 0.630.63 0.71 22 25 501.78 1.5 0.990.99 0.99 23 25 1001.78 2.0 1.001.00 1.00 24 50 251.78 2.5 1.001.00 1.00 25 50 1001.78 3.0 1.001.00 1.00 26 100 251.78 1.0 0.830.90 0.88 27 100 1001.78 1.5 1.001.00 1.00 28 10 101.78 2.0 1.001.00 1.00 29 10 251.78 2.5 1.001.00 1.00 30 25 251.78 3.0 1.001.00 1.00 31 25 501.78 1.0 0.710.66 0.81 32 25 1001.78 1.5 1.001.00 1.00 33 50 251.78 2.0 1.001.00 1.00 34 50 1001.78 2.5 1.001.00 1.00 35 100 251.78 3.0 1.001.00 1.00 36 100 1001.78 1.0 0.990.99 1.00 37 10 101.78 1.5 0.650.65 0.71 38 10 251.78 2.0 1.001.00 1.00 39 25 251.78 2.5 1.001.00 1.00 40 25 501.78