Simultaneous hybrid choice model with ordered-probit indicators.

This example estimates a hybrid choice model where a latent variable, interpreted as a car-centric attitude, influences the utilities of a mode-choice model. The latent variable is described by a structural equation and is measured through several attitudinal indicators using ordered-probit measurement equations.

The model is estimated simultaneously: the measurement equations and the choice model are combined into one likelihood function. Because the latent variable is not observed, the likelihood is integrated by Monte Carlo simulation.

The script is organized with # %% markers. Each marker denotes the start of a new cell when the example is later converted into a notebook. New cells are introduced whenever a new concept is presented, so that the generated notebook can be read progressively as a pedagogical example. The comments therefore describe both the statistical role of each block and the pedagogical message of the corresponding notebook cell.

Tested with Biogeme 3.3.3. Michel Bierlaire Sat Jun 13 2026, 15:13:40

from choice_latent_variables import (
    generate_utility_functions,
)
from number_of_draws import NUMBER_OF_DRAWS
from optima import Choice, read_data

import biogeme.biogeme_logging as blog
from biogeme.biogeme import BIOGEME
from biogeme.expressions import (
    Beta,
    Draws,
    MonteCarlo,
    MultipleProduct,
    MultipleSum,
    OrderedProbit,
    Variable,
    exp,
    log,
)
from biogeme.models import logit
from biogeme.results_processing import (
    get_latex_estimated_parameters,
    get_latex_general_statistics,
    get_pandas_estimated_parameters,
)

logger = blog.get_screen_logger(level=blog.INFO)

Load the Optima data set.

The data set contains the observed mode choices, explanatory variables, and attitudinal indicators used in the hybrid choice model.

database = read_data()

Model parameters

The parameters are organized according to their role in the model: thresholds for the Likert-scale indicators, standard deviations of measurement errors, coefficients of the measurement equations, and coefficients of the structural equation of the latent variable.

likert_delta_0_log = Beta('likert_delta_0_log', -0.86, None, None, 0)
likert_delta_0 = exp(likert_delta_0_log)
likert_delta_1_log = Beta('likert_delta_1_log', -0.43, None, None, 0)
likert_delta_1 = exp(likert_delta_1_log)
measurement_Envir01_sigma = 1.0
measurement_Envir02_sigma_log = Beta(
    'measurement_Envir02_sigma_log', 2.302585092994046, None, None, 0
)
measurement_Envir02_sigma = exp(measurement_Envir02_sigma_log)
measurement_Envir06_sigma_log = Beta(
    'measurement_Envir06_sigma_log', 2.302585092994046, None, None, 0
)
measurement_Envir06_sigma = exp(measurement_Envir06_sigma_log)
measurement_LifSty07_sigma_log = Beta(
    'measurement_LifSty07_sigma_log', 2.302585092994046, None, None, 0
)
measurement_LifSty07_sigma = exp(measurement_LifSty07_sigma_log)
measurement_Mobil03_sigma_log = Beta(
    'measurement_Mobil03_sigma_log', 2.302585092994046, None, None, 0
)
measurement_Mobil03_sigma = exp(measurement_Mobil03_sigma_log)
measurement_Mobil05_sigma_log = Beta(
    'measurement_Mobil05_sigma_log', 2.302585092994046, None, None, 0
)
measurement_Mobil05_sigma = exp(measurement_Mobil05_sigma_log)
measurement_Mobil08_sigma_log = Beta(
    'measurement_Mobil08_sigma_log', 2.302585092994046, None, None, 0
)
measurement_Mobil08_sigma = exp(measurement_Mobil08_sigma_log)
measurement_Mobil09_sigma_log = Beta(
    'measurement_Mobil09_sigma_log', 2.302585092994046, None, None, 0
)
measurement_Mobil09_sigma = exp(measurement_Mobil09_sigma_log)
measurement_Mobil10_sigma_log = Beta(
    'measurement_Mobil10_sigma_log', 2.302585092994046, None, None, 0
)
measurement_Mobil10_sigma = exp(measurement_Mobil10_sigma_log)
measurement_coefficient_car_centric_attitude_Envir01 = -1.0
measurement_coefficient_car_centric_attitude_Envir02 = Beta(
    'measurement_coefficient_car_centric_attitude_Envir02', 0.0, None, None, 0
)
measurement_coefficient_car_centric_attitude_Envir06 = Beta(
    'measurement_coefficient_car_centric_attitude_Envir06', 0.0, None, None, 0
)
measurement_coefficient_car_centric_attitude_LifSty07 = Beta(
    'measurement_coefficient_car_centric_attitude_LifSty07', 0.0, None, None, 0
)
measurement_coefficient_car_centric_attitude_Mobil03 = Beta(
    'measurement_coefficient_car_centric_attitude_Mobil03', 0.0, None, None, 0
)
measurement_coefficient_car_centric_attitude_Mobil05 = Beta(
    'measurement_coefficient_car_centric_attitude_Mobil05', 0.0, None, None, 0
)
measurement_coefficient_car_centric_attitude_Mobil08 = Beta(
    'measurement_coefficient_car_centric_attitude_Mobil08', 0.0, None, None, 0
)
measurement_coefficient_car_centric_attitude_Mobil09 = Beta(
    'measurement_coefficient_car_centric_attitude_Mobil09', 0.0, None, None, 0
)
measurement_coefficient_car_centric_attitude_Mobil10 = Beta(
    'measurement_coefficient_car_centric_attitude_Mobil10', 0.0, None, None, 0
)
measurement_intercept_Envir01 = 0.0
measurement_intercept_Envir02 = Beta(
    'measurement_intercept_Envir02', 0.0, None, None, 0
)
measurement_intercept_Envir06 = Beta(
    'measurement_intercept_Envir06', 0.0, None, None, 0
)
measurement_intercept_LifSty07 = Beta(
    'measurement_intercept_LifSty07', 0.0, None, None, 0
)
measurement_intercept_Mobil03 = Beta(
    'measurement_intercept_Mobil03', 0.0, None, None, 0
)
measurement_intercept_Mobil05 = Beta(
    'measurement_intercept_Mobil05', 0.0, None, None, 0
)
measurement_intercept_Mobil08 = Beta(
    'measurement_intercept_Mobil08', 0.0, None, None, 0
)
measurement_intercept_Mobil09 = Beta(
    'measurement_intercept_Mobil09', 0.0, None, None, 0
)
measurement_intercept_Mobil10 = Beta(
    'measurement_intercept_Mobil10', 0.0, None, None, 0
)
struct_car_centric_attitude_car_oriented_parents = Beta(
    'struct_car_centric_attitude_car_oriented_parents', 0.0, None, None, 0
)
struct_car_centric_attitude_high_education = Beta(
    'struct_car_centric_attitude_high_education', 0.0, None, None, 0
)
struct_car_centric_attitude_intercept = Beta(
    'struct_car_centric_attitude_intercept', 0.0, None, None, 0
)
struct_car_centric_attitude_low_education = Beta(
    'struct_car_centric_attitude_low_education', 0.0, None, None, 0
)
struct_car_centric_attitude_sigma_log = Beta(
    'struct_car_centric_attitude_sigma_log', 2.302585092994046, None, None, 0
)
struct_car_centric_attitude_sigma = exp(struct_car_centric_attitude_sigma_log)
struct_car_centric_attitude_top_manager = Beta(
    'struct_car_centric_attitude_top_manager', 0.0, None, None, 0
)
struct_car_centric_attitude_used_to_go_to_school_by_car = Beta(
    'struct_car_centric_attitude_used_to_go_to_school_by_car', 0.0, None, None, 0
)

