Hello, founder, I am a newcomer to ngene. I have several questions about Ngene that I would like to ask. I wonder if I can get a response from you:
First of all, let me introduce my attributes. I have 6 attributes, with 2-3 levels for each attribute. Now I only know the positive and negative conditions of the attributes (although I have conducted a preliminary survey, the positive and negative values of some indicators obtained are different from what I expected)
Is it correct for me to use the following command for efficient design? (2 alternatives and 1 exit option)
Design
;alts = alt1, alt2,alt3
;rows=18
;block=3
;eff=(mnl,d)
;alg = mfederov(candidates = 1000)
;con
;model:
U(alt1) =a1[0.0001]
+b2[0.00001]* A[0,1,2]
+b3[0.00001]* B[0,1]
+b4[0.00001]* C[0,1]
+b5[0.00001]* D[0,1,2]
+b6[0.00001]* E[0,1]
+b7[-0.00001]* F[0.05,0.15]/
U(alt2) =b2* A[0,1,2] + b3* B[0,1]+b4* C[0,1]+b5* D[0,1,2]+b6* E[0,1]+b7* F[0.05,0.15]/
U(alt3)=b8[0]
$
But the result I obtained is D-error=0.459838 and the D optimality=62.966741%
Is this error too large?Is this D optimality too low?Or can you tell me that I am doing the right thing?
efficient design question
Moderators: Andrew Collins, Michiel Bliemer, johnr
-
- Posts: 2055
- Joined: Tue Mar 31, 2009 4:13 pm
Re: efficient design question
You can ignore D-optimality as this is only really useful with orthogonal designs and when all parameters are orthogonal polynomial coded. The D-error does not look problematic and is case specific. I do not see any issues there.
I would recommend a few changes in your script.
1. Use dummy coding for all your categorical variables, such as b2.dummy[0.001|0.002] * A[1,2,0], where the last level (0) is the reference level.
2. Use alts = alt1*, alt2*, alt3, to indicate that alt1 and alt2 are generic alternatives and to allow Ngene to avoid dominant alternatives.
3. I do not see the need to use the modified Federov algorithm. If you want your design to be attribute level balanced, then you can use the default swapping algorithm, but if you want to squeeze out a bit more efficiency and do not care about attribute level balance, then keep the modified Federov algorithm.
Michiel
I would recommend a few changes in your script.
1. Use dummy coding for all your categorical variables, such as b2.dummy[0.001|0.002] * A[1,2,0], where the last level (0) is the reference level.
2. Use alts = alt1*, alt2*, alt3, to indicate that alt1 and alt2 are generic alternatives and to allow Ngene to avoid dominant alternatives.
3. I do not see the need to use the modified Federov algorithm. If you want your design to be attribute level balanced, then you can use the default swapping algorithm, but if you want to squeeze out a bit more efficiency and do not care about attribute level balance, then keep the modified Federov algorithm.
Michiel
Re: efficient design question
design
Last edited by Willey on Wed Mar 22, 2023 11:48 am, edited 1 time in total.
Re: efficient design question
sorry
Last edited by Willey on Wed Mar 22, 2023 11:49 am, edited 1 time in total.
Re: efficient design question
designMichiel Bliemer wrote:You can ignore D-optimality as this is only really useful with orthogonal designs and when all parameters are orthogonal polynomial coded. The D-error does not look problematic and is case specific. I do not see any issues there.
I would recommend a few changes in your script.
1. Use dummy coding for all your categorical variables, such as b2.dummy[0.001|0.002] * A[1,2,0], where the last level (0) is the reference level.
2. Use alts = alt1*, alt2*, alt3, to indicate that alt1 and alt2 are generic alternatives and to allow Ngene to avoid dominant alternatives.
3. I do not see the need to use the modified Federov algorithm. If you want your design to be attribute level balanced, then you can use the default swapping algorithm, but if you want to squeeze out a bit more efficiency and do not care about attribute level balance, then keep the modified Federov algorithm.
Michiel
;alts = alt1*, alt2*,alt3
;rows=18
;block=3
;eff=(mnl,d)
;con
;model:
U(alt1) =
+b2.dummy[0.001|0.002] * A[1,2,0]
+b3.dummy[0.001]* B[1,0]
+b4.dummy[0.001]* C[1,0]
+b5.dummy[0.001|0.002] * D[1,2,0]
+b6.dummy[0.001] * E[1,0]
+b7[-0.001]* F[0.05,0.15]/
U(alt2) =
+b2.dummy* A[1,2,0]
+b3.dummy* B[1,0]
+b4.dummy* C[1,0]
+b5.dummy* D[1,2,0]
+b6.dummy* E[1,0]
+b7* F[0.05,0.15]/
U(alt3)=b8[0]
$
When I try to run it, it always says“Error: The model has specified constants for all alternates”.
I wonder if it is because Alt1 and ALT2 lack constant terms, or if it is because U (Alt3) .
So,When I tried to delete u (ALT3) = B8[0] and add constant terms a 1, a 2 to U (Alt1) and U (Alt2) , the result came out:
design
;alts = alt1*, alt2*,alt3
;rows=18
;block=3
;eff=(mnl,d)
;con
;model:
U(alt1) =a1
+b2.dummy[0.001|0.002] * A[1,2,0]
+b3.dummy[0.001]* B[1,0]
+b4.dummy[0.001]* C[1,0]
+b5.dummy[0.001|0.002] * D[1,2,0]
+b6.dummy[0.001] * E[1,0]
+b7[-0.001]* F[0.05,0.15]/
U(alt2) =a2
+b2.dummy* A[1,2,0]
+b3.dummy* B[1,0]
+b4.dummy* C[1,0]
+b5.dummy* D[1,2,0]
+b6.dummy* E[1,0]
+b7* F[0.05,0.15]
$
I do not know whether their design is correct, I hope you can help me correct it, if you can help me to run a look better, thank you very much! I look forward to hearing from you
-
- Posts: 2055
- Joined: Tue Mar 31, 2009 4:13 pm
Re: efficient design question
This is due to an error in your syntax. You are writing:
U(alt1) = + b2.dummy[0.001|0.002] * A[1,2,0] + ...
But there is nothing in front of the "+" and Ngene interprets this as a constant. So you just need to remove the "+" from your utility function like this:
U(alt1) = b2.dummy[0.001|0.002] * A[1,2,0] + ...
Michiel
U(alt1) = + b2.dummy[0.001|0.002] * A[1,2,0] + ...
But there is nothing in front of the "+" and Ngene interprets this as a constant. So you just need to remove the "+" from your utility function like this:
U(alt1) = b2.dummy[0.001|0.002] * A[1,2,0] + ...
Michiel
Re: efficient design question
Thank you, Professor Michiel, for your answer. I understand very well now. Thank you so much!Michiel Bliemer wrote:This is due to an error in your syntax. You are writing:
U(alt1) = + b2.dummy[0.001|0.002] * A[1,2,0] + ...
But there is nothing in front of the "+" and Ngene interprets this as a constant. So you just need to remove the "+" from your utility function like this:
U(alt1) = b2.dummy[0.001|0.002] * A[1,2,0] + ...
Michiel
But I still have a few questions that I'd like you to answer:
1. Without knowing the apriori coefficient, we can use the above method to design the scheme to carry out pre-investigation, then get the coefficient, then use the coefficient to design the latest scheme, and finally launch a formal survey to collect data. Is that the right procedure?
2. If I design the above selection based only on the plus or minus of the attribute coefficients, can this scheme be used directly for the formal survey?
-
- Posts: 2055
- Joined: Tue Mar 31, 2009 4:13 pm
Re: efficient design question
1. Yes that would be best practice.
2. Yes you can use this design (which is based on uninformative near-zero priors) also for the main survey, although it will be less efficient than creating a new survey based on informative priors based on the pilot study.
Michiel
2. Yes you can use this design (which is based on uninformative near-zero priors) also for the main survey, although it will be less efficient than creating a new survey based on informative priors based on the pilot study.
Michiel
Re: efficient design question
Thank you very much for your help and guidance, I harvest is too much!Michiel Bliemer wrote:1. Yes that would be best practice.
2. Yes you can use this design (which is based on uninformative near-zero priors) also for the main survey, although it will be less efficient than creating a new survey based on informative priors based on the pilot study.
Michiel