This page is the technical companion to the discrete-choice reporting outputs in MX8 Labs. It documents how utility scores are estimated, how simulated shares are computed, and how uncertainty is summarized in reports.
For user-facing setup of the question types this estimator powers, see Choice-Based Conjoint and Running MaxDiff. The weighted aggregation described below shares its effective-sample-size machinery with the Weighting methodology used elsewhere in reporting.
Scope
MX8 Labs computes respondent-level utilities for MaxDiff and choice-based conjoint (CBC) questions using a Hierarchical Bayes (HB) multinomial logit model. Report outputs are then derived from posterior draws:
- MaxDiff utility scores and simulated share of preference
- MaxDiff utility relative to an acceptability anchor and probability above it
- Conjoint Part Worth Scores and Attribute Importance, using uncalibrated or calibrated models
- Conjoint Marginal Purchase Lift from direct-response-none purchase follow-ups
Point estimates and uncertainty are produced by combining:
- posterior variation across utility draws, and
- weighted sampling variation using effective sample size.
Calibration and current report choices
Uncalibrated conjoint uses concept choices to estimate relative attribute-level preferences. Explicit-none calibration adds a completed no-purchase alternative to the task. Direct-response-none calibration retains the forced concept choice and adds the respondent's yes/no purchase answer for that task. Don't know and missing follow-ups are kept distinct from completed no-purchase answers.
Part Worth Scores and Attribute Importance (%) use the uncalibrated conjoint model. Their Anchored counterparts use the model fitted with no-purchase or purchase follow-up answers.
For MaxDiff, the ordinary Utility Scores and Simulated Share outputs describe relative preference. Direct item acceptability or indirect all/some/none answers provide the reference for Utility relative to anchor and Probability above anchor. Missing or uncertain anchor answers do not become negative answers.
See Question aggregation types for current calculation identifiers and eligibility. The sections below distinguish the relative-choice likelihood from the additional calibration likelihoods.
Inputs and notation
Let:
- respondents be indexed by ,
- tasks by per respondent,
- alternatives in a task by ,
- utility components (MaxDiff items or conjoint attribute-levels) by .
For each respondent , the model estimates a vector of part utilities:
Each alternative utility is a linear sum of included components.
Design parsing
The estimator infers question design from reporting rows. A configured role column is used when its values have valid best/worst semantics. That valid role column takes precedence over other topic columns and identifies the question as MaxDiff. If the configured column is absent or invalid, the estimator searches the topic columns for one whose values or bounds identify both best and worst roles. Questions without a valid role column are treated as conjoint/CBC when component topic columns exist; otherwise they are treated as MaxDiff with responses as item components.
For MaxDiff, if both best and worst selections are present, the best task is modeled with positive sign and the worst task is modeled on the remaining alternatives with negative sign.
Hierarchical Bayes estimator
Utilities are estimated with a respondent-level random-coefficients logit model:
with priors:
For each task, utility for alternative is:
where:
- indicates whether component appears in alternative ,
- is the task sign (used for MaxDiff worst handling).
Choice probability is softmax:
Posterior sampling uses JAX/NumPyro-backed No-U-Turn Sampling (NUTS), with convergence diagnostics monitored. A deterministic subset of the posterior draws is retained for downstream reporting.
Calibrated conjoint likelihoods
For a calibrated conjoint model, the raw coefficients above are centered separately within each attribute , with levels :
Thus each attribute's level utilities sum to zero. A separate respondent purchase intercept carries the overall propensity to choose a product:
The intercept uses the same Normal, HalfNormal and standard-Normal hierarchical priors as the raw coefficients. It is retained for calibrated calculations but excluded from the displayed attribute-level scores and importance ranges.
Explicit none. The outside alternative has utility zero. A concept competes with the other concepts and that outside alternative:
The sum runs over the concepts offered in the task. A completed none answer contributes to this likelihood.
Direct-response-none (purchase follow-up). The forced concept choice retains its softmax likelihood over concepts. For the chosen concept , an observed yes/no answer adds:
The shared intercept cancels from the forced-choice softmax; the purchase follow-up identifies it. A missing follow-up contributes no Bernoulli observation, while the completed concept choice is retained. A Don't know task is excluded from the calibrated task observations. Neither state is recoded as a negative purchase answer.
When an explicitly uncalibrated calculation is selected, the estimator retains concept-choice comparisons, removes outside alternatives, and excludes tasks where none was chosen. It does not use the purchase follow-up likelihood.
Anchored MaxDiff likelihood
MaxDiff anchors place item utilities relative to a fixed zero acceptability threshold. Each usable binary item observation adds:
Direct anchoring supplies one item classification: acceptable contributes 1, unacceptable contributes 0, and uncertain or missing answers contribute no observation. For indirect task answers, all contributes 1 for every item, none contributes 0 for every item, and some contributes 1 for the selected best item and 0 for the selected worst item. The other items in a some task receive no anchor observation.
These observations augment the best/worst choice likelihood; they do not replace it.
Retained utility outputs
For each respondent-component pair, MX8 Labs persists:
- Posterior mean utility
- Posterior draw utilities (
draw_idindexed)
These retained draws drive all downstream utility/share reporting.
Utility score reporting
For utility mode, each row value is the retained posterior draw utility directly:
where indexes retained posterior draws.
Conjoint rows are labeled as attribute: level; MaxDiff rows use item names.
Simulated share reporting
Simulated share is computed within each respondent and draw by exponentiating utilities and normalizing:
where indexes the MaxDiff items being compared. These shares describe preference within that set and are not an absolute purchase rate.
Conjoint attribute levels are parts of a product, so normalizing across levels does not give product market share.
MaxDiff outputs relative to the anchor
Utility relative to anchor reports the anchored utility draw , with zero as the threshold. Probability above anchor instead uses an indicator for each retained draw:
For example, if three of four draws are above zero, the respondent's estimate is 75%. The report aggregates the draw-level indicators with respondent weights using the procedure below.
This output is posterior support for an item being above the anchor. It is different from applying the logistic function to its utility, from its share among competing items, and from an observed purchase rate. The report's separate comparison settings govern cell significance; an above-anchor percentage does not itself test a difference between demographic groups.
Conjoint attribute importance
For each respondent and retained draw, calculate the range of part-worth utilities within each attribute. Divide each attribute's range by the sum of the ranges across attributes and express the result as a percentage. Aggregate those draw-level values using the reporting weights described below.
For attribute , the calculation is:
Use the selected model's level coefficients, centered for calibrated conjoint. Values are aggregated as proportions and displayed as percentages. Calculating ranges from already-averaged utilities generally gives a different result: the range and normalization are applied within each respondent and draw first.
Importance depends on the levels and ranges tested. A wider price range can change price importance. If the total range is zero or non-finite, importance is undefined rather than an equal split across attributes.
Conjoint marginal purchase lift
For a direct-response-none study, the model combines attribute-level utilities with a purchase intercept to estimate purchase probability. The reference distribution is the observed profile mix, weighted by its occurrence counts.
Let reference profiles be , with occurrence counts , and let replace attribute with level . For respondent and draw :
The reference counts come from the concept profiles in the retained task observations, including offered concepts that were not selected. They describe profile occurrence, while below describes respondent reporting weight; these are separate weights.
Apply the replacement within each respondent and draw, then aggregate the resulting differences with reporting weights. Display as percentage-point lift: moving the modeled average from 40% to 46% is +6 percentage points. Averaging coefficients before applying the logistic function does not reproduce this calculation.
This is a modeled marginal comparison against the empirical reference mix, not a user-configured competitive product scenario or a forecast of sales. It is also distinct from matched-control campaign Lift, which compares outcome rates between groups.
Weighted aggregation and uncertainty
For any reported row and tab cell, MX8 Labs aggregates draw-level values using respondent reporting weights.
Within each draw :
The final estimate is the mean across draws:
Total variance is decomposed as:
Sampling variance per draw uses weighted variance with Kish effective sample size:
For the posterior variance term, the implementation uses sample variance across draw means (denominator ), or zero when only one draw is retained. Posterior draws are not additional respondents: the cell base counts distinct respondents. The reported uncertainty combines the two variance terms rather than taking posterior quantiles alone.
Reported standard error is:
Related output modes
The same posterior draws also support:
- Scaled scores: per respondent/draw min-max scaling to 0-100.
- Ranks: dense descending rank per respondent/draw.
These are transformations of the retained utility draws before the same weighted draw-aggregation pipeline.
Guardrails and failure modes
- Utility estimation requires valid choice-task observations with timestamps and at least one selected alternative pattern.
- Sampling diagnostics include divergences, R-hat, and bulk effective sample size. Diagnostics outside their expected ranges are logged as convergence warnings for operational review.
- Convergence warnings do not reject otherwise finite utility estimates: finite outputs are retained and remain available for reporting and export.
- Until utility estimation has finished for a question, report requests return a not-ready status.
- If no valid observations exist, outputs are non-finite, or estimation otherwise fails, utility estimation fails for that question and the report shows a validation error.
Assumptions and limitations
- The current estimator is a JAX/NumPyro-backed Hierarchical Bayes multinomial logit model for discrete choice.
- The implementation uses additive utility within alternatives and standard softmax choice probabilities.
- Report uncertainty is an approximation that combines posterior and effective-sample-size weighted sampling variance; it is not a full complex-survey design variance estimator.
- Simulation outputs are preference shares under the model, not market shares.
Reproducibility
For fixed data, estimator settings, and seed, utility estimation and retained draw selection are deterministic, and downstream share calculations are deterministic transformations of those retained draws.
Exporting respondent-level outputs
The retained posterior outputs described above can be exported for offline analysis:
- Utility Scores Export Format — respondent-level utilities in raw, zero-centered, and share-scaled forms.
- Raw Draws Export Format — unaggregated posterior draws per respondent and parameter, for custom uncertainty work and convergence diagnostics.

