.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_examples/swissmetro/plot_b01logit_simul.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_b01logit_simul.py: Simulation of a logit model =========================== Example of simulation with a logit model :author: Michel Bierlaire, EPFL :date: Sun Apr 9 17:13:23 2023 .. GENERATED FROM PYTHON SOURCE LINES 13-18 .. code-block:: default import biogeme.biogeme as bio from biogeme import models from biogeme.expressions import Beta, Derive .. GENERATED FROM PYTHON SOURCE LINES 19-20 See the data processing script: :ref:`swissmetro_data`. .. GENERATED FROM PYTHON SOURCE LINES 20-36 .. code-block:: default from swissmetro_data import ( database, SM_AV, CAR_AV_SP, TRAIN_AV_SP, TRAIN_TT, TRAIN_TT_SCALED, TRAIN_COST_SCALED, SM_TT, SM_TT_SCALED, SM_COST_SCALED, CAR_TT, CAR_TT_SCALED, CAR_CO_SCALED, ) .. GENERATED FROM PYTHON SOURCE LINES 37-38 Parameters. .. GENERATED FROM PYTHON SOURCE LINES 38-44 .. code-block:: default ASC_CAR = Beta('ASC_CAR', 0, None, None, 0) ASC_TRAIN = Beta('ASC_TRAIN', 0, None, None, 0) ASC_SM = Beta('ASC_SM', 0, None, None, 1) B_TIME = Beta('B_TIME', 0, None, None, 0) B_COST = Beta('B_COST', 0, None, None, 0) .. GENERATED FROM PYTHON SOURCE LINES 45-46 Definition of the utility functions. .. GENERATED FROM PYTHON SOURCE LINES 46-50 .. code-block:: default V1 = ASC_TRAIN + B_TIME * TRAIN_TT_SCALED + B_COST * TRAIN_COST_SCALED V2 = ASC_SM + B_TIME * SM_TT_SCALED + B_COST * SM_COST_SCALED V3 = ASC_CAR + B_TIME * CAR_TT_SCALED + B_COST * CAR_CO_SCALED .. GENERATED FROM PYTHON SOURCE LINES 51-52 Associate utility functions with the numbering of alternatives. .. GENERATED FROM PYTHON SOURCE LINES 52-54 .. code-block:: default V = {1: V1, 2: V2, 3: V3} .. GENERATED FROM PYTHON SOURCE LINES 55-56 Associate the availability conditions with the alternatives. .. GENERATED FROM PYTHON SOURCE LINES 56-58 .. code-block:: default av = {1: TRAIN_AV_SP, 2: SM_AV, 3: CAR_AV_SP} .. GENERATED FROM PYTHON SOURCE LINES 59-61 Choice probability. .. GENERATED FROM PYTHON SOURCE LINES 61-65 .. code-block:: default prob1 = models.logit(V, av, 1) prob2 = models.logit(V, av, 2) prob3 = models.logit(V, av, 3) .. GENERATED FROM PYTHON SOURCE LINES 66-71 Elasticities. Elasticities can be computed. We illustrate below two formulas. Check in the output file that they produce the same result. .. GENERATED FROM PYTHON SOURCE LINES 73-76 First, the general definition of elasticities. This illustrates the use of the Derive expression, and can be used with any model, however complicated it is. Note the quotes in the Derive opertor. .. GENERATED FROM PYTHON SOURCE LINES 76-81 .. code-block:: default genelas1 = Derive(prob1, 'TRAIN_TT') * TRAIN_TT / prob1 genelas2 = Derive(prob2, 'SM_TT') * SM_TT / prob2 genelas3 = Derive(prob3, 'CAR_TT') * CAR_TT / prob3 .. GENERATED FROM PYTHON SOURCE LINES 82-84 Second, the elasticity of logit models. See Ben-Akiva and Lerman for the formula .. GENERATED FROM PYTHON SOURCE LINES 84-89 .. code-block:: default logitelas1 = TRAIN_AV_SP * (1.0 - prob1) * TRAIN_TT_SCALED * B_TIME logitelas2 = SM_AV * (1.0 - prob2) * SM_TT_SCALED * B_TIME logitelas3 = CAR_AV_SP * (1.0 - prob3) * CAR_TT_SCALED * B_TIME .. GENERATED FROM PYTHON SOURCE LINES 90-92 Quantities to be simulated. .. GENERATED FROM PYTHON SOURCE LINES 92-105 .. code-block:: default simulate = { 'Prob. train': prob1, 'Prob. Swissmetro': prob2, 'Prob. car': prob3, 'logit elas. 1': logitelas1, 'generic elas. 1': genelas1, 'logit elas. 2': logitelas2, 'generic elas. 2': genelas2, 'logit elas. 3': logitelas3, 'generic elas. 3': genelas3, } .. GENERATED FROM PYTHON SOURCE LINES 106-110 Create the Biogeme object. As we simulate the probability for all aternatives, even when one of them is not available, Biogeme may trigger some warnings. .. GENERATED FROM PYTHON SOURCE LINES 110-113 .. code-block:: default biosim = bio.BIOGEME(database, simulate) biosim.modelName = 'b01logit_simul' .. GENERATED FROM PYTHON SOURCE LINES 114-115 Values of the parameters. .. GENERATED FROM PYTHON SOURCE LINES 115-123 .. code-block:: default betas = { 'ASC_TRAIN': -0.701188, 'B_TIME': -1.27786, 'B_COST': -1.08379, 'ASC_CAR': -0.154633, } .. GENERATED FROM PYTHON SOURCE LINES 124-126 Simulation .. GENERATED FROM PYTHON SOURCE LINES 126-128 .. code-block:: default results = biosim.simulate(theBetaValues=betas) results.describe() .. raw:: html
Prob. train Prob. Swissmetro Prob. car logit elas. 1 generic elas. 1 logit elas. 2 generic elas. 2 logit elas. 3 generic elas. 3
count 6768.000000 6768.000000 6768.000000 6768.000000 6768.0 6768.000000 6768.0 6768.000000 6768.0
mean 0.134161 0.604315 0.261525 -1.872612 0.0 -0.447850 0.0 -1.136701 0.0
std 0.060525 0.182309 0.203746 0.886439 0.0 0.498262 0.0 1.074337 0.0
min 0.000010 0.000281 0.000000 -13.059604 0.0 -10.168912 0.0 -19.934616 0.0
25% 0.093416 0.487012 0.095533 -2.377303 0.0 -0.553065 0.0 -1.624370 0.0
50% 0.128314 0.611886 0.247461 -1.769928 0.0 -0.334896 0.0 -0.949290 0.0
75% 0.166545 0.753873 0.384113 -1.196807 0.0 -0.203747 0.0 -0.462240 0.0
max 0.642731 0.971398 0.999710 -0.232835 0.0 -0.024123 0.0 0.000000 0.0


.. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 2.601 seconds) .. _sphx_glr_download_auto_examples_swissmetro_plot_b01logit_simul.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_b01logit_simul.py ` .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_b01logit_simul.ipynb ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_