library(wavethresh) # Toy data set of length 2^8 x<-rnorm(2^8,0,1) ########################################################## # INPUT: data sample x # # the block length used is 2^K # # the family.number for R routine wd() is wavelet_basis # # (e.g. wavelet_basis=1 leads to Haar wavelets) # ########################################################## DWTquadboot<-function(x,K,wavelet_basis){ n<-length(x) l<-log2(n) wx<-wd(x,filter.number=wavelet_basis,family="DaubExPhase") help<-wx q<-matrix(0,l,n/2) for(i in 1:l){ q[l-i+1,]<-kronecker(accessD(wx,level=(l-i)),rep(1,2^(i-1))) } q block_length<-2^K block_length index<-sample(seq(1,n/2,by=block_length),((n/2)/block_length),replace=TRUE) index qstern<-matrix(0,l,n/2) for(i in 1:((n/2)/block_length)){ qstern[,((i-1)*block_length+1):(i*block_length)]<-q[,index[i]:(index[i]+block_length-1)] } qstern for(j in 0:(l-1)){ help<-putD(help,v=qstern[j+1,seq(1,(n/2),by=2^(l-1-j))],level=j) } wr(help) } # This example leads to a bootstrap sample generated from data sample x # using block length 2^3 and family.number=1 xboot<-DWTquadboot(x,3,1)