9. Nested logit model

Bayesian estimation of a nested logit model.

Michel Bierlaire, EPFL Mon Nov 03 2025, 20:02:56

from IPython.core.display_functions import display

from biogeme import biogeme_logging as blog
from biogeme.bayesian_estimation import BayesianResults, get_pandas_estimated_parameters
from biogeme.biogeme import BIOGEME
from biogeme.expressions import Beta
from biogeme.models import lognested
from biogeme.nests import NestsForNestedLogit, OneNestForNestedLogit

See the data processing script: Data preparation for Swissmetro.

from swissmetro_data import (
    CAR_AV_SP,
    CAR_CO_SCALED,
    CAR_TT_SCALED,
    CHOICE,
    SM_AV,
    SM_COST_SCALED,
    SM_TT_SCALED,
    TRAIN_AV_SP,
    TRAIN_COST_SCALED,
    TRAIN_TT_SCALED,
    database,
)

logger = blog.get_screen_logger(level=blog.INFO)
logger.info('Example b09_nested')
Example b09_nested

Parameters to be estimated.

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, 0, 0)
b_cost = Beta('b_cost', 0, None, 0, 0)
nest_parameter = Beta('nest_parameter', 1, 1, 3, 0)

Definition of the utility functions.

v_train = asc_train + b_time * TRAIN_TT_SCALED + b_cost * TRAIN_COST_SCALED
v_swissmetro = asc_sm + b_time * SM_TT_SCALED + b_cost * SM_COST_SCALED
v_car = asc_car + b_time * CAR_TT_SCALED + b_cost * CAR_CO_SCALED

Associate utility functions with the numbering of alternatives.

v = {1: v_train, 2: v_swissmetro, 3: v_car}

Associate the availability conditions with the alternatives.

av = {1: TRAIN_AV_SP, 2: SM_AV, 3: CAR_AV_SP}

Definition of nests. Only the non-trivial nests must be defined. A trivial nest is a nest containing exactly one alternative. In this example, we create a nest for the existing modes, that is train (1) and car (3).

existing = OneNestForNestedLogit(
    nest_param=nest_parameter, list_of_alternatives=[1, 3], name='existing'
)

nests = NestsForNestedLogit(choice_set=list(v), tuple_of_nests=(existing,))
The following elements do not appear in any nest and are assumed each to be alone in a separate nest: {2}. If it is not the intention, check the assignment of alternatives to nests.

Definition of the model. This is the contribution of each observation to the log likelihood function. The choice model is a nested logit, with availability conditions.

log_probability = lognested(v, av, nests, CHOICE)

Create the Biogeme object.

the_biogeme = BIOGEME(
    database,
    log_probability,
)
the_biogeme.model_name = 'b09_nested'
Biogeme parameters read from biogeme.toml.

Estimate the parameters.

try:
    results = BayesianResults.from_netcdf(
        filename=f'saved_results/{the_biogeme.model_name}.nc'
    )
except FileNotFoundError:
    results = the_biogeme.bayesian_estimation()
*** Initial values of the parameters are obtained from the file __b09_nested.iter
Cannot read file __b09_nested.iter. Statement is ignored.
Starting values for the algorithm: {}
/Users/bierlair/MyFiles/github/biogeme/src/biogeme/biogeme.py:832: UserWarning: Note: JAX currently sees 1 CPU device. To parallelize across CPU devices, set XLA_FLAGS as above and restart Python/Jupyter.
macOS / Linux (bash/zsh):
  export XLA_FLAGS="--xla_force_host_platform_device_count=<number_of_cores>"

Jupyter (new cell, before `import jax`):
  %env XLA_FLAGS="--xla_force_host_platform_device_count=<number_of_cores>"

  warning_cpu_devices()
Detected CPU devices: 1 | System logical cores: 12
Current XLA_FLAGS: --xla_force_host_platform_device_count=100
Platform: Darwin 24.6.0 | Python: 3.13.1

