The ANOVA Procedure

Example 26.5 Strip-Split Plot

(View the complete code for this example.)

In this example, four different fertilizer treatments are laid out in vertical strips, which are then split into subplots with different levels of calcium. Soil type is stripped across the split-plot experiment, and the entire experiment is then replicated three times. The dependent variable is the yield of winter barley. The data come from the notes of G. Cox and A. Rotti.

The input data are the 96 values of Y, arranged so that the calcium value (Calcium) changes most rapidly, then the fertilizer value (Fertilizer), then the Soil value, and, finally, the Rep value. Values are shown for Calcium (0 and 1); Fertilizer (0, 1, 2, 3); Soil (1, 2, 3); and Rep (1, 2, 3, 4). The following example produces Output 26.5.1, Output 26.5.2, Output 26.5.3, and Output 26.5.4.

title1 'Strip-split Plot';
data Barley;
   do Rep=1 to 4;
      do Soil=1 to 3; /* 1=d 2=h 3=p */
         do Fertilizer=0 to 3;
            do Calcium=0,1;
               input Yield @;
               output;
            end;
         end;
      end;
   end;
   datalines;
4.91 4.63 4.76 5.04 5.38 6.21 5.60 5.08
4.94 3.98 4.64 5.26 5.28 5.01 5.45 5.62
5.20 4.45 5.05 5.03 5.01 4.63 5.80 5.90
6.00 5.39 4.95 5.39 6.18 5.94 6.58 6.25
5.86 5.41 5.54 5.41 5.28 6.67 6.65 5.94
5.45 5.12 4.73 4.62 5.06 5.75 6.39 5.62
4.96 5.63 5.47 5.31 6.18 6.31 5.95 6.14
5.71 5.37 6.21 5.83 6.28 6.55 6.39 5.57
4.60 4.90 4.88 4.73 5.89 6.20 5.68 5.72
5.79 5.33 5.13 5.18 5.86 5.98 5.55 4.32
5.61 5.15 4.82 5.06 5.67 5.54 5.19 4.46
5.13 4.90 4.88 5.18 5.45 5.80 5.12 4.42
;
proc anova data=Barley;
   class Rep Soil Calcium Fertilizer;
   model Yield =
           Rep
           Fertilizer Fertilizer*Rep
           Calcium Calcium*Fertilizer Calcium*Rep(Fertilizer)
           Soil Soil*Rep
           Soil*Fertilizer Soil*Rep*Fertilizer
           Soil*Calcium Soil*Fertilizer*Calcium
           Soil*Calcium*Rep(Fertilizer);
   test h=Fertilizer                 e=Fertilizer*Rep;
   test h=Calcium calcium*fertilizer e=Calcium*Rep(Fertilizer);
   test h=Soil                       e=Soil*Rep;
   test h=Soil*Fertilizer            e=Soil*Rep*Fertilizer;
   test h=Soil*Calcium
          Soil*Fertilizer*Calcium    e=Soil*Calcium*Rep(Fertilizer);
   means Fertilizer Calcium Soil Calcium*Fertilizer;
run;

Output 26.5.1: Class Level Information

Strip-split Plot

The ANOVA Procedure

Class Level Information
ClassLevelsValues
Rep41 2 3 4
Soil31 2 3
Calcium20 1
Fertilizer40 1 2 3

Number of Observations Read96
Number of Observations Used96


Output 26.5.2: ANOVA Table

Strip-split Plot

The ANOVA Procedure
 
Dependent Variable: Yield

SourceDFSum of SquaresMean SquareF ValuePr > F
Model9531.891495830.33569996..
Error00.00000000.  
Corrected Total9531.89149583   

R-SquareCoeff VarRoot MSEYield Mean
1.000000..5.427292

SourceDFAnova SSMean SquareF ValuePr > F
Rep36.279745832.09324861..
Fertilizer37.221270832.40709028..
Rep*Fertilizer96.082112500.67579028..
Calcium10.277350000.27735000..
Calcium*Fertilizer31.963958330.65465278..
Rep*Calcium(Fertili)121.767058330.14725486..
Soil21.926589580.96329479..
Rep*Soil61.667610420.27793507..
Soil*Fertilizer60.688285420.11471424..
Rep*Soil*Fertilizer181.586981250.08816563..
Soil*Calcium20.044931250.02246562..
Soil*Calcium*Fertili60.189360420.03156007..
Rep*Soil*Calc(Ferti)242.196241670.09151007..


Notice in Output 26.5.2 that the default tests against the residual error rate are all unavailable. This is because the Soil*Calcium*Rep(Fertilizer) term in the model takes up all the degrees of freedom, leaving none for estimating the residual error rate. This is appropriate in this case since the TEST statements give the specific error terms appropriate for testing each effect. Output 26.5.3 displays the output produced by the various TEST statements. The only significant effect is the Calcium*Fertilizer interaction.

Output 26.5.3: Tests of Effects

Tests of Hypotheses Using the Anova MS for Rep*Fertilizer as an Error Term
SourceDFAnova SSMean SquareF ValuePr > F
Fertilizer37.221270832.407090283.560.0604

Tests of Hypotheses Using the Anova MS for Rep*Calcium(Fertili) as an Error Term
SourceDFAnova SSMean SquareF ValuePr > F
Calcium10.277350000.277350001.880.1950
Calcium*Fertilizer31.963958330.654652784.450.0255

Tests of Hypotheses Using the Anova MS for Rep*Soil as an Error Term
SourceDFAnova SSMean SquareF ValuePr > F
Soil21.926589580.963294793.470.0999

Tests of Hypotheses Using the Anova MS for Rep*Soil*Fertilizer as an Error Term
SourceDFAnova SSMean SquareF ValuePr > F
Soil*Fertilizer60.688285420.114714241.300.3063

Tests of Hypotheses Using the Anova MS for Rep*Soil*Calc(Ferti) as an Error Term
SourceDFAnova SSMean SquareF ValuePr > F
Soil*Calcium20.044931250.022465620.250.7843
Soil*Calcium*Fertili60.189360420.031560070.340.9059


Output 26.5.4: Results of MEANS statement

Level of
Fertilizer
NYield
MeanStd Dev
0245.184166670.48266395
1245.129166670.38337082
2245.754583330.53293265
3245.641250000.63926801

Level of
Calcium
NYield
MeanStd Dev
0485.481041670.54186141
1485.373541670.61565219

Level of
Soil
NYield
MeanStd Dev
1325.543125000.55806369
2325.510937500.62176315
3325.227812500.51825224

Level of
Calcium
Level of
Fertilizer
NYield
MeanStd Dev
00125.346666670.45029956
01125.088333330.44986530
02125.626666670.44707806
03125.862500000.52886027
10125.021666670.47615569
11125.170000000.31826233
12125.882500000.59856077
13125.420000000.68409197


Output 26.5.4 shows the results of the MEANS statement, displaying for various effects and combinations of effects, as requested. You can examine the Calcium*Fertilizer means to understand the interaction better.

In this example, you could reduce memory requirements by omitting the Soil*Calcium*Rep(Fertilizer) effect from the model in the MODEL statement. This effect then becomes the ERROR effect, and you can omit the last TEST statement in the statements shown earlier. The test for the Soil*Calcium effect is then given in the Analysis of Variance table in the top portion of output. However, for all other tests, you should look at the results from the TEST statement. In large models, this method might lead to significant reductions in memory requirements.

Last updated: February 13, 2019