.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_examples/swissmetro/plot_b22process_pareto.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_swissmetro_plot_b22process_pareto.py: .. _plot_b22process_pareto: Re-estimate the Pareto optimal models ===================================== The assisted specification algorithm generates a file containg the pareto optimal specification. This script is designed to re-estimate the Pareto optimal models. The catalog of specifications is defined in :ref:`plot_b22multiple_models_spec` . :author: Michel Bierlaire, EPFL :date: Wed Apr 12 17:25:41 2023 .. GENERATED FROM PYTHON SOURCE LINES 16-32 .. code-block:: Python try: import matplotlib.pyplot as plt can_plot = True except ModuleNotFoundError: can_plot = False from biogeme.assisted import ParetoPostProcessing from biogeme.results import compile_estimation_results from plot_b22multiple_models_spec import the_biogeme PARETO_FILE_NAME = 'saved_results/b22multiple_models.pareto' CSV_FILE = 'b22process_pareto.csv' SEP_CSV = ',' .. GENERATED FROM PYTHON SOURCE LINES 33-38 The constructor of the Pareto post processing object takes two arguments: - the biogeme object, - the name of the file where the algorithm has stored the estimated models. .. GENERATED FROM PYTHON SOURCE LINES 38-43 .. code-block:: Python the_pareto_post = ParetoPostProcessing( biogeme_object=the_biogeme, pareto_file_name=PARETO_FILE_NAME, ) .. GENERATED FROM PYTHON SOURCE LINES 44-46 .. code-block:: Python the_pareto_post.log_statistics() .. GENERATED FROM PYTHON SOURCE LINES 47-49 .. code-block:: Python all_results = the_pareto_post.reestimate(recycle=True) .. GENERATED FROM PYTHON SOURCE LINES 50-53 .. code-block:: Python summary, description = compile_estimation_results(all_results, use_short_names=True) print(summary) .. rst-class:: sphx-glr-script-out .. code-block:: none Model_000000 ... Model_000005 Number of estimated parameters 8 ... 6 Sample size 6768 ... 6768 Final log likelihood -4834.225553 ... -4958.518685 Akaike Information Criterion 9684.451106 ... 9929.037369 Bayesian Information Criterion 9739.010793 ... 9969.957135 ASC_CAR (t-test) -0.619 (-5.91) ... -0.153 (-2.64) ASC_CAR_male (t-test) 0.49 (4.55) ... ASC_CAR_with_ga (t-test) -2.01 (-9.67) ... 1.16 (5.03) ASC_TRAIN (t-test) -0.475 (-4.9) ... -1.14 (-14) ASC_TRAIN_male (t-test) -1.11 (-13.2) ... ASC_TRAIN_with_ga (t-test) 2.03 (22.4) ... 2.07 (23.7) B_COST (t-test) -1.47 (-18) ... -2.79 (-17.2) B_TIME (t-test) -2.95 (-16) ... -3.11 (-17) lambda_TT (t-test) ... lambda_COST (t-test) ... B_HEADWAY (t-test) ... [16 rows x 6 columns] .. GENERATED FROM PYTHON SOURCE LINES 54-57 .. code-block:: Python print(f'Summary table available in {CSV_FILE}') summary.to_csv(CSV_FILE, sep=SEP_CSV) .. rst-class:: sphx-glr-script-out .. code-block:: none Summary table available in b22process_pareto.csv .. GENERATED FROM PYTHON SOURCE LINES 58-59 Explanation of the short names of the models. .. GENERATED FROM PYTHON SOURCE LINES 59-67 .. code-block:: Python with open(CSV_FILE, 'a', encoding='utf-8') as f: print('\n\n', file=f) for k, v in description.items(): if k != v: print(f'{k}: {v}') print(f'{k}{SEP_CSV}{v}', file=f) .. rst-class:: sphx-glr-script-out .. code-block:: none Model_000000: ASC:no_seg;TRAIN_COST_catalog:sqrt;TRAIN_HEADWAY_catalog:without_headway;TRAIN_TT_catalog:sqrt Model_000001: ASC:MALE-GA;TRAIN_COST_catalog:log;TRAIN_HEADWAY_catalog:with_headway;TRAIN_TT_catalog:log Model_000002: ASC:GA;TRAIN_COST_catalog:log;TRAIN_HEADWAY_catalog:with_headway;TRAIN_TT_catalog:log Model_000003: ASC:GA;TRAIN_COST_catalog:sqrt;TRAIN_HEADWAY_catalog:without_headway;TRAIN_TT_catalog:sqrt Model_000004: ASC:MALE-GA;TRAIN_COST_catalog:log;TRAIN_HEADWAY_catalog:with_headway;TRAIN_TT_catalog:boxcox Model_000005: ASC:MALE-GA;TRAIN_COST_catalog:sqrt;TRAIN_HEADWAY_catalog:without_headway;TRAIN_TT_catalog:sqrt .. GENERATED FROM PYTHON SOURCE LINES 68-79 The following plot illustrates all models that have been estimated. Each dot corresponds to a model. The x-coordinate corresponds to the Akaike Information Criterion (AIC). The y-coordinate corresponds to the Bayesian Information Criterion (BIC). Note that there is a third objective that does not appear on this picture: the number of parameters. If the shape of the dot is a circle, it means that it corresponds to a Pareto optimal model. If the shape is a cross, it means that the model has been Pareto optimal at some point during the algorithm and later removed as a new model dominating it has been found. If the shape is a start, it means that the model has been deemed invalid. .. GENERATED FROM PYTHON SOURCE LINES 79-83 .. code-block:: Python if can_plot: _ = the_pareto_post.plot(label_x='AIC', label_y='BIC') plt.show() .. image-sg:: /auto_examples/swissmetro/images/sphx_glr_plot_b22process_pareto_001.png :alt: plot b22process pareto :srcset: /auto_examples/swissmetro/images/sphx_glr_plot_b22process_pareto_001.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 84-85 It is possible to plot two different objectives: AIC and number of parameters. .. GENERATED FROM PYTHON SOURCE LINES 85-91 .. code-block:: Python if can_plot: _ = the_pareto_post.plot( objective_x=0, objective_y=2, label_x='AIC', label_y='Number of parameters' ) plt.show() .. image-sg:: /auto_examples/swissmetro/images/sphx_glr_plot_b22process_pareto_002.png :alt: plot b22process pareto :srcset: /auto_examples/swissmetro/images/sphx_glr_plot_b22process_pareto_002.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 92-93 It is possible to plot two different objectives: BIC and number of parameters. .. GENERATED FROM PYTHON SOURCE LINES 93-98 .. code-block:: Python if can_plot: _ = the_pareto_post.plot( objective_x=1, objective_y=2, label_x='BIC', label_y='Number of parameters' ) plt.show() .. image-sg:: /auto_examples/swissmetro/images/sphx_glr_plot_b22process_pareto_003.png :alt: plot b22process pareto :srcset: /auto_examples/swissmetro/images/sphx_glr_plot_b22process_pareto_003.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 0.849 seconds) .. _sphx_glr_download_auto_examples_swissmetro_plot_b22process_pareto.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_b22process_pareto.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_b22process_pareto.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: plot_b22process_pareto.zip ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_