Discrete Choice Experiments (DCE)
Discrete Choice Experiments (DCE) are the gold standard for measuring stated preferences in environmental and health economics, marketing research, transport policy and any field where direct rating questions hit ceiling effects or social-desirability bias. Respondents face a sequence of carefully designed choice cards — each a hypothetical decision between two or more alternatives that vary on a controlled set of attributes — and from the pattern of their choices the analyst recovers the marginal utility of each attribute, willingness-to-pay (WTP) for non-market goods, and counter-factual market shares for products that do not yet exist.
tickStat is a survey and experiment platform built by academic researchers, for academic researchers, and DCE is the methodology it was designed around. We took the rigour of an econometrics workflow — Lancaster's characteristics theory and McFadden's random-utility framework — and made it usable end-to-end in a single tool, without the cost barrier or methodological black box of the dominant commercial platforms.
Why tickStat for DCE¶
-
Reproducible by design. Every modelling decision — status-quo coding, attribute parameterisation, RPL distribution families, Halton draws — is exposed and documented, not hidden behind vendor defaults. Coefficients, log-likelihoods and the textual report export ready for the supplementary materials of a paper or a pre-registration.
-
MNL out of the box, Mixed Logit one click away. Multinomial Logit estimation runs server-side in seconds. The Mixed Logit / Random Parameters Logit queue uses Apollo on R — the same toolkit used in published environmental, health and transport economics papers — for preference-heterogeneity densities, lognormal cost coefficients and per-respondent WTP distributions.
-
Status Quo and opt-out as first-class citizens. Welfare estimation in environmental and health DCE almost always needs a status-quo or "neither" option to avoid forced-choice bias. tickStat handles this natively: SQ is configured at design time with utility fixed at 0, and reports and the simulator treat it correctly throughout.
-
Discrete Choice Simulator built in. Once the model is estimated, predict market shares for any hypothetical alternative — different attribute levels, new programmes, policy counter-factuals — without leaving the platform.
-
Multilingual fielding in 14 languages. Run the same experiment across countries with a single survey definition; respondents are auto-routed to their language and the data merges downstream.
-
GDPR and EU AI Act compliant. A real concern for European academic researchers running publication-grade studies under the current regulatory regime.
What's on this page¶
The rest of this page documents tickStat's DCE workflow at three levels: Design for the choice question itself (attributes, alternatives, factorial designs, status quo) and the simpler Simple Choice variant; Analysis for MNL and Mixed Logit / RPL estimation with attribute importance, part-worths and WTP; and Decision support for the Discrete Choice Analysis hub and the market-share Simulator.
If you are new to the platform, start with the Getting started guide. If you already have a study brief, jump to Multiple Discrete Choice below.
Design¶
Multiple Discrete Choice¶
3.6.1 TickStat Model¶
To create a choice experiment question, go to Questions::New Question and select "Discrete Choice Experiment" from the list of question types. The following form will appear:
Section 1: Enter the names of the alternatives separated by commas. For example: "Treatment A, Treatment B, Status Quo"
Section 2: Configure the attributes using the following format in the text area:
- Type-Attribute name-Values separated by comma
The available attribute types are:
- DIS: Discrete attribute.
- CONT: Continuous attribute. Values must be equidistant.
- DESC: Section header attribute. This type acts as a visual separator within the choice card, displaying only the attribute name in the first column while leaving the alternative cells empty. It requires a single level with value
99. Format:DESC-Section name:99. This is useful for grouping related attributes under a common heading (e.g., "Uses of reclaimed water:" followed by individual use attributes). - CALC: Calculated attribute. Specify a source question to calculate the displayed value; the source must be a money-type question. For example:
CALC-Attribute name-P10:0.80,1,1.20,1.30. These values will be multiplied by the source question's value before being presented to the user. - HIDE: The tool will hide this row when presenting the cards.
HTML in attribute names: You can use simple HTML tags and entities in attribute names to enhance their display. For example:
- Use • or the character • to add bullet points (e.g., DIS- • Agrícola:0,1)
- Use <b> tags for bold text
- Use for additional spacing and indentation
This is particularly useful for creating visual hierarchies when combining DESC section headers with indented sub-attributes.
Section 3: Use these buttons to load a sample design.
Section 4: Number of cards presented to the user. Cards are displayed one at a time; the tool selects them randomly while ensuring balanced presentation.
Section 5: Design generation method. Currently, only one method is available: Partial factorial design.
Restrictions for this question type:
- Number of variables: Maximum 6
- Number of levels or values:
- Continuous variables: Maximum 6 equidistant values
- Discrete variables: Maximum 3 values
3.6.2 Personal Model¶
Some research centres prefer to upload their own models. TickStat provides this option to enable quick distribution of questions based on custom models.
3.6.2.1 Four Options Model -- Images Associated to Values¶
A private model called "Personal design" allows users to upload up to 4 Excel files, each representing one of the 4 options. Each Excel file can contain up to seven attributes with no limit on the number of cards; each row defines a card configuration.
To upload the data, set the "Generation Method design" field to "Personal design" and provide the Excel files for each option.
Then configure the "Id.Response" text area with the appropriate format, and use the "Tag question" field to label the question.
After executing the model, the list of questions will display the configuration for each generated question.
Card style — Classic vs Publication¶
For Personal design questions you can pick between two visual variants of the choice cards via the Card style dropdown in the question settings:
- Classic (default) — the legacy table-based layout used everywhere else in tickStat. Backward compatible: existing surveys keep this look automatically because their saved XML doesn't carry the new field.
- Publication — each program is rendered as a rounded "pill" column with a theme-coloured header band (the colour matches the survey's Look & Feel: orange / blue / green), dashed separators between attribute rows, and a larger selection control with a "My choice!" indicator under the picked option. Designed to be screenshot-friendly for academic submissions.
The setting only takes effect when the Generation Method is set to Personal design; for other generation methods the cards always render with the classic look regardless of what's saved.
For this model type, the researcher must upload images for each attribute value so that users can understand the model. Below are some notable configuration options:
- Fixed card order: If disabled, cards are shuffled or randomized before presentation, so they do not always appear in the same order.
3.6.3 Link Picture to Attribute Values¶
After configuring a choice experiment (regardless of the design method), the researcher needs to associate images/icons and display labels to each attribute level. This is done through the "Link picture to attribute values" button located in the Actions section of the choice question configuration.
Clicking this button opens a management screen that displays all attributes and their levels in a table format. For each attribute, the researcher can:
Attribute level (rows): - Original value: The level label as defined in the experimental design (read-only). - Updated value: An editable text field to customize the label displayed to respondents. If left empty, the original value is shown. This is useful when the design uses coded values (e.g., "1", "2", "3") and the researcher wants to display descriptive labels (e.g., "Low", "Medium", "High"). - Level image/icon: Upload an image or icon that represents this specific level. This image is displayed in the choice card cells. Click the edit button to upload a new image, or the delete button to remove the current one.
Attribute header (top row per attribute): - Attribute description: A help text for the attribute, displayed when the researcher uses the attribute info feature. - Attribute help image: An optional image associated with the attribute itself (not a specific level). This can be used to provide visual context about what the attribute represents.
Save button: After making changes to labels, click Save to persist all updated values. Image uploads are saved immediately when uploaded.
Hiding level labels (icon-only display):
If you want a choice card cell to display only the icon without any text label underneath, set the updated value for that level to xx. When the system encounters xx as the level value, it suppresses the text label and shows only the image. This is useful when the icons are self-explanatory and adding text would clutter the card, especially on mobile devices.
Important notes: - Image files must use filenames containing only letters (without accents), numbers, dots, hyphens, and underscores. - Images are stored in the survey's image directory and referenced by filename in the XML configuration. - The images uploaded here are the ones displayed in the choice cards when respondents view the survey. Each cell in the card shows the icon corresponding to the attribute level assigned to that alternative.
3.6.5 Best Worst Choice (Dichotomous Choice)¶
This is a choice format where the user is presented with a single scenario and must answer Yes or No. Additionally, the user can indicate which level among the presented values is the best and which is the worst.
For the configuration, set the attribute value to $valoR in the same field where you would normally configure the image for the attribute.
Additionally, enable the "Choice dicotomico" checkbox.
3.6.6 Best Worst Choice¶
In this choice format, the user must select the best option and the worst option. The application validates that the user does not select the same option for both best and worst.
In the configuration, enable the "Display best and worst choice" option.
For this choice type, there is an additional option that presents the best and worst selection while giving the user a button to indicate they do not want any of the presented scenarios. To enable this, configure the parent question's alternatives with the HIDE prefix as follows:
Tratamiento A, Tratamiento B, Tratamiento C, HIDESQ
This hides the column associated with the Status Quo.
3.6.7 Choice Card Display and Interaction¶
Several improvements have been made to the discrete choice experiment card display:
3.6.7.1 Column Selection¶
Clicking any cell in a column selects the corresponding radio button. The selected column is highlighted with a colored border matching the survey theme.
3.6.7.2 Hover Effect¶
Hovering over a column highlights all cells in that column with a subtle background color.
3.6.7.3 Image Zoom¶
Double-clicking an image in a choice card opens a lightbox with the full-size image. Click outside the image or press the X to close.
3.6.7.4 Scroll Indicator¶
After selecting an option, if the "Next" button is not visible on screen, a floating arrow indicator appears to guide the user to scroll down.
3.6.7.5 Mobile Optimization¶
On mobile devices (screen width ≤ 768px), the choice card display is optimized for touch interaction:
- Radio buttons are hidden: The radio button row at the bottom of the card is hidden to save screen space. Respondents select their preferred option by tapping anywhere on the column.
- Tap instruction overlay: The first time a respondent sees a choice card on mobile, a brief instruction overlay ("Tap a column to select") is displayed over the card. It disappears after the first selection and is not shown again on subsequent cards.
- Column highlight: The selected column is highlighted with a colored border matching the survey theme, providing clear visual feedback of the selection. This optimization applies only to the standard discrete choice card. Best-Worst and Dichotomous choice cards retain the radio button row on mobile.
3.6.8 Configuration Options Reference¶
The following options are available when configuring a discrete choice experiment parent question:
Card Display: - Fixed card order: When enabled (default), cards are presented in a fixed order. When disabled, cards are shuffled randomly before presentation. - Display Attribute Values: Shows or hides the attribute value text below images in choice card cells. - Display Images/Attributes Inline: When enabled, displays attribute images inline within the card cells instead of in a separate info column. - Aggregated Levels: Groups and aggregates attribute levels for a more compact card display. When enabled, the attribute name column is hidden. - Hide Status Quo Cell Values: When a Status Quo alternative is configured, hides the attribute values in the Status Quo column, showing only the header and the selection radio button.
Best-Worst Options: - Display Best and Worst Choice: Enables best-worst selection mode where respondents choose both the best and worst options from the card. - Best Worst Choice Rating (Last Election One Button): In best-worst mode, adds a third button allowing respondents to indicate "none of the above." - Choice Dicotomico (Dichotomous Choice): Enables a Yes/No choice format with best/worst level selection capability.
Labels and Text: - Characteristics Header Tag: Label displayed above the attributes column (default: "Caracteristicas del programa"). - Best Selection Label: Prompt text shown asking the respondent to select their preferred option. - Worst Selection Label: Prompt text for the worst option selection in best-worst mode. - Card Header Text: Custom HTML text displayed at the top of each choice card. - Card Footer Text: Custom HTML text displayed at the bottom of each choice card. - Default Option Text: Text displayed in the Status Quo / "none of the above" column when using a partial factorial design where the Status Quo alternative has no attribute levels assigned (i.e., the alternative has empty values in the design). This text appears as a single cell spanning all attribute rows. If the Status Quo alternative has attribute levels with icons/values configured in the design, this text will not be shown — the icons and values from the design will be displayed instead. - More Information URL: URL to additional information, opened in a new tab.
Design and Generation: - Number of Cards: How many choice cards are presented to the respondent. Cards are selected randomly with balanced presentation. - Design Generation Method: The algorithm used to generate the experimental design (Partial Factorial, Personal Design, Vignetas, Continuous). - Generate New Model Questions: When enabled (default), regenerates all child questions when the parent is saved. Disable to preserve existing child questions. - Choice Set IDs: Comma-separated IDs mapping R engine-generated choice set identifiers to child questions. - Choice Report Group: Groups multiple choice questions into a single Excel tab when downloading the report. All choice questions with the same group number will have their results merged into one sheet. Leave empty to group all choice questions together by default. Use different numbers (e.g., 1, 2) to create separate tabs for choice questions with different configurations.
Status Quo: - Status Quo Position: Specifies which column represents the Status Quo option. - Dynamic Status Quo: When enabled, the Status Quo values are dynamically populated from another question's response.
Timing: - Minimum Time per Card (seconds): Enforces a minimum viewing time per card. If the respondent tries to advance before the minimum time elapses, a warning is displayed. Set to 0 to disable.
Simple Choice¶
If you want to measure willingness to pay for a product or service that already exists, this is the appropriate question type.
3.7.1 Personal Setting¶
This question allows the researcher to upload a customized vector of bids. The data can be uploaded through the "Upload vector of bids" button and must be in Excel format (xls or xlsx).
The expected format is shown in the following figure:
Analysis¶
Choice Analysis (Multinomial Logit)¶
Provides statistical analysis of discrete choice experiment questions, including attribute importance calculations and part-worth utilities. This uses the R engine for computation.
Scope: This analysis is specifically designed and validated for choice experiments that include a Status Quo alternative (e.g. a "None of them" or "Keep current situation" option). The Status Quo position can be anywhere in the alternatives (first, middle or last — the engine reads it from the choice question's configuration). If you need to run a Choice analysis on an experiment without a Status Quo, please email tickStat support so we can enable the no-SQ variant for your survey.
Minimum sample: The multinomial logit model is only estimated when at least 5 distinct respondents have answered the choice questions in the group. Below that threshold you still see the descriptive panels (Choice Frequencies, Responses per Choice Question, Status Quo Analysis), and a warning banner replaces the model outputs. Five is a hard floor; estimates from very small samples are unstable and should be treated as a smoke test, not as final numbers.
Remembered configuration. The choices you make in the Variables for this analysis card (DIS/CONT per attribute and, in Mixed Logit, the Distribution column, Halton draws and seed) are remembered per choice experiment. Next time you open the report and pick the same group, your last setup is pre-filled automatically. The defaults from the parent choice question are never modified — this remembered configuration lives only at the analysis layer.
The configuration is saved only when you actually launch a run — clicking Run Analysis in MNL or Queue RPL Analysis in Mixed Logit. Editing the selectors and closing the tab without running anything does not persist anything. This way only configurations you have effectively used are remembered, and short experiments you abandon do not pollute the saved state.
Grouping choice questions with the Choice Report Group tag¶
A discrete choice experiment is often split across several blocks — for example one choice question per block with the same attributes and levels but different randomized cards. Statistically it is still one experiment and the responses must be pooled into a single conditional logit estimation.
The Choice Report Group field in each choice question's configuration controls how the Choice Analysis Report dropdown is built:
- Empty tag on all choice questions — the dropdown shows a single option labelled "Choice". Selecting it pools the responses from every choice question in the survey.
- Same non-empty tag on several questions (e.g.
choice1on blocks 1–4) — those questions are grouped together and the dropdown shows one option per distinct tag (choice1,choice2, …). Each option pools only the questions that carry that tag. - Mixed — tagged and untagged questions can coexist; untagged questions form the default "Choice" group while each tag value forms its own group.
Each dropdown option displays the group's question IDs for clarity — e.g. Choice (2 questions: P186, P212) or choice1 (4 questions: P10, P12, P14, P16).
All choice questions in the same group must share the same attribute definition (number of attributes, names, types and number of levels). The analysis refuses to run and returns an error if any question in the group mismatches the reference.
Loaded data panel and the Refresh button¶
Once a choice is selected in the dropdown, a Loaded data panel shows how many respondents the analysis will be run on and when the dataset was last refreshed:
- N respondents loaded — the distinct Done respondents already persisted to the choice-response cache for this group.
- Last refresh — timestamp of the most recent refresh for any of the group's questions.
- N new respondents available — Done respondents who have not yet been synced into the cache; clicking Refresh data loads only those (incremental).
The first time a choice group is refreshed, the process reads every user XML once and populates the cache — this may take several minutes for large surveys. Subsequent refreshes only pick up the respondents that completed the survey since the previous refresh, and subsequent Run Analysis clicks read directly from the cache (typically ~15 seconds for the R estimation).
Run Analysis is disabled until the cache has at least one respondent for the selected group. If no respondents are loaded, click Refresh data first.
Reviewing attribute types before running (DIS / CONT overrides)¶
Between the choice selector and the Loaded data panel the report shows a Variables for this analysis card that lists every attribute of the selected group's reference question together with its current variable type and its levels. Each row has a dropdown to choose the type used when estimating the model:
- DIS (discrete) — the attribute is treated as a categorical factor. The engine estimates one dummy coefficient per level except the baseline level (the mid level by default; you can change it from the Baseline dropdown — see below), whose part-worth is fixed at 0 and serves as the reference for the others. Use this when the levels are categories (e.g. gender, colour, "high/medium/low" threat) or when the effect is not expected to be monotonic or linear.
- CONT (continuous) — the attribute is treated as a numeric variable. The engine estimates a single slope coefficient and the level values (as stored in the attribute definition) are used directly. Use this for genuinely numeric attributes (price in €, duration in years, counts) where you expect a monotonic linear effect — one parameter instead of k − 1 gives the model more statistical power.
Changing a dropdown highlights the row in amber and applies the chosen type only to this analysis run. The override is never saved to the survey definition: reloading the page restores each attribute to its persisted type, the XML of the mother question is not modified, and other reports or previews continue to use the original configuration. This is the safest way to experiment with DIS ↔ CONT on a survey that already has responses, since the previous restriction (no editing the mother question once responses exist) would otherwise force the researcher to edit the XML by hand.
Switching an attribute to CONT requires its levels to be numeric (e.g. 0, 30, 60). If they are not (e.g. "Low", "Medium", "High"), a small warning appears under the dropdown and the R estimation will fail with an "Analysis failed" message — no data is corrupted, just rerun with the correct type.
Choosing the reference level (baseline) for DIS attributes¶
Each row of the Variables for this analysis card has a third column, Baseline, available for DIS attributes. The baseline is the level whose dummy is omitted from the model: its part-worth is fixed at 0 and the part-worths of the other levels are reported relative to it. By default the baseline is the middle level (e.g. for three levels Low / Medium / High, the baseline is Medium), which is the historical convention used by the report.
Use the dropdown to pick a different level — for example, High — when:
- You want the part-worth table to be directly comparable to a published paper that used a different reference category.
- The middle level is not a meaningful "neutral" point in your design (e.g. one of the levels represents the current situation and you want every other level to be expressed as a deviation from it).
- The middle level only appears in the Status Quo alternative and the engine is dropping it as collinear — making a different level the baseline can avoid the warning.
Changing the baseline does not change the model's fit: log-likelihood, AIC, McFadden's R², the WTP distribution and the Attribute Importance ranking are invariant to the baseline. Only the printed part-worths shift by a constant — the differences between any two levels are preserved exactly.
The pick is remembered alongside the rest of the Variables for this analysis configuration (see the Remembered configuration note below). For continuous (CONT) attributes the dropdown is greyed out — the concept does not apply.
Automatic loading of the last analysis¶
When you select a choice from the dropdown, the page automatically shows the most recent analysis that was run for that group (the result CSV produced by the last Run Analysis click is persisted on the server). A Last analysis: dd/mm/yyyy, hh:mm:ss indicator appears under the title. Because the model is deterministic once the response data is fixed, you only need to click Run Analysis again when new respondents have been loaded via Refresh data.
Output panels¶
After a successful analysis, the report shows the following panels:
- Choice Frequencies — percentage and absolute count of respondents that chose each alternative (A, B, C, …). Derived purely from the cached responses (does not require the R model).
- Responses per Choice Question — distinct respondents that answered each choice question in the group. Useful to verify block balance in designs split across multiple blocks (e.g. P186 and P212 of the same experiment).
- Attribute Importance — relative weight of each attribute expressed as % of the total part-worth range. The label includes the attribute's descriptive name in parentheses (e.g.
attr1 (Amenaza para especies de pescado)). - Part-Worths by Attribute — estimated utility contribution of each level of each attribute. For discrete attributes the baseline level (mid level by default, configurable from the Variables for this analysis card) has part-worth 0 and the other levels are shown relative to it. For continuous attributes the part-worth is
coefficient × level value. - Model Coefficients — raw multinomial-logit estimates with their standard error, z-value, p-value and 95% confidence interval. Significance is marked with stars (*** p<0.01, ** p<0.05, * p<0.10). Variable names follow the convention
attrN (description) - levelLiteralfor dummies andattrN (description)for continuous attributes; the alternative-specific constant appears asASC. - Model Statistics — full publication-grade header in the same style as NLOGIT / STATA so the numbers can be copied straight into a paper:
- N (Number of Observations) — choice tasks (rows in the cached data, one per respondent × task).
- Number of Alternatives (G) — alternatives per task (e.g. A / B / C-SQ).
- Number of Attributes — variables in the design.
- K (Estimated Parameters) — coefficients estimated. For MNL = one per CONT attribute + (k − 1) per DIS attribute + ASC. For Mixed Logit it also counts the random parameter standard deviations (and Cholesky terms when Allow correlation is enabled).
- Log-Likelihood (LL) — the converged log-likelihood of the estimated model.
- Restricted Log-Likelihood (LL0) — log-likelihood of the equiprobable null model:
LL0 = -N · log(G). Used as the reference for the LR test and McFadden's R². - Chi-squared (LR test) — likelihood-ratio test against the null:
χ² = -2 · (LL0 - LL), withdf = K. Larger values mean the model beats the null more decisively. - Significance Level — p-value of the LR test under the χ² distribution. Below 0.05 indicates the estimated model fits significantly better than the equiprobable null. Below 0.0001 is shown as
< 0.0001. - Pseudo R-squared (McFadden) —
1 − LL/LL0. Reported as a percentage. Same definition for MNL and Mixed Logit, so the two are directly comparable. - AIC (Akaike Information Criterion) —
−2 · LL + 2 · K. Lower is better. The standard model-selection metric — for example, an MNL with AIC 8772 vs a Mixed Logit with AIC 8400 on the same data favours the Mixed Logit. - AIC / N — AIC normalised by sample size. Useful when comparing models fitted on data sets of different sizes.
- Status Quo Analysis — shown when the choice question has a Status Quo alternative configured. Displays the percentage of respondents that picked the Status Quo in every single task and how many respondents that represents out of the group's total.
Simulate market shares¶
Below the Model Coefficients table the report shows a Simulate market shares button. Clicking it opens the Discrete Choice Simulator (see Section 10.4) pre-loaded with the coefficients of the choice group you are currently looking at. Use it to predict shares for any hypothetical product configuration without re-running the model.
Partial results when the sample is too small¶
If fewer than 5 respondents have been loaded, or the estimation is numerically degenerate (singular Hessian, infinite standard errors), the engine suppresses the model output and shows an amber warning: "Not enough data to estimate the model. Showing response counts and choice frequencies only." In that case you still see Choice Frequencies, Responses per Choice Question and Status Quo Analysis — just not the model-dependent panels (Importance, Part-Worths, Coefficients, Model Statistics).
Mixed Logit / Random Parameters Logit¶
The same Choice Analysis Report offers a second, more sophisticated estimator alongside the Multinomial Logit described above. A Model selector at the top of the report lets the researcher pick between the two:
- Multinomial Logit — the default. Assumes all respondents share the same preferences, estimates one coefficient per attribute (or per level for discrete attributes), and runs in seconds. Ideal for pilots and sanity checks.
- Mixed Logit / Random Parameters Logit (RPL) — the publication-grade estimator used in Ecological Economics, JEEM, Land Economics, Environmental & Resource Economics and similar journals. Each coefficient is estimated as a distribution over respondents rather than a single point: the report shows an estimated mean (μ) and standard deviation (σ) per parameter, together with the simulated WTP distribution and a density visual of each attribute's preference heterogeneity. The engine is the Apollo R package.
Status Quo and minimum sample. The same restrictions documented for the Multinomial Logit also apply here: the estimator is validated for Choice designs that include a Status Quo alternative, and it only runs when at least 5 distinct respondents have answered the choice questions in the group. For designs without a Status Quo, email tickStat support and we will enable the appropriate estimation for your survey.
When Mixed Logit is selected the Variables for this analysis card gains two extra columns: Distribution and Cost. The card is collapsed by default (with a "Click to expand and edit" button on the right); open it only if you want to change defaults:
- Normal — default for most attributes. The coefficient can take any real value across respondents; σ measures how much preferences vary.
- Lognormal — applied by default to the cost attribute. Forces the coefficient to be negative on every single respondent, which is economically sensible and avoids the classical Mixed Logit pathology where a respondent with a cost coefficient near zero produces an exploding WTP.
- Triangular — bounded symmetric distribution on [μ-σ, μ+σ]. The half-width σ is the parameter Apollo estimates (the marginal standard deviation is σ/√6). Useful when you need to keep a coefficient in a finite range — for example, an attribute whose effect should not flip sign across the population.
- Fixed — degenerate distribution (no σ estimated); the parameter behaves like an MNL coefficient.
The Cost column is a single-select radio: mark which attribute represents the monetary cost of each alternative. This drives the Willingness-to-Pay distribution panel — each non-cost parameter's draws are divided by the cost draws to derive per-respondent WTP. The radio is pre-checked using a heuristic that scans the attribute name and description for cost, coste, price, precio, wtp or pago (case-insensitive), so surveys whose technical names are placeholders like attr6 but whose description is "Coste anual adicional" still work out of the box. Move the radio if the heuristic picked the wrong attribute. If no attribute matches the heuristic and you do not pick one manually, the Willingness-to-Pay panel does not render and a warning row is logged in the run's results.
The card header summarises the current state — "7 attributes, defaults" normally, or "7 attributes · 2 overridden" in amber when you've changed something (type, distribution or cost selection) so it is obvious at a glance.
Three further inputs sit next to the Variables card and apply only to Mixed Logit runs:
- Halton draws per respondent — how many simulation draws Apollo uses to approximate the mixed-logit likelihood. See the table below.
- Seed — RNG seed used to generate the Halton sequence. Defaults to 13 so two consecutive runs return identical estimates. Change it (e.g. 42, 7, …) to confirm your model is robust to alternative random starts; share it with collaborators so they reproduce your numbers exactly.
- Allow correlation between random parameters — when checked, the NORMAL random parameters are estimated jointly with a full variance-covariance matrix via Cholesky decomposition (publication-grade Mixed Logit, the form used in JEEM, EERE, Land Economics and similar journals). Adds K(K-1)/2 extra parameters where K is the number of NORMAL random parameters, so convergence is slower — recommended draws are 500 or more when correlation is on. Lognormal cost and Triangular parameters stay independent regardless of this setting (they have different distribution families and would require a copula-style construction to be correlated, which is outside the scope of standard Mixed Logit). When correlation is on, a new Random Parameter Correlations panel appears below Preference Heterogeneity showing the marginal ρ for every pair of NORMAL parameters.
ASC configuration
The Mixed Logit panel exposes two extra knobs for the Alternative Specific Constant (ASC) — the parameter that captures the intrinsic preference for an alternative beyond what its attributes explain. If two programmes have identical attribute values, the ASC explains why one is preferred over the other (label, brand, change-vs-status-quo bias). By default tickStat fits a single ASC = 1 on every change alternative and 0 on the Status Quo, distributed N(μ, σ2) — the historical default that captures generic "change vs SQ" preference.
Two selectors next to the Halton draws card let you override this per analysis (the change is not persisted on the question; you can iterate freely):
- ASC structure — controls how many ASCs enter the utility and which alternatives carry a 1.
- Change vs Status Quo (default) — one ASC = 1 on every change alternative, 0 on SQ. Captures the average "lift over SQ" preference.
- Status Quo only — one ASC = 1 on SQ, 0 elsewhere. Captures status-quo inertia (when participants tend to stick with what they have, regardless of attributes). Symmetric to the change ASC: typically you would not run both.
- One per change alternative (labeled) — K−1 ASCs, one per change alternative (the SQ acts as the implicit reference). Use this in labeled experiments where every alternative has its own identity (e.g. brand A vs brand B vs no purchase). Adds K−1 means and K−1 standard deviations to the parameter count, so it requires a larger sample to converge cleanly.
- Distribution — applied uniformly to every ASC declared by the chosen structure. Same vocabulary as the per-attribute distributions, plus two extras specific to this dropdown:
- Normal (default) — the legacy behaviour. The ASC can take any real value across respondents.
- Fixed — deterministic; no σ estimated. One parameter fewer; a slightly worse fit but a more parsimonious model. Useful as a baseline to test whether the ASC really needs to vary across respondents.
- Lognormal — forces the ASC strictly positive (b = eμ + σd). Use only when theory dictates that the ASC must be positive for every respondent.
- Negative lognormal — forces the ASC strictly negative (b = −eμ + σd). Use when theory dictates a negative sign — for example, modelling status-quo aversion when the SQ structure is selected.
- Triangular — bounded symmetric distribution on [μ−σ, μ+σ]; marginal SD = σ/√6.
- Uniform — symmetric uniform on [μ−σ, μ+σ]; marginal SD = σ/√3.
Pairing the structure and the distribution gives you the full grid: e.g. "PER ALT + Lognormal" estimates K−1 strictly-positive ASCs for a labeled experiment.
The ASCs appear in the Model Coefficients panel as ordinary parameters (item names ASC for change, ASC_sq for Status Quo only, ASC_alt1, ASC_alt2, … for per alternative). The Willingness-to-Pay panel computes a WTP figure for each ASC against the cost coefficient, which on the change structure is interpretable as the average willingness to pay simply to depart from SQ.
Like the rest of the Variables for this analysis card, draws, seed, the correlation toggle and the ASC configuration are remembered for next time you open this experiment.
Expected runtimes on a typical survey with ~10 random parameters and a few hundred respondents:
| Draws | Typical runtime | Use |
|---|---|---|
| 50 | 2–3 minutes | Smoke test / quick sanity check |
| 200 | 8–12 minutes | Early iteration of model specification |
| 500 | 20–30 minutes | Piloto-quality estimates |
| 1000 | ~1 hour | Near-publication quality |
| 2000 | ~2 hours | Publication / journal submission |
More draws increase accuracy and cost roughly linearly. Below 500 the σ standard errors can be noisy; above 2000 the improvement becomes marginal.
How the job runs
Clicking Queue RPL Analysis submits the job to a FIFO queue. Only one Mixed Logit estimation runs at a time across the whole server — others wait with their queue position shown on screen. The Rscript child process runs at low operating-system priority so respondents answering surveys in parallel do not notice any slowdown.
The "Mixed Logit jobs for this group" panel shows a live list of recent and in-flight jobs for the selected choice group. Each row carries:
- Job id (#NN), status badge (QUEUED / RUNNING / COMPLETED / FAILED / CANCELLED)
- Elapsed or queued-position info, plus a one-line summary of the configuration ("50 draws", "500 draws · Lognormal: attr6 · 2 type overrides") so different runs are easy to tell apart
- Cancel button for queued/running jobs, or View results for completed ones
You can close the browser and come back later — when you re-open the page, Mixed Logit mode is re-selected automatically if a job is in flight, the list reappears with the live cronometer, and any completed run is available via its View results button.
Output panels (in addition to the shared descriptive panels)
When you click View results on any COMPLETED job, the page shows the estimates for that specific run (not just the most recent one). Panels:
- Choice Frequencies, Responses per Choice Question, Status Quo Analysis — descriptive, identical to the MNL view.
- Model Coefficients (Mixed Logit — Mean & SD) — per-parameter μ and σ with standard errors, z, p and the significance stars. A small badge next to the header indicates which standard errors back the z and p columns: robust SE (Eicker-Huber-White sandwich, the default — robust to heteroskedasticity and minor panel misspecification) or classical SE (Hessian-based fallback, used only when Apollo cannot compute the sandwich, typically due to a near-singular Hessian).
- Preference Heterogeneity — for each attribute, a density sparkline of the estimated distribution plus the fraction of respondents with the economically "correct" sign (for Lognormal cost this is 100% by construction).
- Willingness-to-Pay Distribution — per-respondent WTP from
apollo_conditionals(posterior mean of the attribute coefficient divided by the posterior mean of the cost coefficient, trimmed at the [1%, 99%] tails). Two grouped blocks of four statistics each: a WTP block (Q1, Median, Mean, Q3 of the per-respondent WTP) and a post.sd block (Q1, Median, Mean, Q3 of the posterior standard deviation of the underlying coefficient — quality-of-data indicator: small values ⇒ Apollo identifies each respondent's coefficient with low uncertainty; large values ⇒ individual estimates are noisy). Q1/Q3 are robust to the ratio outliers that lognormal-cost specifications can generate when an individual's cost coefficient gets close to zero. - Heterogeneity of WTP across respondents — kernel density curves and a combined boxplot of the WTP for each non-cost random attribute, computed from the per-respondent posterior means (
apollo_conditionals). One curve and one box per attribute; no segmentation by treatment in this version. The plots are trimmed at the 1st/99th percentile so a few respondents with near-zero cost coefficients do not flatten the visualisation. The boxplot shows medians, IQR and outliers; the kernel densities show the full shape of the distribution and overlay the population mean as a vertical dashed line. This panel is the main visual payoff of running Mixed Logit instead of plain MNL — it makes the heterogeneity that the model is describing directly visible.
The MNL-only descriptive panels (Attribute Importance, Part-Worths by Attribute) are hidden when viewing a Mixed Logit result — those numbers belong to a different model and would be misleading alongside the RPL estimates. The Model Statistics panel IS shown for Mixed Logit, but with the Mixed Logit's own numbers (its log-likelihood, AIC, McFadden's R², LR test) — not the MNL's — so it can be used to compare the two estimators on the same data.
Robustness and reversibility
- A Mixed Logit job started before a server restart is automatically marked as failed when the server comes back up (with a clear "Server restarted during estimation" message), so the queue never stays blocked by ghost jobs.
- Every job's result is persisted on the server with its full configuration — you can run many specifications in a row and compare them side by side via the job list.
- Switching the model selector back to Multinomial Logit and re-running reproduces the original MNL numbers bit-for-bit; the RPL flow never modifies the survey definition, the cached response data, or the MNL results.
Decision support¶
Discrete Choice Analysis¶
Pools all responses across the survey's choice questions (or across a single Choice Report Group) and fits a Multinomial Logit or Mixed Logit / Random Parameters Logit model. Outputs include attribute importance, part-worths, raw model coefficients, log-likelihood / pseudo R², a Status Quo report when applicable, and — for Mixed Logit — preference heterogeneity densities and a per-respondent WTP distribution. See Section 9.6 and Section 9.7 for the full report.
Discrete Choice Simulator¶
Predicts market shares for any hypothetical product configuration the researcher describes, using the coefficients estimated by the Discrete Choice Analysis (Section 10.2). The simulator is launched from the Discrete Choice Analysis Report via the Simulate market shares button — there is no standalone menu entry, because the simulator only makes sense once a model has been estimated.
What you configure¶
The screen shows a row per attribute and one column per non-Status-Quo alternative (for example Programa A and Programa B in a two-alternatives-plus-SQ design, or three columns when the experiment had four alternatives plus SQ). Pick a level from each dropdown to define the scenario.
The Status Quo column is not editable because its utility is fixed at 0 by construction — this is what "no programme" / "keep current situation" means in the model. You only describe the active alternatives; the Status Quo is the baseline they are compared against.
Clicking Send Data runs the prediction and renders two pie charts.
Reading the charts¶
Both charts come from the same softmax over the alternative utilities, but they answer different questions:
- Percentage of Individuals per Product (includes the Status Quo) — the raw softmax
exp(U_k) / Σ exp(U_j)over all alternatives, including the Status Quo. Tells you adoption: how the population would split among the active alternatives versus doing nothing. - Market Share (excludes the Status Quo) — the same probabilities renormalised over the non-SQ alternatives so they sum to 100%. Answers: among respondents who would accept some programme, which one would they pick?
The simulator supports any number of non-SQ alternatives — both pie charts adapt automatically (each slice is one alternative, with the Status Quo shown only in the first chart).
Why a "clearly bad" scenario can still get a non-zero share¶
The model is a Multinomial Logit. Its coefficients (β) are finite and the softmax exp(U) / Σ exp(U) is strictly positive for every alternative, so the predicted share of any option is bounded away from 0 even when its utility is very negative. Three practical consequences:
- A scenario in which every attribute is set to its worst level may still receive 5–15% of individuals, depending on how strong the β estimates are. This reflects unexplained heterogeneity in the underlying choices, not a bug.
- The informative quantity is the gap between scenarios, not the absolute share of the worst one. A 10% / 60% / 30% split tells you the model discriminates well; a 35% / 40% / 25% split tells you it does not.
- If you need shares that go to ~0% on bad scenarios, fit a Mixed Logit instead — the per-respondent random coefficients capture preference heterogeneity explicitly. See Section 9.7.