I have a data set on counts of amphibians in buckets around a pond, which I have detailed in a previous post:

Circular statistics for discrete, irregular sector data

To conduct a test of circular uniformity, I have followed the recommendation of Pewsey et al. (2013), who suggested using "parametric bootstrapping" to calculate the P-value for the Choulakian (1994) version of the Watson U2 statistic. A modified version of the R code (which I have customized for my data set) is provided below.

My question pertains to how such a procedure should be termed. Pewsey et al. (2013) refer to it as a "parametric bootstrap", however I am a little confused as to why they are using this term. Usually, bootstrapping is done to put a confidence interval around a parameter estimate....whereas, here, they are using it to simulate a null distribution for the purpose of calculating a P-value...which seems (to me) to fall into the more general realm of a "Monte Carlo test"/"randomization test".

I understand that this could be considered parametric because a certain distribution (uniform) is assumed...but is it appropriate to call it a bootstrap procedure? Is it a fusion (of sorts)?

Watson's U2 Parmetric Bootstrap function

WUsqPBoot <- function(...){

    dots <- list(...)  #pass the arguments as a list
    b_counts <- dots[[1]]  #the bucket counts for the observed data
    arclength <- dots[[2]] #the arclengths for each bucket
    B <- dots[[3]]  #the number of desired iterations

    nbuckets <- 23; buckets <- seq(1:nbuckets) #create sequence from 1 to 23
    bucky <- rep(buckets, arclength)

    n <- sum(b_counts); Prob <- arclength/360; Eval <- Prob*n  #calculate the expected counts based on the arclengths

    #Calculate the U2 statistic

    WUsq <- function(counts){
        Dval <- counts-Eval; Sval <- cumsum(Dval); Sbar <- sum(Prob*Sval)
        tstat <- sum((Sval - Sbar)*(Sval - Sbar)*Prob)/n; return(tstat)

    tstat <- WUsq(b_counts); nxtrm <- 1  #calculate U2 for the observed data
    #simulate the null distribution (with sample size equal to the observed data)

    for(b in 2:(B+1)){
        ubucktot <- 0
        for(j in 1:nbuckets){
            ubucktot[j] <- 0

        ubucky <- sample(bucky, size=n, replace=TRUE)
        for(j in 1:n){
            ubucktot[ubucky[j]] <- ubucktot[ubucky[j]]+1

        tstat[b] <- WUsq(ubucktot)

        if(tstat[b] >= tstat[1]){
            nxtrm <- nxtrm + 1
    pval <- nxtrm/(B+1); return(list(pval, tstat))  #calculate and return the P-value    

B <- 9999  #number of iterations;
bootres <- WUsqPBoot(bucket_counts, arcl, B);
pval <- bootres[[1]]; WUsqval <- bootres[[2]]; WUsqval[1]; pval
  • $\begingroup$ I think saying "monte carlo simulation" is fine. I've not seem many people refer to monte carlo methods as parametric boostrapping. That name's a bit fringe in my opinion $\endgroup$
    – Jon
    Aug 18 '17 at 22:27

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.