Auto sampling: JAX available (devices=1, platforms=cpu) → numpyro/vectorized
/Users/bierlair/MyFiles/github/biogeme/src/biogeme/biogeme.py:859: UserWarning: The effect of Potentials on other parameters is ignored during prior predictive sampling. This is likely to lead to invalid or biased predictive samples.
  pm.sample_prior_predictive(

  0%|          | 0/4000 [00:00<?, ?it/s]
warmup:   0%|          | 1/4000 [00:01<1:28:18,  1.32s/it]
warmup:   0%|          | 10/4000 [00:01<07:04,  9.40it/s]
warmup:   0%|          | 16/4000 [00:01<05:30, 12.07it/s]
warmup:   1%|          | 21/4000 [00:01<04:19, 15.36it/s]
warmup:   1%|          | 25/4000 [00:02<03:52, 17.07it/s]
warmup:   1%|          | 30/4000 [00:02<03:03, 21.67it/s]
warmup:   1%|          | 34/4000 [00:02<02:42, 24.40it/s]
warmup:   1%|          | 39/4000 [00:02<02:22, 27.72it/s]
warmup:   1%|          | 43/4000 [00:02<02:44, 24.06it/s]
warmup:   1%|          | 48/4000 [00:02<02:21, 27.92it/s]
warmup:   1%|▏         | 53/4000 [00:02<02:10, 30.32it/s]
warmup:   1%|▏         | 57/4000 [00:03<02:17, 28.66it/s]
warmup:   2%|▏         | 61/4000 [00:03<02:36, 25.13it/s]
warmup:   2%|▏         | 64/4000 [00:03<02:38, 24.79it/s]
warmup:   2%|▏         | 68/4000 [00:03<02:26, 26.78it/s]
warmup:   2%|▏         | 71/4000 [00:03<02:26, 26.79it/s]
warmup:   2%|▏         | 75/4000 [00:03<02:16, 28.78it/s]
warmup:   2%|▏         | 78/4000 [00:03<02:16, 28.77it/s]
warmup:   2%|▏         | 82/4000 [00:03<02:04, 31.40it/s]
warmup:   2%|▏         | 87/4000 [00:04<01:56, 33.71it/s]
warmup:   2%|▏         | 91/4000 [00:04<01:53, 34.38it/s]
warmup:   2%|▏         | 95/4000 [00:04<01:51, 34.92it/s]
warmup:   2%|▎         | 100/4000 [00:04<01:54, 34.21it/s]
warmup:   3%|▎         | 104/4000 [00:05<03:49, 17.00it/s]
warmup:   3%|▎         | 109/4000 [00:05<03:04, 21.12it/s]
warmup:   3%|▎         | 114/4000 [00:05<02:32, 25.55it/s]
warmup:   3%|▎         | 118/4000 [00:05<02:34, 25.11it/s]
warmup:   3%|▎         | 123/4000 [00:05<02:11, 29.41it/s]
warmup:   3%|▎         | 127/4000 [00:05<02:08, 30.10it/s]
warmup:   3%|▎         | 133/4000 [00:05<01:45, 36.58it/s]
warmup:   3%|▎         | 138/4000 [00:05<01:39, 38.81it/s]
warmup:   4%|▎         | 143/4000 [00:05<01:33, 41.37it/s]
warmup:   4%|▎         | 148/4000 [00:06<01:30, 42.54it/s]
warmup:   4%|▍         | 156/4000 [00:06<01:13, 51.99it/s]
warmup:   4%|▍         | 162/4000 [00:06<01:18, 49.18it/s]
warmup:   4%|▍         | 168/4000 [00:06<01:20, 47.33it/s]
warmup:   4%|▍         | 175/4000 [00:06<01:13, 52.04it/s]
warmup:   5%|▍         | 181/4000 [00:06<01:24, 44.95it/s]
warmup:   5%|▍         | 188/4000 [00:06<01:17, 48.94it/s]
warmup:   5%|▍         | 194/4000 [00:07<01:19, 48.03it/s]
warmup:   5%|▌         | 200/4000 [00:07<01:16, 49.71it/s]
warmup:   5%|▌         | 206/4000 [00:07<01:12, 51.98it/s]
warmup:   5%|▌         | 213/4000 [00:07<01:10, 53.45it/s]
warmup:   5%|▌         | 219/4000 [00:07<01:14, 50.96it/s]
warmup:   6%|▌         | 226/4000 [00:07<01:07, 55.67it/s]
warmup:   6%|▌         | 233/4000 [00:07<01:03, 59.09it/s]
warmup:   6%|▌         | 240/4000 [00:07<01:00, 61.69it/s]
warmup:   6%|▌         | 247/4000 [00:07<01:04, 57.87it/s]
warmup:   6%|▋         | 256/4000 [00:08<00:56, 66.22it/s]
warmup:   7%|▋         | 263/4000 [00:08<01:18, 47.67it/s]
warmup:   7%|▋         | 269/4000 [00:08<01:15, 49.28it/s]
warmup:   7%|▋         | 275/4000 [00:08<01:19, 46.83it/s]
warmup:   7%|▋         | 282/4000 [00:08<01:13, 50.90it/s]
warmup:   7%|▋         | 289/4000 [00:08<01:10, 52.70it/s]
warmup:   7%|▋         | 295/4000 [00:08<01:09, 53.28it/s]
warmup:   8%|▊         | 302/4000 [00:08<01:05, 56.23it/s]
warmup:   8%|▊         | 310/4000 [00:09<01:00, 61.13it/s]
warmup:   8%|▊         | 318/4000 [00:09<00:56, 64.62it/s]
warmup:   8%|▊         | 326/4000 [00:09<00:54, 67.18it/s]
warmup:   8%|▊         | 334/4000 [00:09<00:53, 69.09it/s]
warmup:   9%|▊         | 342/4000 [00:09<00:50, 71.92it/s]
warmup:   9%|▉         | 350/4000 [00:09<00:51, 71.19it/s]
warmup:   9%|▉         | 358/4000 [00:09<00:52, 69.52it/s]
warmup:   9%|▉         | 365/4000 [00:09<00:55, 65.40it/s]
warmup:   9%|▉         | 372/4000 [00:09<00:55, 65.09it/s]
warmup:  10%|▉         | 381/4000 [00:10<00:51, 70.67it/s]
warmup:  10%|▉         | 389/4000 [00:10<00:56, 64.30it/s]
warmup:  10%|▉         | 397/4000 [00:10<00:53, 67.83it/s]
warmup:  10%|█         | 406/4000 [00:10<00:49, 72.13it/s]
warmup:  10%|█         | 414/4000 [00:10<00:50, 70.62it/s]
warmup:  11%|█         | 424/4000 [00:10<00:45, 77.84it/s]
warmup:  11%|█         | 433/4000 [00:10<00:45, 78.74it/s]
warmup:  11%|█         | 441/4000 [00:10<00:45, 78.95it/s]
warmup:  11%|█▏        | 450/4000 [00:10<00:44, 79.08it/s]
warmup:  11%|█▏        | 458/4000 [00:11<01:16, 46.24it/s]
warmup:  12%|█▏        | 465/4000 [00:11<01:21, 43.62it/s]
warmup:  12%|█▏        | 473/4000 [00:11<01:10, 50.30it/s]
warmup:  12%|█▏        | 480/4000 [00:11<01:19, 44.48it/s]
warmup:  12%|█▏        | 488/4000 [00:11<01:08, 51.43it/s]
warmup:  12%|█▏        | 497/4000 [00:12<01:04, 54.32it/s]
warmup:  13%|█▎        | 504/4000 [00:12<01:00, 57.39it/s]
warmup:  13%|█▎        | 511/4000 [00:12<01:03, 54.77it/s]
warmup:  13%|█▎        | 519/4000 [00:12<01:00, 57.92it/s]
warmup:  13%|█▎        | 528/4000 [00:12<00:53, 64.43it/s]
warmup:  13%|█▎        | 536/4000 [00:12<00:51, 67.19it/s]
warmup:  14%|█▎        | 543/4000 [00:12<00:52, 66.20it/s]
warmup:  14%|█▍        | 550/4000 [00:12<00:52, 65.85it/s]
warmup:  14%|█▍        | 557/4000 [00:12<00:52, 65.63it/s]
warmup:  14%|█▍        | 564/4000 [00:13<00:56, 60.57it/s]
warmup:  14%|█▍        | 573/4000 [00:13<00:50, 68.24it/s]
warmup:  15%|█▍        | 581/4000 [00:13<00:48, 69.87it/s]
warmup:  15%|█▍        | 589/4000 [00:13<00:49, 68.40it/s]
warmup:  15%|█▍        | 596/4000 [00:13<00:50, 67.43it/s]
warmup:  15%|█▌        | 603/4000 [00:13<00:51, 66.48it/s]
warmup:  15%|█▌        | 611/4000 [00:13<00:48, 69.99it/s]
warmup:  15%|█▌        | 619/4000 [00:13<00:48, 69.87it/s]
warmup:  16%|█▌        | 628/4000 [00:14<00:46, 72.94it/s]
warmup:  16%|█▌        | 637/4000 [00:14<00:43, 76.47it/s]
warmup:  16%|█▌        | 645/4000 [00:14<00:46, 72.71it/s]
warmup:  16%|█▋        | 653/4000 [00:14<00:47, 70.68it/s]
warmup:  17%|█▋        | 661/4000 [00:14<00:47, 70.30it/s]
warmup:  17%|█▋        | 669/4000 [00:14<00:45, 72.63it/s]
warmup:  17%|█▋        | 678/4000 [00:14<00:44, 74.72it/s]
warmup:  17%|█▋        | 686/4000 [00:14<00:45, 72.91it/s]
warmup:  17%|█▋        | 695/4000 [00:14<00:43, 76.01it/s]
warmup:  18%|█▊        | 705/4000 [00:15<00:40, 81.08it/s]
warmup:  18%|█▊        | 714/4000 [00:15<00:41, 78.57it/s]
warmup:  18%|█▊        | 722/4000 [00:15<00:44, 74.13it/s]
warmup:  18%|█▊        | 730/4000 [00:15<00:44, 74.08it/s]
warmup:  18%|█▊        | 738/4000 [00:15<00:44, 73.47it/s]
warmup:  19%|█▊        | 746/4000 [00:15<00:44, 72.79it/s]
warmup:  19%|█▉        | 754/4000 [00:15<00:43, 74.64it/s]
warmup:  19%|█▉        | 762/4000 [00:15<00:42, 75.92it/s]
warmup:  19%|█▉        | 771/4000 [00:15<00:41, 78.12it/s]
warmup:  19%|█▉        | 779/4000 [00:16<00:41, 77.11it/s]
warmup:  20%|█▉        | 787/4000 [00:16<00:43, 74.55it/s]
warmup:  20%|█▉        | 795/4000 [00:16<00:43, 74.19it/s]
warmup:  20%|██        | 803/4000 [00:16<00:43, 73.96it/s]
warmup:  20%|██        | 811/4000 [00:16<00:46, 68.56it/s]
warmup:  20%|██        | 819/4000 [00:16<00:45, 70.03it/s]
warmup:  21%|██        | 827/4000 [00:16<00:49, 63.79it/s]
warmup:  21%|██        | 834/4000 [00:16<00:49, 63.82it/s]
warmup:  21%|██        | 842/4000 [00:16<00:46, 67.66it/s]
warmup:  21%|██▏       | 850/4000 [00:17<00:44, 70.85it/s]
warmup:  21%|██▏       | 858/4000 [00:17<00:45, 69.72it/s]
warmup:  22%|██▏       | 866/4000 [00:17<00:53, 58.78it/s]
warmup:  22%|██▏       | 873/4000 [00:17<00:52, 60.03it/s]
warmup:  22%|██▏       | 880/4000 [00:17<01:01, 50.58it/s]
warmup:  22%|██▏       | 886/4000 [00:17<00:59, 52.55it/s]
warmup:  22%|██▏       | 892/4000 [00:17<01:00, 51.32it/s]
warmup:  23%|██▎       | 901/4000 [00:17<00:51, 60.66it/s]
warmup:  23%|██▎       | 908/4000 [00:18<00:49, 62.77it/s]
warmup:  23%|██▎       | 917/4000 [00:18<00:46, 66.05it/s]
warmup:  23%|██▎       | 924/4000 [00:18<00:47, 64.23it/s]
warmup:  23%|██▎       | 932/4000 [00:18<00:44, 68.22it/s]
warmup:  23%|██▎       | 939/4000 [00:18<00:45, 67.04it/s]
warmup:  24%|██▎       | 947/4000 [00:18<00:44, 68.81it/s]
warmup:  24%|██▍       | 955/4000 [00:18<00:43, 70.48it/s]
warmup:  24%|██▍       | 963/4000 [00:18<00:43, 70.14it/s]
warmup:  24%|██▍       | 972/4000 [00:18<00:40, 73.93it/s]
warmup:  24%|██▍       | 980/4000 [00:19<00:40, 75.27it/s]
warmup:  25%|██▍       | 988/4000 [00:19<00:41, 71.76it/s]
warmup:  25%|██▍       | 997/4000 [00:19<00:40, 75.00it/s]
warmup:  25%|██▌       | 1006/4000 [00:19<00:38, 77.48it/s]
warmup:  25%|██▌       | 1014/4000 [00:19<00:39, 76.41it/s]
warmup:  26%|██▌       | 1023/4000 [00:19<00:37, 79.85it/s]
warmup:  26%|██▌       | 1032/4000 [00:19<00:41, 71.69it/s]
warmup:  26%|██▌       | 1040/4000 [00:19<00:40, 72.78it/s]
warmup:  26%|██▌       | 1048/4000 [00:20<00:41, 71.16it/s]
warmup:  26%|██▋       | 1058/4000 [00:20<00:38, 76.44it/s]
warmup:  27%|██▋       | 1066/4000 [00:20<00:39, 73.45it/s]
warmup:  27%|██▋       | 1074/4000 [00:20<00:42, 69.06it/s]
warmup:  27%|██▋       | 1083/4000 [00:20<00:39, 74.31it/s]
warmup:  27%|██▋       | 1091/4000 [00:20<00:40, 72.71it/s]
warmup:  27%|██▋       | 1099/4000 [00:20<00:40, 71.46it/s]
warmup:  28%|██▊       | 1107/4000 [00:20<00:39, 73.44it/s]
warmup:  28%|██▊       | 1115/4000 [00:20<00:38, 74.82it/s]
warmup:  28%|██▊       | 1124/4000 [00:21<00:37, 77.40it/s]
warmup:  28%|██▊       | 1132/4000 [00:21<00:37, 77.30it/s]
warmup:  29%|██▊       | 1141/4000 [00:21<00:35, 80.63it/s]
warmup:  29%|██▉       | 1150/4000 [00:21<00:35, 79.62it/s]
warmup:  29%|██▉       | 1158/4000 [00:21<00:37, 76.17it/s]
warmup:  29%|██▉       | 1166/4000 [00:21<00:37, 75.32it/s]
warmup:  29%|██▉       | 1174/4000 [00:21<00:37, 74.70it/s]
warmup:  30%|██▉       | 1182/4000 [00:21<00:37, 75.92it/s]
warmup:  30%|██▉       | 1191/4000 [00:21<00:35, 78.04it/s]
warmup:  30%|██▉       | 1199/4000 [00:22<00:36, 76.80it/s]
warmup:  30%|███       | 1207/4000 [00:22<00:36, 75.77it/s]
warmup:  30%|███       | 1215/4000 [00:22<00:37, 75.16it/s]
warmup:  31%|███       | 1223/4000 [00:22<00:37, 74.57it/s]
warmup:  31%|███       | 1231/4000 [00:22<00:36, 75.77it/s]
warmup:  31%|███       | 1239/4000 [00:22<00:36, 75.17it/s]
warmup:  31%|███       | 1248/4000 [00:22<00:34, 79.16it/s]
warmup:  31%|███▏      | 1258/4000 [00:22<00:32, 85.14it/s]
warmup:  32%|███▏      | 1267/4000 [00:22<00:34, 79.72it/s]
warmup:  32%|███▏      | 1276/4000 [00:22<00:33, 82.28it/s]
warmup:  32%|███▏      | 1285/4000 [00:23<00:34, 79.50it/s]
warmup:  32%|███▏      | 1294/4000 [00:23<00:34, 77.61it/s]
warmup:  33%|███▎      | 1302/4000 [00:23<00:35, 74.95it/s]
warmup:  33%|███▎      | 1310/4000 [00:23<00:36, 74.64it/s]
warmup:  33%|███▎      | 1318/4000 [00:23<00:36, 74.42it/s]
warmup:  33%|███▎      | 1327/4000 [00:23<00:34, 78.31it/s]
warmup:  33%|███▎      | 1335/4000 [00:23<00:34, 76.91it/s]
warmup:  34%|███▎      | 1343/4000 [00:23<00:34, 77.34it/s]
warmup:  34%|███▍      | 1351/4000 [00:23<00:34, 77.77it/s]
warmup:  34%|███▍      | 1360/4000 [00:24<00:32, 81.05it/s]
warmup:  34%|███▍      | 1369/4000 [00:24<00:34, 77.26it/s]
warmup:  34%|███▍      | 1377/4000 [00:24<00:35, 74.64it/s]
warmup:  35%|███▍      | 1386/4000 [00:24<00:33, 77.21it/s]
warmup:  35%|███▍      | 1394/4000 [00:24<00:34, 76.22it/s]
warmup:  35%|███▌      | 1403/4000 [00:24<00:33, 78.22it/s]
warmup:  35%|███▌      | 1411/4000 [00:24<00:33, 78.37it/s]
warmup:  36%|███▌      | 1420/4000 [00:24<00:32, 79.68it/s]
warmup:  36%|███▌      | 1428/4000 [00:24<00:32, 79.45it/s]
warmup:  36%|███▌      | 1436/4000 [00:25<00:32, 77.75it/s]
warmup:  36%|███▌      | 1444/4000 [00:25<00:32, 78.00it/s]
warmup:  36%|███▋      | 1452/4000 [00:25<00:32, 78.25it/s]
warmup:  36%|███▋      | 1460/4000 [00:25<00:33, 76.69it/s]
warmup:  37%|███▋      | 1469/4000 [00:25<00:31, 80.34it/s]
warmup:  37%|███▋      | 1478/4000 [00:25<00:32, 76.63it/s]
warmup:  37%|███▋      | 1486/4000 [00:25<00:33, 75.75it/s]
warmup:  37%|███▋      | 1494/4000 [00:25<00:33, 74.99it/s]
warmup:  38%|███▊      | 1503/4000 [00:25<00:31, 78.19it/s]
warmup:  38%|███▊      | 1511/4000 [00:26<00:32, 76.81it/s]
warmup:  38%|███▊      | 1519/4000 [00:26<00:31, 77.62it/s]
warmup:  38%|███▊      | 1529/4000 [00:26<00:29, 84.03it/s]
warmup:  38%|███▊      | 1538/4000 [00:26<00:30, 80.50it/s]
warmup:  39%|███▊      | 1547/4000 [00:26<00:31, 78.32it/s]
warmup:  39%|███▉      | 1556/4000 [00:26<00:30, 79.76it/s]
warmup:  39%|███▉      | 1565/4000 [00:26<00:30, 79.34it/s]
warmup:  39%|███▉      | 1573/4000 [00:26<00:30, 79.22it/s]
warmup:  40%|███▉      | 1581/4000 [00:26<00:30, 78.98it/s]
warmup:  40%|███▉      | 1589/4000 [00:27<00:30, 78.86it/s]
warmup:  40%|███▉      | 1597/4000 [00:27<00:32, 73.01it/s]
warmup:  40%|████      | 1606/4000 [00:27<00:31, 76.74it/s]
warmup:  40%|████      | 1614/4000 [00:27<00:30, 77.22it/s]
warmup:  41%|████      | 1622/4000 [00:27<00:31, 76.07it/s]
warmup:  41%|████      | 1630/4000 [00:27<00:31, 75.38it/s]
warmup:  41%|████      | 1638/4000 [00:27<00:32, 73.27it/s]
warmup:  41%|████      | 1646/4000 [00:27<00:32, 72.05it/s]
warmup:  41%|████▏     | 1654/4000 [00:27<00:32, 73.07it/s]
warmup:  42%|████▏     | 1662/4000 [00:28<00:33, 70.51it/s]
warmup:  42%|████▏     | 1670/4000 [00:28<00:32, 72.79it/s]
warmup:  42%|████▏     | 1678/4000 [00:28<00:32, 71.52it/s]
warmup:  42%|████▏     | 1687/4000 [00:28<00:30, 76.24it/s]
warmup:  42%|████▏     | 1695/4000 [00:28<00:31, 72.50it/s]
warmup:  43%|████▎     | 1703/4000 [00:28<00:31, 72.84it/s]
warmup:  43%|████▎     | 1711/4000 [00:28<00:30, 74.73it/s]
warmup:  43%|████▎     | 1719/4000 [00:28<00:29, 76.08it/s]
warmup:  43%|████▎     | 1727/4000 [00:28<00:29, 76.84it/s]
warmup:  43%|████▎     | 1735/4000 [00:28<00:29, 77.45it/s]
warmup:  44%|████▎     | 1743/4000 [00:29<00:28, 77.87it/s]
warmup:  44%|████▍     | 1751/4000 [00:29<00:28, 77.85it/s]
warmup:  44%|████▍     | 1760/4000 [00:29<00:28, 79.43it/s]
warmup:  44%|████▍     | 1768/4000 [00:29<00:28, 77.49it/s]
warmup:  44%|████▍     | 1776/4000 [00:29<00:29, 74.95it/s]
warmup:  45%|████▍     | 1784/4000 [00:29<00:31, 69.67it/s]
warmup:  45%|████▍     | 1793/4000 [00:29<00:29, 74.45it/s]
warmup:  45%|████▌     | 1801/4000 [00:29<00:29, 75.27it/s]
warmup:  45%|████▌     | 1810/4000 [00:29<00:28, 77.19it/s]
warmup:  45%|████▌     | 1818/4000 [00:30<00:28, 75.54it/s]
warmup:  46%|████▌     | 1827/4000 [00:30<00:28, 76.96it/s]
warmup:  46%|████▌     | 1837/4000 [00:30<00:26, 81.32it/s]
warmup:  46%|████▌     | 1846/4000 [00:30<00:25, 82.95it/s]
warmup:  46%|████▋     | 1855/4000 [00:30<00:25, 82.63it/s]
warmup:  47%|████▋     | 1864/4000 [00:30<00:25, 82.39it/s]
warmup:  47%|████▋     | 1873/4000 [00:30<00:25, 83.81it/s]
warmup:  47%|████▋     | 1882/4000 [00:30<00:25, 83.13it/s]
warmup:  47%|████▋     | 1891/4000 [00:30<00:25, 81.27it/s]
warmup:  48%|████▊     | 1900/4000 [00:31<00:26, 78.31it/s]
warmup:  48%|████▊     | 1908/4000 [00:31<00:27, 76.96it/s]
warmup:  48%|████▊     | 1916/4000 [00:31<00:26, 77.28it/s]
warmup:  48%|████▊     | 1924/4000 [00:31<00:26, 77.73it/s]
warmup:  48%|████▊     | 1932/4000 [00:31<00:27, 76.48it/s]
warmup:  48%|████▊     | 1940/4000 [00:31<00:26, 77.11it/s]
warmup:  49%|████▊     | 1948/4000 [00:31<00:27, 74.62it/s]
warmup:  49%|████▉     | 1956/4000 [00:31<00:35, 58.06it/s]
warmup:  49%|████▉     | 1963/4000 [00:32<00:37, 53.64it/s]
warmup:  49%|████▉     | 1969/4000 [00:32<00:40, 50.75it/s]
warmup:  49%|████▉     | 1975/4000 [00:32<00:40, 49.44it/s]
warmup:  50%|████▉     | 1981/4000 [00:32<00:42, 47.66it/s]
warmup:  50%|████▉     | 1989/4000 [00:32<00:37, 53.33it/s]
warmup:  50%|████▉     | 1996/4000 [00:32<00:35, 56.15it/s]
sample:  50%|█████     | 2004/4000 [00:32<00:32, 60.75it/s]
sample:  50%|█████     | 2012/4000 [00:32<00:30, 64.29it/s]
sample:  50%|█████     | 2020/4000 [00:33<00:29, 66.94it/s]
sample:  51%|█████     | 2028/4000 [00:33<00:28, 70.13it/s]
sample:  51%|█████     | 2036/4000 [00:33<00:28, 68.44it/s]
sample:  51%|█████     | 2044/4000 [00:33<00:27, 71.16it/s]
sample:  51%|█████▏    | 2053/4000 [00:33<00:26, 74.73it/s]
sample:  52%|█████▏    | 2061/4000 [00:33<00:26, 74.51it/s]
sample:  52%|█████▏    | 2069/4000 [00:33<00:25, 75.64it/s]
sample:  52%|█████▏    | 2077/4000 [00:33<00:26, 72.23it/s]
sample:  52%|█████▏    | 2085/4000 [00:33<00:26, 72.58it/s]
sample:  52%|█████▏    | 2093/4000 [00:34<00:25, 74.38it/s]
sample:  53%|█████▎    | 2101/4000 [00:34<00:25, 75.62it/s]
sample:  53%|█████▎    | 2109/4000 [00:34<00:24, 76.61it/s]
sample:  53%|█████▎    | 2117/4000 [00:34<00:25, 72.59it/s]
sample:  53%|█████▎    | 2125/4000 [00:34<00:25, 72.75it/s]
sample:  53%|█████▎    | 2133/4000 [00:34<00:25, 73.05it/s]
sample:  54%|█████▎    | 2141/4000 [00:34<00:26, 69.13it/s]
sample:  54%|█████▎    | 2149/4000 [00:34<00:25, 71.84it/s]
sample:  54%|█████▍    | 2157/4000 [00:34<00:24, 73.83it/s]
sample:  54%|█████▍    | 2165/4000 [00:34<00:24, 73.73it/s]
sample:  54%|█████▍    | 2173/4000 [00:35<00:24, 73.72it/s]
sample:  55%|█████▍    | 2181/4000 [00:35<00:24, 75.21it/s]
sample:  55%|█████▍    | 2189/4000 [00:35<00:23, 76.12it/s]
sample:  55%|█████▍    | 2197/4000 [00:35<00:23, 75.24it/s]
sample:  55%|█████▌    | 2205/4000 [00:35<00:23, 76.27it/s]
sample:  55%|█████▌    | 2213/4000 [00:35<00:23, 77.04it/s]
sample:  56%|█████▌    | 2221/4000 [00:35<00:23, 75.97it/s]
sample:  56%|█████▌    | 2229/4000 [00:35<00:23, 76.54it/s]
sample:  56%|█████▌    | 2237/4000 [00:35<00:23, 75.77it/s]
sample:  56%|█████▌    | 2245/4000 [00:36<00:23, 75.21it/s]
sample:  56%|█████▋    | 2253/4000 [00:36<00:23, 74.64it/s]
sample:  57%|█████▋    | 2261/4000 [00:36<00:23, 74.44it/s]
sample:  57%|█████▋    | 2269/4000 [00:36<00:22, 75.59it/s]
sample:  57%|█████▋    | 2277/4000 [00:36<00:22, 74.93it/s]
sample:  57%|█████▋    | 2285/4000 [00:36<00:23, 74.49it/s]
sample:  57%|█████▋    | 2293/4000 [00:36<00:23, 74.19it/s]
sample:  58%|█████▊    | 2301/4000 [00:36<00:22, 73.99it/s]
sample:  58%|█████▊    | 2309/4000 [00:36<00:23, 71.04it/s]
sample:  58%|█████▊    | 2317/4000 [00:37<00:23, 73.12it/s]
sample:  58%|█████▊    | 2325/4000 [00:37<00:23, 71.76it/s]
sample:  58%|█████▊    | 2333/4000 [00:37<00:23, 72.30it/s]
sample:  59%|█████▊    | 2341/4000 [00:37<00:22, 72.58it/s]
sample:  59%|█████▊    | 2349/4000 [00:37<00:22, 72.84it/s]
sample:  59%|█████▉    | 2357/4000 [00:37<00:23, 70.35it/s]
sample:  59%|█████▉    | 2366/4000 [00:37<00:22, 71.28it/s]
sample:  59%|█████▉    | 2374/4000 [00:37<00:22, 71.70it/s]
sample:  60%|█████▉    | 2382/4000 [00:37<00:22, 72.16it/s]
sample:  60%|█████▉    | 2390/4000 [00:38<00:22, 72.63it/s]
sample:  60%|█████▉    | 2398/4000 [00:38<00:21, 74.34it/s]
sample:  60%|██████    | 2407/4000 [00:38<00:20, 76.92it/s]
sample:  60%|██████    | 2415/4000 [00:38<00:20, 76.17it/s]
sample:  61%|██████    | 2423/4000 [00:38<00:21, 75.09it/s]
sample:  61%|██████    | 2431/4000 [00:38<00:20, 75.73it/s]
sample:  61%|██████    | 2439/4000 [00:38<00:20, 75.84it/s]
sample:  61%|██████    | 2447/4000 [00:38<00:20, 75.05it/s]
sample:  61%|██████▏   | 2455/4000 [00:38<00:20, 75.93it/s]
sample:  62%|██████▏   | 2463/4000 [00:38<00:20, 76.79it/s]
sample:  62%|██████▏   | 2471/4000 [00:39<00:20, 75.68it/s]
sample:  62%|██████▏   | 2480/4000 [00:39<00:19, 77.88it/s]
sample:  62%|██████▏   | 2488/4000 [00:39<00:19, 76.45it/s]
sample:  62%|██████▏   | 2496/4000 [00:39<00:19, 77.03it/s]
sample:  63%|██████▎   | 2504/4000 [00:39<00:19, 77.55it/s]
sample:  63%|██████▎   | 2512/4000 [00:39<00:19, 76.17it/s]
sample:  63%|██████▎   | 2520/4000 [00:39<00:19, 75.34it/s]
sample:  63%|██████▎   | 2528/4000 [00:39<00:19, 74.64it/s]
sample:  63%|██████▎   | 2536/4000 [00:39<00:19, 74.26it/s]
sample:  64%|██████▎   | 2544/4000 [00:40<00:19, 74.11it/s]
sample:  64%|██████▍   | 2552/4000 [00:40<00:19, 73.77it/s]
sample:  64%|██████▍   | 2560/4000 [00:40<00:20, 70.94it/s]
sample:  64%|██████▍   | 2568/4000 [00:40<00:19, 71.70it/s]
sample:  64%|██████▍   | 2576/4000 [00:40<00:20, 70.88it/s]
sample:  65%|██████▍   | 2586/4000 [00:40<00:18, 76.80it/s]
sample:  65%|██████▍   | 2594/4000 [00:40<00:18, 76.74it/s]
sample:  65%|██████▌   | 2602/4000 [00:40<00:18, 75.65it/s]
sample:  65%|██████▌   | 2610/4000 [00:40<00:18, 75.05it/s]
sample:  65%|██████▌   | 2618/4000 [00:41<00:18, 74.56it/s]
sample:  66%|██████▌   | 2626/4000 [00:41<00:18, 75.74it/s]
sample:  66%|██████▌   | 2634/4000 [00:41<00:18, 73.60it/s]
sample:  66%|██████▌   | 2642/4000 [00:41<00:19, 70.76it/s]
sample:  66%|██████▋   | 2650/4000 [00:41<00:18, 72.96it/s]
sample:  66%|██████▋   | 2658/4000 [00:41<00:18, 73.13it/s]
sample:  67%|██████▋   | 2666/4000 [00:41<00:17, 74.89it/s]
sample:  67%|██████▋   | 2674/4000 [00:41<00:17, 75.92it/s]
sample:  67%|██████▋   | 2682/4000 [00:41<00:17, 76.64it/s]
sample:  67%|██████▋   | 2690/4000 [00:42<00:17, 76.49it/s]
sample:  67%|██████▋   | 2698/4000 [00:42<00:17, 72.64it/s]
sample:  68%|██████▊   | 2706/4000 [00:42<00:17, 72.72it/s]
sample:  68%|██████▊   | 2714/4000 [00:42<00:17, 72.66it/s]
sample:  68%|██████▊   | 2722/4000 [00:42<00:17, 74.30it/s]
sample:  68%|██████▊   | 2730/4000 [00:42<00:17, 71.19it/s]
sample:  68%|██████▊   | 2738/4000 [00:42<00:18, 69.12it/s]
sample:  69%|██████▊   | 2746/4000 [00:42<00:17, 70.38it/s]
sample:  69%|██████▉   | 2754/4000 [00:42<00:17, 72.82it/s]
sample:  69%|██████▉   | 2762/4000 [00:43<00:16, 73.27it/s]
sample:  69%|██████▉   | 2771/4000 [00:43<00:16, 76.28it/s]
sample:  69%|██████▉   | 2779/4000 [00:43<00:15, 76.99it/s]
sample:  70%|██████▉   | 2787/4000 [00:43<00:15, 77.60it/s]
sample:  70%|██████▉   | 2795/4000 [00:43<00:15, 76.32it/s]
sample:  70%|███████   | 2803/4000 [00:43<00:16, 73.99it/s]
sample:  70%|███████   | 2811/4000 [00:43<00:16, 73.98it/s]
sample:  70%|███████   | 2819/4000 [00:43<00:16, 73.78it/s]
sample:  71%|███████   | 2827/4000 [00:43<00:15, 74.87it/s]
sample:  71%|███████   | 2836/4000 [00:44<00:15, 73.71it/s]
sample:  71%|███████   | 2845/4000 [00:44<00:15, 76.51it/s]
sample:  71%|███████▏  | 2853/4000 [00:44<00:14, 77.03it/s]
sample:  72%|███████▏  | 2861/4000 [00:44<00:15, 75.81it/s]
sample:  72%|███████▏  | 2870/4000 [00:44<00:14, 79.60it/s]
sample:  72%|███████▏  | 2878/4000 [00:44<00:14, 74.93it/s]
sample:  72%|███████▏  | 2886/4000 [00:44<00:14, 74.45it/s]
sample:  72%|███████▏  | 2894/4000 [00:44<00:14, 74.06it/s]
sample:  73%|███████▎  | 2902/4000 [00:44<00:14, 73.74it/s]
sample:  73%|███████▎  | 2910/4000 [00:45<00:14, 74.17it/s]
sample:  73%|███████▎  | 2918/4000 [00:45<00:14, 72.58it/s]
sample:  73%|███████▎  | 2926/4000 [00:45<00:15, 71.56it/s]
sample:  73%|███████▎  | 2934/4000 [00:45<00:15, 69.48it/s]
sample:  74%|███████▎  | 2942/4000 [00:45<00:14, 70.92it/s]
sample:  74%|███████▍  | 2950/4000 [00:45<00:14, 71.69it/s]
sample:  74%|███████▍  | 2958/4000 [00:45<00:15, 69.46it/s]
sample:  74%|███████▍  | 2965/4000 [00:45<00:15, 67.76it/s]
sample:  74%|███████▍  | 2973/4000 [00:45<00:14, 69.35it/s]
sample:  75%|███████▍  | 2981/4000 [00:46<00:14, 72.03it/s]
sample:  75%|███████▍  | 2989/4000 [00:46<00:13, 73.88it/s]
sample:  75%|███████▍  | 2997/4000 [00:46<00:13, 73.53it/s]
sample:  75%|███████▌  | 3005/4000 [00:46<00:13, 74.97it/s]
sample:  75%|███████▌  | 3013/4000 [00:46<00:13, 71.71it/s]
sample:  76%|███████▌  | 3021/4000 [00:46<00:13, 72.35it/s]
sample:  76%|███████▌  | 3029/4000 [00:46<00:13, 73.98it/s]
sample:  76%|███████▌  | 3037/4000 [00:46<00:13, 69.73it/s]
sample:  76%|███████▌  | 3045/4000 [00:46<00:13, 69.38it/s]
sample:  76%|███████▋  | 3053/4000 [00:47<00:13, 71.92it/s]
sample:  77%|███████▋  | 3061/4000 [00:47<00:12, 73.83it/s]
sample:  77%|███████▋  | 3069/4000 [00:47<00:12, 72.18it/s]
sample:  77%|███████▋  | 3077/4000 [00:47<00:13, 69.17it/s]
sample:  77%|███████▋  | 3086/4000 [00:47<00:12, 74.60it/s]
sample:  77%|███████▋  | 3094/4000 [00:47<00:12, 74.26it/s]
sample:  78%|███████▊  | 3102/4000 [00:47<00:12, 74.34it/s]
sample:  78%|███████▊  | 3110/4000 [00:47<00:11, 74.49it/s]
sample:  78%|███████▊  | 3118/4000 [00:47<00:11, 75.93it/s]
sample:  78%|███████▊  | 3126/4000 [00:47<00:11, 76.97it/s]
sample:  78%|███████▊  | 3134/4000 [00:48<00:11, 75.09it/s]
sample:  79%|███████▊  | 3142/4000 [00:48<00:11, 76.35it/s]
sample:  79%|███████▉  | 3150/4000 [00:48<00:11, 75.96it/s]
sample:  79%|███████▉  | 3158/4000 [00:48<00:10, 77.05it/s]
sample:  79%|███████▉  | 3167/4000 [00:48<00:10, 77.93it/s]
sample:  79%|███████▉  | 3175/4000 [00:48<00:10, 75.57it/s]
sample:  80%|███████▉  | 3183/4000 [00:48<00:10, 75.56it/s]
sample:  80%|███████▉  | 3191/4000 [00:48<00:11, 73.53it/s]
sample:  80%|███████▉  | 3199/4000 [00:48<00:10, 73.66it/s]
sample:  80%|████████  | 3207/4000 [00:49<00:10, 73.55it/s]
sample:  80%|████████  | 3215/4000 [00:49<00:11, 68.50it/s]
sample:  81%|████████  | 3223/4000 [00:49<00:11, 70.23it/s]
sample:  81%|████████  | 3231/4000 [00:49<00:10, 72.70it/s]
sample:  81%|████████  | 3240/4000 [00:49<00:10, 75.94it/s]
sample:  81%|████████  | 3248/4000 [00:49<00:09, 76.61it/s]
sample:  81%|████████▏ | 3256/4000 [00:49<00:09, 75.77it/s]
sample:  82%|████████▏ | 3264/4000 [00:49<00:09, 74.95it/s]
sample:  82%|████████▏ | 3272/4000 [00:49<00:09, 74.49it/s]
sample:  82%|████████▏ | 3280/4000 [00:50<00:09, 74.26it/s]
sample:  82%|████████▏ | 3288/4000 [00:50<00:09, 74.03it/s]
sample:  82%|████████▏ | 3296/4000 [00:50<00:09, 71.08it/s]
sample:  83%|████████▎ | 3304/4000 [00:50<00:09, 71.72it/s]
sample:  83%|████████▎ | 3312/4000 [00:50<00:09, 72.30it/s]
sample:  83%|████████▎ | 3320/4000 [00:50<00:09, 73.40it/s]
sample:  83%|████████▎ | 3328/4000 [00:50<00:09, 73.45it/s]
sample:  83%|████████▎ | 3337/4000 [00:50<00:08, 76.29it/s]
sample:  84%|████████▎ | 3346/4000 [00:50<00:08, 79.89it/s]
sample:  84%|████████▍ | 3355/4000 [00:51<00:08, 79.33it/s]
sample:  84%|████████▍ | 3363/4000 [00:51<00:08, 77.69it/s]
sample:  84%|████████▍ | 3371/4000 [00:51<00:08, 76.41it/s]
sample:  84%|████████▍ | 3379/4000 [00:51<00:08, 75.38it/s]
sample:  85%|████████▍ | 3387/4000 [00:51<00:08, 74.74it/s]
sample:  85%|████████▍ | 3395/4000 [00:51<00:08, 74.54it/s]
sample:  85%|████████▌ | 3403/4000 [00:51<00:08, 71.29it/s]
sample:  85%|████████▌ | 3411/4000 [00:51<00:08, 73.39it/s]
sample:  85%|████████▌ | 3419/4000 [00:51<00:07, 73.47it/s]
sample:  86%|████████▌ | 3427/4000 [00:52<00:07, 73.47it/s]
sample:  86%|████████▌ | 3435/4000 [00:52<00:07, 73.32it/s]
sample:  86%|████████▌ | 3443/4000 [00:52<00:07, 73.37it/s]
sample:  86%|████████▋ | 3451/4000 [00:52<00:07, 73.38it/s]
sample:  86%|████████▋ | 3460/4000 [00:52<00:07, 76.35it/s]
sample:  87%|████████▋ | 3468/4000 [00:52<00:07, 74.09it/s]
sample:  87%|████████▋ | 3476/4000 [00:52<00:07, 73.88it/s]
sample:  87%|████████▋ | 3484/4000 [00:52<00:07, 73.47it/s]
sample:  87%|████████▋ | 3492/4000 [00:52<00:06, 73.48it/s]
sample:  88%|████████▊ | 3501/4000 [00:53<00:06, 76.36it/s]
sample:  88%|████████▊ | 3509/4000 [00:53<00:06, 75.50it/s]
sample:  88%|████████▊ | 3518/4000 [00:53<00:06, 77.79it/s]
sample:  88%|████████▊ | 3526/4000 [00:53<00:06, 73.51it/s]
sample:  88%|████████▊ | 3534/4000 [00:53<00:06, 75.02it/s]
sample:  89%|████████▊ | 3542/4000 [00:53<00:06, 74.51it/s]
sample:  89%|████████▉ | 3550/4000 [00:53<00:06, 71.49it/s]
sample:  89%|████████▉ | 3558/4000 [00:53<00:06, 73.43it/s]
sample:  89%|████████▉ | 3566/4000 [00:53<00:05, 74.88it/s]
sample:  89%|████████▉ | 3574/4000 [00:54<00:05, 74.40it/s]
sample:  90%|████████▉ | 3582/4000 [00:54<00:05, 71.31it/s]
sample:  90%|████████▉ | 3590/4000 [00:54<00:05, 69.48it/s]
sample:  90%|████████▉ | 3598/4000 [00:54<00:05, 70.62it/s]
sample:  90%|█████████ | 3606/4000 [00:54<00:05, 71.48it/s]
sample:  90%|█████████ | 3614/4000 [00:54<00:05, 73.48it/s]
sample:  91%|█████████ | 3622/4000 [00:54<00:05, 72.02it/s]
sample:  91%|█████████ | 3630/4000 [00:54<00:05, 72.32it/s]
sample:  91%|█████████ | 3638/4000 [00:54<00:04, 72.71it/s]
sample:  91%|█████████ | 3646/4000 [00:55<00:05, 70.38it/s]
sample:  91%|█████████▏| 3654/4000 [00:55<00:05, 68.59it/s]
sample:  92%|█████████▏| 3662/4000 [00:55<00:04, 71.28it/s]
sample:  92%|█████████▏| 3670/4000 [00:55<00:04, 69.04it/s]
sample:  92%|█████████▏| 3678/4000 [00:55<00:04, 70.38it/s]
sample:  92%|█████████▏| 3686/4000 [00:55<00:04, 72.79it/s]
sample:  92%|█████████▏| 3694/4000 [00:55<00:04, 74.65it/s]
sample:  93%|█████████▎| 3702/4000 [00:55<00:03, 75.69it/s]
sample:  93%|█████████▎| 3710/4000 [00:55<00:03, 75.01it/s]
sample:  93%|█████████▎| 3718/4000 [00:56<00:03, 74.56it/s]
sample:  93%|█████████▎| 3726/4000 [00:56<00:03, 74.17it/s]
sample:  93%|█████████▎| 3734/4000 [00:56<00:03, 73.87it/s]
sample:  94%|█████████▎| 3742/4000 [00:56<00:03, 75.09it/s]
sample:  94%|█████████▍| 3750/4000 [00:56<00:03, 74.53it/s]
sample:  94%|█████████▍| 3758/4000 [00:56<00:03, 75.60it/s]
sample:  94%|█████████▍| 3766/4000 [00:56<00:03, 76.41it/s]
sample:  94%|█████████▍| 3774/4000 [00:56<00:03, 75.06it/s]
sample:  95%|█████████▍| 3782/4000 [00:56<00:02, 76.16it/s]
sample:  95%|█████████▍| 3790/4000 [00:56<00:02, 75.41it/s]
sample:  95%|█████████▍| 3798/4000 [00:57<00:02, 76.38it/s]
sample:  95%|█████████▌| 3806/4000 [00:57<00:02, 72.85it/s]
sample:  95%|█████████▌| 3814/4000 [00:57<00:02, 73.02it/s]
sample:  96%|█████████▌| 3822/4000 [00:57<00:02, 74.59it/s]
sample:  96%|█████████▌| 3830/4000 [00:57<00:02, 74.33it/s]
sample:  96%|█████████▌| 3839/4000 [00:57<00:02, 76.99it/s]
sample:  96%|█████████▌| 3847/4000 [00:57<00:01, 77.74it/s]
sample:  96%|█████████▋| 3855/4000 [00:57<00:01, 76.39it/s]
sample:  97%|█████████▋| 3863/4000 [00:57<00:01, 77.03it/s]
sample:  97%|█████████▋| 3871/4000 [00:58<00:01, 77.70it/s]
sample:  97%|█████████▋| 3879/4000 [00:58<00:01, 78.06it/s]
sample:  97%|█████████▋| 3888/4000 [00:58<00:01, 79.55it/s]
sample:  97%|█████████▋| 3896/4000 [00:58<00:01, 76.05it/s]
sample:  98%|█████████▊| 3905/4000 [00:58<00:01, 79.77it/s]
sample:  98%|█████████▊| 3914/4000 [00:58<00:01, 79.36it/s]
sample:  98%|█████████▊| 3923/4000 [00:58<00:00, 80.65it/s]
sample:  98%|█████████▊| 3932/4000 [00:58<00:00, 80.01it/s]
sample:  99%|█████████▊| 3941/4000 [00:58<00:00, 80.78it/s]
sample:  99%|█████████▉| 3950/4000 [00:59<00:00, 79.83it/s]
sample:  99%|█████████▉| 3958/4000 [00:59<00:00, 79.45it/s]
sample:  99%|█████████▉| 3967/4000 [00:59<00:00, 80.38it/s]
sample:  99%|█████████▉| 3976/4000 [00:59<00:00, 78.17it/s]
sample: 100%|█████████▉| 3984/4000 [00:59<00:00, 75.34it/s]
sample: 100%|█████████▉| 3992/4000 [00:59<00:00, 74.91it/s]
sample: 100%|██████████| 4000/4000 [00:59<00:00, 75.89it/s]
sample: 100%|██████████| 4000/4000 [00:59<00:00, 67.03it/s]
posterior_predictive_loglike finished in 261 ms
expected_log_likelihood finished in 11 ms
best_draw_log_likelihood finished in 10 ms
/Users/bierlair/python_envs/venv313/lib/python3.13/site-packages/arviz/stats/stats.py:1667: UserWarning: For one or more samples the posterior variance of the log predictive densities exceeds 0.4. This could be indication of WAIC starting to fail.
See http://arxiv.org/abs/1507.04544 for details
  warnings.warn(
waic_res finished in 631 ms
waic finished in 631 ms
loo_res finished in 7351 ms (7.35 s)
loo finished in 7351 ms (7.35 s)
Diagnostics computation took 22.7 seconds (cached).
File b09_nested.html has been generated.
Save simulation results on b09_nested.nc
Saved Bayesian results (posterior + metadata) to b09_nested.nc
print(results.short_summary())
Sample size                                              6768
Sampler                                                  NUTS
Number of chains                                         4
Number of draws per chain                                2000
Total number of draws                                    8000
Acceptance rate target                                   0.9
Run time                                                 0:01:03.929416
Posterior predictive log-likelihood (sum of log mean p)  -5234.07
Expected log-likelihood E[log L(Y|θ)]                    -5239.44
Best-draw log-likelihood (posterior upper bound)         -5236.91
WAIC (Widely Applicable Information Criterion)           -5244.89
WAIC Standard Error                                      62.46
Effective number of parameters (p_WAIC)                  10.82
LOO (Leave-One-Out Cross-Validation)                     -5244.88
LOO Standard Error                                       62.46
Effective number of parameters (p_LOO)                   10.81
pandas_results = get_pandas_estimated_parameters(estimation_results=results)
display(pandas_results)
             Name  Value (mean)  ...   ESS (bulk)   ESS (tail)
0       asc_train     -0.511596  ...  3719.532913  4154.509847
1         asc_car     -0.166489  ...  3469.142538  4263.760221
2          b_time     -0.899984  ...  3220.978491  4222.676227
3          b_cost     -0.856607  ...  4598.688723  4570.329257
4  nest_parameter      2.057677  ...  4077.007373  4295.689611

[5 rows x 12 columns]

We calculate the correlation between the error terms of the alternatives.

corr = nests.correlation(
    parameters=results.get_beta_values(),
    alternatives_names={1: 'Train', 2: 'Swissmetro', 3: 'Car'},
)
print(corr)
               Train  Swissmetro       Car
Train       1.000000         0.0  0.763819
Swissmetro  0.000000         1.0  0.000000
Car         0.763819         0.0  1.000000

Total running time of the script: (2 minutes 0.825 seconds)

Gallery generated by Sphinx-Gallery