Structural equation for the latent variable

The latent variable is represented as a normal random variable. Its mean is a linear function of observed socio-economic characteristics, and its standard deviation is estimated from the data.

mu_car_centric_attitude = (
    struct_car_centric_attitude_intercept
    + struct_car_centric_attitude_top_manager * Variable('top_manager')
    + struct_car_centric_attitude_car_oriented_parents
    * Variable('car_oriented_parents')
    + struct_car_centric_attitude_high_education * Variable('high_education')
    + struct_car_centric_attitude_low_education * Variable('low_education')
    + struct_car_centric_attitude_used_to_go_to_school_by_car
    * Variable('used_to_go_to_school_by_car')
)
draw_car_centric_attitude = Draws(
    'struct_car_centric_attitude_draws', draw_type='NORMAL_MLHS_ANTI'
)
car_centric_attitude = (
    mu_car_centric_attitude
    + struct_car_centric_attitude_sigma * draw_car_centric_attitude
)

Threshold system for the ordered-probit indicators

The attitudinal indicators are coded on a five-point Likert scale. The ordered-probit model uses four thresholds to separate the five ordered response categories. The logarithmic parameterization of the threshold increments guarantees the required ordering. Threshold system: Likert scale

likert_tau_1 = -(likert_delta_0 + likert_delta_1)
likert_tau_2 = -likert_delta_0
likert_tau_3 = likert_delta_0
likert_tau_4 = likert_delta_0 + likert_delta_1

Measurement equations and ordered-probit likelihood terms

Each indicator is linked to the latent variable by a linear measurement equation. The probability of the observed ordinal answer is then computed with an ordered-probit model. Indicator: Envir01

mu_Envir01 = (
    measurement_intercept_Envir01
    + measurement_coefficient_car_centric_attitude_Envir01 * car_centric_attitude
)
y_Envir01 = Variable('Envir01')
term_Envir01 = OrderedProbit(
    eta=mu_Envir01 / measurement_Envir01_sigma,
    cutpoints=[
        likert_tau_1 / measurement_Envir01_sigma,
        likert_tau_2 / measurement_Envir01_sigma,
        likert_tau_3 / measurement_Envir01_sigma,
        likert_tau_4 / measurement_Envir01_sigma,
    ],
    y=y_Envir01,
    categories=[1, 2, 3, 4, 5],
    neutral_labels=[6, -1],
)

