.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_examples/sampling/plot_b02nested.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_sampling_plot_b02nested.py: Nested logit ============ Estimation of a nested logit model using sampling of alternatives. :author: Michel Bierlaire :date: Wed Nov 1 18:00:15 2023 .. GENERATED FROM PYTHON SOURCE LINES 11-32 .. code-block:: default import pandas as pd from biogeme.sampling_of_alternatives import ( SamplingContext, ChoiceSetsGeneration, GenerateModel, generate_segment_size, ) from biogeme.expressions import Beta from biogeme.nests import OneNestForNestedLogit, NestsForNestedLogit import biogeme.biogeme_logging as blog import biogeme.biogeme as bio from specification import V, combined_variables from compare import compare from alternatives import ( alternatives, ID_COLUMN, partitions, asian, all_alternatives, ) .. GENERATED FROM PYTHON SOURCE LINES 33-35 .. code-block:: default logger = blog.get_screen_logger(level=blog.INFO) .. GENERATED FROM PYTHON SOURCE LINES 36-44 .. code-block:: default SAMPLE_SIZE = 20 # out of 100 SAMPLE_SIZE_MEV = 33 # out of 33 CHOICE_COLUMN = 'nested_0' PARTITION = 'downtown' MEV_PARTITION = 'uniform_asian' MODEL_NAME = f'nested_{PARTITION}_{SAMPLE_SIZE}' FILE_NAME = f'{MODEL_NAME}.dat' .. GENERATED FROM PYTHON SOURCE LINES 45-49 .. code-block:: default the_partition = partitions.get(PARTITION) if the_partition is None: raise ValueError(f'Unknown partition: {PARTITION}') .. GENERATED FROM PYTHON SOURCE LINES 50-52 .. code-block:: default segment_sizes = generate_segment_size(SAMPLE_SIZE, the_partition.number_of_segments()) .. GENERATED FROM PYTHON SOURCE LINES 53-54 We use all alternatives in the nest. .. GENERATED FROM PYTHON SOURCE LINES 54-59 .. code-block:: default mev_partition = partitions.get(MEV_PARTITION) if mev_partition is None: raise ValueError(f'Unknown partition: {MEV_PARTITION}') mev_segment_sizes = [SAMPLE_SIZE_MEV] .. GENERATED FROM PYTHON SOURCE LINES 60-62 .. code-block:: default observations = pd.read_csv('obs_choice.dat') .. GENERATED FROM PYTHON SOURCE LINES 63-77 .. code-block:: default context = SamplingContext( the_partition=the_partition, sample_sizes=segment_sizes, individuals=observations, choice_column=CHOICE_COLUMN, alternatives=alternatives, id_column=ID_COLUMN, biogeme_file_name=FILE_NAME, utility_function=V, combined_variables=combined_variables, mev_partition=mev_partition, mev_sample_sizes=mev_segment_sizes, ) .. GENERATED FROM PYTHON SOURCE LINES 78-80 .. code-block:: default logger.info(context.reporting()) .. rst-class:: sphx-glr-script-out .. code-block:: none Size of the choice set: 100 Main partition: 2 segment(s) of size 46, 54 Main sample: 20: 10/46, 10/54 Nbr of MEV alternatives: 33 MEV partition: 1 segment(s) of size 33 MEV sample: 33: 33/33 .. GENERATED FROM PYTHON SOURCE LINES 81-84 .. code-block:: default the_data_generation = ChoiceSetsGeneration(context=context) the_model_generation = GenerateModel(context=context) .. GENERATED FROM PYTHON SOURCE LINES 85-87 .. code-block:: default biogeme_database = the_data_generation.sample_and_merge(recycle=False) .. rst-class:: sphx-glr-script-out .. code-block:: none Generating 20 + 33 alternatives for 10000 observations 0%| | 0/10000 [00:00
Value Rob. Std err Rob. t-test Rob. p-value
beta_chinese 0.636120 0.072040 8.830092 0.0
beta_ethiopian 0.499967 0.040207 12.434724 0.0
beta_french 0.710729 0.049090 14.478023 0.0
beta_indian 0.926366 0.064207 14.427884 0.0
beta_japanese 1.197669 0.054417 22.009107 0.0
beta_korean 0.651077 0.061969 10.506438 0.0
beta_lebanese 0.726548 0.049740 14.606902 0.0
beta_log_dist -0.603541 0.013011 -46.388565 0.0
beta_mexican 1.199156 0.029119 41.181569 0.0
beta_price -0.403833 0.012157 -33.218725 0.0
beta_rating 0.768725 0.015337 50.123186 0.0
mu_asian 1.978174 0.057582 34.354012 0.0


.. GENERATED FROM PYTHON SOURCE LINES 121-123 .. code-block:: default df, msg = compare(estimated_parameters) .. GENERATED FROM PYTHON SOURCE LINES 124-126 .. code-block:: default print(df) .. rst-class:: sphx-glr-script-out .. code-block:: none Name True Value Estimated Value T-Test 0 beta_rating 0.75 0.768725 -1.220940 1 beta_price -0.40 -0.403833 0.315295 2 beta_chinese 0.75 0.636120 1.580784 3 beta_japanese 1.25 1.197669 0.961672 4 beta_korean 0.75 0.651077 1.596322 5 beta_indian 1.00 0.926366 1.146833 6 beta_french 0.75 0.710729 0.799967 7 beta_mexican 1.25 1.199156 1.746107 8 beta_lebanese 0.75 0.726548 0.471487 9 beta_ethiopian 0.50 0.499967 0.000816 10 beta_log_dist -0.60 -0.603541 0.272169 11 mu_asian 2.00 1.978174 0.379049 .. GENERATED FROM PYTHON SOURCE LINES 127-128 .. code-block:: default print(msg) .. rst-class:: sphx-glr-script-out .. code-block:: none Parameters not estimated: ['mu_downtown'] .. rst-class:: sphx-glr-timing **Total running time of the script:** (2 minutes 13.658 seconds) .. _sphx_glr_download_auto_examples_sampling_plot_b02nested.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_b02nested.py ` .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_b02nested.ipynb ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_