Page 1 of 1

Script gives MNL D-Error Undefined, no further valid designs

PostPosted: Wed Dec 18, 2024 8:17 pm
by Remai
Hi there

I'm trying to generate a partial profile with 60 rows in 10 blocks for a DCE pilot.

I initially created a candidate set with 9000 rows, where I had applied my reject rule criteria to restrict the combinations in the candidate set. I then restricted this dataset so that only the records that had 3 overlapping attributes were included, and this brought it down to around 2200 rows.

Using the candidate set of 2200 rows, when I try to generate my pilot data from this, Ngene is unable to produce a valid design. Is there something wrong in my script (included below), or is Ngene unable to find appropriate scenarios due to the restrictions I set in my reject criteria when creating my candidate set? Or could it be due to two of my attributes having 8-10 levels?

I initially tried adding level balancing but this produced no results and when I stopped the execution, I had the error:
[Modified Fedorov] ERROR: Unable to find a design that satisfies the specified attribute level frequency constraints. You may need to relax some attribute level constraints, combinatorial constraints (if specified), or dominance checks. The candidate set has 1886 rows
- however this was with the candidate set with 2200 rows, so I'm not sure why the row count didn't match.

When no level balance is included and I run the script, I immediately get a single evaluation response with an MNL D-Error of "Undefined", and all of the subsequent evaluations are reported as invalid designs (the counter rapidly ticks up about 50 evaluations per second). This is my script:
Code: Select all
Design
;alts = optA*, optB*, neither
;rows = 60
;block = 10
;eff = (mnl,d)
;alg = mfederov(candidates=candidate_set.csv)

;model:
U(optA) = b1.dummy[0.000001|0.000002|0.000003|0.000004|0.000005|0.000006|0.000007|0.000008|0.000009] * meds[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
+ b2.dummy[0.000001|0.000002|0.000003|0.000004|0.000005|0.000006|0.000007] * support[0, 1, 2, 3, 4, 5, 6, 7]
+ b3.dummy[0.000001] * contact[0, 1]
+ b4.dummy[0.000001|0.000002|0.000003|0.000004] * distance[0, 1, 2, 3, 4]
+ b5.dummy[0.000001|0.000002] * addition[0, 1, 2]
+ b6.dummy[0.000001|0.000002] * tools[0, 1, 2]
+ b7.dummy[0.000001|0.000002|0.000003] * cost[0, 1, 2, 3]
/
U(optB) = b1 * meds
 + b2 * support
 + b3 * contact
 + b4 * distance
 + b5 * addition
 + b6 * tools
 + b7 * cost
$

Re: Script gives MNL D-Error Undefined, no further valid des

PostPosted: Thu Dec 19, 2024 2:38 pm
by Michiel Bliemer
The script runs without your candidate set, so the issue is in your candidate set. Since it states Undefined D-error it means that the model cannot be estimated based on the data. Maybe your constraints created multicollinearity in the data? For example, you cannot have constraints such as IF MEDS=1 THEN SUPPORT=3 because this creates perfect correlation between these dummy coded attribute levels.

If you open the design with Undefined D-error, you can look at the covariance matrix, which should tell you which parameters are the issue. That may give you a clue where the issue may be in your candidate set.

Michiel