# Indicator: Envir02
mu_Envir02 = (
    measurement_intercept_Envir02
    + measurement_coefficient_car_centric_attitude_Envir02 * car_centric_attitude
)
y_Envir02 = Variable('Envir02')
term_Envir02 = OrderedProbit(
    eta=mu_Envir02 / measurement_Envir02_sigma,
    cutpoints=[
        likert_tau_1 / measurement_Envir02_sigma,
        likert_tau_2 / measurement_Envir02_sigma,
        likert_tau_3 / measurement_Envir02_sigma,
        likert_tau_4 / measurement_Envir02_sigma,
    ],
    y=y_Envir02,
    categories=[1, 2, 3, 4, 5],
    neutral_labels=[6, -1],
)

# Indicator: Envir06
mu_Envir06 = (
    measurement_intercept_Envir06
    + measurement_coefficient_car_centric_attitude_Envir06 * car_centric_attitude
)
y_Envir06 = Variable('Envir06')
term_Envir06 = OrderedProbit(
    eta=mu_Envir06 / measurement_Envir06_sigma,
    cutpoints=[
        likert_tau_1 / measurement_Envir06_sigma,
        likert_tau_2 / measurement_Envir06_sigma,
        likert_tau_3 / measurement_Envir06_sigma,
        likert_tau_4 / measurement_Envir06_sigma,
    ],
    y=y_Envir06,
    categories=[1, 2, 3, 4, 5],
    neutral_labels=[6, -1],
)

# Indicator: Mobil03
mu_Mobil03 = (
    measurement_intercept_Mobil03
    + measurement_coefficient_car_centric_attitude_Mobil03 * car_centric_attitude
)
y_Mobil03 = Variable('Mobil03')
term_Mobil03 = OrderedProbit(
    eta=mu_Mobil03 / measurement_Mobil03_sigma,
    cutpoints=[
        likert_tau_1 / measurement_Mobil03_sigma,
        likert_tau_2 / measurement_Mobil03_sigma,
        likert_tau_3 / measurement_Mobil03_sigma,
        likert_tau_4 / measurement_Mobil03_sigma,
    ],
    y=y_Mobil03,
    categories=[1, 2, 3, 4, 5],
    neutral_labels=[6, -1],
)

# Indicator: Mobil05
mu_Mobil05 = (
    measurement_intercept_Mobil05
    + measurement_coefficient_car_centric_attitude_Mobil05 * car_centric_attitude
)
y_Mobil05 = Variable('Mobil05')
term_Mobil05 = OrderedProbit(
    eta=mu_Mobil05 / measurement_Mobil05_sigma,
    cutpoints=[
        likert_tau_1 / measurement_Mobil05_sigma,
        likert_tau_2 / measurement_Mobil05_sigma,
        likert_tau_3 / measurement_Mobil05_sigma,
        likert_tau_4 / measurement_Mobil05_sigma,
    ],
    y=y_Mobil05,
    categories=[1, 2, 3, 4, 5],
    neutral_labels=[6, -1],
)

# Indicator: Mobil08
mu_Mobil08 = (
    measurement_intercept_Mobil08
    + measurement_coefficient_car_centric_attitude_Mobil08 * car_centric_attitude
)
y_Mobil08 = Variable('Mobil08')
term_Mobil08 = OrderedProbit(
    eta=mu_Mobil08 / measurement_Mobil08_sigma,
    cutpoints=[
        likert_tau_1 / measurement_Mobil08_sigma,
        likert_tau_2 / measurement_Mobil08_sigma,
        likert_tau_3 / measurement_Mobil08_sigma,
        likert_tau_4 / measurement_Mobil08_sigma,
    ],
    y=y_Mobil08,
    categories=[1, 2, 3, 4, 5],
    neutral_labels=[6, -1],
)

# Indicator: Mobil09
mu_Mobil09 = (
    measurement_intercept_Mobil09
    + measurement_coefficient_car_centric_attitude_Mobil09 * car_centric_attitude
)
y_Mobil09 = Variable('Mobil09')
term_Mobil09 = OrderedProbit(
    eta=mu_Mobil09 / measurement_Mobil09_sigma,
    cutpoints=[
        likert_tau_1 / measurement_Mobil09_sigma,
        likert_tau_2 / measurement_Mobil09_sigma,
        likert_tau_3 / measurement_Mobil09_sigma,
        likert_tau_4 / measurement_Mobil09_sigma,
    ],
    y=y_Mobil09,
    categories=[1, 2, 3, 4, 5],
    neutral_labels=[6, -1],
)

# Indicator: Mobil10
mu_Mobil10 = (
    measurement_intercept_Mobil10
    + measurement_coefficient_car_centric_attitude_Mobil10 * car_centric_attitude
)
y_Mobil10 = Variable('Mobil10')
term_Mobil10 = OrderedProbit(
    eta=mu_Mobil10 / measurement_Mobil10_sigma,
    cutpoints=[
        likert_tau_1 / measurement_Mobil10_sigma,
        likert_tau_2 / measurement_Mobil10_sigma,
        likert_tau_3 / measurement_Mobil10_sigma,
        likert_tau_4 / measurement_Mobil10_sigma,
    ],
    y=y_Mobil10,
    categories=[1, 2, 3, 4, 5],
    neutral_labels=[6, -1],
)

