Customized (Constructed) Attribute and Level Lists

Top  Previous  Next

Warning: this is an advanced area.  We caution you to proceed carefully if using constructed lists.


ACBC includes the ability to customize the list of attributes and levels taken into the ACBC survey for each respondent (using Lighthouse Studio's List Building).  We have had success using as many as 10 attributes with 33 total levels within ACBC studies.  We don't know whether respondents can effectively manage even more attributes than this, and future research may answer that question.  


ACBC is designed to handle as many as 100 attributes, with up to 250 levels per attribute.  This capacity is provided because computers can handle the computational and memory requirements, not because we'd ever recommend doing such a large study!


For most studies in practice, each respondent will evaluate the entire list of attributes and levels within the ACBC sections of the survey.  However, because the list of attributes and the levels within each attribute are stored as lists within Lighthouse Studio, it is possible to create constructed (customized) lists of attributes and levels for each respondent.  It is possible to exclude entire attributes from consideration in ACBC (because we believe these attributes to be entirely irrelevant to a respondent and carry no importance) or to exclude certain levels from attributes (such as excluding irrelevant brands that are unacceptable or not available).  Any of these exclusions must be done prior to beginning the ACBC section of the Lighthouse survey.


We must stress that we don't know the best way to ask a respondent to indicate which attributes are irrelevant to him or her so that we could exclude them from the attribute list.   This is left to your judgment (though we recommend that the range of levels associated with an attribute should be shown to respondents when asking them to mark irrelevant attributes).  


We also don't know the best way to ask regarding which levels (such as levels of brand) are unacceptable. However, if levels have associated level-based component prices in your design, you should display the level-based prices when eliciting which levels to take forward to the ACBC questionnaire.  The utility estimation procedure assumes that levels were accepted/rejected considering their component-based prices.


Please consider the following assumptions that we make when dealing with customized (constructed) lists of attributes and levels.


1.  If an attribute is omitted from a respondent's customized attribute list, we assume it has zero importance (all levels will carry a part-worth of zero for that attribute).


2.  If a level is omitted from a respondent's customized attribute list, you must indicate whether the omitted level should be assumed to be: a)  Generally inferior to all included levels (but not absolutely unacceptable), b)  Absolutely unacceptable, c)  Missing randomly, and preferences should be imputed from the population distribution.


Notes and Warnings:  


ACBC can handle the case of just one level being brought into a constructed list for an attribute.  But, zero levels within a constructed list for an attribute will produce a fatal error in the interview; therefore, you'll want to program skip logic to ensure that respondents either reconsider their answers (leading to at least one level in the level list) or that they skip over the ACBC questionnaire.


Be careful if dropping selected levels for a sequentially ordered attribute with a preference direction.  If you do this, you must bring a contiguous set of attribute levels into a respondent's design, and you should impose utility constraints upon this attribute when estimating part-worths.  In the case of sequentially ordered attributes with preference direction, we do not add additional choice information indicating that dropped levels are inferior to included ones; we ask you to inform utility estimation of this via global utility constraints.


Building Constructed Lists Using Unverified Perl


If you are conditionally dropping attributes or levels from consideration, you will sometimes need to use Unverified Perl when building the constructed lists (a constructed attribute list, or a constructed level list for an attribute).


For example, consider the case in which you are studying too many brands of grand pianos to include in each respondent's study design (recall that we recommend bringing no more than about 7 levels for each attribute into each respondent's ACBC study design).  In this example, further assume that we are using summed pricing, and these 15 brands have associated level-based relative prices:


Baldwin        +$6,000

Bechstein        +$10,000

Bosendorfer        +$18,000

Boston        +$12,000

Chickering        +$4,000

Estonia        +$5,000

Kawai                +$8,000

Kimball        +$4,000

Knabe        +$2,000

Petrof                +$6,000

Samick        +$2,000

Steinway        +$25,000

Wurlitzer        +$4,000

Yamaha        +$8,000

Young-Chang        +$0


The actual parent list of brand levels that will feed into the constructed list of brands associated with Attribute 1 in ACBC might be called PianoBrands:


Predefined List: PianoBrands

















If we use screener questions to ask respondents which brands they would consider and which they would never consider, we should show them with their associated relevant prices.  We should do this because the way we encode the information for the BYO for utility estimation assumes that respondents considered every brand in the parent list at their relative prices: that they chose their considered brands and rejected the non-considered brands.


So, we might ask a select-type screener question named Q1 prior to beginning the actual ACBC questions in which the following list is presented (with relevant reference prices):


Predefined List: Q1PianoBrands

Baldwin (typical price $13,000 for 6-foot piano)

Bechstein (typical price $17,000 for 6-foot piano)

Bosendorfer (typical price $25,000 for 6-foot piano)

Boston (typical price $19,000 for 6-foot piano)

Chickering (typical price $11,000 for 6-foot piano)

Estonia (typical price $12,000 for 6-foot piano)

Kawai (typical price $15,000 for 6-foot piano)

Kimball (typical price $11,000 for 6-foot piano)

Knabe (typical price $9,000 for 6-foot piano)

Petrof (typical price $13,000 for 6-foot piano)

Samick (typical price $9,000 for 6-foot piano)

Steinway (typical price $32,000 for 6-foot piano)

Wurlitzer (typical price $11,000 for 6-foot piano)

Yamaha  (typical price $15,000 for 6-foot piano)

Young-Chang (typical price $7,000 for 6-foot piano)

None/No More of the Above


However, we'll want to use answers to Q1 (or multiple similar questions) to build a constructed list of the brand names to be used as the level list for Attribute 1 within the ACBC survey.  In other words, if respondents pick:


Kimball (typical price $11,000 for 6-foot piano)

Samick (typical price $9,000 for 6-foot piano)


from the list (Q1PianoBrands) we show in Q1, we want to add the following brand items from the original parent list (PianoBrands) to the constructed list to be used in the ACBC study for Attribute 1:





One can use a series of IF-Then statements in unverified perl to accomplish this, building a new list called PianoBrandsForACBC using PianoBrands as the parent list, such as:


begin unverified perl

 if(GETVALUE("Q1_1") == 1)        


   ADD("PianoBrands", 1);        


 if(GETVALUE("Q1_2") == 1)        


    ADD("PianoBrands", 2);        


 if(GETVALUE("Q1_3") == 1)        


    ADD("PianoBrands", 3);        


end unverified


Etc., for as many items as need to be added to the list.


But, we'll show you a more generic and elegant way to do this without having to use unverified perl.  For this example, we create two new constructed lists:





To build ScreenedInPianoBrands, you select Q1PianoBrands as the parent list, and you use the following list-building logic:


AIC (Q1, 1, 15)


Create a constructed list named PianoBrandsForACBC (select PianoBrands as the parent list).  Insert the following constructed list logic:


MIRROR (ScreenedInPianoBrands)


This command will include all of the members from PianoBrands that correspond to the list values in ScreenedInPianoBrands.


Page link: