Choice Modeling - Optimizer

From Q
Jump to navigation Jump to search
This page is currently under construction, or it refers to features which are under development and not yet available for use.
This page is under construction. Its contents are only visible to developers!


Create an optimizer (a simulator which allows multiple selection/scenarios) for a choice model in Displayr. This feature is not available in Q.

How to Create

To create an optimizer, in the object inspector of a choice model output from latent class analysis, hierarchical Bayes, or multinomial logit, click the Optimizer extension button. This extension button can be found under Inputs > SIMULATION > Optimizer.

An optimizer can also be created by first selecting your choice model output and then selecting Anything > Advanced Analysis > Choice Modeling > Optimizer from the ribbon.

You will be prompted to enter the number of alternatives you would like in the optimizer. If your choice model was fit using an Alternative attribute (i.e. alternative-specific constants), you will be asked whether you want to include them as an attribute in the optimizer. Finally, if your choice model includes a 'None' alternative, you will be asked if you would like to include that as well. A new page will be created in your document immediately after your choice model containing the optimizer.

Example


Example Input:
The following choice model was fit using Hierarchical Bayes to a conjoint experiment examining preferences for purchasing eggs in a supermarket.

Output Example:
The resulting optimizer after requesting 2 alternatives and choosing to include the Alternative attribute is as follows. (Note, some Combo Boxes have been changed from their default values.) You can select multiple levels for each attribute using the Combo Boxes and the table at the bottom listing the preference shares will be updated.
Optimizer.png

Options

Choice Model A choice model output such as latent class analysis or hierarchical Bayes.

Rule The rule that governs how the preferences shares are calculated. This option is only applicable to choice models fit using hierarchical Bayes (HB).

  • The default Logit respondent is the most widely used.
  • To use Logit draw or First choice draw (which uses the individual draws from the HB to compute the preference shares instead of the posterior means), you must modify your choice model so that it saves the draws: in the Object Inspector for your choice model, set Inputs > SIMULATION > Iterations saved per individual to a number greater than zero.
  • First choice respondent assumes that each respondent selects the alternative with the highest utility, whereas Logit respondent applies the inverse logit transform to the utilities when calculating the choice for each respondent.

Availability This dropbox allows you to supply a matrix to make the different alternatives only available to a subset of the respondents. To use it you must first insert an R Output which creates a matrix of TRUE/FALSE values, where a value of FALSE means that the alternative is not available for that respondent. The number of rows of the matrix must be equal to the number of respondents used to fit the choice model and the number of columns must be equal to the number of alternatives in the optimizer. An example can be found in this blog post.

Scale to shares Check this box to tune/optimize the scale factor applied to the utilities for each respondent. Once selected you must specify Shares. See the above blog post for more information.

Scale factor An optional numeric scale factor/weight to apply to the utilities for each respondent. Use this to adjust the amount of noise assumed by the optimizer. A higher value means you are using less noise in the simulation. A value of zero will make each alternative equally popular.

Calibration Check this box to perform calibration to market share. The utilities for each alternative will be modified to exactly match the market shares you specify in Shares. See the resources below under See Also for more information.

Calibration factors A comma-separated list of values to be added to the utilities for each alternative. The number of values must be equal to the number of alternatives in the optimizer.

Shares A comma-separated list of values containing the market shares to use for Calibration and Scale to shares. The values must sum to 1 and the number of values must be equal to the number of alternatives in the optimizer.

Filter(s) may be applied to exclude respondents from the estimated preference shares.

Weight A variable can be supplied to weight the respondent shares just prior to calculating the preference shares.

Output type The level of aggregation to use for the output shares. The default, Average Shares will result in the average/market shares being returned. When equal to Respondent shares, shares are computed by averaging over HB iterations according to the specified rule and the output will be a three-dimensional array with shares for each scenario for each respondent and each alternative in the optimizer. If HB draw shares is selected (available for choice models estimated using HB only), no averaging is done over HB iterations when aggregating utilities to make a prediction and the output array will have an extra dimension with length equal to the number of saved HB iterations .

See Also

A more in-depth discussion of calibration and scaling to market share can be found in this blog post.

A video demonstration of the optimizer can be found in our Reporting for Conjoint webinar.

Code

includeWeb('QScript Functions for Choice Modeling');
includeWeb("JavaScript Utilities");
var is_displayr = (!!Q.isOnTheWeb && Q.isOnTheWeb());
if (is_displayr) {
    // Specify number of alternatives
    var k = -1;
    while (!isPositiveInteger(k)) {
        k = prompt("How many alternatives would you like in your optimizer?");
    if (!isPositiveInteger(k))
        alert("The number of alternatives must be an integer greater than 0.");
    }
    if (!createChoiceSimulator(k, true)) {
        log("Could not create choice optimizer.")            
    }
}else
    alert("Sorry, this feature is only available in Displayr.");

See also