# Indicator: LifSty07
mu_LifSty07 = (
    measurement_intercept_LifSty07
    + measurement_coefficient_car_centric_attitude_LifSty07 * car_centric_attitude
)
y_LifSty07 = Variable('LifSty07')
term_LifSty07 = OrderedProbit(
    eta=mu_LifSty07 / measurement_LifSty07_sigma,
    cutpoints=[
        likert_tau_1 / measurement_LifSty07_sigma,
        likert_tau_2 / measurement_LifSty07_sigma,
        likert_tau_3 / measurement_LifSty07_sigma,
        likert_tau_4 / measurement_LifSty07_sigma,
    ],
    y=y_LifSty07,
    categories=[1, 2, 3, 4, 5],
    neutral_labels=[6, -1],
)

Conditional measurement likelihood

Conditional on a realization of the latent variable, the indicator likelihood is the product of the ordered-probit probabilities. The corresponding sum of logarithms is also constructed for later combination with the choice model.

conditional_measurement_likelihood = MultipleProduct(
    [
        term_Envir01,
        term_Envir02,
        term_Envir06,
        term_LifSty07,
        term_Mobil03,
        term_Mobil05,
        term_Mobil08,
        term_Mobil09,
        term_Mobil10,
    ]
)
conditional_log_likelihood = MultipleSum(
    [
        log(term)
        for term in [
            term_Envir01,
            term_Envir02,
            term_Envir06,
            term_LifSty07,
            term_Mobil03,
            term_Mobil05,
            term_Mobil08,
            term_Mobil09,
            term_Mobil10,
        ]
    ]
)
integrated_measurement_likelihood = MonteCarlo(conditional_measurement_likelihood)

Generate the choice utilities.

The latent variable is passed to the utility specification so that the car-centric attitude can directly influence the mode-choice probabilities.

latent_expressions = {'car_centric_attitude': car_centric_attitude}
utilities = generate_utility_functions(latent_expressions)

Conditional choice likelihood.

Given a realization of the latent variable, the probability of the observed mode choice is computed using the logit model.

conditional_choice_likelihood = logit(utilities, None, Choice)

Joint conditional likelihood.

The measurement component and the choice component are combined conditional on the latent variable. This expression is the joint contribution of one observation before integrating out the unobserved latent variable.

combined_conditional_likelihood = (
    conditional_measurement_likelihood * conditional_choice_likelihood
)

Integrate over the latent variable.

The latent variable is unobserved, so the joint conditional likelihood must be integrated over its distribution. The integral is approximated by Monte Carlo simulation, and the logarithm of the simulated probability defines the log-likelihood used for estimation.

integrated_likelihood = MonteCarlo(combined_conditional_likelihood)
log_likelihood = log(integrated_likelihood)

Estimate the simultaneous model with Biogeme.

The dictionary groups parameters in the output tables according to their statistical role. Biogeme then estimates the model, or reloads existing results from the YAML file when available.

group_of_parmeters = {
    'Structural equation': [
        'struct_car_centric_attitude_intercept',
        'struct_car_centric_attitude_top_manager',
        'struct_car_centric_attitude_car_oriented_parents',
        'struct_car_centric_attitude_high_education',
        'struct_car_centric_attitude_low_education',
        'struct_car_centric_attitude_used_to_go_to_school_by_car',
        'struct_car_centric_attitude_sigma_log',
    ],
    'Measurement equation: Envir02': [
        'measurement_intercept_Envir02',
        'measurement_coefficient_car_centric_attitude_Envir02',
        'measurement_Envir02_sigma_log',
    ],
    'Measurement equation: Envir06': [
        'measurement_intercept_Envir06',
        'measurement_coefficient_car_centric_attitude_Envir06',
        'measurement_Envir06_sigma_log',
    ],
    'Measurement equation: Mobil03': [
        'measurement_intercept_Mobil03',
        'measurement_coefficient_car_centric_attitude_Mobil03',
        'measurement_Mobil03_sigma_log',
    ],
    'Measurement equation: Mobil05': [
        'measurement_intercept_Mobil05',
        'measurement_coefficient_car_centric_attitude_Mobil05',
        'measurement_Mobil05_sigma_log',
    ],
    'Measurement equation: Mobil08': [
        'measurement_intercept_Mobil08',
        'measurement_coefficient_car_centric_attitude_Mobil08',
        'measurement_Mobil08_sigma_log',
    ],
    'Measurement equation: Mobil09': [
        'measurement_intercept_Mobil09',
        'measurement_coefficient_car_centric_attitude_Mobil09',
        'measurement_Mobil09_sigma_log',
    ],
    'Measurement equation: Mobil10': [
        'measurement_intercept_Mobil10',
        'measurement_coefficient_car_centric_attitude_Mobil10',
        'measurement_Mobil10_sigma_log',
    ],
    'Measurement equation: LifSty07': [
        'measurement_intercept_LifSty07',
        'measurement_coefficient_car_centric_attitude_LifSty07',
        'measurement_LifSty07_sigma_log',
    ],
    'Thresholds': ['likert_delta_0_log', 'likert_delta_1_log'],
}

