Likert indicatorsΒΆ

Definition of Likert indicators and Likert scale types used in the hybrid choice model.

This module centralizes the specification of all Likert-type survey indicators used in the measurement equations of the hybrid choice (MIMIC) model, together with the definition of the corresponding Likert scale types.

It contains two main objects:

  • likert_indicators: a list of LikertIndicator objects, each corresponding to a survey question (statement) and its associated metadata.

  • likert_types: a list of LikertType objects, defining how different types of indicators are mapped to ordered categories and threshold parameterizations.

The content of this file is purely declarative: no estimation or model logic is implemented here. The definitions are imported by higher-level model-building code.

Michel Bierlaire Thu Dec 25 2025, 08:14:12

from biogeme.latent_variables import LikertIndicator
from biogeme.latent_variables.likert_indicators import LikertType

"""List of Likert indicators used in the model.

Each entry corresponds to one survey item and specifies:

- a unique indicator name,
- the text of the statement presented to respondents,
- the indicator type, which determines the associated Likert scale
  specification defined in ``likert_types``.

The indicators cover environmental attitudes, mobility-related perceptions,
lifestyle preferences, and the number of cars in the household.
"""
likert_indicators = [
    LikertIndicator(
        name='Envir01',
        statement='Fuel price should be increased to reduce congestion and air pollution.',
        type='likert',
    ),
    LikertIndicator(
        name='Envir02',
        statement='More public transportation is needed, even if taxes are set to pay the additional costs.',
        type='likert',
    ),
    LikertIndicator(
        name='Envir03',
        statement='Ecology disadvantages minorities and small businesses.',
        type='likert',
    ),
    LikertIndicator(
        name='Envir04',
        statement='People and employment are more important than the environment.',
        type='likert',
    ),
    LikertIndicator(
        name='Envir05',
        statement='I am concerned about global warming.',
        type='likert',
    ),
    LikertIndicator(
        name='Envir06',
        statement='Actions and decision making are needed to limit greenhouse gas emissions.',
        type='likert',
    ),
    LikertIndicator(
        name='Mobil03',
        statement='I use the time of my trip in a productive way.',
        type='likert',
    ),
    LikertIndicator(
        name='Mobil05',
        statement='I reconsider frequently my mode choice.',
        type='likert',
    ),
    LikertIndicator(
        name='Mobil08',
        statement='I do not feel comfortable when I travel close to people I do not know.',
        type='likert',
    ),
    LikertIndicator(
        name='Mobil09',
        statement='Taking the bus helps making the city more comfortable and welcoming.',
        type='likert',
    ),
    LikertIndicator(
        name='Mobil10',
        statement='It is difficult to take the public transport when I travel with my children.',
        type='likert',
    ),
    LikertIndicator(
        name='Mobil12',
        statement='It is very important to have a beautiful car.',
        type='likert',
    ),
    LikertIndicator(
        name='LifSty01',
        statement='I always choose the best products regardless of price.',
        type='likert',
    ),
    LikertIndicator(
        name='LifSty07',
        statement='The pleasure of having something beautiful consists in showing it.',
        type='likert',
    ),
    LikertIndicator(
        name='NbCar',
        statement='Number of cars in the household',
        type='cars',
    ),
]

"""Definition of Likert scale types and their threshold structures.

Each :class:`LikertType` defines how responses for a given indicator type are
modeled, including:

- whether the thresholds are symmetric or non-symmetric,
- the ordered response categories,
- labels corresponding to neutral or missing responses,
- normalization rules for the scale parameters.

These specifications are shared across all indicators of the same type.
"""
likert_types = [
    LikertType(
        type='likert',
        symmetric=True,
        categories=[1, 2, 3, 4, 5],
        neutral_labels=[6, -1],
        scale_normalization='Envir01',
    ),
    LikertType(
        type='cars',
        symmetric=False,
        categories=[0, 1, 2, 3],
        neutral_labels=[-1],
        fix_first_cut_point_for_non_symmetric_thresholds=0.0,
        scale_normalization='NbCar',
    ),
]

Gallery generated by Sphinx-Gallery