Page 1 of 1

Inversely Related Attributes

PostPosted: Thu Aug 29, 2024 1:40 am
by zeynepc
I have a syntax with an interaction term over the attributes Distance and Price. It is known with certainty that these two attributes are inversely proportional to each other , it is not possible to increase them at the same time. How can we integrate this information to the given syntax to eliminate dominated alternatives from the output?


Design
;alts = alt1, alt2
;rows = 18
;eff = (mnl,d)
;block = 3
;model:
U(alt1) = b1[-0.5] * Price[5,10,20,30] + b2[-0.4] * Distance[0,50,100,200] + b3[0.1] * EmissionSaving[0,20, 40] + b4 * Price * Distance /
U(alt2) = b1 * Price + b2 * Distance + b3 * EmissionSaving + b4 * Price * Distance $

Re: Inversely Related Attributes

PostPosted: Thu Aug 29, 2024 1:11 pm
by Michiel Bliemer
You will need to add an asterisk (*) in the alts property to identify that both alternatives are of the same type, then Ngene will automatically detect and remove dominant alternatives. Note that your design has only a few attributes and is therefore quite constrained due to dominance checks and the default swapping algorithm will struggle finding designs without dominant alternatives. In the script below I switched to the modified Federov algorithm and added some attribute level constraints.

Code: Select all
Design
;alts = alt1*, alt2*
;rows = 18
;eff = (mnl,d)
;alg = mfederov
;block = 3
;model:
U(alt1) = b1[-0.5] * Price[5,10,20,30](3-6,3-6,3-6,3-6)
        + b2[-0.4] * Distance[0,50,100,200](3-6,3-6,3-6,3-6)
        + b3[0.1]  * EmissionSaving[0,20,40](4-8,4-8,4-8)
        + b4       * Price * Distance
        /
U(alt2) = b1       * Price
        + b2       * Distance
        + b3       * EmissionSaving
        + b4       * Price * Distance
$


Interaction effects like Price * Distance are not checked for dominance, and is perhaps also not what you are looking for as it does not describe that they are inversely proportional. Perhaps you are referring to constraints? You could impose constraints, such as:

;reject:
alt1.price = 5 and alt1.distance = 0,
alt1.price = 10 and alt1.distance = 0,
alt1.price = 10 and alt1.distance = 50
...etc

Michiel