Generating Balanced Incomplete Block Designs (BIBD)

July 16, 2010
By

(This article was first published on Software for Exploratory Data Analysis and Statistical Modelling, and kindly contributed to R-bloggers)

The Balanced Incomplete Block Design (BIBD) is a well studied experimental design that has various desirable features from a statistical perspective. The crossdes package in R provides a way to generate a block design for some given parameters and test wheter this design satisfies the BIBD conditions.

For a BIBD there are v treatments repeated r times in b blocks of k observations. There is a fifth parameter lambda that records the number of blocks where every pair of treatment occurs in the design.

We first load the crossdes package in our sessions:

require(crossdes)

The function find.BIB is used to generate a block design with specific number of treatments, blocks (rows of the design) and elements per block (columns of the design).

Consider an example with five treatments in four blocks of three elements. We can create a block design via:

> find.BIB(5, 4, 3) [,1] [,2] [,3] [1,] 1 3 4 [2,] 2 4 5 [3,] 2 3 5 [4,] 1 2 5

This design is not a BIBD because the treatments are not all repeated the same number of times in the design and we can check this with the isGYD function. For this example:

> isGYD(find.BIB(5, 4, 3))   [1] The design is neither balanced w.r.t. rows nor w.r.t. columns.

This confirms what we can see from the design.

Let us instead consider a design with seven treatments and seven blocks of three elements to see whether we can create a BIBD with these parameters:

> my.design = find.BIB(7, 7, 3) > my.design [,1] [,2] [,3] [1,] 1 2 5 [2,] 3 4 5 [3,] 1 3 6 [4,] 2 3 7 [5,] 2 4 6 [6,] 1 4 7 [7,] 5 6 7 > isGYD(my.design)   [1] The design is a balanced incomplete block design w.r.t. rows.

In this situation we are able to generate a valid BIBD experiment with the specified parameters.