.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_examples/hybrid_choice_models/plot_h07_mode_lv_ordprobit_simult_generated.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code. .. rst-class:: sphx-glr-example-title .. _sphx_glr_auto_examples_hybrid_choice_models_plot_h07_mode_lv_ordprobit_simult_generated.py: 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 .. GENERATED FROM PYTHON SOURCE LINES 28-58 .. code-block:: Python from choice_latent_variables import ( generate_availability, 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) .. GENERATED FROM PYTHON SOURCE LINES 59-63 Load the Optima data set. ------------------------- The data set contains the observed mode choices, explanatory variables, and attitudinal indicators used in the hybrid choice model. .. GENERATED FROM PYTHON SOURCE LINES 63-66 .. code-block:: Python database = read_data() .. GENERATED FROM PYTHON SOURCE LINES 67-73 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. .. GENERATED FROM PYTHON SOURCE LINES 73-183 .. code-block:: Python 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 ) .. GENERATED FROM PYTHON SOURCE LINES 184-189 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. .. GENERATED FROM PYTHON SOURCE LINES 189-207 .. code-block:: Python 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 ) .. GENERATED FROM PYTHON SOURCE LINES 208-215 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 .. GENERATED FROM PYTHON SOURCE LINES 215-220 .. code-block:: Python 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 .. GENERATED FROM PYTHON SOURCE LINES 221-227 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 .. GENERATED FROM PYTHON SOURCE LINES 227-397 .. code-block:: Python 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], ) .. GENERATED FROM PYTHON SOURCE LINES 398-403 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. .. GENERATED FROM PYTHON SOURCE LINES 403-435 .. code-block:: Python 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) .. GENERATED FROM PYTHON SOURCE LINES 436-440 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. .. GENERATED FROM PYTHON SOURCE LINES 440-443 .. code-block:: Python latent_expressions = {'car_centric_attitude': car_centric_attitude} utilities = generate_utility_functions(latent_expressions) .. GENERATED FROM PYTHON SOURCE LINES 444-448 Conditional choice likelihood. ------------------------------ Given a realization of the latent variable, the probability of the observed mode choice is computed using the logit model. .. GENERATED FROM PYTHON SOURCE LINES 448-451 .. code-block:: Python availability = generate_availability() conditional_choice_likelihood = logit(utilities, availability, Choice) .. GENERATED FROM PYTHON SOURCE LINES 452-457 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. .. GENERATED FROM PYTHON SOURCE LINES 457-461 .. code-block:: Python combined_conditional_likelihood = ( conditional_measurement_likelihood * conditional_choice_likelihood ) .. GENERATED FROM PYTHON SOURCE LINES 462-468 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. .. GENERATED FROM PYTHON SOURCE LINES 468-472 .. code-block:: Python integrated_likelihood = MonteCarlo(combined_conditional_likelihood) log_likelihood = log(integrated_likelihood) .. GENERATED FROM PYTHON SOURCE LINES 473-478 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. .. GENERATED FROM PYTHON SOURCE LINES 478-544 .. code-block:: Python 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) .. rst-class:: sphx-glr-script-out .. code-block:: none 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. .. GENERATED FROM PYTHON SOURCE LINES 545-550 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. .. GENERATED FROM PYTHON SOURCE LINES 550-569 .. code-block:: Python 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) .. rst-class:: sphx-glr-script-out .. code-block:: none Results for model plot_h07_mode_lv_ordprobit_simult_generated Nbr of parameters: 41 Sample size: 889 Excluded data: 0 Final log likelihood: -10513.72 Akaike Information Criterion: 21109.43 Bayesian Information Criterion: 21305.83 Structural equation Name ... BHHH p-value 0 struct_car_centric_attitude_intercept ... 0.074435 1 struct_car_centric_attitude_top_manager ... 0.400787 2 struct_car_centric_attitude_car_oriented_parents ... 0.000855 3 struct_car_centric_attitude_high_education ... 0.000082 4 struct_car_centric_attitude_low_education ... 0.124507 5 struct_car_centric_attitude_used_to_go_to_scho... ... 0.844929 6 struct_car_centric_attitude_sigma_log ... 0.000783 [7 rows x 5 columns] Measurement equation: Envir02 Name ... BHHH p-value 9 measurement_intercept_Envir02 ... 5.581442e-05 10 measurement_coefficient_car_centric_attitude_E... ... 6.661338e-16 11 measurement_Envir02_sigma_log ... 5.157092e-01 [3 rows x 5 columns] Measurement equation: Envir06 Name ... BHHH p-value 12 measurement_intercept_Envir06 ... 3.736465e-08 13 measurement_coefficient_car_centric_attitude_E... ... 2.220446e-16 14 measurement_Envir06_sigma_log ... 2.766105e-03 [3 rows x 5 columns] Measurement equation: Mobil03 Name ... BHHH p-value 18 measurement_intercept_Mobil03 ... 0.000049 19 measurement_coefficient_car_centric_attitude_M... ... 0.000089 20 measurement_Mobil03_sigma_log ... 0.115945 [3 rows x 5 columns] Measurement equation: Mobil05 Name ... BHHH p-value 21 measurement_intercept_Mobil05 ... 5.081047e-04 22 measurement_coefficient_car_centric_attitude_M... ... 3.040974e-07 23 measurement_Mobil05_sigma_log ... 1.394528e-02 [3 rows x 5 columns] Measurement equation: Mobil08 Name ... BHHH p-value 24 measurement_intercept_Mobil08 ... 4.130684e-02 25 measurement_coefficient_car_centric_attitude_M... ... 1.805719e-07 26 measurement_Mobil08_sigma_log ... 2.151736e-02 [3 rows x 5 columns] Measurement equation: Mobil09 Name ... BHHH p-value 27 measurement_intercept_Mobil09 ... 1.448366e-06 28 measurement_coefficient_car_centric_attitude_M... ... 2.757794e-13 29 measurement_Mobil09_sigma_log ... 3.536984e-01 [3 rows x 5 columns] Measurement equation: Mobil10 Name ... BHHH p-value 30 measurement_intercept_Mobil10 ... 0.083155 31 measurement_coefficient_car_centric_attitude_M... ... 0.046249 32 measurement_Mobil10_sigma_log ... 0.004521 [3 rows x 5 columns] Measurement equation: LifSty07 Name ... BHHH p-value 15 measurement_intercept_LifSty07 ... 0.618820 16 measurement_coefficient_car_centric_attitude_L... ... 0.001914 17 measurement_LifSty07_sigma_log ... 0.040939 [3 rows x 5 columns] Thresholds Name Value BHHH std err. BHHH t-stat. BHHH p-value 7 likert_delta_0_log -2.485456 0.273182 -9.098154 0.000000 8 likert_delta_1_log -0.289944 0.152568 -1.900419 0.057378 Other parameters Name Value ... BHHH t-stat. BHHH p-value 33 choice_scale_parameter 0.064004 ... 6.767547 1.309841e-11 34 choice_asc_pt -12.119740 ... -2.549879 1.077602e-02 35 choice_beta_time_pt -15.917708 ... -4.064265 4.818411e-05 36 choice_asc_car 0.470089 ... 0.117957 9.061014e-01 37 choice_beta_time_car -33.183761 ... -5.065247 4.078706e-07 38 choice_beta_car_centric_attitude_car 8.704602 ... 4.524590 6.051267e-06 39 choice_beta_dist_work -3.204977 ... -5.992322 2.068656e-09 40 choice_beta_dist_other_purposes -5.152441 ... -5.587246 2.306982e-08 [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 & -21721.42 \\ Final log likelihood & -10513.72 \\ Likelihood ratio test for the init. model & 22415.4 \\ Rho-square for the init. model & 0.516 \\ Rho-square-bar for the init. model & 0.514 \\ Akaike Information Criterion & 21109.43 \\ Bayesian Information Criterion & 21305.83 \\ Final gradient norm & 1.6815E-01 \\ Number of draws & 50000 \\ Draws generation time & 0:00:13.150386 \\ 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.9e-06 <= 6.1e-06$ \\ Number of function evaluations & \verb$1545$ \\ Number of gradient evaluations & \verb$897$ \\ Number of hessian evaluations & \verb$0$ \\ Number of iterations & \verb$648$ \\ Optimization time & \verb$3:44:44.629547$ \\ Proportion of Hessian calculation & \verb$0/448 = 0.0%$ \\ Relative gradient & \verb$5.864e-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&276 & 0&155 & -1&78 & 0&0744 \\ 1 & struct\_car\_centric\_attitude\_top\_manager & 0&153 & 0&182 & 0&840 & 0&401 \\ 2 & struct\_car\_centric\_attitude\_car\_oriented\_parents & 0&438 & 0&131 & 3&33 & 0&000855 \\ 3 & struct\_car\_centric\_attitude\_high\_education & -0&648 & 0&165 & -3&94 & 8&24e-05 \\ 4 & struct\_car\_centric\_attitude\_low\_education & 0&246 & 0&160 & 1&54 & 0&125 \\ 5 & struct\_car\_centric\_attitude\_used\_to\_go\_to\_school\_by\_car & 0&137 & 0&703 & 0&196 & 0&845 \\ 6 & struct\_car\_centric\_attitude\_sigma\_log & 0&285 & 0&0849 & 3&36 & 0&000783 \\ \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&828 & 0&205 & 4&03 & 5&58e-05 \\ 10 & measurement\_coefficient\_car\_centric\_attitude\_Envir02 & -0&472 & 0&0585 & -8&06 & 6&66e-16 \\ 11 & measurement\_Envir02\_sigma\_log & -0&120 & 0&185 & -0&650 & 0&516 \\ \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&37 & 0&249 & 5&50 & 3&74e-08 \\ 13 & measurement\_coefficient\_car\_centric\_attitude\_Envir06 & -0&318 & 0&0385 & -8&26 & 2&22e-16 \\ 14 & measurement\_Envir06\_sigma\_log & -0&494 & 0&165 & -2&99 & 0&00277 \\ \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&00 & 0&247 & 4&06 & 4&87e-05 \\ 19 & measurement\_coefficient\_car\_centric\_attitude\_Mobil03 & -0&198 & 0&0505 & -3&92 & 8&91e-05 \\ 20 & measurement\_Mobil03\_sigma\_log & 0&308 & 0&196 & 1&57 & 0&116 \\ \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&41 & 0&406 & 3&48 & 0&000508 \\ 22 & measurement\_coefficient\_car\_centric\_attitude\_Mobil05 & -0&508 & 0&0991 & -5&12 & 3&04e-07 \\ 23 & measurement\_Mobil05\_sigma\_log & 0&558 & 0&227 & 2&46 & 0&0139 \\ \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&243 & 0&119 & 2&04 & 0&0413 \\ 25 & measurement\_coefficient\_car\_centric\_attitude\_Mobil08 & 0&424 & 0&0812 & 5&22 & 1&81e-07 \\ 26 & measurement\_Mobil08\_sigma\_log & 0&494 & 0&215 & 2&30 & 0&0215 \\ \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&24 & 0&257 & 4&82 & 1&45e-06 \\ 28 & measurement\_coefficient\_car\_centric\_attitude\_Mobil09 & -0&326 & 0&0446 & -7&31 & 2&76e-13 \\ 29 & measurement\_Mobil09\_sigma\_log & -0&167 & 0&180 & -0&927 & 0&354 \\ \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&32 & 2&49 & 1&73 & 0&0832 \\ 31 & measurement\_coefficient\_car\_centric\_attitude\_Mobil10 & 1&89 & 0&949 & 1&99 & 0&0462 \\ 32 & measurement\_Mobil10\_sigma\_log & 1&56 & 0&549 & 2&84 & 0&00452 \\ \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&0482 & 0&0968 & -0&498 & 0&619 \\ 16 & measurement\_coefficient\_car\_centric\_attitude\_LifSty07 & 0&156 & 0&0502 & 3&10 & 0&00191 \\ 17 & measurement\_LifSty07\_sigma\_log & 0&454 & 0&222 & 2&04 & 0&0409 \\ \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&49 & 0&273 & -9&10 & 0&00 \\ 8 & likert\_delta\_1\_log & -0&290 & 0&153 & -1&90 & 0&0574 \\ \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&0640 & 0&00946 & 6&77 & 1&31e-11 \\ 34 & choice\_asc\_pt & -12&1 & 4&75 & -2&55 & 0&0108 \\ 35 & choice\_beta\_time\_pt & -15&9 & 3&92 & -4&06 & 4&82e-05 \\ 36 & choice\_asc\_car & 0&470 & 3&99 & 0&118 & 0&906 \\ 37 & choice\_beta\_time\_car & -33&2 & 6&55 & -5&07 & 4&08e-07 \\ 38 & choice\_beta\_car\_centric\_attitude\_car & 8&70 & 1&92 & 4&52 & 6&05e-06 \\ 39 & choice\_beta\_dist\_work & -3&20 & 0&535 & -5&99 & 2&07e-09 \\ 40 & choice\_beta\_dist\_other\_purposes & -5&15 & 0&922 & -5&59 & 2&31e-08 \\ \end{tabular} .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 1.338 seconds) .. _sphx_glr_download_auto_examples_hybrid_choice_models_plot_h07_mode_lv_ordprobit_simult_generated.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_h07_mode_lv_ordprobit_simult_generated.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_h07_mode_lv_ordprobit_simult_generated.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: plot_h07_mode_lv_ordprobit_simult_generated.zip ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_