Subscribe Bookmark RSS Feed

Balanced Incomplete Block Design on JMP

saskbri

Community Member

Joined:

Apr 30, 2014

How do I execute a balanced incomplete block design (BIBD) on the JMP software with 13 attributes, forming 13 blocks or choice sets, each attribute appearing 4 times across all choice sets, each choice set containing 4 attributes and each attribute appearing once with each other: (b, r, k, lambda) (13, 4,4,1) where b is number of blocks, r is the repitition per level, k is the number of attributes in each choice set (block size) and lambda is the pair frequency?

Any assistance woud be appreciated, thanks.

Brian.

4 REPLIES
Jeff_Perkinson

Community Manager

Joined:

Jun 23, 2011

Hi Brian,

This question came up a while ago on LinkedIn and got a pretty good set of responses.

-Jeff

-Jeff
rogersmd

Community Trekker

Joined:

Oct 27, 2015

The LinkedIn page is no longer available.  Are there other resources that define how a BIBD can be developed in JMP?

Jeff_Perkinson

Community Manager

Joined:

Jun 23, 2011

Creating a BIBD using the DOE platform -- how can I do it?

Hi,

I have a question about using the DOE platform to create a balanced incomplete block design (BIBD). I have 13 treatments and I want a design with 13 blocks or runs, 4 treatments per block, each treatment repeating 4 times with no repetitions in a block, and each pair repeating once. I know such a design exists (See the Cochrane and Cox book or use the SAS macros), but I can't get JMP to do it. If you're a design expert and know the DOE platform, could you please tell me if this is possible in JMP and how to do it?

Thanks,

