1. Home
  2. AFCYCLIC procedure

AFCYCLIC procedure

Generates block and treatment factors for cyclic designs (R.W. Payne).


PRINT = string token Whether to print the design (design); default * i.e. no printing


INITIALBLOCKS = variates or pointers Defines one (variate) or more (pointer to variates) initial blocks for a treatment factor
INCREMENT = scalars or pointers Defines the size of the successive increment (scalar) or increments (pointer to scalars) for each initial block
LEVELS = scalars or variates Defines the levels of each treatment factor; this need not be specified if the factor has already been declared
SEED = scalar Seed to be used to randomize each design, if required
TREATMENTS = factors Specifies treatment factors
BLOCKS = factors Specifies block factors
UNITS = factors Specifies factors to index the units within each block


The cyclic method is a powerful way of constructing incomplete block designs. In its simplest form, it starts with an initial block, containing some subset of the treatments. This subset is then represented by the ordinal number in the range 0…m-1 where m is the number of treatment levels. The second and subsequent blocks are then generated by successive addition modulo m of one to the numbers in the subset. Thus, for seven treatments (0…6) and an initial block (0,1,4), the subsequent blocks would contain treatments (1,2,5), (2,3,6), (3,4,0), (4,5,1), (5,6,2) and (6,0,3). As can be seen, if m is a prime number, m blocks are generated with each initial block. However, if m can be expressed as the product of other integers, shorter cycles can occur. For example, for m=8 and initial block (0,1,4,5), four blocks are generated altogether, the others being (1,2,5,6), (2,3,6,7) and (3,4,7,0). The procedure allows for all of this. It is also possible to have more than one initial block, and the increment need not be one.

The INITIALBLOCKS parameter specifies the initial blocks. If the design is to be generated from a single initial block, INITIALBLOCKS should be set to a variate containing the levels corresponding to the treatments concerned; if there are several, the appropriate variates should be placed into a pointer. Similarly the INCREMENT parameter, which specifies the increment to be used, should be set to a scalar if the same increment is to be used for all the initial blocks, otherwise to a pointer of scalars. The levels of the treatment factor are specified by the LEVELS parameter and the SEED parameter allows the design to be randomized. As is customary in Genstat, if LEVELS is set to a scalar the levels are assumed to be represented by the integers 1 upwards, but LEVELS can be set to a variate to specify other numbers. LEVELS can be omitted if the TREATMENTS parameter is used to supply a factor to store the treatments, provided the levels of that factor have already been defined outside the procedure. The factors for blocks and units within blocks can be saved similarly by the BLOCKS and UNITS parameters respectively. The design can also be printed, by setting option PRINT=design.

The properties of the cyclic designs that can be generated for any particular number of treatments or size of block varies according to the choice of initial block and increment. Tables showing the most efficient combinations have been presented for example by John, Wolock & David (1972), John (1981, 1987) and Lamacraft & Hall (1982).

Option: PRINT.



The procedure generates the design using the standard Genstat directives for calculation and manipulation.


John, J.A., Wolock, F.W. & David, H.A. (1972). Cyclic Designs. National Bureau of Standards, Applied Mathematics Series 62.

John, J.A. (1981). Efficient cyclic designs. Journal of the Royal Statistical Society Series B, 43, 76-80.

John, J.A. (1987). Cyclic Designs. Chapman & Hall, London.

Lamacraft, R.R. & Hall, W.B. (1982). Tables of incomplete cyclic block designs: r=k. Australian Journal of Statistics, 24, 350-360.

See also

Procedure: AGCYCLIC.

Commands for: Design of experiments, REML analysis of linear mixed models.


CAPTION   'AFCYCLIC examples',\
          !t('1) 7 treatments (numbered 0...6) in 7 blocks of size 3,',\
          'initial block contains treatments 0, 1 and 4.'); STYLE=meta,plain
FACTOR    [LEVELS=!(0...6)] Treat
CAPTION   !t('2) 8 treatments (now with the standard default numbers 1...8)',\
          'in blocks of size 4; there are 3 initial blocks (1,2,3,4),',\
          '(1,2,5,6) and (1,3,5,7). Notice that the 2nd and 3rd ',\
          'initial blocks have cycles of only 2 and 4 respectively.')
AFCYCLIC  [PRINT=design] !p( !(1...4),!(1,2,5,6),!(1,3,5,7) ); LEVELS=8
Updated on March 11, 2019

Was this article helpful?