Conjoint analysis is a sophisticated market research technique that helps businesses understand how consumers value a product or service's different attributes (features, functions, benefits). This method involves presenting participants with a series of options that combine various attributes at different levels and then asking them to evaluate or choose between these options. The responses are used to calculate the relative importance or utility of each attribute, allowing businesses to decipher consumer preferences and make informed decisions on product design, pricing strategies, marketing messages, and more.
This overview walks you through how to set up a survey to compare products by asking the respondent to rate different options. If you want to learn how to set up a study where the respondent is presented with distinct choices then read this article instead.
How Conjoint Analysis Works
Defining Attributes and Levels: The first step is to identify the key attributes of the product or service you want to analyze and define different levels for each attribute. For example, for a smartphone, attributes might include brand, price, battery life, and screen size, with each attribute having different levels (e.g., price levels might be $300, $500, $700).
Designing the Survey: Once the attributes and levels are defined, a conjoint survey is designed by creating a set of hypothetical products or services, each with a unique combination of attribute levels. These combinations can be generated using various experimental designs to ensure that the data collected is statistically efficient and meaningful.
Collecting Data: Respondents are then asked to evaluate or choose between these hypothetical options in a survey. The evaluation can take various forms, such as ranking the options, rating them on a scale, or choosing the most preferred option in a series of head-to-head comparisons.
Analyzing the Data: The responses are analyzed using statistical models to estimate the part-worth utilities of each attribute level. These utilities indicate how much each level contributes to the overall value of the product or service for the consumer. By comparing these utilities, researchers can identify which attributes and levels are most important to consumers.
Applying Insights: The insights gained from conjoint analysis can guide product development, targeting the most valued features; pricing strategy by understanding how price sensitivity varies with different product configurations; and marketing strategy by highlighting the most appealing attributes in communications.
Why Use Conjoint Analysis
Customer-Driven Product Design: Conjoint analysis reveals what customers truly value in a product, enabling companies to design or modify products that better meet consumer needs and preferences.
Optimal Pricing Strategy: By understanding how much consumers value different product features, businesses can identify the price points that maximize perceived value and profitability.
Market Segmentation: The technique can uncover different preference patterns among various customer segments, allowing for more targeted marketing strategies.
Competitive Advantage: Analyzing how consumers value different attributes and levels, including those offered by competitors, can help businesses position their products more effectively in the market.
Forecasting Market Acceptance: By simulating market scenarios with different product configurations, companies can better predict how a new product or service will perform in the marketplace.
Programming a Conjoint study with MX8
Creating a conjoint survey involves intricate programming to capture and analyze consumer preferences across various product features. Here's a step-by-step guide to programming a conjoint survey, illustrated with a completed survey example:
1. Create a Survey within a Project
Start by creating an instance of the survey, which will serve as the foundation for adding questions and collecting responses.
from survey import Survey
s = Survey(**globals())
2. Add Screening Criteria
Before diving into the conjoint analysis questions, it's common to collect demographic information from respondents. This information can be used later to segment the data and analyze preferences across different demographic groups.
age = s.numeric_question(
question="How old are you?",
min_max=(18, 65),
recodes={"0-17": "Under 18", "18-34": "18-34", "35-54": "35-54", "55-120": "55+"},
)
gender = s.multi_choice_question(
question="What is your gender?", options=["Male", "Female"]
)
3. Introduce the Conjoint Analysis
Provide respondents with a brief explanation of the conjoint analysis part of the survey. It's important to explain the purpose and how they should approach the questions.
s.note("We are now going to ask you about a number of combinations of product features, "
"and would like you to rate each of them on a scale of 1-7 where 7 is highly likely to purchase "
"and 1 is highly unlikely to purchase.")
4. Define Product Features and Generate Combinations
List the product features and their levels that you want to test. Then, generate all possible combinations of these features. This step is crucial for conjoint analysis as it allows you to understand how different features contribute to the product's overall value.
features = {
"brand": ["Apple", "Samsung"],
"color": ["Black", "Silver", "Blue", "Pink"],
"network": ["4G", "5G"],
"price": ["$200", "$400", "$600", "$800", "$1000"]
}
Generate combinations using nested loops:
combinations = {}
for brand in features['brand']:
for color in features['color']:
for network in features['network']:
for price in features['price']:
combinations["-".join([brand, color, network, price])] = {
"brand": brand,
"color": color,
"network": network,
"price": price
}
5. Select a Subset of Combinations for each respondent
Depending on your survey's length and complexity, you might want to limit the number of combinations each respondent sees. Use a method to select a subset (e.g., the least filled 8 options) to ensure a manageable survey size.
combinations_to_ask = s.get_least_filled(number=8, from_list=combinations, quota="Conjoint combination")
6. Ask Conjoint Questions
For each selected combination, ask respondents to rate their likelihood of purchasing the product. Customize the question to include the specific combination of features being evaluated.
for combination in combinations_to_ask:
combo = combinations[combination]
s.rating_question("How likely are you to buy {brand}, {color}, {network}, {price}?",
number_of_points=5,
style="slider",
labels={
1: "Very unlikely",
5: "Neither likely nor unlikely",
7: "Very likely"
},
brand=combo['brand'],
color=combo['color'],
network=combo['network'],
price=combo['price'])
The completed survey
Here's your complete survey:
from survey import Survey
s = Survey(**globals())
# Ask demo questions
age = s.numeric_question(
question="How old are you?",
min_max=(18, 65),
recodes={"0-17": "Under 18", "18-34": "18-34", "35-54": "35-54", "55-120": "55+"},
)
gender = s.multi_choice_question(
question="What is your gender?", options=["Male", "Female"]
)
s.note(
"We are now going to ask you about a number of combinations of product features, "
"and would like you to rate each of them on a scale of 1-7 where 7 is highly likely to purchase "
"and 1 is highly unlikely to purchase."
)
# Generate all combinations for the conjoint analysis
features = {
"brand": ["Apple", "Samsung"],
"color": ["Black", "Silver", "Blue", "Pink"],
"network": ["4G", "5G"],
"price": ["$200", "$400", "$600", "$800", "$1000"],
}
combinations = {}
for brand in features["brand"]:
for color in features["color"]:
for network in features["network"]:
for price in features["price"]:
combinations["-".join([brand, color, network, price])] = {
"brand": brand,
"color": color,
"network": network,
"price": price,
}
# Now get the least filled 8 options
combinations_to_ask = s.get_least_filled(
number=8, from_list=combinations, quota="Conjoint combination"
)
# Ask about each option
for combination in combinations_to_ask:
combo = combinations[combination]
s.rating_question(
"How likely are you to buy {brand}, {color}, {network}, {price}?",
number_of_points=5,
style="slider",
labels={1: "Very unlikely", 5: "Neither likely nor unlikely", 7: "Very likely"},
brand=combo["brand"],
color=combo["color"],
network=combo["network"],
price=combo["price"],
)
s.complete()
This guide outlines the process of programming a conjoint survey, from initializing the survey to collecting demographic data, introducing the conjoint analysis section, defining product features, generating feature combinations, selecting a subset of these combinations for the survey, asking respondents to rate these combinations, and completing the survey process.