biogeme = BIOGEME(
    database,
    log_likelihood,
    number_of_draws=NUMBER_OF_DRAWS,
    calculating_second_derivatives='never',
    max_iterations=5_000,
    group_of_parameters=group_of_parmeters,
)
biogeme.model_name = 'plot_h07_mode_lv_ordprobit_simult_generated'

yaml_file_name = f'saved_results/{biogeme.model_name}.yaml'
results = biogeme.estimate_or_load(yaml_file_name=yaml_file_name)
Biogeme parameters read from biogeme.toml.
Estimation results are read from saved_results/plot_h07_mode_lv_ordprobit_simult_generated.yaml. No estimation is performed.

Report the estimation results.

The compact summary gives the main diagnostics. The estimated parameters and general statistics are also exported as pandas and LaTeX tables, which is useful when preparing reports, slides, or scientific documents.

print(results.short_summary())
pandas_results = get_pandas_estimated_parameters(
    estimation_results=results,
    group_of_parameters=group_of_parmeters,
)
for group_name, pandas_table in pandas_results.items():
    print(group_name if group_name else 'Estimated parameters')
    print(pandas_table)

general_statistics = get_latex_general_statistics(estimation_results=results)
print(general_statistics)

estimated_parameters = get_latex_estimated_parameters(
    estimation_results=results,
    group_of_parameters=group_of_parmeters,
)
for group_name, latex_table in estimated_parameters.items():
    print(group_name if group_name else 'Estimated parameters')
    print(latex_table)
Results for model plot_h07_mode_lv_ordprobit_simult_generated
Nbr of parameters:              41
Sample size:                    889
Excluded data:                  0
Final log likelihood:           -10533.2
Akaike Information Criterion:   21148.41
Bayesian Information Criterion: 21344.8

Structural equation
                                                Name  ...  BHHH p-value
0              struct_car_centric_attitude_intercept  ...      0.083893
1            struct_car_centric_attitude_top_manager  ...      0.397310
2   struct_car_centric_attitude_car_oriented_parents  ...      0.000934
3         struct_car_centric_attitude_high_education  ...      0.000090
4          struct_car_centric_attitude_low_education  ...      0.130403
5  struct_car_centric_attitude_used_to_go_to_scho...  ...      0.857461
6              struct_car_centric_attitude_sigma_log  ...      0.000579

[7 rows x 5 columns]
Measurement equation: Envir02
                                                 Name  ...  BHHH p-value
9                       measurement_intercept_Envir02  ...  5.303095e-05
10  measurement_coefficient_car_centric_attitude_E...  ...  4.440892e-16
11                      measurement_Envir02_sigma_log  ...  5.461177e-01

[3 rows x 5 columns]
Measurement equation: Envir06
                                                 Name  ...  BHHH p-value
12                      measurement_intercept_Envir06  ...  3.264501e-08
13  measurement_coefficient_car_centric_attitude_E...  ...  2.220446e-16
14                      measurement_Envir06_sigma_log  ...  3.579350e-03

[3 rows x 5 columns]
Measurement equation: Mobil03
                                                 Name  ...  BHHH p-value
18                      measurement_intercept_Mobil03  ...      0.000047
19  measurement_coefficient_car_centric_attitude_M...  ...      0.000096
20                      measurement_Mobil03_sigma_log  ...      0.101800

[3 rows x 5 columns]
Measurement equation: Mobil05
                                                 Name  ...  BHHH p-value
21                      measurement_intercept_Mobil05  ...  4.904608e-04
22  measurement_coefficient_car_centric_attitude_M...  ...  2.929445e-07
23                      measurement_Mobil05_sigma_log  ...  1.199670e-02

[3 rows x 5 columns]
Measurement equation: Mobil08
                                                 Name  ...  BHHH p-value
24                      measurement_intercept_Mobil08  ...  4.207414e-02
25  measurement_coefficient_car_centric_attitude_M...  ...  2.052946e-07
26                      measurement_Mobil08_sigma_log  ...  1.755760e-02

[3 rows x 5 columns]
Measurement equation: Mobil09
                                                 Name  ...  BHHH p-value
27                      measurement_intercept_Mobil09  ...  1.330321e-06
28  measurement_coefficient_car_centric_attitude_M...  ...  2.322587e-13
29                      measurement_Mobil09_sigma_log  ...  3.909916e-01

[3 rows x 5 columns]
Measurement equation: Mobil10
                                                 Name  ...  BHHH p-value
30                      measurement_intercept_Mobil10  ...      0.083127
31  measurement_coefficient_car_centric_attitude_M...  ...      0.046051
32                      measurement_Mobil10_sigma_log  ...      0.004236

[3 rows x 5 columns]
Measurement equation: LifSty07
                                                 Name  ...  BHHH p-value
15                     measurement_intercept_LifSty07  ...      0.611869
16  measurement_coefficient_car_centric_attitude_L...  ...      0.002000
17                     measurement_LifSty07_sigma_log  ...      0.035951

[3 rows x 5 columns]
Thresholds
                 Name     Value  BHHH std err.  BHHH t-stat.  BHHH p-value
