Page 1 of 1

Constraining Attribute Levels Within Blocks

PostPosted: Wed Aug 28, 2019 9:03 am
by tn73
Dear All,
I would like to constrain the attribute level of one of the attributes such that it is the same for all choice tasks within each block. For example, I have a cost ($) variable with 4 levels, and a cost-share (C_Share) variable (% of the cost) with 3 levels and I would like to generate a design with 48 rows and 16 blocks. The design has two alternatives, a status quo (altA), and Alternative B (altB). Cost is zero for the status quo and non-zero for altB. I would like to constrain altB.Cost level to be the same within each block, i.e., the cost level may vary across blocks but not across choice tasks within each block. Any suggestions on how I can do this? I have provided below, my syntax without the constraint.

Design
;alts = altA, altB
;rows = 48
;block = 16
;eff = (mnl,d)
;alg = swap
;rdraws = halton(250)
;model:
U(altA)= b1 /
U(altB) = b2.effects * A[0,1] + b3 * C_Share[25, 50, 75] + b4.effects * B[0,1] + b5.effects * C[0, 1, 2] + b6.effects * D[0,1]+ b7.effects * E[0,1] + b8 * Cost[100, 200, 600, 1,500] + b9 * Cost*C_Share $

Re: Constraining Attribute Levels Within Blocks

PostPosted: Wed Aug 28, 2019 9:42 am
by Michiel Bliemer
Blocking aims to achieve attribute level balance within each block. You are requesting to actually have no attribute level balance within a block by having only one level for cost to appear. Therefore, this actually contradicts blocking.

Your best bet it to simply generate the design and do the blocking manually such that:
(1) cost level is the same within the block
(2) all other attribute levels appear more or less equally within the block (but perfect balance is not required).

I fixed some issues with your syntax:
Code: Select all
Design
;alts = altA, altB
;rows = 48
;eff = (mnl,d)
;model:
U(altA)= b1[0] /
U(altB) = b2.effects[0] * A[0,1] + b3[0] * C_Share[25, 50, 75] + b4.effects[0] * B[0,1] + b5.effects[0|0] * C[0, 1, 2] + b6.effects[0] * D[0,1]+ b7.effects[0] * E[0,1] + b8[0] * Cost[100, 200, 600, 1500] + b9[0] * Cost*C_Share
$


For example, I did some manual blocking for the first 4 blocks below (where I first sorted the design by cost level):

Code: Select all
altb.a   altb.c_share   altb.b   altb.c   altb.d   altb.e   altb.cost   block
1   25   1   2   1   0   100   1
1   25   0   0   0   1   100   1
0   25   0   1   1   0   100   1
0   75   0   0   0   1   100   2
1   25   0   0   1   1   100   2
0   75   1   2   1   0   100   2
0   75   1   0   0   0   100   3
0   25   1   0   1   1   100   3
0   75   0   2   0   0   100   3
0   25   0   2   0   1   100   4
1   75   0   2   1   1   100   4
1   75   1   1   0   0   100   4
0   75   1   0   1   0   200   
0   25   1   2   0   0   200   
1   75   1   0   1   1   200   
1   75   0   1   1   0   200   
1   25   1   0   1   0   200   
0   50   1   2   0   0   200   
0   25   0   1   0   0   200   
1   75   0   1   0   1   200   
0   25   1   1   0   0   200   
1   50   0   1   1   1   200   
1   50   1   1   0   0   200   
1   50   1   1   1   1   200   
0   50   1   1   1   1   600   
1   50   1   1   0   1   600   
1   50   0   2   0   1   600   
0   50   0   2   1   1   600   
1   50   1   0   0   1   600   
1   50   0   0   0   0   600   
1   50   1   2   1   1   600   
0   50   0   2   0   1   600   
0   50   0   0   1   1   600   
1   50   1   2   0   1   600   
0   50   0   1   1   0   600   
0   50   0   0   1   0   600   
0   75   1   2   0   1   1500   
1   25   0   2   1   0   1500   
1   75   1   0   0   0   1500   
1   25   1   2   1   0   1500   
0   75   0   0   1   0   1500   
0   25   1   0   0   1   1500   
1   75   0   2   1   0   1500   
1   75   0   1   0   0   1500   
0   25   0   1   0   1   1500   
1   25   0   0   0   0   1500   
0   25   1   1   1   1   1500   
0   75   1   1   1   1   1500   


Michiel

Re: Constraining Attribute Levels Within Blocks

PostPosted: Thu Aug 29, 2019 3:01 am
by tn73
Hi Michiel,
Thanks for your prompt response.