The MULTTEST Procedure

Example 80.1 Cochran-Armitage Test with Permutation Resampling

(View the complete code for this example.)

This example, from Keith Soper at Merck, illustrates the exact permutation Cochran-Armitage test carried out on permutation resamples. In the following data set, each observation represents an animal. The binary variables S1 and S2 indicate two tumor types, with 0s indicating no tumor (failure) and 1 indicating a tumor (success); note that they have perfect negative association. The grouping variable is Dose.

data a;
   input S1 S2 Dose @@;
   datalines;
0 1 1   1 0 1   0 1 1
0 1 1   0 1 1   1 0 1
1 0 2   1 0 2   0 1 2
1 0 2   0 1 2   1 0 2
1 0 3   1 0 3   1 0 3
0 1 3   0 1 3   1 0 3
;
proc multtest data=a permutation nsample=10000 seed=36607 outperm=pmt;
   test ca(S1 S2 / permutation=10 uppertailed);
   class Dose;
   contrast 'CA Linear Trend' 0 1 2;
run;
proc print data=pmt;
run;

The PROC MULTTEST statement requests 10,000 permutation resamples. The OUTPERM= option creates an output SAS data set pmt used for the exact permutation distribution computed for the CA test.

The TEST statement specifies an upper-tailed Cochran-Armitage linear trend test for S1 and S2. The cutoff for exact permutation calculations is 10, as specified with the PERMUTATION= option in the TEST statement. Since S1 and S2 have 10 and 8 successes, respectively, PROC MULTTEST uses exact permutation distributions to compute the p-values for both variables.

The groups for the CA test are the levels of Dose from the CLASS statement. The trend coefficients applied to these groups are 0, 1, and 2, respectively, as specified in the CONTRAST statement.

Finally, the PROC PRINT statement displays the SAS data set pmt, which contains the permutation distributions.

The results from this analysis are displayed in Output 80.1.1 through Output 80.1.5. You should check the "Model Information" table to verify that the analysis specifications are correct.

Output 80.1.1: Cochran-Armitage Test with Permutation Resampling

The Multtest Procedure

Model Information
Test for discrete variablesCochran-Armitage
Exact permutation distribution usedEverywhere
Tails for discrete testsUpper-tailed
Strata weightsNone
P-value adjustmentPermutation
Number of resamples10000
Seed36607


The label and coefficients from the CONTRAST statement are shown in Output 80.1.2.

Output 80.1.2: Contrast Coefficients

Contrast Coefficients
ContrastDose
123
CA Linear Trend012


Output 80.1.3 displays summary statistics for the two test variables, S1 and S2. The Count column lists the number of successes for each level of the CLASS variable, Dose. The NumObs column lists the sample size, and the Percent column lists the percentage of successes in the sample.

Output 80.1.3: Summary Statistics

Discrete Variable Tabulations
VariableDoseCountNumObsPercent
S112633.33
S124666.67
S134666.67
S214666.67
S222633.33
S232633.33


The Raw column in Output 80.1.4 contains the p-values from the CA test, and the Permutation column contains the permutation-adjusted p-values.

Output 80.1.4: Resulting p-Values

p-Values
VariableContrastRawPermutation
S1CA Linear Trend0.19930.4009
S2CA Linear Trend0.92201.0000


This table shows that, for S1, the adjusted p-value is approximately twice the raw p-value. In fact, resamples with small (large) p-values for S1 have large (small) p-values for S2 due to the perfect negative association of the variables, and hence the permutation-adjusted p-value for S1 should be ; the difference is due to resampling error. For the same reason, since the raw p-value for S2 is 0.9220, the adjusted p-value equals 1. The permutation p-values for S1 and S2 also happen to be the Bonferroni-adjusted p-values for this example.

The OUTPERM= data set is displayed in Output 80.1.5, which contains the exact permutation distributions for S1 and S2 in terms of cumulative probabilities.

Output 80.1.5: Exact Permutation Distribution

Obs_contrast__var__value_upper_p
1CA Linear TrendS101.00000
2CA Linear TrendS111.00000
3CA Linear TrendS121.00000
4CA Linear TrendS131.00000
5CA Linear TrendS141.00000
6CA Linear TrendS150.99966
7CA Linear TrendS160.99609
8CA Linear TrendS170.97827
9CA Linear TrendS180.92205
10CA Linear TrendS190.80070
11CA Linear TrendS1100.61011
12CA Linear TrendS1110.38989
13CA Linear TrendS1120.19930
14CA Linear TrendS1130.07795
15CA Linear TrendS1140.02173
16CA Linear TrendS1150.00391
17CA Linear TrendS1160.00034
18CA Linear TrendS1170.00000
19CA Linear TrendS1180.00000
20CA Linear TrendS1190.00000
21CA Linear TrendS1200.00000
22CA Linear TrendS201.00000
23CA Linear TrendS211.00000
24CA Linear TrendS221.00000
25CA Linear TrendS230.99966
26CA Linear TrendS240.99609
27CA Linear TrendS250.97827
28CA Linear TrendS260.92205
29CA Linear TrendS270.80070
30CA Linear TrendS280.61011
31CA Linear TrendS290.38989
32CA Linear TrendS2100.19930
33CA Linear TrendS2110.07795
34CA Linear TrendS2120.02173
35CA Linear TrendS2130.00391
36CA Linear TrendS2140.00034
37CA Linear TrendS2150.00000
38CA Linear TrendS2160.00000