I have written a short script to estimate the size of a test of non-constant
mean in an AR(1)  time series. When I run the simulation on my PC (R version
2.7.1), I get the expected result: an empirical size much larger than the
nominal size. On the Red Hat machine (R version 2.7.2) in my department,
however, I  get p-values > .45 for every simulated test. Below is my
simulation code (uses functions from the library waveslim - both computers
have the most current version). I'm trying to reconcile the difference
between these two sets of results, as the Linux machine is significantly
faster and I would much prefer to run my simulations there. Does anyone have
an idea of the source of the discrepancy? Thank you in advance for any help
you can provide, and please excuse the inelegant coding!

# These functions define the test. 
fitphi <- function(data,x,sub){
        y<-1:length(x)
        y<-(y-.5)/length(y)
        (1/length(data))*sum(data*cos(pi*sub*y))
}

mos <- function(data, x){
        rdata <- rank(data)/(length(x)+1)
        Rn <- rep(0, length(x))
        coeff <- Rn
        for (i in 1:length(x)){
                coeff[i] <- fitphi(data,x,i)
        }
        
        for (j in 1:length(x)){
                Rn[j]<-(24/j)*length(data)*sum((coeff[1:j])^2)
        }
        max(Rn)
}

#The function used to find the wavelet bootstrap replicate of the original
series
wavestrap <- function (y, wf = "d8", J = log(length(y), 2) - 1, infl =
sqrt(1.1)){
    y.dwt <- dwt(y, wf, n.levels = J)
    resample.dwt <- y.dwt
    for (i in 1:(length(y.dwt)-1)) {
            resample.dwt[[i]] <- sample(y.dwt[[i]]*infl, replace = TRUE)
    }
    idwt(resample.dwt)
}

#The simulation:
arcoeff<-.9 #AR(1) Coefficient
T<-128 #Realization Length
bsreps<-300 #Number of Bootstrap Replicates used for test
nosims<-20 #Number of Simulations

wspval<-rep(0,nosims) #initialize vector of p-values
#outer loop for recording calculated p-values
for (j in 1:nosims){
        series<-arima.sim(T, model=list(ar=arcoeff)) #series would be the 
observed
AR(1) series
        test<-mos(series,1:length(series)) #observed value of test statistic

        wsdist<-rep(0,bsreps) #initialize vector for wavelet bootstrap null
distribution
                #innner loop for finding null distribution via wavelet bootstrap
                for (i in 1:bsreps){
                        wsrep<-wavestrap(series, wf = "d4", infl=1)
                        wsdist[i]<-mos(wsrep,1:length(series))
                }
        wspval[j]<-sum(wsdist>=test)/length(wsdist) #find p-value (one-sided 
test)
}

-- 
View this message in context: 
http://www.nabble.com/Wavelet-Bootstrap-Size-Simulation-tp22191678p22191678.html
Sent from the R help mailing list archive at Nabble.com.

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

Reply via email to