7  likert_delta_0_log -2.476606       0.273277     -9.062629      0.000000
8  likert_delta_1_log -0.279120       0.151926     -1.837214      0.066178
Other parameters
                                    Name      Value  ...  BHHH t-stat.  BHHH p-value
33                choice_scale_parameter   0.070034  ...      7.725972  1.110223e-14
34                         choice_asc_pt -11.403019  ...     -2.644522  8.180639e-03
35                   choice_beta_time_pt -13.222719  ...     -4.471160  7.779649e-06
36                        choice_asc_car  -0.245011  ...     -0.066945  9.466256e-01
37                  choice_beta_time_car -28.366538  ...     -5.629729  1.804928e-08
38  choice_beta_car_centric_attitude_car   8.173794  ...      4.849345  1.238700e-06
39                 choice_beta_dist_work  -2.898595  ...     -6.678530  2.413514e-11
40       choice_beta_dist_other_purposes  -4.607782  ...     -6.083006  1.179501e-09

[8 rows x 5 columns]

%% General statistics
\section{General statistics}
\begin{tabular}{ll}
Number of estimated parameters & 41 \\
Sample size & 889 \\
Excluded observations & 0 \\
Init log likelihood & -21722.51 \\
Final log likelihood & -10533.2 \\
Likelihood ratio test for the init. model & 22378.61 \\
Rho-square for the init. model & 0.515 \\
Rho-square-bar for the init. model & 0.513 \\
Akaike Information Criterion & 21148.41 \\
Bayesian Information Criterion & 21344.8 \\
Final gradient norm & 1.2211E-01 \\
Number of draws & 50000 \\
Draws generation time & 0:00:14.432400 \\
Types of draws & struct\_car\_centric\_attitude\_draws: NORMAL\_MLHS\_ANTI \\
Bootstrapping time & None \\
Algorithm & \verb$BFGS with trust region for simple bound constraints$ \\
Cause of termination & \verb$Relative gradient = 5.4e-06 <= 6.1e-06$ \\
Number of function evaluations & \verb$1504$ \\
Number of gradient evaluations & \verb$879$ \\
Number of hessian evaluations & \verb$0$ \\
Number of iterations & \verb$625$ \\
Optimization time & \verb$3:34:25.195618$ \\
Proportion of Hessian calculation & \verb$0/439 = 0.0%$ \\
Relative gradient & \verb$5.439e-06$ \\
\end{tabular}

Structural equation

\begin{tabular}{rlr@{.}lr@{.}lr@{.}lr@{.}l}
          &              &   \multicolumn{2}{l}{}         & \multicolumn{2}{l}{BHHH}  &  \multicolumn{4}{l}{}  \\
Parameter &              &   \multicolumn{2}{l}{Coeff.}   & \multicolumn{2}{l}{Asympt.}       & \multicolumn{4}{l}{}   \\
number    &  Description &   \multicolumn{2}{l}{estimate} & \multicolumn{2}{l}{std. error}    & \multicolumn{2}{l}{$t$-stat}  &  \multicolumn{2}{l}{$p$-value} \\
\hline
0 & struct\_car\_centric\_attitude\_intercept & -0&269 & 0&156 & -1&73 & 0&0839 \\
1 & struct\_car\_centric\_attitude\_top\_manager & 0&155 & 0&183 & 0&846 & 0&397 \\
2 & struct\_car\_centric\_attitude\_car\_oriented\_parents & 0&438 & 0&132 & 3&31 & 0&000934 \\
3 & struct\_car\_centric\_attitude\_high\_education & -0&647 & 0&165 & -3&92 & 8&98e-05 \\
4 & struct\_car\_centric\_attitude\_low\_education & 0&244 & 0&162 & 1&51 & 0&130 \\
5 & struct\_car\_centric\_attitude\_used\_to\_go\_to\_school\_by\_car & 0&128 & 0&715 & 0&180 & 0&857 \\
6 & struct\_car\_centric\_attitude\_sigma\_log & 0&292 & 0&0849 & 3&44 & 0&000579 \\

\end{tabular}

Measurement equation: Envir02

\begin{tabular}{rlr@{.}lr@{.}lr@{.}lr@{.}l}
          &              &   \multicolumn{2}{l}{}         & \multicolumn{2}{l}{BHHH}  &  \multicolumn{4}{l}{}  \\
Parameter &              &   \multicolumn{2}{l}{Coeff.}   & \multicolumn{2}{l}{Asympt.}       & \multicolumn{4}{l}{}   \\
number    &  Description &   \multicolumn{2}{l}{estimate} & \multicolumn{2}{l}{std. error}    & \multicolumn{2}{l}{$t$-stat}  &  \multicolumn{2}{l}{$p$-value} \\
\hline
9 & measurement\_intercept\_Envir02 & 0&837 & 0&207 & 4&04 & 5&30e-05 \\
10 & measurement\_coefficient\_car\_centric\_attitude\_Envir02 & -0&475 & 0&0585 & -8&11 & 4&44e-16 \\
11 & measurement\_Envir02\_sigma\_log & -0&111 & 0&184 & -0&604 & 0&546 \\

\end{tabular}

Measurement equation: Envir06

