stripSplitPlot¶
Analyzes data from strip-split-plot experiments. Function stripSplitPlot
also analyzes strip-split-plot experiments replicated at several locations.
Synopsis¶
stripSplitPlot (nLocations, nStripA, nStripB, nSplit, block, stripA, stripB, split, y)
Required Arguments¶
- int
nLocations
(Input) - Number of locations.
nLocations
must be one or greater. IfnLocations
>1 then the optional arraylocations
[] must be included as input tostripSplitPlot
. - int
nStripA
(Input) - Number of levels associated with the strip-plot A factor.
nStripA
must be greater than one. - int
nStripB
(Input) - Number of levels associated with the strip-plots B factor.
nStripB
must be greater than one. - int
nSplit
(Input) - Number of levels associated with the split factor.
nSplit
must be greater than one. - int
block[]
(Input) - An array of length n containing the block identifiers for each
observation in
y
. Locations can have different numbers of blocks. Each block at a single location must be assigned a different identifier, but different locations can have the same assignments. - int
stripA[]
(Input) - An array of length n containing the strip-plot A level identifiers for
each observation in
y
. Each level of this factor must be assigned a different integer.stripSplitPlot
verifies that the number of unique strip-plot identifiers is equal tonStripA
. - int
stripB[]
(Input) - An array of length n containing the strip-plot B identifiers for each
observation in
y
. Each level of this factor must be assigned a different integer.stripSplitPlot
verifies that the number of unique strip-plot identifiers is equal tonStripB
. - int
split[]
(Input) - An array of length n containing the split-plot level identifiers for each
observation in
y
. Each level of this factor must be assigned a different integer.stripSplitPlot
verifies that the number of unique split-plot identifiers is equal tonSplit
. - float
y[]
(Input) - An array of length n containing the experimental observations and any
missing values. Missing values cannot be omitted. They are indicated by
placing a NaN (not a number) in
y
. The NaN value can be set using the functionmachine
(6). The location, strip-plot A, strip-plot B and split-plot for each observation iny
are identified by the corresponding values in the argument’s locations,stripA
,stripB
, andsplit
.
Return Value¶
A two dimensional, 22 by 6 array containing the ANOVA table. Each row in
this array contains values for one of the effects in the ANOVA table. The
first value in each row, \(\text{anovaTable}_{i,0}\) =
anovaTable
[i×6], identifies the source for the effect associated
with values in that row. The remaining values in a row contain the ANOVA
table values using the following convention:
j |
\(\text{anovaTable}_{i,j}\) = anovaTable[i\*6+j] |
---|---|
0 | Source Identifier (values described below) |
1 | Degrees of freedom |
2 | Sum of squares |
3 | Mean squares |
4 | F-statistic |
5 | p-value for this F-statistic |
The Source Identifiers in the first column of
\(\text{anovaTable}_{i,j}\) are the only negative values in
anovaTable[]
. Note that the p-value for the F-statistic is returned
as 0.0 when the value is so small that all significant digits have been
lost. Assignments of identifiers to ANOVA sources use the following coding:
Source Identifier |
ANOVA Source |
---|---|
-1 |
LOCATION† |
-2 |
BLOCKs WITHIN LOCATION |
-3 |
STRIP-PLOT A |
-4 |
LOCATION × STRIP-PLOT A † |
-5 |
STRIP-PLOT A ERROR |
-6 |
SPLIT-PLOT |
-7 |
SPLIT-PLOT × STRIP-PLOT A |
-8 |
LOCATION × SPLIT-PLOT † |
-9 |
SPLIT-PLOT ERROR |
-10 |
LOCATION × SPLIT-PLOT × STRIP-PLOT A † |
-11 |
STRIP-PLOT B |
-12 |
LOCATION × STRIP-PLOT B † |
-13 |
STRIP_PLOT B ERROR |
-14 |
STRIP-PLOT A × STRIP-PLOT B |
-15 |
LOCATION × STRIP-PLOT A × STRIP-PLOT B |
-16 |
STRIP-PLOT A × STRIP-PLOT B ERROR |
-17 |
SPLIT-PLOT × STRIP-PLOT B |
-18 |
STRIP-PLOT A × STRIP-PLOT B × SPLIT-PLOT |
-19 |
LOCATION × SPLIT-PLOT × STRIP-PLOT B † |
-20 |
LOCATION × STRIP-PLOT A × STRIP-PLOT B ×
SPLIT-PLOT † |
-21 |
STRIP-PLOT A × STRIP-PLOT B × SPLIT-PLOT
ERROR |
-22 |
CORRECTED TOTAL |
Notes: †
If nLocations=
1 sources involving location are set
to missing (NaN).
Optional Arguments¶
locations
, int[]
(Input)- An array of length
n
containing the location identifiers for each observation iny
. Unique integers must be assigned to each location in the study. This argument is required whennLocations
>1. nMissing
(Output)- Number of missing values, if any, found in
y
. Missing values are denoted with a NaN (Not a Number) value. cv
(Output)- An array of length 3 containing the strip-plots and split-plot
coefficients of variation.
cv[0]
contains the strip-plot A C.V.,cv
[1
] contains the strip-plot B C.V., andcv[2]
contains the split-plot C.V. grandMean
(Output)- Mean of all the data across every location.
stripPlotAMeans
(Output)- An array of length
nStripA
containing the factor A strip-plot means. stripPlotBMeans
(Output)- An array of length
nStripB
containing the strip-plot B means. splitPlotMeans
(Output)- An array of length
nSplit
containing the strip-plot B means. stripPlotASplitPlotMeans
(Output)- A 2-dimensional array of size
nStripA
bynSplit
containing the means for all combinations of the factor A strip-plot and split-plots. stripPlotBSplitPlotMeans
(Output)- A 2-dimensional array of size
nStripB
bynSplit
containing the means for all combinations of strip-plot B and split-plots. stripPlotAbMeans
(Output)- A 2-dimensional array of size
nStripA
bynStripB
containing the means for all combinations of strip-plots. treatmentMeans
(Output)- An array of size (
nStripA\*nStripB\*nSplit
) containing the treatment means. For i >0, j >0, and k >0, \(\text{treatmentMeans}_{i,j,k}\) =treatmentMeans
(i‑1)*nStripB
×nSplit
+ (j‑1) ×nSplit
+ (k‑1)] contains the mean of the observations, averaged over all locations, blocks and replicates, for the i-th level of the factor A strip-plot, the j‑th level of the factor B strip-plot, and the k‑th level of the split-plot. stdErrors
(Output)- An array of length 20 containing ten standard errors and their
associated degrees of freedom. The standard errors are in the first 10
elements and their associated degrees of freedom are reported in
stdErrors
[10
] throughstdErrors
[19
].
Element | Standard Error for Comparisons Between Two |
Degrees of Freedom |
---|---|---|
stdErrors[0] |
Strip-Plot A Means | stdErrors[10] |
stdErrors[1] |
Strip-Plot B Means | stdErrors[11] |
stdErrors[2] |
Split-Plot Means | stdErrors[12] |
stdErrors[3] |
Strip-Plot A Means at the same level of split-plots | stdErrors[13] |
stdErrors[4] |
Strip-Plot A Means at the same level of strip-plot B | stdErrors[14] |
stdErrors[5] |
Strip-Plot B Means at the same level of split-plots | stdErrors[15] |
stdErrors[6] |
Strip-Plot B Means at the same level of strip-plot A | stdErrors[16] |
stdErrors[7] |
Split-Plot Means at the same level of strip-plot A | stdErrors[17] |
stdErrors[8] |
Split-Plot Means at the same level of strip-plot B | stdErrors[18] |
stdErrors[9] |
Treatment Means (same strip-plot A, strip-plot B and split-plot) | stdErrors[19] |
nBlocks
(Output)- An array of length
nLocations
containing the number of blocks, or replicates, at each location. This value must be greater than one,nBlocks
> 1. locationAnovaTable
(Output)- A 3-dimensional array of size
nLocations
by 22 by 6 containing the anova tables associated with each location. For each location, the 22 by 6 dimensional array corresponds to the anova table for that location. For example,locationAnovaTable[(i‑1)
×132+(j-1)
×6+(k-1)]
contains the value in the k‑th column and j‑th row of the returned anova table for the i‑th location. anovaRowLabels
(Output)- An array containing the labels for each of the
nAnova
rows of the returned ANOVA table. The label for the i‑th row of the ANOVA table can be printed withprint anovaRowLabels[i]
Description¶
Function stripSplitPlot
is capable of analyzing a wide variety of
strip-split plot experiments, also referred to as strip-strip plot
experiments. By default, stripSplitPlot
assumes that both strip-plot
factors, and split-plots are fixed effects, and the location effects, if
any, are random effects. The nature of randomization used in an experiment
determines analysis of the data. Two popular forms of randomization in
strip-plot and split-plot experiments are illustrated in the following two
figures. In both experiments, the strip-plot factor, factor A, has 4 levels
that are randomly assigned to a block or field in four strips.
Factor A Strip-Plots | |||||
A2 | A1 | A4 | A3 | ||
Factor B Strip Plots |
B3 | A2B3 | A1B3 | A4B3 | A3B3 |
B1 | A2B1 | A1B1 | A4B1 | A3B1 | |
B2 | A2B2 | A1B2 | A4B2 | A3B2 |
In the strip-plot experiment, factor B, has 3 levels that are randomly assigned as strips across each of the four levels of factor A. In this case, factors A and B are completely crossed. The randomization applied to factor B is independent of the application of the strip-plots, factor A.
Contrast this to the randomization depicted in Table 4.30. In this split-plot experiment, the levels of factor B are nested within each level of factor A whole-plots. Factor B is randomized independently within each level of factor A. Unlike the strip-plot experiment, in the split-plot experiment different levels of factor B appear in the same row.
Whole-Plot Factor | |||
A2 | A1 | A4 | A3 |
A2B1 | A1B3 | A4B1 | A3B2 |
A2B3 | A1B1 | A4B3 | A3B1 |
A2B2 | A1B2 | A4B2 | A3B2 |
A strip-split plot experiment is a strip-plot experiment with a third factor
randomized within each level of strip-plot factor A, see
Table 4.31. The third factor, referred to as
the split-plot factor, is randomly assigned to experimental units within
each level of strip-plot factor A. stripSplitPlot
analyzes strip-split
plot experiments consisting of two strip-plot factors and one split-plot
factor nested within strip-plot factors A and B.
Factor A Strip Plots | |||||
A2 | A1 | A4 | A3 | ||
Factor B Strip Plots |
B3 | A2B3C2 A2B3C1 |
A1B3C1 A1B3C2 |
A4B3C2 A4B3C1 |
A3B3C2 A3B3C1 |
B1 | A2B1C1 A2B1C2 |
A1B1C1 A1B1C2 |
A4B1C2 A4B1C1 |
A3B1C2 A3B1C1 |
|
B2 | A2B2C2 A2B2C1 |
A1B2C1 A1B2C2 |
A4B2C1 A4B2C2 |
A3B2C2 A3B2C1 |
Strip-split plot experiments are closely related to split-split plot experiments, see Table 4.32. The main difference between the two is that in strip-split plot experiments, the order of the levels for factor B are not applied randomly across factor A. Each level of factor B is constant across any row. In this example, the entire first row is assigned to the third level of factor B. In the equivalent split-split plot experiment, the levels of factor B are not constant across any row. The levels are randomized within each level of factor A.
Whole Plot Factor A | |||
A2 | A1 | A4 | A3 |
A2B3C2 A2B3C1 |
A1B2C1 A1B2C2 |
A4B1C2 A4B1C1 |
A3B3C2 A3B3C1 |
A2B1C1 A2B1C2 |
A1B1C1 A1B1C2 |
A4B3C2 A4B3C1 |
A3B2C2 A3B2C1 |
A2B2C2 A2B2C1 |
A1B3C1 A1B3C2 |
A4B2C1 A4B2C2 |
A3B1C2 A3B1C1 |
In some studies, a strip-split-plot experiment is replicated at several
locations. Function stripSplitPlot
can analyze strip-split plot
experiments replicated at multiple locations, even when the number of blocks
or replicates at each location might be different. If only a single
replicate or block is used at each location, then location should be treated
as a blocking factor, with nLocations
=1. If nLocations
=1, it is
assumed that either the experiment was conducted at multiple locations, each
with a single block, or at a single location with more than one block or
replicate at that location. When nLocations
=1, all entries associated
with location in the anova table will contain missing values.
However, if nLocations
>1, it is assumed the experiment was repeated at
multiple locations, with blocking occurring at each location. Although the
number of blocks at each location can be different, the number of levels for
the strip-plot and split-plot factors strip-plots must be the same at each
location. The locations associated with each of the observations in y
are specified in the argument locations[]
, which is a required input
argument when nLocations
>1.
By default, locations are assumed to be random effects. Tests involving strip-plots use the interaction between strip-plots and locations as the error term for testing whether there are statistically significant differences among strip-plots. However, this assumes that the interaction of strip-plots and locations is not statistically significant. A test of this assumption is included in the anova table. If any interactions between locations and strip-plot or split-plot factors are statistically significant, then the nature of these interactions should be explored since this impacts the interpretation of the significance of the treatment factors.
Similarly, when locations are assumed to be random effects, tests involving split-plots do not use the split-plot errors pooled across locations. Instead, the error term for split-plots is the interaction between locations and split-plots.
Suppose, for example, that a researcher wanted to conduct an agricultural experiment comparing the effectiveness of 4 fertilizers with 3 seed lots and 3 rates of application. One replicate of the experiment is conducted at each of the 3 farms. That is, only a single field at each location is assigned to this experiment.
Each field is divided into 4 vertical strips and 3 horizontal strips. The vertical strips are randomly assigned to fertilizers and the rows are randomly assigned to application rates. Fertilizers and application rates represent strip-plot factors A and B respectively. Seed lots are randomly assigned to three sub-divisions within each combination of strip-plots.
Fertilizer Strip Plots | |||||
F2 | F1 | F4 | F3 | ||
Application Rate Strip Plot |
R3 | F2R3S1 F2R3S2 F2R3S3 |
F1R3S3 F1R3S2 F1R3S1 |
F4R3S3 F4R3S2 F4R3S1 |
F3R3S2 F3R3S1 F3R3S3 |
R2 | F2R1S3 F2R1S1 F2R1S2 |
F1R1S2 F1R1S3 F1R1S1 |
F4R1S3 F4R1S1 F4R1S2 |
F3R1S1 F3R1S2 F3R1S3 |
|
R1 | F2R2S1 F2R2S2 F2R2S3 |
F1R2S1 F1R2S3 F1R2S2 |
F4R2S2 F4R2S3 F4R2S1 |
F3R2S3 F3R2S1 F3R2S2 |
In this case, each farm is a blocking factor, fertilizers are factor A
strip-plots, fertilizer application rates are factor B strip-plots, and seed
lots are split-plots. The input array rep
would contain integers from 1
to the number of farms.
Example¶
The experiment was conducted using a 2 x 2 strip_split plot arrangement with each of the four plots divided into 2 sub-divisions that were randomly assigned one of two split-plot levels. This was replicated 3 times producing an experiment with \(n=2x2x2x3=24\) observations.
from __future__ import print_function
import sys
from numpy import *
from l_print_lsd import *
from pyimsl.stat.multipleComparisons import multipleComparisons
from pyimsl.stat.page import page, SET_PAGE_WIDTH
from pyimsl.stat.stripSplitPlot import stripSplitPlot
from pyimsl.stat.writeMatrix import writeMatrix
col_labels = [" ", "\nID", "\nDF", "\nSSQ",
"Mean\nsquares", "\nF", "\np-value"]
page_width = 132
n = 24 # Total number of observations
n_locations = 1 # Number of locations
n_strip_a = 2 # Number of factor A strip-plots
n_strip_b = 2 # Number of factor B strip-plots
n_split = 2 # Number of split-plots within factor A split-plot
block = [1, 1, 1, 1, 1, 1, 1, 1,
2, 2, 2, 2, 2, 2, 2, 2,
3, 3, 3, 3, 3, 3, 3, 3]
strip_a = [1, 1, 1, 1, 2, 2, 2, 2,
1, 1, 1, 1, 2, 2, 2, 2,
1, 1, 1, 1, 2, 2, 2, 2]
strip_b = [1, 1, 2, 2, 1, 1, 2, 2,
1, 1, 2, 2, 1, 1, 2, 2,
1, 1, 2, 2, 1, 1, 2, 2]
split = [1, 2, 1, 2, 1, 2, 1, 2,
1, 2, 1, 2, 1, 2, 1, 2,
1, 2, 1, 2, 1, 2, 1, 2]
y = [30.0, 40.0, 38.9, 38.2,
41.8, 52.2, 54.8, 58.2,
20.5, 26.9, 21.4, 25.1,
26.4, 36.7, 28.9, 35.9,
21.0, 25.4, 24.0, 23.3,
34.4, 41.0, 33.0, 34.9]
alpha = 0.05
grand_mean = []
anova_row_labels = []
cv = []
treatment_means = []
strip_plot_a_means = []
strip_plot_b_means = []
split_plot_means = []
strip_a_split_plot_means = []
strip_b_split_plot_means = []
strip_plot_ab_means = []
std_err = []
equal_means = []
aov = stripSplitPlot(n_locations, n_strip_a, n_strip_b,
n_split, block, strip_a, strip_b, split, y,
grandMean=grand_mean, cv=cv,
treatmentMeans=treatment_means,
stripPlotAMeans=strip_plot_a_means,
stripPlotBMeans=strip_plot_b_means,
splitPlotMeans=split_plot_means,
stripPlotASplitPlotMeans=strip_a_split_plot_means,
stripPlotBSplitPlotMeans=strip_b_split_plot_means,
stripPlotAbMeans=strip_plot_ab_means,
stdErrors=std_err,
anovaRowLabels=anova_row_labels)
# Output results
page(SET_PAGE_WIDTH, page_width)
# Print ANOVA table
writeMatrix(" *** ANALYSIS OF VARIANCE TABLE ***",
aov, writeFormat="%3.0f%3.0f%8.2f%7.2f%7.2f%7.3f",
rowLabels=anova_row_labels,
colLabels=col_labels)
# Print the various means
print("\nGrand mean: ", grand_mean[0])
print("\nCoefficient of Variation: ")
print(" Strip-Plot A: ", cv[0])
print(" Strip-Plot B: ", cv[1])
print(" Split-Plot: ", cv[2])
# Print treatment means
print("\nTreatment Means")
l = 0
for i in range(0, n_strip_a):
for j in range(0, n_strip_b):
for k in range(0, n_split):
tma = array(treatment_means, dtype='float')
print("treatment[%d][%d][%d] %9.4f" %
(i + 1, j + 1, k + 1, tma.flat[l]))
l += 1
print("\nStandard Error for Comparing Two Treatment Means: %f \n(df=%f)" %
(std_err[9], std_err[19]))
tma = array(treatment_means)
equal_means = multipleComparisons(tma.flat,
int(std_err[19]), std_err[9] / sqrt(2.0),
lsd=True, alpha=alpha)
l_printLSD3Table(n_strip_a, n_strip_b, n_split,
equal_means, treatment_means)
# Print the Strip-plot A Means
print("\n\n*************************************************************")
writeMatrix("Strip-plot A Means", strip_plot_a_means, column=True)
print("\nStandard Error for Comparing Two Strip-Plot A Means: %f \n(df=%f)" %
(std_err[0], std_err[10]))
equal_means = multipleComparisons(strip_plot_a_means,
int(std_err[10]), std_err[0] / sqrt(2.0),
lsd=True, alpha=alpha)
l_print_lsd(n_strip_a, equal_means, strip_plot_a_means)
# Print Strip-plot B Means
print("\n\n*************************************************************")
writeMatrix("Strip-plot B Means", strip_plot_b_means, column=True)
print("\nStandard Error for Comparing Two Strip-Plot B Means: %f \n(df=%f)" %
(std_err[1], std_err[11]))
equal_means = multipleComparisons(strip_plot_b_means,
int(std_err[11]), std_err[1] / sqrt(2.0),
lsd=True, alpha=alpha)
l_print_lsd(n_strip_b, equal_means, strip_plot_b_means)
# Print the Split-plot means
print("\n\n*************************************************************")
writeMatrix("Split-plot Means", split_plot_means, column=True)
print("\nStandard Error for Comparing Two Split-Plot Means: %f \n(df=%f)" %
(std_err[2], std_err[12]))
equal_means = multipleComparisons(split_plot_means,
int(std_err[12]), std_err[2] / sqrt(2.0),
lsd=True, alpha=alpha)
l_print_lsd(n_split, equal_means, split_plot_means)
# Print the Strip-plot A by Split-plot means
print("\n\n*************************************************************")
writeMatrix("Strip-plot A by Split-plot Means",
strip_a_split_plot_means)
print("\nStandard Error for Comparing Two Means: %f \n(df=%f)" %
(std_err[3], std_err[13]))
saspm_array = array(strip_a_split_plot_means)
equal_means = multipleComparisons(saspm_array.flat,
int(std_err[13]), std_err[3] / sqrt(2.0),
lsd=True, alpha=alpha)
l_printLSD2Table(n_strip_a, n_split, equal_means,
saspm_array.flat)
# print the Strip-plot A by Strip-plot B Means
print("\n\n*************************************************************")
writeMatrix("Strip-plot A by Strip-plot B Means",
strip_plot_ab_means)
print("\nStandard Error for Comparing Two Means: %f \n(df=%f)" %
(std_err[4], std_err[14]))
spabm_array = array(strip_plot_ab_means)
equal_means = multipleComparisons(spabm_array.flat,
int(std_err[14]), std_err[4] / sqrt(2.0),
lsd=True, alpha=alpha)
l_printLSD2Table(n_strip_a, n_strip_b, equal_means,
spabm_array.flat)
# Print the Strip-Plot B by Split-Plot means
print("\n\n*************************************************************")
writeMatrix("Strip-plot B by Split-plot Means",
strip_plot_ab_means)
print("\nStandard Error for Comparing Two Means: %f \n(df=%f)" %
(std_err[5], std_err[15]))
sbspm_array = array(strip_b_split_plot_means)
equal_means = multipleComparisons(sbspm_array.flat,
int(std_err[15]), std_err[5] / sqrt(2.0),
lsd=True, alpha=alpha)
l_printLSD2Table(n_strip_a, n_split, equal_means,
sbspm_array.flat)
Output¶
Grand mean: 33.87083333333333
Coefficient of Variation:
Strip-Plot A: 13.611592209229595
Strip-Plot B: 17.898639589608628
Split-Plot: 5.885378367597369
Treatment Means
treatment[1][1][1] 23.8333
treatment[1][1][2] 30.7667
treatment[1][2][1] 28.1000
treatment[1][2][2] 28.8667
treatment[2][1][1] 34.2000
treatment[2][1][2] 43.3000
treatment[2][2][1] 38.9000
treatment[2][2][2] 43.0000
Standard Error for Comparing Two Treatment Means: 1.302028
(df=4.000000)
[A][B][Split] Mean LSD Grouping
[1][1] [1] 23.833333
[1][2] [1] 28.100000 *
[1][2] [2] 28.866667 *
[1][1] [2] 30.766667 * *
[2][1] [1] 34.200000 *
[2][2] [1] 38.900000
[2][2] [2] 43.000000 *
[2][1] [2] 43.300000 *
*************************************************************
Standard Error for Comparing Two Strip-Plot A Means: 1.882171
(df=2.000000)
[group] Mean LSD Grouping
[1] 27.891667
[2] 39.850000
*************************************************************
Standard Error for Comparing Two Strip-Plot B Means: 2.474972
(df=2.000000)
[group] Mean LSD Grouping
[1] 33.025000 *
[2] 34.716667 *
*************************************************************
Standard Error for Comparing Two Split-Plot Means: 0.813813
(df=4.000000)
[group] Mean LSD Grouping
[1] 31.258333
[2] 36.483333
*************************************************************
Standard Error for Comparing Two Means: 1.150905
(df=4.000000)
[A][B] Mean LSD Grouping
[1][1] 25.966667
[1][2] 29.816667
[2][1] 36.550000
[2][2] 43.150000
*************************************************************
Standard Error for Comparing Two Means: 2.074280
(df=2.000000)
[A][B] Mean LSD Grouping
[1][1] 27.300000 *
[1][2] 28.483333 *
[2][1] 38.750000 *
[2][2] 40.950000 *
*************************************************************
Standard Error for Comparing Two Means: 0.920673
(df=4.000000)
[A][B] Mean LSD Grouping
[1][1] 29.016667
[2][2] 33.500000 *
[2][1] 35.933333 * *
[1][2] 37.033333 *
*** ANALYSIS OF VARIANCE TABLE ***
Mean
ID DF SSQ squares F p-value
Location .................... -1 ... ........ ....... ....... .......
Blocks ...................... -2 2 1310.28 655.14 14.53 0.061
Strip-Plot A ................ -3 1 858.01 858.01 40.37 0.024
Location x A ................ -4 ... ........ ....... ....... .......
Strip-Plot A Error .......... -5 2 42.51 21.26 1.48 0.385
Split-Plot .................. -6 1 163.80 163.80 41.22 0.003
Split-Plot x A .............. -7 1 11.34 11.34 2.85 0.166
Location x Split-Plot ....... -8 ... ........ ....... ....... .......
Split-Plot Error ............ -9 4 15.90 3.97 1.56 0.338
Location x Split-Plot x A ... -10 ... ........ ....... ....... .......
Strip-Plot B ................ -11 1 17.17 17.17 0.47 0.565
Location x B ................ -12 ... ........ ....... ....... .......
Strip-Plot B Error .......... -13 2 73.51 36.75 2.85 0.260
A x B ....................... -14 1 1.55 1.55 0.12 0.762
Location x A x B ............ -15 ... ........ ....... ....... .......
A x B Error ................. -16 2 25.82 12.91 5.08 0.080
Split-Plot x B .............. -17 1 46.76 46.76 18.39 0.013
Split-Plot x A x B .......... -18 1 0.51 0.51 0.20 0.677
Location x Split-Plot x B ... -19 ... ........ ....... ....... .......
Location x Split-Plot x A x B -20 ... ........ ....... ....... .......
Split-Plot x A x B Error .... -21 4 10.17 2.54 ....... .......
Corrected Total ............. -22 23 2577.33 ....... ....... .......
Strip-plot A Means
1 27.89
2 39.85
Strip-plot B Means
1 33.02
2 34.72
Split-plot Means
1 31.26
2 36.48
Strip-plot A by Split-plot Means
1 2
1 25.97 29.82
2 36.55 43.15
Strip-plot A by Strip-plot B Means
1 2
1 27.30 28.48
2 38.75 40.95
Strip-plot B by Split-plot Means
1 2
1 27.30 28.48
2 38.75 40.95