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.
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.