macro
autotest rawdata;
  times B.

mconstant B n normcorr i permcorr pvalue 
mcolumn rawdata nscore nscsave x2 x3 x4 lagraw lagscore lagsave c100 c101 c102 c103
mmatrix M1

default B=1000

plug 

# create regular lag plot and display c
lag 1 rawdata lagraw.
plot rawdata*lagraw;
  title "Raw Data Lag Plot";
  symbol.


# compute normal scores and store in x1
let n=count(rawdata)
nscores rawdata nscore.


# create normal scores lag plot and display correlation
lag 1 nscore lagscore.
Plot nscore*lagscore;
  title "Normal Scores Lag Plot";
  symbol.

# save unpermuted normal and lag scores
let nscsave = nscore
let lagsave = lagscore

# compute absolute value normal scores correlation, abnormcorr
Correlation nscore lagscore M1.
copy M1 x3 - x4.
let normcorr = absolute(x4(1)) 

# compute permutation test pvalue
let pvalue = 0
do i=1:B
  sample n nscore nscore.
  lag 1 nscore lagscore.
  correlation nscore lagscore M1.
  copy M1 x3 - x4.
  let permcorr = absolute(x4(1))
  if permcorr >= normcorr
    let pvalue = pvalue + 1
  endif
enddo
let pvalue = pvalue/B

# output statistics

# raw data autocorrelation
corr rawdata lagraw;
  nopvalue.

# normal score autocorrelation
let nscore = nscsave
let lagscore = lagsave
corr nscore lagscore;
  nopvalue.

let c100 = "  p-value for testing null hypothesis of no autocorrelation:  "
  copy pvalue c101
  text c101 c102;
    significant 4.
  concatenate c100 c102 c103
  write c103;
    file 'TERMINAL'.

endmacro