Walt Paczkowski

  • Sean Schubert There may be a way to set this up using the Custom Design function, group runs into block size 4, hard-to-change and easy-to-change factors, but I would probably try those options and not get a design that satisfies all the constraints so I would end up constructing it manually.

    I would create a design that is 13 treatments x 4 replicates fully randomized. Then I assign the treatments to Blocks by starting with Row 1 and asking does this treatment follow the rules. If not I skip it and add it to the next Block. Eventually all treatments will be assigned.

    Not the best answer, but I at least know I will get something that satisfies the requirements quickly.


  • Walter Paczkowski Good morning,

    I've almost decided that JMP can't create a BIBD -- seems that few
    packages can. Your suggestion of a "brute force" approach may work. It
    will require some effort to write a script, but it may be interesting to do.

    Thanks for the suggestion,

    Walt


    _____________________________________________________

    On 9/21/2013 9:39 AM, JMP Professional Network wrote:


  • Sean Schubert Walter,

    Is this a design you'll run many times exactly as specified? I love a programming challenge, but this may not be an easy algorithm to get right.

  • Walter Paczkowski Hi,

    It would be run many times, which is why I'm not going to attempt it
    myself for some time. I need a BIBD for different market research
    projects. The best way from JMP would be to use the SAS interface and
    the SAS macro %mktBIBD to generate one (if it exists).

    Thanks again,

    Walt


    _____________________________________________________


    On 9/22/2013 12:30 PM, JMP Professional Network wrote:



  • Brady Brady Hi Walter,

    At this time, JMP’s algorithms will not with certainty generate a BIBD. However, I will share an alternative approach that works in some cases. (For example, it worked for me and others, repeatedly, in the case you describe above.)

    JMP’s DOE developers are always thinking about how to enhance the DOE platform in future versions of JMP. Customer requests factor heavily into their decisions; if you’d like, please share your desire for BIBD support with them at: support@jmp.com

    In the meantime, perhaps this approach will help you out. Again, not a guarantee, but definitely worth a try:

    * Invoke the Custom Designer in the DOE menu.

    * Create 13 continuous factors, low level = 0, high level = 1. (This is important for the constraints in the next step.)

    * Add 2 constraints: Sum(factors) >=4; sum(factors) <=4. To do this, enter “1” for all coefficients, select the appropriate inequality, and enter 4 on the RHS of the inequality. (Each time you want to add a constraint, press the “Add Constraint” button, which is revealed when expanding the “Define Factor Constraints” outline box.

    * Click on the intercept’s estimability of “Necessary” and change it to “If Possible”, thereby allowing the minimum runs to be 13. Select this minimal number of runs. (For designs where you have more blocks than factors, this step will not be necessary.)

    * Create the design and round the design points to integers (some of the values are not quite 0 or 1.)


    Cheers, and thanks for using JMP!

    Brady

  • Brady Brady A follow-up on the above:

    In step 4, just go ahead and remove the intercept term altogether (whether or not this is actually required, it seems to improve the likelihood of success; by using this adjustment, in another example I was able to find a BIBD where I had failed before.)



  • Walter Paczkowski Hi,

    Thanks for the help on this. I'll certainly try it. I would like to
    see a BIBD added to JMP because it's a common design in market research.

    Thanks,

    Walt


    _____________________________________________________


    On 9/23/2013 4:12 PM, JMP Professional Network wrote:

  • Beatrice Blum Hi Walt,

    My experience is: if SAS can do a DoE job, then JMP can do it.
    The following should meet all your needs.

    DoE - Custom Design
    Add 1 Categorical Factor "Treatment" with 13 levels
    Add 1 Blocking Factor "Block" with "4 runs per block"
    (important: don't use "Group runs into random block of 4" instead. This will generate the same design as Brady's approach)
    Number of Runs: User specified: 52 (13 trt * 4 per block = 52 total runs for JMP)
    Click on Continue
    Make Table

    Check resulting table with Tabulate. It is balanced. And as far as I could see every pair is duplicated (I did not check them all), which Brady's approach is not providing. But I am still not sure I am missing something here, because Brady's anwers tend to be excellent and ultimate.

    Hope this helps,
    Bea

  • Brady Brady Hello all,

    The approach Beatrice mentions is the approach that I originally tried. This design is balanced in the sense that each treatment appears in the same number of blocks, but a BIBD also requires that each pair of treatments occur in the same number of blocks.

    Due to the randomization inherent in the algorithm creating the custom designs, there is nothing actually preventing the 13-level categorical approach from creating a BIBD, but the likelihood of this happening appears much lower than with the continuous approach. I (and a couple of others who have been looking into this) have yet to get a BIBD with the categorical approach (whether I added a blocking factor, or simply clicked the radio button to group runs into blocks), but have created a BIBD (for this example) each time using the continuous approach.

    Below, I have shown 3 representative x`*x matrices for comparison purposes. (For the categorical examples, you first have to split the design table to form a 13x13 matrix.)

    Along the main diagonals, all entries are 4. This means that each of the 13 factors appears in 4 blocks--no matter which method was used.

    The off-diagonal entries tally the number of blocks in which a given pair of factors appears. Notice that in the first two examples, there are 0s, 1s and 2s off the main diagonal. This means that some treatment pairs appeared in zero blocks, some in one block, and some in two blocks. The design is a BIBD only when all of the off-diagonal entries are the same. So, only in the 3rd case do we have a BIBD.

    Example 1: x`*x matrix from a custom design with 52 runs of a 13-level categorical factor with a 4 run per-block blocking factor:
    [4 1 2 1 1 2 0 1 0 0 2 1 1,
    1. 4 1 1 0 0 2 2 1 1 1 2 0,

    1. 1 4 0 0 1 1 2 0 1 1 1 2,

    1. 1 0 4 3 1 2 0 1 1 0 1 1,

    1. 0 0 3 4 2 2 0 1 1 1 0 1,

    1. 0 1 1 2 4 0 1 1 1 1 1 1,

    0 2 1 2 2 0 4 1 1 1 1 1 0,
    1. 2 2 0 0 1 1 4 2 1 1 0 1,

    0 1 0 1 1 1 1 2 4 2 1 1 1,
    0 1 1 1 1 1 1 1 2 4 0 2 1,
    1. 1 1 0 1 1 1 1 1 0 4 1 2,

    1. 2 1 1 0 1 1 0 1 2 1 4 1,

    1. 0 2 1 1 1 0 1 1 1 2 1 4]

    Example 2: x`*x matrix from a custom design with 52 runs of a 13-level categorical factor, using the dialog button “Group runs into random blocks of size 4”:
    [4 2 1 2 1 1 0 1 2 1 0 1 0,
    1. 4 1 1 1 1 1 2 1 1 0 1 0,

    1. 1 4 1 1 1 2 0 1 1 1 1 1,

    1. 1 1 4 0 0 1 2 1 1 1 1 1,

    1. 1 1 0 4 2 1 2 1 0 1 1 1,

    1. 1 1 0 2 4 1 1 1 1 1 1 1,

    0 1 2 1 1 1 4 0 1 0 2 1 2,
    1. 2 0 2 2 1 0 4 0 1 1 1 1,

    1. 1 1 1 1 1 1 0 4 2 0 0 2,

    1. 1 1 1 0 1 0 1 2 4 2 1 1,

    0 0 1 1 1 1 2 1 0 2 4 2 1,
    1. 1 1 1 1 1 1 1 0 1 2 4 1,

    0 0 1 1 1 1 2 1 2 1 1 1 4]


    Example 3: x`*x matrix from a custom design with 13 constrained runs of 13 continuous factors (as described earlier in this thread):
    [4 1 1 1 1 1 1 1 1 1 1 1 1,
    1. 4 1 1 1 1 1 1 1 1 1 1 1,

    1. 1 4 1 1 1 1 1 1 1 1 1 1,

    1. 1 1 4 1 1 1 1 1 1 1 1 1,

    1. 1 1 1 4 1 1 1 1 1 1 1 1,

    1. 1 1 1 1 4 1 1 1 1 1 1 1,

    1. 1 1 1 1 1 4 1 1 1 1 1 1,

    1. 1 1 1 1 1 1 4 1 1 1 1 1,

    1. 1 1 1 1 1 1 1 4 1 1 1 1,

    1. 1 1 1 1 1 1 1 1 4 1 1 1,

    1. 1 1 1 1 1 1 1 1 1 4 1 1,

    1. 1 1 1 1 1 1 1 1 1 1 4 1,

    1. 1 1 1 1 1 1 1 1 1 1 1 4]

    I hope this helps!

    Cheers,
    Brady

  • Sean Schubert I can envision copying the standard design table from JMP into Excel and then programming the constraints in VBA to get the blocked run order.

    Once it was set up properly, then every time I hit F9, I'd get a new run order.

-Jeff
rogersmd

Community Trekker

Joined:

Oct 27, 2015

Thank you for the prompt response.