Hi,I am currently doing a project in which we are to investigate the size and
power of three different one sample tests over three different distributions
using a number of different sample sizes and values for mu1. I have written a
function and was trying to get my answer for each test into the right position
in an array so the output is the power of each combination of test,
distribution, sample size and mu1, however my code is not working and i keep
getting an error message returned. My code is:
proj1.sim<-function(){
tests<-c("t","Wilcoxon","bootstrap")
distns<-c("Normal","Uniform","Beta")
sample.sizes<-c("5","10","25","50","100")
mu1s<-c("0","0.5","1","1.5","2")
res<-array(0,c(length(tests),length(distns),length(sample.sizes),length(mu1s)))
dimnames(res)<-list(tests,distns,sample.sizes,mu1s)
for(test in tests){
for(distn in distns){
for(sample.size in sample.sizes){
for(mu1 in mu1s){
result<-hypoth.test(sample.size,distn,test,mu1)
res[test,distn,sample.size,mu1]<-result
}}}}
output(res)
}
hypoth.test<-function(sample.size,distn,test,mu1){
#Purpose:
#Samples n values from the chosen distribution
#Inputs:
#n - sample size of data to generate
#distn - the distribution to generate data from
#test - which test to use
#H0 - the null hypothesis
#mu.true - the true value of the mean under the chosen distribution
#sigma.true - the true value of the variance under the chosen distribution
#alpha - trimming level
#K - number of simulations to perform
#Outputs:
#reject.null - the number of times we reject the null hypothesis
H0<-0
alpha<-0.05
K<-1100
sigma<-1
#create vectors for the results
reject<-numeric(K)
mu1<-numeric(5)
sample.size<-numeric(5)
#loop through the observations the required number of K simulations
for(i in 1:K){
#determine whether the data comes from a Normal or Uniform distribution
if(distn=="Normal"){
#Normal distribution
dat<-rnorm(n=sample.size,mean=mu1,sd=sigma)
} else if(distn=="Uniform"){
dat<-runif(n=sample.size,min=-sqrt(3)+mu1, max=sqrt(3)+mu1)
} else {
z<-rbeta(n=sample.size,shape1=0.8,shape2=7.2)
dat<-((z-0.1)*(sigma/0.1))+H0
}
#determine which test is required to sample the observations
if(test=="t"){
#t-test
res<-t.test(dat,alternative="two.sided",mu=H0)
} else if(test=="Wilcoxon"){
res<-wilcox.test(dat,alternative="two.sided",mu=H0)
} else {
nboot<-(K-1)
n<-length(dat)
bootmean<-NULL
for(i in 1:nboot){
rdata<-sample(dat,n,replace=T)
bootmean[i]<-mean(rdata)
}
nlo<-round((nboot+1)*(alpha/2))
nhi<-round((nboot+1)*((1-alpha)/2))
bootmean<-sort(bootmean)
low<-bootmean[nlo]
high<-bootmean[nhi]
res<-c(low,high)
}
#record whether we reject the null or not i.e. whether the p-value is less
#than or equal to the given alpha level(reject), or not (do not reject)
if(test=="bootstrap"){
reject[i]<-(H0<low|H0>high)
} else {
reject[i]<-(res$p.value<=alpha)
}
#sum together the total number of null hypothesis rejected
reject.null<-sum(reject)
}
power<-(reject.null)/K
return(power)
} Would you be able to tell me where I am going wrong? Thanks,Nicola Smith
_________________________________________________________________
[[elided Hotmail spam]]
[[alternative HTML version deleted]]