\begin{tabular}{rlr@{.}lr@{.}lr@{.}lr@{.}l}
          &              &   \multicolumn{2}{l}{}         & \multicolumn{2}{l}{BHHH}  &  \multicolumn{4}{l}{}  \\
Parameter &              &   \multicolumn{2}{l}{Coeff.}   & \multicolumn{2}{l}{Asympt.}       & \multicolumn{4}{l}{}   \\
number    &  Description &   \multicolumn{2}{l}{estimate} & \multicolumn{2}{l}{std. error}    & \multicolumn{2}{l}{$t$-stat}  &  \multicolumn{2}{l}{$p$-value} \\
\hline
12 & measurement\_intercept\_Envir06 & 1&39 & 0&252 & 5&53 & 3&26e-08 \\
13 & measurement\_coefficient\_car\_centric\_attitude\_Envir06 & -0&319 & 0&0385 & -8&29 & 2&22e-16 \\
14 & measurement\_Envir06\_sigma\_log & -0&480 & 0&165 & -2&91 & 0&00358 \\

\end{tabular}

Measurement equation: Mobil03

\begin{tabular}{rlr@{.}lr@{.}lr@{.}lr@{.}l}
          &              &   \multicolumn{2}{l}{}         & \multicolumn{2}{l}{BHHH}  &  \multicolumn{4}{l}{}  \\
Parameter &              &   \multicolumn{2}{l}{Coeff.}   & \multicolumn{2}{l}{Asympt.}       & \multicolumn{4}{l}{}   \\
number    &  Description &   \multicolumn{2}{l}{estimate} & \multicolumn{2}{l}{std. error}    & \multicolumn{2}{l}{$t$-stat}  &  \multicolumn{2}{l}{$p$-value} \\
\hline
18 & measurement\_intercept\_Mobil03 & 1&02 & 0&250 & 4&07 & 4&73e-05 \\
19 & measurement\_coefficient\_car\_centric\_attitude\_Mobil03 & -0&198 & 0&0508 & -3&90 & 9&55e-05 \\
20 & measurement\_Mobil03\_sigma\_log & 0&320 & 0&196 & 1&64 & 0&102 \\

\end{tabular}

Measurement equation: Mobil05

\begin{tabular}{rlr@{.}lr@{.}lr@{.}lr@{.}l}
          &              &   \multicolumn{2}{l}{}         & \multicolumn{2}{l}{BHHH}  &  \multicolumn{4}{l}{}  \\
Parameter &              &   \multicolumn{2}{l}{Coeff.}   & \multicolumn{2}{l}{Asympt.}       & \multicolumn{4}{l}{}   \\
number    &  Description &   \multicolumn{2}{l}{estimate} & \multicolumn{2}{l}{std. error}    & \multicolumn{2}{l}{$t$-stat}  &  \multicolumn{2}{l}{$p$-value} \\
\hline
21 & measurement\_intercept\_Mobil05 & 1&43 & 0&410 & 3&49 & 0&000490 \\
22 & measurement\_coefficient\_car\_centric\_attitude\_Mobil05 & -0&511 & 0&0997 & -5&13 & 2&93e-07 \\
23 & measurement\_Mobil05\_sigma\_log & 0&569 & 0&226 & 2&51 & 0&0120 \\

\end{tabular}

Measurement equation: Mobil08

\begin{tabular}{rlr@{.}lr@{.}lr@{.}lr@{.}l}
          &              &   \multicolumn{2}{l}{}         & \multicolumn{2}{l}{BHHH}  &  \multicolumn{4}{l}{}  \\
Parameter &              &   \multicolumn{2}{l}{Coeff.}   & \multicolumn{2}{l}{Asympt.}       & \multicolumn{4}{l}{}   \\
number    &  Description &   \multicolumn{2}{l}{estimate} & \multicolumn{2}{l}{std. error}    & \multicolumn{2}{l}{$t$-stat}  &  \multicolumn{2}{l}{$p$-value} \\
\hline
24 & measurement\_intercept\_Mobil08 & 0&247 & 0&121 & 2&03 & 0&0421 \\
25 & measurement\_coefficient\_car\_centric\_attitude\_Mobil08 & 0&423 & 0&0815 & 5&19 & 2&05e-07 \\
26 & measurement\_Mobil08\_sigma\_log & 0&510 & 0&215 & 2&37 & 0&0176 \\

\end{tabular}

Measurement equation: Mobil09

\begin{tabular}{rlr@{.}lr@{.}lr@{.}lr@{.}l}
          &              &   \multicolumn{2}{l}{}         & \multicolumn{2}{l}{BHHH}  &  \multicolumn{4}{l}{}  \\
Parameter &              &   \multicolumn{2}{l}{Coeff.}   & \multicolumn{2}{l}{Asympt.}       & \multicolumn{4}{l}{}   \\
number    &  Description &   \multicolumn{2}{l}{estimate} & \multicolumn{2}{l}{std. error}    & \multicolumn{2}{l}{$t$-stat}  &  \multicolumn{2}{l}{$p$-value} \\
\hline
27 & measurement\_intercept\_Mobil09 & 1&25 & 0&259 & 4&84 & 1&33e-06 \\
28 & measurement\_coefficient\_car\_centric\_attitude\_Mobil09 & -0&327 & 0&0446 & -7&33 & 2&32e-13 \\
29 & measurement\_Mobil09\_sigma\_log & -0&154 & 0&179 & -0&858 & 0&391 \\

