efficient design question

This forum is for posts that specifically focus on Ngene.

Moderators: Andrew Collins, Michiel Bliemer, johnr

efficient design question

Postby Willey » Tue Mar 21, 2023 6:46 pm

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?
Willey
 
Posts: 7
Joined: Fri Mar 17, 2023 2:04 pm

Re: efficient design question

Postby Michiel Bliemer » Wed Mar 22, 2023 7:05 am

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
Michiel Bliemer
 
Posts: 1885
Joined: Tue Mar 31, 2009 4:13 pm

Re: efficient design question

Postby Willey » Wed Mar 22, 2023 11:10 am

design
Last edited by Willey on Wed Mar 22, 2023 11:48 am, edited 1 time in total.
Willey
 
Posts: 7
Joined: Fri Mar 17, 2023 2:04 pm

Re: efficient design question

Postby Willey » Wed Mar 22, 2023 11:22 am

sorry
Last edited by Willey on Wed Mar 22, 2023 11:49 am, edited 1 time in total.
Willey
 
Posts: 7
Joined: Fri Mar 17, 2023 2:04 pm

Re: efficient design question

Postby Willey » Wed Mar 22, 2023 11:24 am

Michiel 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


design
;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
Willey
 
Posts: 7
Joined: Fri Mar 17, 2023 2:04 pm

Re: efficient design question

Postby Michiel Bliemer » Wed Mar 22, 2023 3:07 pm

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
Michiel Bliemer
 
Posts: 1885
Joined: Tue Mar 31, 2009 4:13 pm

Re: efficient design question

Postby Willey » Wed Mar 22, 2023 3:36 pm

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

Thank you, Professor Michiel, for your answer. I understand very well now. Thank you so much!
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?
Willey
 
Posts: 7
Joined: Fri Mar 17, 2023 2:04 pm

Re: efficient design question

Postby Michiel Bliemer » Thu Mar 23, 2023 10:49 am

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
Michiel Bliemer
 
Posts: 1885
Joined: Tue Mar 31, 2009 4:13 pm

Re: efficient design question

Postby Willey » Thu Mar 23, 2023 11:01 am

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

Thank you very much for your help and guidance, I harvest is too much!
Willey
 
Posts: 7
Joined: Fri Mar 17, 2023 2:04 pm


Return to Choice experiments - Ngene

Who is online

Users browsing this forum: No registered users and 26 guests