* -----------8.1 ----------------------------------------------- ;
data prob81 ;
  input Counts  @@ ;
  obs = _n_ ;    bootid = obs ;     title ' ' ;
  cards ;
55 140 91 122 111 185 203 101
76 145 95 101 196 45 299 226
65 70 196 72 121 171 151 113
112 67 276 125 100 81 122 71
158 78 162 128 96 79 67 119
       ;
 proc print data = prob81 ;
* calculate sample statistics ;
 proc means data = prob81 n mean stddev cv ; run ;
* Here information is provided using MACRO variables ;
* list the data set and variable name ;
%let data = prob81 ;  %let var = counts ;
* list the sample size ;
%let samplesz = 40 ;
* set the bootstrap sample size ;
%let bootsampsz = 5000 ;
* list the observed mean, std, and cv ;
%let obsmean = 124.78 ;  %let obsstd = 58.45 ;  %let obscv = 46.84 ;
 add ‘Bootstrap MSE macro ’
* -----------8.2 ------------------------------------------------ ;
 attach the ‘Bootstrap pivot macro ’ with the SAS commands from above
* -----------8.11 a and b --------------------------------------- ;
data prob811 ;
 input MH	FH	DH ;
  id = _n_ ;     bootid = _n_ ;     title ' ' ;
 cards ;
67	72	70
64	74	69
62	71	65
64	71	64
69	68	66
70	71	65
65	71	64
66	70	66
63	66	60
74	73	70
60	72	66
66	67	66
60	65	60
65	65	68
65	71	65
66	70	65
67	69	67
63	74	64
65	68	63
62	68	64
61	71	65
65	76	66
64	72	65
63	64	64
61	66	62
62	68	66
70	72	66
63	72	64
65	68	68
60	71	62
66	66	62
65	72	67
69	71	69
63	68	64
   ;
 proc print ; run ;
 proc reg data = prob811 outest = origregres tableout ;
  model dh = mh fh ;
  output out = datares  p = pred  r = res ;   run ;
 proc print data = datares (obs = 34) ; 
 title 'Residuals from regression on original data' ; run ;
* Here information is provided using MACRO variables ;
* list the data set and variable name ;
%let data = prob811 ;  
%let var = dh ;  %let covar1 = mh ;  %let covar2 = fh ;
* list the sample size ;
%let samplesz = 34 ;
* set the bootstrap sample size ;
%let bootsampsz = 5000 ;
* list the observed F statistics ;
%let fglobal = 11.49 ;  %let fcov1 = 3.57**2 ;  %let fcov2 = 2.32**2 ;
add ‘Bootstrap Mult Reg tests macro ’ and from
proc reg data = bootreg  outest = bootregres tableout noprint ; 
on from the ‘Bootstrap Mult Reg CI macro ’

* ----------- 9.4 ------------------------------------------------- ;
data prob94 ;
  input Media Fertilizer Day40 @@ ;
  f1 = (fertilizer = 1) ;     f2 = (fertilizer = 2) ;
  m1 = (media = 1) ;    m2 = (media = 2) ;    m3 = (media = 3) ;
  fm11 = f1*m1 ;  fm12 = f1*m2 ; fm13 = f1*m3 ;
  fm21 = f2*m1 ;  fm22 = f2*m2 ; fm23 = f2*m3 ;
  mergevar = 'y' ;
  cards ;
1 1 240    1 1 320    1 1 227    1 2 710
1 2 800    1 2 1152   2 1 502    2 1 134
2 1 240    2 2 192    2 2 214    2 2 384
3 1 147    3 1 6      3 1 332    3 2 294
3 2 70     3 2 74
     ;
 * Fit a cell means model to the data ;
 proc reg data = prob94 outest = parests ;
  model day40 = fm11 fm12 fm13 fm21 fm22 fm23 / noint ;    run ;
 proc print data = parests ; run ;
 data alpars ; set parests ;
  f1 = mean(fm11,fm12,fm13) ;    f2 = mean(fm21,fm22,fm23) ;
  m1 = mean(fm11,fm21) ;    m2 = mean(fm12,fm22) ;    m3 = mean(fm13,fm23) ;
  mu = mean(f1,f2) ;
  alpha1 = f1 -mu ;    alpha2 = f2 -mu ;
  beta1 = m1 -mu ;    beta2 = m2 -mu ;    beta3 = m3 -mu ;
  gamma11 = fm11 -f1 -m1 +mu ;     gamma12 = fm12 -f1 -m2 +mu ;
  gamma13 = fm13 -f1 -m3 +mu ;     gamma21 = fm21 -f2 -m1 +mu ;
  gamma22 = fm22 -f2 -m2 +mu ;     gamma23 = fm23 -f2 -m3 +mu ;
  mergevar = 'y' ;
  keep mu alpha1 alpha2 beta1 beta2 beta3
       gamma11 gamma12 gamma13 gamma21 gamma22
       gamma23 mergevar ;     run ;
  proc print ; run ;
  data both ; merge prob94 alpars ; by mergevar ;
  alignF = day40 -mu -beta1*m1 -beta2*m2 -beta3*m3
       -gamma11*fm11 -gamma12*fm12 -gamma13*fm13
       -gamma21*fm21 -gamma22*fm22 -gamma23*fm23 ;
  alignM = day40 -mu -alpha1*f1 -alpha2*f2
       -gamma11*fm11 -gamma12*fm12 -gamma13*fm13
       -gamma21*fm21 -gamma22*fm22 -gamma23*fm23 ;
  alignFM = day40 -mu -alpha1*f1 -alpha2*f2
-beta1*m1 -beta2*m2 -beta3*m3 ;     run ;
 proc print data = both ; 
  var fertilizer media day40 alignF alignM alignFM ; run ;
 proc rank data = both out = rankboth ;
  var alignF alignM alignFM ;
  ranks  rkalignF rkalignM rkalignFM ;
  run ;
 proc glm data = rankboth ;
  class media fertilizer ;
 model rkalignF rkalignM rkalignFM = media fertilizer media*fertilizer; 
  run ;