\end{tabular}

Measurement equation: Mobil10

\begin{tabular}{rlr@{.}lr@{.}lr@{.}lr@{.}l}
          &              &   \multicolumn{2}{l}{}         & \multicolumn{2}{l}{BHHH}  &  \multicolumn{4}{l}{}  \\
Parameter &              &   \multicolumn{2}{l}{Coeff.}   & \multicolumn{2}{l}{Asympt.}       & \multicolumn{4}{l}{}   \\
number    &  Description &   \multicolumn{2}{l}{estimate} & \multicolumn{2}{l}{std. error}    & \multicolumn{2}{l}{$t$-stat}  &  \multicolumn{2}{l}{$p$-value} \\
\hline
30 & measurement\_intercept\_Mobil10 & 4&35 & 2&51 & 1&73 & 0&0831 \\
31 & measurement\_coefficient\_car\_centric\_attitude\_Mobil10 & 1&90 & 0&953 & 1&99 & 0&0461 \\
32 & measurement\_Mobil10\_sigma\_log & 1&57 & 0&549 & 2&86 & 0&00424 \\

\end{tabular}

Measurement equation: LifSty07

\begin{tabular}{rlr@{.}lr@{.}lr@{.}lr@{.}l}
          &              &   \multicolumn{2}{l}{}         & \multicolumn{2}{l}{BHHH}  &  \multicolumn{4}{l}{}  \\
Parameter &              &   \multicolumn{2}{l}{Coeff.}   & \multicolumn{2}{l}{Asympt.}       & \multicolumn{4}{l}{}   \\
number    &  Description &   \multicolumn{2}{l}{estimate} & \multicolumn{2}{l}{std. error}    & \multicolumn{2}{l}{$t$-stat}  &  \multicolumn{2}{l}{$p$-value} \\
\hline
15 & measurement\_intercept\_LifSty07 & -0&0496 & 0&0978 & -0&507 & 0&612 \\
16 & measurement\_coefficient\_car\_centric\_attitude\_LifSty07 & 0&156 & 0&0504 & 3&09 & 0&00200 \\
17 & measurement\_LifSty07\_sigma\_log & 0&465 & 0&222 & 2&10 & 0&0360 \\

\end{tabular}

Thresholds

\begin{tabular}{rlr@{.}lr@{.}lr@{.}lr@{.}l}
          &              &   \multicolumn{2}{l}{}         & \multicolumn{2}{l}{BHHH}  &  \multicolumn{4}{l}{}  \\
Parameter &              &   \multicolumn{2}{l}{Coeff.}   & \multicolumn{2}{l}{Asympt.}       & \multicolumn{4}{l}{}   \\
number    &  Description &   \multicolumn{2}{l}{estimate} & \multicolumn{2}{l}{std. error}    & \multicolumn{2}{l}{$t$-stat}  &  \multicolumn{2}{l}{$p$-value} \\
\hline
7 & likert\_delta\_0\_log & -2&48 & 0&273 & -9&06 & 0&00 \\
8 & likert\_delta\_1\_log & -0&279 & 0&152 & -1&84 & 0&0662 \\

\end{tabular}

Other parameters

\begin{tabular}{rlr@{.}lr@{.}lr@{.}lr@{.}l}
          &              &   \multicolumn{2}{l}{}         & \multicolumn{2}{l}{BHHH}  &  \multicolumn{4}{l}{}  \\
Parameter &              &   \multicolumn{2}{l}{Coeff.}   & \multicolumn{2}{l}{Asympt.}       & \multicolumn{4}{l}{}   \\
number    &  Description &   \multicolumn{2}{l}{estimate} & \multicolumn{2}{l}{std. error}    & \multicolumn{2}{l}{$t$-stat}  &  \multicolumn{2}{l}{$p$-value} \\
\hline
33 & choice\_scale\_parameter & 0&0700 & 0&00906 & 7&73 & 1&11e-14 \\
34 & choice\_asc\_pt & -11&4 & 4&31 & -2&64 & 0&00818 \\
35 & choice\_beta\_time\_pt & -13&2 & 2&96 & -4&47 & 7&78e-06 \\
36 & choice\_asc\_car & -0&245 & 3&66 & -0&0669 & 0&947 \\
37 & choice\_beta\_time\_car & -28&4 & 5&04 & -5&63 & 1&80e-08 \\
38 & choice\_beta\_car\_centric\_attitude\_car & 8&17 & 1&69 & 4&85 & 1&24e-06 \\
39 & choice\_beta\_dist\_work & -2&90 & 0&434 & -6&68 & 2&41e-11 \\
40 & choice\_beta\_dist\_other\_purposes & -4&61 & 0&757 & -6&08 & 1&18e-09 \\

\end{tabular}

Total running time of the script: (0 minutes 1.202 seconds)

Gallery generated by Sphinx-Gallery