Page 1 of 1

Can't generate valid initial design

PostPosted: Wed Aug 04, 2021 2:44 pm
by lcameron1
Hello,

When I run the below syntax I get the following error message:

'A valid initial random design could not be generated after approximately 10 seconds. In this time, of the 146699 attempts made, there were 0 row repetitions, 6829 alternative repetitions, and 139870 cases of dominance. There are a number of possible causes for this, including the specification of too many constraints, not having enough attributes or attribute levels for the number of rows required, and the use of too many scenario attributes. A design may yet be found, and the search will continue for 10 minutes. Alternatively, you can stop the run and alter the syntax.'

I have tried changing the number of rows and blocks, removing the condition, and dropping the con property but I still get this message. The only way I get a valid initial design is if I allow dominated alternatives or significantly reduce the number of interactions, neither of which I want for my design in an ideal world.

Do you have any suggestions for how I can find a valid design?

I really appreciate your help.

Thank you

Lachy

Code: Select all
Design
;alts = A*, B*, C
;rows = 36
;block = 3
;eff = (mnl, d)
;cond:
if(A.Time = 0, B.Time <> 1)
;con
;model:
U(A)= b0[(n,0.001,0.001)] + b2.effects[(n,0,0.001)|(n,-0.001,0.001)|(n,0.001,0.001))]*odds[1,2,3,0] + b3.effects[(n,0.001,0.001)]*time[1,0]
+ b4.effects[(n,0.001,0.001)]*form[1,0] + b5.effects[(n,0.001,0.001)]*tip[1,0] + b6.effects[(n,0.001,0.001)]*induce[1,0]
+ b7[(n,0,0.001)]*odds.effects[1]*time.effects[1] + b8[(n,0,0.001)]*odds.effects[2]*time.effects[1]
+ b9[(n,0,0.001)]*odds.effects[3]*time.effects[1]
+ b12[(n,0,0.001)]*odds.effects[1]*form.effects[1] + b13[(n,0,0.001)]*odds.effects[2]*form.effects[1]
+ b14[(n,0,0.001)]*odds.effects[3]*form.effects[1]
+ b17[(n,0,0.001)]*odds.effects[1]*tip.effects[1] + b18[(n,0,0.001)]*odds.effects[2]*tip.effects[1]
+ b19[(n,0,0.001)]*odds.effects[3]*tip.effects[1]
+ b27[(n,0,0.001)]*odds.effects[1]*induce.effects[1] + b28[(n,0,0.001)]*odds.effects[2]*induce.effects[1]
+ b29[(n,0,0.001)]*odds.effects[3]*induce.effects[1]
+ b37[(n,0,0.001)]*time.effects[1]*form.effects[1] + b38[(n,0,0.001)]*time.effects[1]*tip.effects[1] + b40[(n,0,0.001)]*time.effects[1]*induce.effects[1]
+ b42[(n,0,0.001)]*form.effects[1]*tip.effects[1] + b44[(n,0,0.001)]*form.effects[1]*induce.effects[1]
+ b46[(n,0,0.001)]*tip.effects[1]*induce.effects[1]
/
U(B)= b1[(n,0,0.001)] + b2.effects*odds + b3.effects*time
+ b4.effects*form + b5.effects*tip + b6.effects*induce
+ b7*odds.effects[1]*time.effects[1] + b8*odds.effects[2]*time.effects[1]
+ b9*odds.effects[3]*time.effects[1]
+ b12*odds.effects[1]*form.effects[1] + b13*odds.effects[2]*form.effects[1]
+ b14*odds.effects[3]*form.effects[1]
+ b17*odds.effects[1]*tip.effects[1] + b18*odds.effects[2]*tip.effects[1]
+ b19*odds.effects[3]*tip.effects[1]
+ b27*odds.effects[1]*induce.effects[1] + b28*odds.effects[2]*induce.effects[1]
+ b29*odds.effects[3]*induce.effects[1]
+ b37*time.effects[1]*form.effects[1]+ b38*time.effects[1]*tip.effects[1] + b40*time.effects[1]*induce.effects[1]
+ b42*form.effects[1]*tip.effects[1] + b44*form.effects[1]*induce.effects[1]
+ b46*tip.effects[1]*induce.effects[1]
$

Re: Can't generate valid initial design

PostPosted: Wed Aug 11, 2021 8:34 am
by Michiel Bliemer
Apologies for the late reply, I seem to have missed this post earlier.

