Generating Balanced Incomplete Block Designs (BIBD)

July 16th, 2010

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:


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:

> = find.BIB(7, 7, 3)
     [,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(
[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.

25 Responses to “Generating Balanced Incomplete Block Designs (BIBD)”

  1. DON GILES says:

    am looking for esign with parameters (81,3240,120,3,3) with no repeated blocks. can you assist me with this.

  2. don giles says:

    With help from Dr Rosa have found constructed this design.

  3. Ralph says:

    That’s good news!

  4. pavlos says:

    anyone knows the coding for comparing treatments with the orthogonal contrast method?

  5. don giles says:

    Have found that (81,81,16,16,3) that is unresolved implies the existence of(81,3240,120,3,3) which I have proved does exist which then implies the existence of(81,81,16,16,3). Am now attempting to reverse engineer (81,3240,120,3,3) to construct (81,81,16,16,3).
    Have also used same theorem to prove the existence of 10 symmetric designs along with the 10 unresolved residual designs.
    If anyone is interested in this topic feel free to contact me. 519-718-2107

    don b giles MMatg

  6. Aaron says:

    I am new to this package and language but I wondered about how the command find.BIB works, is it an intelligent semi-random search? I think that with a very few small exceptions there is always a BIBD with k=5 and lambda=2 when the parameters are feasible. I used find.BIB(55,297,5) and got a design but not a BIBD
    > badbib=find.BIB(55,297,5)
    > isGYD(badbib)

    [1] The design is neither balanced w.r.t. rows nor w.r.t. columns.
    I think I constructed a solution with 11 disjoint blocks repeated twice each and 275 others repeated once each.

    So just wondering how to find out more.

  7. Fred Anointed says:

    Please I am encountering an error:

    Error: could not find function “find.BIB”

    Am new to this software and interested in it.


  8. Ralph says:

    First check that you have got the crossdes package installed and then make sure that you have loaded the package within your session.

    Hope this helps.

  9. Fred Anointed says:

    I downloaded and Installed the Zip file after which I called it in ie.

    Packages > Load Packed
    A window popped up after which I selected the crossdes and clicked ok.

    On inserting my code “find.BIB” and it showed

    “Error: object ‘find.BIB’ not found”

  10. Fred Anointed says:

    Thanks, got some other plugins which solved d errors.
    Is there a way I can check if a design is a Symmteric BIBD or a resolvable one?

    Another is how I can verify the design
    (3,1,1,3,1), (4,4,3,3,2), (5, 10, 6,3,3) and (6,20,10,3,4)


  11. Tanelorn says:

    Your page on BIBD helped me immensely on my stats homework. Thank you!

  12. Fred Anointed says:

    Well am yet to get an answer though, some of the designs I posted earlier were symmetric.

    My question now is, can someone please, post other examples that are not symmetric but when checked if it is a BIBD will show that it is a BIBD w.r.t …..

    Thank you

  13. ketevan says:

    I WOULD LIKE TO DEVELOP BIB DESIGN -6, 4, 4, 1. Could you kindly help me with that ?

  14. don giles says:

    ketevan; will gladly help you but we need 5 parameters namely (v,b,r,k,ll) you have listed only 4 namely 6,4,4,1.

  15. don giles says:

    Fred; Have been busy with gardens last week. Will send you examples of BIBD’s that are not symmetric. I have a method for generating an infinity of symmetric designs where each pair occurs exactly once. These are affine planes. If you like I will send you an example. By the way what text book are you using?

  16. don giles says:

    Fred; here is a design where v=6,b=10,r=5,k=3,l=2.
    234554545 notice that 0,1,2 is the first of the 10 blocks.Also notice that v<=b,vr=bk,l(v-1)=r(k-1) or numerically
    6<=10,6*5=10*3, 2(6-1)=5(k-1).
    these are the neccesary conditions for the existence of any BIBD.
    Just because these conditions exist does not mean the bibd exists.
    For example the design (22,33,12,8,4) meet these necessary conditions but it has been shown not to exist.
    If you want more small example of BIBD's ,let me know.

  17. don giles says:

    There are 25 symmetric BIBD’s with r=k less than 41. At present my project involves rewriting these designs so that their incidence matrix equals it’s transpose. Putting it anothwer way,I want the 0,1 code for each row to be identical to the 0,1 code for the corresponding column. That is the code for the ith row must be the same as the code for ith column.I have accomplished this for (7,3,1) along with an infinity of designs with l=1. Also I have constructed (16,6,2) with this property. Presently I am working on (37,9,2) which gets infinitely more difficult. Once this is done then these designs will truly be symmetric.
    It would likely be easier to show that by interchanging rows and columns that this can be accomplished for any symm BIBD. But then I still would not have the concrete examples that I want.
    If any one is interested in this project feel free to contact me.

  18. Fred Anointed says:

    giles: I have trying a couple of BIBDs since d past weeks and was able to also lay my hands on several textbooks. Thanks for your two last posts. As for my work, am not unto d affines yet but heading there. My current work is to Validate BIBDs in R and other possible softwares. Or first of all generate different BIBDs and validate their type. In R, it will surely tell it is a BIBD w.r.t row…..but will not tell U if it is resolvable, symmetric or otherwise. While want I want to show my people is the class of BIBD it belongs using R or related softwares after generating it. Also, for resolvable BIBDs, I will like to see d resolved design.

    Some of d textbooks I consulted includes A Walk Through
    Combinatorics : An Introduction to Enumeration and Graph Theory by Miklos Bona, The Theory of the Design of Experiments by D.R. COX, Experimental Design and Analysis by Howard J. Seltman, Optimal
    Experimental Design with R by Dieter Rasch, J├╝rgen Pilz, Rob Verdooren, Albrecht Gebhardt and few recommended texts on R CRAN website.

    Some of the BIBDs I was able to verify though not knowing their class of BIBD are
    (10, 15, 6, 4), (11,55,10,2), (7,21,6,2), (9,36,8,2) for each case, I was d one counting to know d value for lambda from the design. Am open to suggestions on the way forward. Thanks

  19. Zaheer says:

    Dear Giles;
    I want to generate an incidence matrix from a given BIBD design in matrix.
    Plz help out me with R codes.

  20. Zaheer says:

    Also the package “crossdes” cannot be installed in R, because it went into the R archives and I am unabble to install it manually.

  21. Teresa says:

    Dear colleagues

    I’m a BIBD researcher and I would like to contact Don Giles, since I’m interested in his project. What shall I do?

    Best wishes

  22. Ralph says:


    What aspects of BIBD are you interested in – the construction of them?


  23. Teresa says:

    Dear Ralph,

    I’m interested in all aspects of BIBD, but now I’m investigating the particular properties of BIBD with repeated blocks and their construction.

    Best wishes

  24. Ralph says:

    Hi Teresa,

    Are you looking at estimating treatment effects and differences between pairs of treatments? I did some research previously looking at block designs and row-column design to determine how the variances of differences between pairs of treatments increased when data was lost from an experiment.

    When considering repeated blocks is the problem based on deciding which blocks to repeat to improve the estimates of treatment effects?

    Best wishes

  25. Nadhem says:


    I am new using R. I tried to download and install “crossdes” to use the find.BIB function.

    The problem that I can’t found the “crossdes” package?

    I have the 64 bites R version

    Any help, please?

    Thank you