Note
Go to the end to download the full example code
Cross-nested logit
Estimation of a cross-nested logit model using sampling of alternatives.
- author:
Michel Bierlaire
- date:
Wed Nov 1 18:00:33 2023
import pandas as pd
from biogeme.sampling_of_alternatives import (
SamplingContext,
ChoiceSetsGeneration,
GenerateModel,
generate_segment_size,
)
from biogeme.expressions import Beta
import biogeme.biogeme_logging as blog
import biogeme.biogeme as bio
from biogeme.nests import OneNestForCrossNestedLogit, NestsForCrossNestedLogit
from specification import V, combined_variables
from compare import compare
from alternatives import (
alternatives,
ID_COLUMN,
partitions,
all_alternatives,
asian_and_downtown,
only_downtown,
only_asian,
)
logger = blog.get_screen_logger(level=blog.INFO)
PARTITION = 'downtown'
MEV_PARTITION = 'uniform_asian_or_downtown'
SAMPLE_SIZE = 10 # out of 100 alternatives
SAMPLE_SIZE_MEV = 63 # out of 63 alternatives
CHOICE_COLUMN = 'cnl_3'
MODEL_NAME = f'cnl_{SAMPLE_SIZE}_{SAMPLE_SIZE_MEV}'
FILE_NAME = f'{MODEL_NAME}.dat'
the_partition = partitions.get(PARTITION)
if the_partition is None:
raise ValueError(f'Unknown partition: {PARTITION}')
segment_sizes = list(
generate_segment_size(SAMPLE_SIZE, the_partition.number_of_segments())
)
We use all alternatives in the nest.
mev_partition = partitions.get(MEV_PARTITION)
if mev_partition is None:
raise ValueError(f'Unknown partition: {MEV_PARTITION}')
mev_segment_sizes = [
SAMPLE_SIZE_MEV,
]
Nests
Downtown
mu_downtown = Beta('mu_downtown', 1, 1, None, 0)
downtown_alpha_dict = {i: 0.5 for i in asian_and_downtown} | {
i: 1 for i in only_downtown
}
downtown_nest = OneNestForCrossNestedLogit(
nest_param=mu_downtown, dict_of_alpha=downtown_alpha_dict, name='downtown'
)
Asian
mu_asian = Beta('mu_asian', 1, 1, None, 0)
asian_alpha_dict = {i: 0.5 for i in asian_and_downtown} | {i: 1.0 for i in only_asian}
asian_nest = OneNestForCrossNestedLogit(
nest_param=mu_asian, dict_of_alpha=asian_alpha_dict, name='asian'
)
cnl_nests = NestsForCrossNestedLogit(
choice_set=all_alternatives,
tuple_of_nests=(downtown_nest, asian_nest),
)
observations = pd.read_csv('obs_choice.dat')
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,
cnl_nests=cnl_nests,
)
logger.info(context.reporting())
Size of the choice set: 100
Main partition: 2 segment(s) of size 46, 54
Main sample: 10: 5/46, 5/54
Nbr of MEV alternatives: 63
MEV partition: 1 segment(s) of size 63
MEV sample: 63: 63/63
the_data_generation = ChoiceSetsGeneration(context=context)
the_model_generation = GenerateModel(context=context)
biogeme_database = the_data_generation.sample_and_merge(recycle=False)
Generating 10 + 63 alternatives for 10000 observations
0%| | 0/10000 [00:00<?, ?it/s]
0%| | 14/10000 [00:00<01:13, 136.59it/s]
0%| | 28/10000 [00:00<01:15, 132.91it/s]
0%| | 42/10000 [00:00<01:15, 132.11it/s]
1%| | 56/10000 [00:00<01:16, 129.21it/s]
1%| | 70/10000 [00:00<01:15, 130.78it/s]
1%| | 84/10000 [00:00<01:15, 131.71it/s]
1%| | 98/10000 [00:00<01:14, 132.75it/s]
1%| | 112/10000 [00:00<01:14, 132.97it/s]
1%|▏ | 126/10000 [00:00<01:14, 133.38it/s]
1%|▏ | 140/10000 [00:01<01:14, 131.49it/s]
2%|▏ | 154/10000 [00:01<01:14, 132.60it/s]
2%|▏ | 168/10000 [00:01<01:13, 133.43it/s]
2%|▏ | 182/10000 [00:01<01:13, 134.28it/s]
2%|▏ | 196/10000 [00:01<01:12, 134.89it/s]
2%|▏ | 210/10000 [00:01<01:12, 134.62it/s]
2%|▏ | 225/10000 [00:01<01:10, 138.52it/s]
2%|▏ | 249/10000 [00:01<00:58, 166.80it/s]
3%|▎ | 273/10000 [00:01<00:52, 186.69it/s]
3%|▎ | 297/10000 [00:01<00:48, 200.70it/s]
3%|▎ | 321/10000 [00:02<00:45, 210.59it/s]
3%|▎ | 345/10000 [00:02<00:44, 217.44it/s]
4%|▎ | 369/10000 [00:02<00:43, 222.22it/s]
4%|▍ | 393/10000 [00:02<00:42, 225.64it/s]
4%|▍ | 417/10000 [00:02<00:42, 227.98it/s]
4%|▍ | 441/10000 [00:02<00:41, 229.63it/s]
5%|▍ | 465/10000 [00:02<00:41, 230.64it/s]
5%|▍ | 489/10000 [00:02<00:41, 231.55it/s]
5%|▌ | 513/10000 [00:02<00:40, 232.01it/s]
5%|▌ | 537/10000 [00:03<00:40, 232.32it/s]
6%|▌ | 561/10000 [00:03<00:40, 232.48it/s]
6%|▌ | 585/10000 [00:03<00:40, 232.42it/s]
6%|▌ | 609/10000 [00:03<00:40, 232.33it/s]
6%|▋ | 633/10000 [00:03<00:40, 232.31it/s]
7%|▋ | 657/10000 [00:03<00:40, 232.34it/s]
7%|▋ | 681/10000 [00:03<00:40, 232.40it/s]
7%|▋ | 705/10000 [00:03<00:39, 232.38it/s]
7%|▋ | 729/10000 [00:03<00:39, 232.32it/s]
8%|▊ | 753/10000 [00:03<00:39, 232.34it/s]
8%|▊ | 777/10000 [00:04<00:39, 232.41it/s]
8%|▊ | 801/10000 [00:04<00:39, 232.36it/s]
8%|▊ | 825/10000 [00:04<00:39, 232.37it/s]
8%|▊ | 849/10000 [00:04<00:39, 232.38it/s]
9%|▊ | 873/10000 [00:04<00:39, 232.35it/s]
9%|▉ | 897/10000 [00:04<00:40, 224.29it/s]
9%|▉ | 920/10000 [00:04<00:48, 188.21it/s]
9%|▉ | 940/10000 [00:04<00:53, 170.75it/s]
10%|▉ | 958/10000 [00:05<00:56, 160.55it/s]
10%|▉ | 975/10000 [00:05<00:58, 153.98it/s]
10%|▉ | 991/10000 [00:05<01:00, 148.78it/s]
10%|█ | 1007/10000 [00:05<01:02, 144.42it/s]
10%|█ | 1022/10000 [00:05<01:03, 141.84it/s]
10%|█ | 1037/10000 [00:05<01:04, 139.68it/s]
11%|█ | 1052/10000 [00:05<01:05, 137.64it/s]
11%|█ | 1066/10000 [00:05<01:05, 136.43it/s]
11%|█ | 1080/10000 [00:05<01:05, 135.91it/s]
11%|█ | 1094/10000 [00:06<01:05, 135.62it/s]
11%|█ | 1108/10000 [00:06<01:05, 134.87it/s]
11%|█ | 1122/10000 [00:06<01:05, 134.96it/s]
11%|█▏ | 1136/10000 [00:06<01:05, 134.57it/s]
12%|█▏ | 1150/10000 [00:06<01:05, 134.57it/s]
12%|█▏ | 1164/10000 [00:06<01:05, 134.59it/s]
12%|█▏ | 1178/10000 [00:06<01:05, 134.17it/s]
12%|█▏ | 1192/10000 [00:06<01:05, 134.04it/s]
12%|█▏ | 1206/10000 [00:06<01:05, 134.04it/s]
12%|█▏ | 1220/10000 [00:06<01:05, 134.30it/s]
12%|█▏ | 1234/10000 [00:07<01:05, 134.25it/s]
12%|█▏ | 1248/10000 [00:07<01:05, 134.06it/s]
13%|█▎ | 1262/10000 [00:07<01:05, 134.23it/s]
13%|█▎ | 1276/10000 [00:07<01:05, 134.05it/s]
13%|█▎ | 1296/10000 [00:07<00:57, 152.06it/s]
13%|█▎ | 1320/10000 [00:07<00:49, 175.77it/s]
13%|█▎ | 1344/10000 [00:07<00:44, 192.37it/s]
14%|█▎ | 1368/10000 [00:07<00:42, 203.99it/s]
14%|█▍ | 1392/10000 [00:07<00:40, 212.12it/s]
14%|█▍ | 1416/10000 [00:08<00:39, 217.82it/s]
14%|█▍ | 1440/10000 [00:08<00:38, 221.81it/s]
15%|█▍ | 1464/10000 [00:08<00:38, 224.58it/s]
15%|█▍ | 1488/10000 [00:08<00:37, 226.55it/s]
15%|█▌ | 1512/10000 [00:08<00:37, 227.79it/s]
15%|█▌ | 1536/10000 [00:08<00:36, 228.80it/s]
16%|█▌ | 1560/10000 [00:08<00:36, 229.52it/s]
16%|█▌ | 1584/10000 [00:08<00:36, 230.06it/s]
16%|█▌ | 1608/10000 [00:08<00:36, 230.56it/s]
16%|█▋ | 1632/10000 [00:08<00:36, 230.78it/s]
17%|█▋ | 1656/10000 [00:09<00:36, 231.02it/s]
17%|█▋ | 1680/10000 [00:09<00:35, 231.17it/s]
17%|█▋ | 1704/10000 [00:09<00:35, 231.25it/s]
17%|█▋ | 1728/10000 [00:09<00:35, 231.32it/s]
18%|█▊ | 1752/10000 [00:09<00:35, 231.27it/s]
18%|█▊ | 1776/10000 [00:09<00:35, 231.27it/s]
18%|█▊ | 1800/10000 [00:09<00:35, 231.31it/s]
18%|█▊ | 1824/10000 [00:09<00:35, 231.32it/s]
18%|█▊ | 1848/10000 [00:09<00:35, 231.39it/s]
19%|█▊ | 1872/10000 [00:09<00:35, 231.46it/s]
19%|█▉ | 1896/10000 [00:10<00:35, 231.51it/s]
19%|█▉ | 1920/10000 [00:10<00:34, 231.54it/s]
19%|█▉ | 1944/10000 [00:10<00:34, 231.56it/s]
20%|█▉ | 1968/10000 [00:10<00:41, 195.60it/s]
20%|█▉ | 1989/10000 [00:10<00:46, 173.29it/s]
20%|██ | 2008/10000 [00:10<00:49, 161.52it/s]
20%|██ | 2025/10000 [00:10<00:51, 153.97it/s]
20%|██ | 2041/10000 [00:11<00:53, 148.66it/s]
21%|██ | 2057/10000 [00:11<00:54, 144.91it/s]
21%|██ | 2072/10000 [00:11<00:55, 141.95it/s]
21%|██ | 2087/10000 [00:11<00:56, 139.62it/s]
21%|██ | 2102/10000 [00:11<00:57, 138.22it/s]
21%|██ | 2116/10000 [00:11<00:57, 137.29it/s]
21%|██▏ | 2130/10000 [00:11<00:57, 136.47it/s]
21%|██▏ | 2144/10000 [00:11<00:57, 135.88it/s]
22%|██▏ | 2158/10000 [00:11<00:57, 135.65it/s]
22%|██▏ | 2172/10000 [00:11<00:57, 135.27it/s]
22%|██▏ | 2186/10000 [00:12<00:57, 135.30it/s]
22%|██▏ | 2200/10000 [00:12<00:57, 134.92it/s]
22%|██▏ | 2214/10000 [00:12<00:57, 134.90it/s]
22%|██▏ | 2228/10000 [00:12<00:57, 134.83it/s]
22%|██▏ | 2242/10000 [00:12<00:57, 134.80it/s]
23%|██▎ | 2256/10000 [00:12<00:57, 134.68it/s]
23%|██▎ | 2270/10000 [00:12<00:57, 135.02it/s]
23%|██▎ | 2284/10000 [00:12<00:57, 134.97it/s]
23%|██▎ | 2298/10000 [00:12<00:56, 135.12it/s]
23%|██▎ | 2312/10000 [00:13<00:56, 135.64it/s]
23%|██▎ | 2326/10000 [00:13<00:56, 135.44it/s]
23%|██▎ | 2342/10000 [00:13<00:54, 141.11it/s]
24%|██▎ | 2366/10000 [00:13<00:45, 168.37it/s]
24%|██▍ | 2390/10000 [00:13<00:40, 187.56it/s]
24%|██▍ | 2414/10000 [00:13<00:37, 201.02it/s]
24%|██▍ | 2438/10000 [00:13<00:35, 210.48it/s]
25%|██▍ | 2462/10000 [00:13<00:34, 217.04it/s]
25%|██▍ | 2486/10000 [00:13<00:33, 221.65it/s]
25%|██▌ | 2510/10000 [00:13<00:33, 224.77it/s]
25%|██▌ | 2534/10000 [00:14<00:32, 227.05it/s]
26%|██▌ | 2558/10000 [00:14<00:32, 228.68it/s]
26%|██▌ | 2582/10000 [00:14<00:32, 229.79it/s]
26%|██▌ | 2606/10000 [00:14<00:32, 230.62it/s]
26%|██▋ | 2630/10000 [00:14<00:31, 231.22it/s]
27%|██▋ | 2654/10000 [00:14<00:31, 231.65it/s]
27%|██▋ | 2678/10000 [00:14<00:31, 231.99it/s]
27%|██▋ | 2702/10000 [00:14<00:31, 232.16it/s]
27%|██▋ | 2726/10000 [00:14<00:31, 232.31it/s]
28%|██▊ | 2750/10000 [00:14<00:31, 232.32it/s]
28%|██▊ | 2774/10000 [00:15<00:31, 232.43it/s]
28%|██▊ | 2798/10000 [00:15<00:43, 164.49it/s]
28%|██▊ | 2822/10000 [00:15<00:39, 180.09it/s]
28%|██▊ | 2846/10000 [00:15<00:37, 192.98it/s]
29%|██▊ | 2870/10000 [00:15<00:35, 203.29it/s]
29%|██▉ | 2894/10000 [00:15<00:33, 211.07it/s]
29%|██▉ | 2918/10000 [00:15<00:32, 216.99it/s]
29%|██▉ | 2942/10000 [00:15<00:31, 221.30it/s]
30%|██▉ | 2966/10000 [00:16<00:31, 224.44it/s]
30%|██▉ | 2989/10000 [00:16<00:35, 199.04it/s]
30%|███ | 3010/10000 [00:16<00:39, 176.44it/s]
30%|███ | 3029/10000 [00:16<00:42, 163.37it/s]
30%|███ | 3047/10000 [00:16<00:44, 154.68it/s]
31%|███ | 3063/10000 [00:16<00:46, 148.93it/s]
31%|███ | 3079/10000 [00:16<00:47, 144.22it/s]
31%|███ | 3094/10000 [00:16<00:49, 140.91it/s]
31%|███ | 3109/10000 [00:17<00:49, 138.69it/s]
31%|███ | 3123/10000 [00:17<00:49, 137.57it/s]
31%|███▏ | 3137/10000 [00:17<00:50, 136.11it/s]
32%|███▏ | 3151/10000 [00:17<00:50, 135.06it/s]
32%|███▏ | 3165/10000 [00:17<00:50, 134.49it/s]
32%|███▏ | 3179/10000 [00:17<00:50, 133.79it/s]
32%|███▏ | 3193/10000 [00:17<00:50, 133.55it/s]
32%|███▏ | 3207/10000 [00:17<00:50, 133.29it/s]
32%|███▏ | 3221/10000 [00:17<00:50, 133.21it/s]
32%|███▏ | 3235/10000 [00:18<00:50, 133.11it/s]
32%|███▏ | 3249/10000 [00:18<00:50, 132.53it/s]
33%|███▎ | 3263/10000 [00:18<00:50, 132.63it/s]
33%|███▎ | 3277/10000 [00:18<00:50, 132.94it/s]
33%|███▎ | 3291/10000 [00:18<00:50, 132.38it/s]
33%|███▎ | 3305/10000 [00:18<00:50, 132.50it/s]
33%|███▎ | 3319/10000 [00:18<00:50, 132.59it/s]
33%|███▎ | 3333/10000 [00:18<00:50, 132.62it/s]
33%|███▎ | 3347/10000 [00:18<00:50, 132.89it/s]
34%|███▎ | 3362/10000 [00:18<00:48, 137.49it/s]
34%|███▍ | 3386/10000 [00:19<00:39, 165.56it/s]
34%|███▍ | 3410/10000 [00:19<00:35, 185.41it/s]
34%|███▍ | 3434/10000 [00:19<00:32, 199.34it/s]
35%|███▍ | 3458/10000 [00:19<00:31, 209.10it/s]
35%|███▍ | 3482/10000 [00:19<00:30, 215.91it/s]
35%|███▌ | 3506/10000 [00:19<00:29, 220.66it/s]
35%|███▌ | 3530/10000 [00:19<00:28, 224.02it/s]
36%|███▌ | 3554/10000 [00:19<00:28, 226.41it/s]
36%|███▌ | 3578/10000 [00:19<00:28, 228.08it/s]
36%|███▌ | 3602/10000 [00:20<00:27, 229.29it/s]
36%|███▋ | 3626/10000 [00:20<00:27, 230.13it/s]
36%|███▋ | 3650/10000 [00:20<00:27, 230.72it/s]
37%|███▋ | 3674/10000 [00:20<00:27, 231.16it/s]
37%|███▋ | 3698/10000 [00:20<00:27, 231.50it/s]
37%|███▋ | 3722/10000 [00:20<00:27, 231.84it/s]
37%|███▋ | 3746/10000 [00:20<00:26, 231.96it/s]
38%|███▊ | 3770/10000 [00:20<00:26, 232.03it/s]
38%|███▊ | 3794/10000 [00:20<00:26, 232.11it/s]
38%|███▊ | 3818/10000 [00:20<00:26, 232.25it/s]
38%|███▊ | 3842/10000 [00:21<00:26, 232.34it/s]
39%|███▊ | 3866/10000 [00:21<00:26, 232.33it/s]
39%|███▉ | 3890/10000 [00:21<00:26, 231.98it/s]
39%|███▉ | 3914/10000 [00:21<00:26, 231.99it/s]
39%|███▉ | 3938/10000 [00:21<00:26, 232.07it/s]
40%|███▉ | 3962/10000 [00:21<00:26, 232.05it/s]
40%|███▉ | 3986/10000 [00:21<00:25, 232.06it/s]
40%|████ | 4010/10000 [00:21<00:25, 231.85it/s]
40%|████ | 4034/10000 [00:21<00:27, 219.29it/s]
41%|████ | 4057/10000 [00:22<00:32, 185.13it/s]
41%|████ | 4077/10000 [00:22<00:35, 167.96it/s]
41%|████ | 4095/10000 [00:22<00:37, 158.79it/s]
41%|████ | 4112/10000 [00:22<00:38, 152.46it/s]
41%|████▏ | 4128/10000 [00:22<00:39, 148.06it/s]
41%|████▏ | 4144/10000 [00:22<00:40, 144.20it/s]
42%|████▏ | 4159/10000 [00:22<00:41, 141.06it/s]
42%|████▏ | 4174/10000 [00:22<00:41, 139.09it/s]
42%|████▏ | 4188/10000 [00:23<00:42, 137.74it/s]
42%|████▏ | 4202/10000 [00:23<00:42, 136.40it/s]
42%|████▏ | 4216/10000 [00:23<00:42, 135.07it/s]
42%|████▏ | 4230/10000 [00:23<00:42, 134.53it/s]
42%|████▏ | 4244/10000 [00:23<00:42, 134.41it/s]
43%|████▎ | 4258/10000 [00:23<00:42, 134.01it/s]
43%|████▎ | 4272/10000 [00:23<00:42, 133.82it/s]
43%|████▎ | 4286/10000 [00:23<00:42, 133.61it/s]
43%|████▎ | 4300/10000 [00:23<00:42, 133.53it/s]
43%|████▎ | 4314/10000 [00:23<00:42, 133.74it/s]
43%|████▎ | 4328/10000 [00:24<00:42, 133.19it/s]
43%|████▎ | 4342/10000 [00:24<00:42, 133.07it/s]
44%|████▎ | 4356/10000 [00:24<00:42, 133.69it/s]
44%|████▎ | 4370/10000 [00:24<00:41, 134.12it/s]
44%|████▍ | 4384/10000 [00:24<00:41, 134.31it/s]
44%|████▍ | 4398/10000 [00:24<00:41, 134.79it/s]
44%|████▍ | 4412/10000 [00:24<00:41, 135.14it/s]
44%|████▍ | 4434/10000 [00:24<00:35, 158.20it/s]
45%|████▍ | 4458/10000 [00:24<00:30, 180.25it/s]
45%|████▍ | 4482/10000 [00:25<00:28, 195.79it/s]
45%|████▌ | 4506/10000 [00:25<00:26, 206.58it/s]
45%|████▌ | 4530/10000 [00:25<00:25, 214.23it/s]
46%|████▌ | 4554/10000 [00:25<00:24, 219.60it/s]
46%|████▌ | 4578/10000 [00:25<00:24, 223.40it/s]
46%|████▌ | 4602/10000 [00:25<00:23, 225.98it/s]
46%|████▋ | 4626/10000 [00:25<00:23, 227.78it/s]
46%|████▋ | 4650/10000 [00:25<00:23, 229.07it/s]
47%|████▋ | 4674/10000 [00:25<00:23, 230.00it/s]
47%|████▋ | 4698/10000 [00:25<00:22, 230.65it/s]
47%|████▋ | 4722/10000 [00:26<00:22, 231.16it/s]
47%|████▋ | 4746/10000 [00:26<00:22, 231.49it/s]
48%|████▊ | 4770/10000 [00:26<00:22, 231.72it/s]
48%|████▊ | 4794/10000 [00:26<00:22, 231.90it/s]
48%|████▊ | 4818/10000 [00:26<00:22, 231.96it/s]
48%|████▊ | 4842/10000 [00:26<00:22, 232.14it/s]
49%|████▊ | 4866/10000 [00:26<00:22, 232.21it/s]
49%|████▉ | 4890/10000 [00:26<00:22, 232.19it/s]
49%|████▉ | 4914/10000 [00:26<00:21, 232.17it/s]
49%|████▉ | 4938/10000 [00:26<00:21, 232.20it/s]
50%|████▉ | 4962/10000 [00:27<00:21, 232.23it/s]
50%|████▉ | 4986/10000 [00:27<00:21, 232.23it/s]
50%|█████ | 5010/10000 [00:27<00:21, 232.08it/s]
50%|█████ | 5034/10000 [00:27<00:21, 232.12it/s]
51%|█████ | 5058/10000 [00:27<00:21, 232.18it/s]
51%|█████ | 5082/10000 [00:27<00:21, 232.22it/s]
51%|█████ | 5106/10000 [00:27<00:24, 196.43it/s]
51%|█████▏ | 5127/10000 [00:27<00:27, 177.78it/s]
51%|█████▏ | 5146/10000 [00:28<00:29, 165.20it/s]
52%|█████▏ | 5164/10000 [00:28<00:30, 156.06it/s]
52%|█████▏ | 5181/10000 [00:28<00:32, 150.25it/s]
52%|█████▏ | 5197/10000 [00:28<00:32, 146.14it/s]
52%|█████▏ | 5212/10000 [00:28<00:33, 141.49it/s]
52%|█████▏ | 5227/10000 [00:28<00:34, 140.35it/s]
52%|█████▏ | 5242/10000 [00:28<00:34, 138.82it/s]
53%|█████▎ | 5256/10000 [00:28<00:34, 137.55it/s]
53%|█████▎ | 5270/10000 [00:28<00:34, 136.78it/s]
53%|█████▎ | 5284/10000 [00:29<00:34, 136.23it/s]
53%|█████▎ | 5298/10000 [00:29<00:34, 135.58it/s]
53%|█████▎ | 5312/10000 [00:29<00:34, 134.87it/s]
53%|█████▎ | 5326/10000 [00:29<00:34, 135.41it/s]
53%|█████▎ | 5346/10000 [00:29<00:30, 152.84it/s]
54%|█████▎ | 5370/10000 [00:29<00:26, 176.10it/s]
54%|█████▍ | 5394/10000 [00:29<00:23, 192.54it/s]
54%|█████▍ | 5418/10000 [00:29<00:22, 204.26it/s]
54%|█████▍ | 5442/10000 [00:29<00:21, 212.34it/s]
55%|█████▍ | 5464/10000 [00:30<00:24, 182.67it/s]
55%|█████▍ | 5484/10000 [00:30<00:27, 165.30it/s]
55%|█████▌ | 5502/10000 [00:30<00:28, 155.47it/s]
55%|█████▌ | 5519/10000 [00:30<00:30, 146.02it/s]
55%|█████▌ | 5535/10000 [00:30<00:31, 143.00it/s]
56%|█████▌ | 5550/10000 [00:30<00:31, 141.53it/s]
56%|█████▌ | 5565/10000 [00:30<00:31, 140.23it/s]
56%|█████▌ | 5580/10000 [00:30<00:31, 139.72it/s]
56%|█████▌ | 5595/10000 [00:31<00:31, 138.20it/s]
56%|█████▌ | 5617/10000 [00:31<00:27, 158.63it/s]
56%|█████▋ | 5640/10000 [00:31<00:24, 177.58it/s]
57%|█████▋ | 5663/10000 [00:31<00:22, 192.27it/s]
57%|█████▋ | 5686/10000 [00:31<00:21, 202.94it/s]
57%|█████▋ | 5709/10000 [00:31<00:20, 209.37it/s]
57%|█████▋ | 5733/10000 [00:31<00:19, 215.96it/s]
58%|█████▊ | 5757/10000 [00:31<00:19, 220.70it/s]
58%|█████▊ | 5781/10000 [00:31<00:18, 224.12it/s]
58%|█████▊ | 5804/10000 [00:32<00:27, 155.07it/s]
58%|█████▊ | 5828/10000 [00:32<00:24, 172.16it/s]
58%|█████▊ | 5848/10000 [00:32<00:26, 158.48it/s]
59%|█████▊ | 5866/10000 [00:32<00:27, 150.12it/s]
59%|█████▉ | 5883/10000 [00:32<00:28, 146.67it/s]
59%|█████▉ | 5899/10000 [00:32<00:28, 142.99it/s]
59%|█████▉ | 5914/10000 [00:32<00:29, 140.85it/s]
59%|█████▉ | 5929/10000 [00:33<00:30, 134.11it/s]
59%|█████▉ | 5943/10000 [00:33<00:30, 133.81it/s]
60%|█████▉ | 5957/10000 [00:33<00:30, 133.63it/s]
60%|█████▉ | 5971/10000 [00:33<00:30, 133.84it/s]
60%|█████▉ | 5985/10000 [00:33<00:30, 133.61it/s]
60%|█████▉ | 5999/10000 [00:33<00:30, 133.15it/s]
60%|██████ | 6013/10000 [00:33<00:29, 133.68it/s]
60%|██████ | 6027/10000 [00:33<00:29, 133.91it/s]
60%|██████ | 6041/10000 [00:33<00:29, 133.60it/s]
61%|██████ | 6055/10000 [00:33<00:29, 133.90it/s]
61%|██████ | 6069/10000 [00:34<00:29, 133.96it/s]
61%|██████ | 6083/10000 [00:34<00:28, 135.23it/s]
61%|██████ | 6097/10000 [00:34<00:29, 133.63it/s]
61%|██████ | 6111/10000 [00:34<00:29, 133.87it/s]
61%|██████▏ | 6125/10000 [00:34<00:28, 134.35it/s]
61%|██████▏ | 6140/10000 [00:34<00:28, 137.74it/s]
62%|██████▏ | 6163/10000 [00:34<00:23, 163.91it/s]
62%|██████▏ | 6187/10000 [00:34<00:20, 184.15it/s]
62%|██████▏ | 6211/10000 [00:34<00:19, 198.46it/s]
62%|██████▏ | 6235/10000 [00:34<00:18, 208.46it/s]
63%|██████▎ | 6259/10000 [00:35<00:17, 215.51it/s]
63%|██████▎ | 6283/10000 [00:35<00:16, 220.50it/s]
63%|██████▎ | 6307/10000 [00:35<00:16, 224.01it/s]
63%|██████▎ | 6331/10000 [00:35<00:16, 226.56it/s]
64%|██████▎ | 6355/10000 [00:35<00:15, 227.86it/s]
64%|██████▍ | 6379/10000 [00:35<00:15, 229.19it/s]
64%|██████▍ | 6403/10000 [00:35<00:15, 230.05it/s]
64%|██████▍ | 6427/10000 [00:35<00:15, 230.68it/s]
65%|██████▍ | 6451/10000 [00:35<00:15, 231.12it/s]
65%|██████▍ | 6475/10000 [00:36<00:15, 231.47it/s]
65%|██████▍ | 6499/10000 [00:36<00:15, 231.64it/s]
65%|██████▌ | 6523/10000 [00:36<00:15, 231.75it/s]
65%|██████▌ | 6547/10000 [00:36<00:14, 231.48it/s]
66%|██████▌ | 6571/10000 [00:36<00:14, 231.69it/s]
66%|██████▌ | 6595/10000 [00:36<00:14, 230.28it/s]
66%|██████▌ | 6619/10000 [00:36<00:14, 230.88it/s]
66%|██████▋ | 6643/10000 [00:36<00:14, 231.25it/s]
67%|██████▋ | 6667/10000 [00:36<00:14, 230.21it/s]
67%|██████▋ | 6691/10000 [00:37<00:17, 188.25it/s]
67%|██████▋ | 6712/10000 [00:37<00:19, 168.33it/s]
67%|██████▋ | 6730/10000 [00:37<00:20, 157.07it/s]
67%|██████▋ | 6747/10000 [00:37<00:21, 152.89it/s]
68%|██████▊ | 6763/10000 [00:37<00:22, 146.06it/s]
68%|██████▊ | 6778/10000 [00:37<00:22, 142.01it/s]
68%|██████▊ | 6793/10000 [00:37<00:22, 140.39it/s]
68%|██████▊ | 6808/10000 [00:37<00:23, 138.30it/s]
68%|██████▊ | 6822/10000 [00:38<00:23, 136.47it/s]
68%|██████▊ | 6836/10000 [00:38<00:23, 135.80it/s]
68%|██████▊ | 6850/10000 [00:38<00:23, 135.49it/s]
69%|██████▊ | 6864/10000 [00:38<00:23, 134.78it/s]
69%|██████▉ | 6878/10000 [00:38<00:23, 134.59it/s]
69%|██████▉ | 6892/10000 [00:38<00:23, 133.97it/s]
69%|██████▉ | 6906/10000 [00:38<00:23, 133.33it/s]
69%|██████▉ | 6920/10000 [00:38<00:23, 133.48it/s]
69%|██████▉ | 6934/10000 [00:38<00:23, 133.12it/s]
69%|██████▉ | 6948/10000 [00:38<00:22, 133.26it/s]
70%|██████▉ | 6962/10000 [00:39<00:22, 133.12it/s]
70%|██████▉ | 6977/10000 [00:39<00:21, 137.97it/s]
70%|███████ | 7001/10000 [00:39<00:18, 165.89it/s]
70%|███████ | 7025/10000 [00:39<00:16, 185.42it/s]
70%|███████ | 7049/10000 [00:39<00:14, 199.20it/s]
71%|███████ | 7073/10000 [00:39<00:14, 208.96it/s]
71%|███████ | 7097/10000 [00:39<00:13, 215.89it/s]
71%|███████ | 7121/10000 [00:39<00:13, 220.63it/s]
71%|███████▏ | 7145/10000 [00:39<00:12, 224.05it/s]
72%|███████▏ | 7169/10000 [00:40<00:12, 226.37it/s]
72%|███████▏ | 7193/10000 [00:40<00:12, 228.01it/s]
72%|███████▏ | 7217/10000 [00:40<00:12, 229.14it/s]
72%|███████▏ | 7241/10000 [00:40<00:12, 229.90it/s]
73%|███████▎ | 7265/10000 [00:40<00:11, 230.44it/s]
73%|███████▎ | 7289/10000 [00:40<00:11, 230.59it/s]
73%|███████▎ | 7313/10000 [00:40<00:11, 231.02it/s]
73%|███████▎ | 7337/10000 [00:40<00:11, 231.38it/s]
74%|███████▎ | 7361/10000 [00:40<00:11, 231.48it/s]
74%|███████▍ | 7385/10000 [00:40<00:11, 231.64it/s]
74%|███████▍ | 7409/10000 [00:41<00:11, 231.76it/s]
74%|███████▍ | 7433/10000 [00:41<00:11, 231.90it/s]
75%|███████▍ | 7457/10000 [00:41<00:10, 231.87it/s]
75%|███████▍ | 7481/10000 [00:41<00:10, 231.66it/s]
75%|███████▌ | 7505/10000 [00:41<00:10, 231.43it/s]
75%|███████▌ | 7529/10000 [00:41<00:10, 231.28it/s]
76%|███████▌ | 7553/10000 [00:41<00:10, 231.43it/s]
76%|███████▌ | 7577/10000 [00:41<00:10, 231.52it/s]
76%|███████▌ | 7601/10000 [00:41<00:10, 231.59it/s]
76%|███████▋ | 7625/10000 [00:41<00:10, 231.63it/s]
76%|███████▋ | 7649/10000 [00:42<00:10, 218.40it/s]
77%|███████▋ | 7671/10000 [00:42<00:12, 186.22it/s]
77%|███████▋ | 7691/10000 [00:42<00:13, 168.81it/s]
77%|███████▋ | 7709/10000 [00:42<00:14, 159.11it/s]
77%|███████▋ | 7726/10000 [00:42<00:14, 152.73it/s]
77%|███████▋ | 7742/10000 [00:42<00:15, 147.07it/s]
78%|███████▊ | 7757/10000 [00:42<00:15, 143.12it/s]
78%|███████▊ | 7772/10000 [00:43<00:15, 140.83it/s]
78%|███████▊ | 7787/10000 [00:43<00:15, 139.14it/s]
78%|███████▊ | 7801/10000 [00:43<00:15, 137.64it/s]
78%|███████▊ | 7815/10000 [00:43<00:15, 136.70it/s]
78%|███████▊ | 7829/10000 [00:43<00:15, 135.81it/s]
78%|███████▊ | 7843/10000 [00:43<00:15, 135.44it/s]
79%|███████▊ | 7858/10000 [00:43<00:15, 136.88it/s]
79%|███████▊ | 7872/10000 [00:43<00:15, 136.01it/s]
79%|███████▉ | 7886/10000 [00:43<00:15, 135.37it/s]
79%|███████▉ | 7900/10000 [00:43<00:15, 135.30it/s]
79%|███████▉ | 7914/10000 [00:44<00:15, 134.47it/s]
79%|███████▉ | 7928/10000 [00:44<00:15, 133.79it/s]
79%|███████▉ | 7942/10000 [00:44<00:15, 134.45it/s]
80%|███████▉ | 7959/10000 [00:44<00:14, 141.34it/s]
80%|███████▉ | 7974/10000 [00:44<00:14, 135.43it/s]
80%|███████▉ | 7988/10000 [00:44<00:15, 132.68it/s]
80%|████████ | 8002/10000 [00:44<00:14, 133.56it/s]
80%|████████ | 8017/10000 [00:44<00:14, 137.26it/s]
80%|████████ | 8031/10000 [00:44<00:14, 136.62it/s]
81%|████████ | 8053/10000 [00:45<00:12, 160.20it/s]
81%|████████ | 8077/10000 [00:45<00:10, 181.53it/s]
81%|████████ | 8101/10000 [00:45<00:09, 196.53it/s]
81%|████████▏ | 8125/10000 [00:45<00:09, 207.07it/s]
81%|████████▏ | 8149/10000 [00:45<00:08, 214.46it/s]
82%|████████▏ | 8173/10000 [00:45<00:08, 219.71it/s]
82%|████████▏ | 8197/10000 [00:45<00:08, 223.45it/s]
82%|████████▏ | 8221/10000 [00:45<00:07, 226.00it/s]
82%|████████▏ | 8245/10000 [00:45<00:07, 227.81it/s]
83%|████████▎ | 8269/10000 [00:45<00:07, 229.15it/s]
83%|████████▎ | 8293/10000 [00:46<00:07, 230.01it/s]
83%|████████▎ | 8317/10000 [00:46<00:07, 230.69it/s]
83%|████████▎ | 8341/10000 [00:46<00:07, 231.13it/s]
84%|████████▎ | 8365/10000 [00:46<00:07, 231.51it/s]
84%|████████▍ | 8389/10000 [00:46<00:06, 231.77it/s]
84%|████████▍ | 8413/10000 [00:46<00:06, 231.93it/s]
84%|████████▍ | 8437/10000 [00:46<00:06, 232.04it/s]
85%|████████▍ | 8461/10000 [00:46<00:06, 232.14it/s]
85%|████████▍ | 8485/10000 [00:46<00:06, 232.17it/s]
85%|████████▌ | 8509/10000 [00:46<00:06, 232.03it/s]
85%|████████▌ | 8533/10000 [00:47<00:06, 232.12it/s]
86%|████████▌ | 8557/10000 [00:47<00:06, 232.08it/s]
86%|████████▌ | 8581/10000 [00:47<00:06, 232.08it/s]
86%|████████▌ | 8605/10000 [00:47<00:06, 232.07it/s]
86%|████████▋ | 8629/10000 [00:47<00:05, 232.07it/s]
87%|████████▋ | 8653/10000 [00:47<00:05, 232.00it/s]
87%|████████▋ | 8677/10000 [00:47<00:05, 232.02it/s]
87%|████████▋ | 8701/10000 [00:47<00:05, 231.92it/s]
87%|████████▋ | 8725/10000 [00:47<00:06, 191.64it/s]
87%|████████▋ | 8746/10000 [00:48<00:07, 171.62it/s]
88%|████████▊ | 8765/10000 [00:48<00:07, 159.56it/s]
88%|████████▊ | 8782/10000 [00:48<00:08, 152.04it/s]
88%|████████▊ | 8798/10000 [00:48<00:11, 101.26it/s]
88%|████████▊ | 8812/10000 [00:48<00:11, 107.39it/s]
88%|████████▊ | 8826/10000 [00:48<00:10, 112.75it/s]
88%|████████▊ | 8840/10000 [00:49<00:09, 118.38it/s]
89%|████████▊ | 8854/10000 [00:49<00:09, 121.87it/s]
89%|████████▊ | 8868/10000 [00:49<00:09, 124.92it/s]
89%|████████▉ | 8882/10000 [00:49<00:08, 126.69it/s]
89%|████████▉ | 8896/10000 [00:49<00:08, 128.30it/s]
89%|████████▉ | 8910/10000 [00:49<00:08, 129.69it/s]
89%|████████▉ | 8924/10000 [00:49<00:08, 128.48it/s]
89%|████████▉ | 8938/10000 [00:49<00:08, 129.52it/s]
90%|████████▉ | 8952/10000 [00:49<00:08, 130.40it/s]
90%|████████▉ | 8966/10000 [00:50<00:07, 131.71it/s]
90%|████████▉ | 8980/10000 [00:50<00:07, 132.31it/s]
90%|████████▉ | 8994/10000 [00:50<00:07, 132.41it/s]
90%|█████████ | 9008/10000 [00:50<00:07, 131.67it/s]
90%|█████████ | 9022/10000 [00:50<00:07, 132.00it/s]
90%|█████████ | 9036/10000 [00:50<00:07, 132.17it/s]
90%|█████████ | 9050/10000 [00:50<00:07, 132.15it/s]
91%|█████████ | 9067/10000 [00:50<00:06, 142.86it/s]
91%|█████████ | 9091/10000 [00:50<00:05, 169.32it/s]
91%|█████████ | 9115/10000 [00:50<00:04, 187.92it/s]
91%|█████████▏| 9139/10000 [00:51<00:04, 201.02it/s]
92%|█████████▏| 9163/10000 [00:51<00:03, 210.23it/s]
92%|█████████▏| 9187/10000 [00:51<00:03, 216.21it/s]
92%|█████████▏| 9210/10000 [00:51<00:03, 220.14it/s]
92%|█████████▏| 9234/10000 [00:51<00:03, 223.54it/s]
93%|█████████▎| 9258/10000 [00:51<00:03, 226.01it/s]
93%|█████████▎| 9282/10000 [00:51<00:03, 227.74it/s]
93%|█████████▎| 9306/10000 [00:51<00:03, 228.93it/s]
93%|█████████▎| 9330/10000 [00:51<00:02, 229.81it/s]
94%|█████████▎| 9354/10000 [00:51<00:02, 230.39it/s]
94%|█████████▍| 9378/10000 [00:52<00:02, 230.83it/s]
94%|█████████▍| 9402/10000 [00:52<00:02, 231.11it/s]
94%|█████████▍| 9426/10000 [00:52<00:02, 231.34it/s]
94%|█████████▍| 9450/10000 [00:52<00:02, 231.56it/s]
95%|█████████▍| 9474/10000 [00:52<00:02, 231.61it/s]
95%|█████████▍| 9498/10000 [00:52<00:02, 231.39it/s]
95%|█████████▌| 9522/10000 [00:52<00:02, 231.20it/s]
95%|█████████▌| 9546/10000 [00:52<00:01, 231.37it/s]
96%|█████████▌| 9570/10000 [00:52<00:01, 231.56it/s]
96%|█████████▌| 9594/10000 [00:53<00:01, 231.71it/s]
96%|█████████▌| 9618/10000 [00:53<00:01, 231.83it/s]
96%|█████████▋| 9642/10000 [00:53<00:01, 231.86it/s]
97%|█████████▋| 9666/10000 [00:53<00:01, 231.85it/s]
97%|█████████▋| 9690/10000 [00:53<00:01, 231.87it/s]
97%|█████████▋| 9714/10000 [00:53<00:01, 231.83it/s]
97%|█████████▋| 9738/10000 [00:53<00:01, 210.20it/s]
98%|█████████▊| 9760/10000 [00:53<00:01, 180.96it/s]
98%|█████████▊| 9779/10000 [00:53<00:01, 165.21it/s]
98%|█████████▊| 9797/10000 [00:54<00:01, 155.31it/s]
98%|█████████▊| 9814/10000 [00:54<00:01, 146.30it/s]
98%|█████████▊| 9830/10000 [00:54<00:01, 142.11it/s]
98%|█████████▊| 9845/10000 [00:54<00:01, 139.33it/s]
99%|█████████▊| 9860/10000 [00:54<00:01, 136.73it/s]
99%|█████████▊| 9874/10000 [00:54<00:00, 135.46it/s]
99%|█████████▉| 9888/10000 [00:54<00:00, 134.51it/s]
99%|█████████▉| 9902/10000 [00:54<00:00, 134.02it/s]
99%|█████████▉| 9916/10000 [00:55<00:00, 133.34it/s]
99%|█████████▉| 9931/10000 [00:55<00:00, 137.62it/s]
99%|█████████▉| 9946/10000 [00:55<00:00, 139.23it/s]
100%|█████████▉| 9960/10000 [00:55<00:00, 136.92it/s]
100%|█████████▉| 9974/10000 [00:55<00:00, 135.06it/s]
100%|█████████▉| 9988/10000 [00:55<00:00, 134.17it/s]
100%|██████████| 10000/10000 [00:58<00:00, 172.36it/s]
Define new variables
Defining new variables...: 0%| | 0/10 [00:00<?, ?it/s]
Defining new variables...: 10%|█ | 1/10 [00:00<00:05, 1.59it/s]
Defining new variables...: 20%|██ | 2/10 [00:01<00:05, 1.41it/s]
Defining new variables...: 30%|███ | 3/10 [00:02<00:05, 1.36it/s]
Defining new variables...: 40%|████ | 4/10 [00:02<00:04, 1.36it/s]
Defining new variables...: 50%|█████ | 5/10 [00:03<00:03, 1.34it/s]
Defining new variables...: 60%|██████ | 6/10 [00:04<00:02, 1.33it/s]
Defining new variables...: 70%|███████ | 7/10 [00:05<00:02, 1.34it/s]
Defining new variables...: 80%|████████ | 8/10 [00:05<00:01, 1.34it/s]
Defining new variables...: 90%|█████████ | 9/10 [00:06<00:00, 1.34it/s]
Defining new variables...: 100%|██████████| 10/10 [00:07<00:00, 1.34it/s]
Defining new variables...: 100%|██████████| 10/10 [00:56<00:00, 5.70s/it]
File cnl_10_63.dat has been created.
logprob = the_model_generation.get_cross_nested_logit()
the_biogeme = bio.BIOGEME(biogeme_database, logprob)
the_biogeme.modelName = MODEL_NAME
File biogeme.toml has been parsed.
Calculate the null log likelihood for reporting.
the_biogeme.calculateNullLoglikelihood({i: 1 for i in range(context.total_sample_size)})
-23025.850929942502
Estimate the parameters.
results = the_biogeme.estimate(recycle=False)
*** Initial values of the parameters are obtained from the file __cnl_10_63.iter
Cannot read file __cnl_10_63.iter. Statement is ignored.
Optimization algorithm: hybrid Newton/BFGS with simple bounds [simple_bounds]
** Optimization: Newton with trust region for simple bounds
Iter. beta_chinese beta_ethiopian beta_french beta_indian beta_japanese beta_korean beta_lebanese beta_log_dist beta_mexican beta_price beta_rating mu_asian mu_downtown Function Relgrad Radius Rho
0 -0.074 -0.091 0.095 -0.091 0.2 -0.065 -0.06 -1 0.74 -0.53 0.55 1.3 1.3 1.6e+04 0.15 10 0.94 ++
1 0.74 0.51 0.92 1.2 1.6 0.84 0.78 -0.49 1.2 -0.41 0.8 1.9 1.5 1.4e+04 0.056 1e+02 0.9 ++
2 0.83 0.52 0.8 1.1 1.3 0.85 0.75 -0.6 1.3 -0.43 0.75 2.1 1.8 1.4e+04 0.016 1e+03 1 ++
3 0.78 0.53 0.78 1.1 1.3 0.82 0.76 -0.59 1.2 -0.42 0.75 2.1 1.9 1.4e+04 0.0027 1e+04 1.1 ++
4 0.77 0.53 0.78 1.1 1.3 0.81 0.76 -0.59 1.2 -0.42 0.75 2.1 1.9 1.4e+04 0.0001 1e+05 1 ++
5 0.77 0.53 0.78 1.1 1.3 0.81 0.76 -0.59 1.2 -0.42 0.75 2.1 1.9 1.4e+04 1.5e-07 1e+05 1 ++
Results saved in file cnl_10_63~00.html
Results saved in file cnl_10_63~00.pickle
print(results.short_summary())
Results for model cnl_10_63
Nbr of parameters: 13
Sample size: 10000
Excluded data: 0
Null log likelihood: -23025.85
Final log likelihood: -14092.76
Likelihood ratio test (null): 17866.18
Rho square (null): 0.388
Rho bar square (null): 0.387
Akaike Information Criterion: 28211.52
Bayesian Information Criterion: 28305.26
estimated_parameters = results.getEstimatedParameters()
estimated_parameters
df, msg = compare(estimated_parameters)
print(df)
Name True Value Estimated Value T-Test
0 beta_rating 0.75 0.746966 0.201726
1 beta_price -0.40 -0.420492 1.647755
2 beta_chinese 0.75 0.765983 -0.265467
3 beta_japanese 1.25 1.296880 -1.016593
4 beta_korean 0.75 0.811152 -1.151761
5 beta_indian 1.00 1.097405 -1.864958
6 beta_french 0.75 0.777741 -0.560769
7 beta_mexican 1.25 1.241028 0.298658
8 beta_lebanese 0.75 0.755723 -0.118305
9 beta_ethiopian 0.50 0.526412 -0.636482
10 beta_log_dist -0.60 -0.586730 -1.046964
11 mu_asian 2.00 2.123777 -1.840468
12 mu_downtown 2.00 1.930837 2.303824
print(msg)
Total running time of the script: (6 minutes 12.700 seconds)