The error message indicates that your design is extremely constrained, mainly due to dominance checks. You are asking Ngene to find a design with 36 rows using the default swapping in which there exist no choice tasks with a dominant alternative. Almost 60% of the choice tasks in the full factorial have a dominant alternative and therefore selecting 36 of them without any dominance will be difficult for the column-based swapping algorithm. The solution is to switch to the row-based modified Federov algorithm as I have done in the syntax below. Note that this algorithm does not support conditional constraints so I rewrote your constraint as a reject constraint. Further, this algorithm does not guarantee attribute level balance so I have added a constraint for the odds attribute to ensure that each level appears between 8 and 10 times. Further, I have used "fixed" in the efficiency command since your standard deviations of the normally distributed priors are extremely small and therefore would not have any purpose and would only increase the computation time. Using fixed priors will already take a long time, you will want to run the syntax below for several hours at least (the computation time is high since the variance-covariance matrix is very large due to the many parameters).

Code: Select all
Design
;alts = A*, B*, C
;rows = 36
;block = 3
;eff = (mnl, d, fixed)
;alg = mfederov(candidates = 1500)
;reject:
A.time = 0 and B.time = 1
;con
;model:
U(A)= b0[(n,0.001,0.001)]
    + b2.effects[(n,0,0.001)|(n,-0.001,0.001)|(n,0.001,0.001))] * odds[1,2,3,0](8-10,8-10,8-10,8-10)
    + b3.effects[(n,0.001,0.001)]                               * time[1,0]
    + b4.effects[(n,0.001,0.001)]                               * form[1,0]
    + b5.effects[(n,0.001,0.001)]                               * tip[1,0]
    + b6.effects[(n,0.001,0.001)]                               * induce[1,0]
    + b7[(n,0,0.001)]                                           * odds.effects[1] * time.effects[1]
    + b8[(n,0,0.001)]                                           * odds.effects[2] * time.effects[1]
    + b9[(n,0,0.001)]                                           * odds.effects[3] * time.effects[1]
    + b12[(n,0,0.001)]                                          * odds.effects[1] * form.effects[1]
    + b13[(n,0,0.001)]                                          * odds.effects[2] * form.effects[1]
    + b14[(n,0,0.001)]                                          * odds.effects[3] * form.effects[1]
    + b17[(n,0,0.001)]                                          * odds.effects[1] * tip.effects[1]
    + b18[(n,0,0.001)]                                          * odds.effects[2] * tip.effects[1]
    + b19[(n,0,0.001)]                                          * odds.effects[3] * tip.effects[1]
    + b27[(n,0,0.001)]                                          * odds.effects[1] * induce.effects[1]
    + b28[(n,0,0.001)]                                          * odds.effects[2] * induce.effects[1]
    + b29[(n,0,0.001)]                                          * odds.effects[3] * induce.effects[1]
    + b37[(n,0,0.001)]                                          * time.effects[1] * form.effects[1]
    + b38[(n,0,0.001)]                                          * time.effects[1] * tip.effects[1]
    + b40[(n,0,0.001)]                                          * time.effects[1] * induce.effects[1]
    + b42[(n,0,0.001)]                                          * form.effects[1] * tip.effects[1]
    + b44[(n,0,0.001)]                                          * form.effects[1] * induce.effects[1]
    + b46[(n,0,0.001)]                                          * tip.effects[1]  * induce.effects[1]
    /
U(B)= b1[(n,0,0.001)]
    + b2.effects                                                * odds
    + b3.effects                                                * time
    + b4.effects                                                * form
    + b5.effects                                                * tip
    + b6.effects                                                * induce
    + b7                                                        * odds.effects[1]*time.effects[1]
    + b8                                                        * odds.effects[2]*time.effects[1]
    + b9                                                        * odds.effects[3]*time.effects[1]
    + b12                                                       * odds.effects[1]*form.effects[1]
    + b13                                                       * odds.effects[2]*form.effects[1]
    + b14                                                       * odds.effects[3]*form.effects[1]
    + b17                                                       * odds.effects[1]*tip.effects[1]
    + b18                                                       * odds.effects[2]*tip.effects[1]
    + b19                                                       * odds.effects[3]*tip.effects[1]
    + b27                                                       * odds.effects[1]*induce.effects[1]
    + b28                                                       * odds.effects[2]*induce.effects[1]
    + b29                                                       * odds.effects[3]*induce.effects[1]
    + b37                                                       * time.effects[1]*form.effects[1]
    + b38                                                       * time.effects[1]*tip.effects[1]
    + b40                                                       * time.effects[1]*induce.effects[1]
    + b42                                                       * form.effects[1]*tip.effects[1]
    + b44                                                       * form.effects[1]*induce.effects[1]
    + b46                                                       * tip.effects[1]*induce.effects[1]
$


Michiel