Note
Go to the end to download the full example code.
Generalized translated MDCEV estimation¶
Michel Bierlaire, EPFL Fri Jul 25 2025, 16:51:40
Estimation of a MDCEV model with the “generalized translated utility” specification.
from IPython.core.display_functions import display
import biogeme.biogeme_logging as blog
from biogeme.results_processing import get_pandas_estimated_parameters
from generalized_specification import the_generalized
from process_data import database, number_chosen
from specification import consumed_quantities
# %
logger = blog.get_screen_logger(level=blog.INFO)
logger.info('Example: generalized translated utility')
# %
results = the_generalized.estimate_parameters(
database=database,
number_of_chosen_alternatives=number_chosen,
consumed_quantities=consumed_quantities,
tolerance=4e-5,
)
Example: generalized translated utility
Biogeme parameters read from biogeme.toml.
*** Initial values of the parameters are obtained from the file __generalized.iter
Cannot read file __generalized.iter. Statement is ignored.
Starting values for the algorithm: {}
Analytical Hessian method: full
As the model is not too complex, we activate the calculation of second derivatives. To change this behavior, modify the algorithm to "simple_bounds" in the TOML file.
Optimization algorithm: hybrid Newton/BFGS with simple bounds [simple_bounds]
** Optimization: Newton with trust region for simple bounds
Iter. Function Relgrad Radius Rho
0 2e+04 0.65 1 0.26 +
1 1.9e+04 0.1 10 1 ++
2 1.9e+04 0.1 1.2 -9.2 -
3 1.9e+04 0.1 0.62 -3.5 -
4 1.9e+04 0.1 0.31 -0.44 -
5 1.8e+04 0.095 0.31 0.42 +
6 1.7e+04 0.031 3.1 1 ++
7 1.7e+04 0.031 0.69 -3.3 -
8 1.7e+04 0.093 0.69 0.37 +
9 1.7e+04 0.029 6.9 0.91 ++
10 1.7e+04 0.0053 69 1 ++
11 1.7e+04 0.04 6.9e+02 1.1 ++
12 1.7e+04 0.0015 6.9e+03 1 ++
13 1.7e+04 0.021 6.9e+04 1.1 ++
14 1.7e+04 0.00099 6.9e+05 1 ++
15 1.7e+04 0.0049 6.9e+06 1.3 ++
16 1.7e+04 0.00083 6.9e+07 1 ++
17 1.7e+04 0.0059 6.9e+08 1.1 ++
18 1.7e+04 0.002 6.9e+09 1 ++
19 1.7e+04 0.0064 6.9e+09 0.78 +
20 1.7e+04 0.00046 1e+10 1 ++
21 1.7e+04 0.00096 1e+10 1.2 ++
22 1.7e+04 0.00038 1e+10 1 ++
23 1.7e+04 0.00076 1e+10 0.86 +
24 1.7e+04 0.00026 1e+10 1.1 ++
25 1.7e+04 0.00029 1e+10 1 ++
26 1.7e+04 0.00072 1e+10 0.96 ++
27 1.7e+04 0.00029 1e+10 1 ++
28 1.7e+04 0.00027 1e+10 1 ++
29 1.7e+04 0.012 1e+10 1 ++
30 1.7e+04 0.00063 1e+10 1 ++
31 1.7e+04 0.00029 1e+10 0.96 ++
32 1.7e+04 0.0012 1e+10 1 ++
33 1.7e+04 0.00028 1e+10 0.93 ++
34 1.7e+04 0.00019 1e+10 1.1 ++
35 1.7e+04 0.00019 1e+10 0.93 ++
36 1.7e+04 0.00018 1e+10 1.1 ++
37 1.7e+04 0.00019 1e+10 0.94 ++
38 1.7e+04 0.00017 1e+10 1.1 ++
39 1.7e+04 0.00018 1e+10 0.93 ++
40 1.7e+04 0.00019 1e+10 1.1 ++
41 1.7e+04 0.00022 1e+10 0.92 ++
42 1.7e+04 0.00018 1e+10 1.1 ++
43 1.7e+04 0.00082 1e+10 1 ++
44 1.7e+04 0.00017 1e+10 0.97 ++
45 1.7e+04 0.00029 1e+10 1 ++
46 1.7e+04 0.00016 1e+10 0.97 ++
47 1.7e+04 0.00019 1e+10 1 ++
48 1.7e+04 0.0002 1e+10 0.98 ++
49 1.7e+04 0.00016 1e+10 1 ++
50 1.7e+04 0.00025 1e+10 0.98 ++
51 1.7e+04 0.00016 1e+10 1 ++
52 1.7e+04 0.00021 1e+10 0.97 ++
53 1.7e+04 0.00015 1e+10 1 ++
54 1.7e+04 0.0002 1e+10 0.95 ++
55 1.7e+04 0.00015 1e+10 1 ++
56 1.7e+04 0.00038 1e+10 1 ++
57 1.7e+04 0.00013 1e+10 0.97 ++
58 1.7e+04 9.2e-05 1e+10 1 ++
59 1.7e+04 0.00014 1e+10 0.96 ++
60 1.7e+04 0.00013 1e+10 1 ++
61 1.7e+04 0.00013 1e+10 1 ++
62 1.7e+04 0.00056 1e+10 1 ++
63 1.7e+04 0.00013 1e+10 0.94 ++
64 1.7e+04 0.00012 1e+10 0.99 ++
65 1.7e+04 0.00018 1e+10 1 ++
66 1.7e+04 0.0012 1e+10 0.77 +
67 1.7e+04 0.00011 1e+10 0.94 ++
68 1.7e+04 0.00013 1e+10 1 ++
69 1.7e+04 0.00011 1e+10 0.99 ++
70 1.7e+04 9.2e-05 1e+10 1 ++
71 1.7e+04 0.0001 1e+10 0.98 ++
72 1.7e+04 0.00011 1e+10 1 ++
73 1.7e+04 0.0001 1e+10 0.98 ++
74 1.7e+04 0.0001 1e+10 1 ++
75 1.7e+04 9.9e-05 1e+10 0.98 ++
76 1.7e+04 0.00011 1e+10 1 ++
77 1.7e+04 0.0001 1e+10 1 ++
78 1.7e+04 0.0001 1e+10 0.98 ++
79 1.7e+04 9.6e-05 1e+10 1 ++
80 1.7e+04 0.0001 1e+10 0.98 ++
81 1.7e+04 9.7e-05 1e+10 1 ++
82 1.7e+04 0.0001 1e+10 0.98 ++
83 1.7e+04 9.7e-05 1e+10 1 ++
84 1.7e+04 0.0001 1e+10 0.98 ++
85 1.7e+04 9.5e-05 1e+10 1 ++
86 1.7e+04 9.9e-05 1e+10 0.97 ++
87 1.7e+04 9.3e-05 1e+10 1 ++
88 1.7e+04 0.0001 1e+10 0.96 ++
89 1.7e+04 0.0001 1e+10 1 ++
90 1.7e+04 8.4e-05 1e+10 1 ++
91 1.7e+04 9.9e-05 1e+10 0.98 ++
92 1.7e+04 9.7e-05 1e+10 1 ++
93 1.7e+04 8.4e-05 1e+10 1 ++
94 1.7e+04 0.00013 1e+10 0.98 ++
95 1.7e+04 8.7e-05 1e+10 1 ++
96 1.7e+04 9.8e-05 1e+10 0.98 ++
97 1.7e+04 9.2e-05 1e+10 1 ++
98 1.7e+04 8.3e-05 1e+10 1 ++
99 1.7e+04 9e-05 1e+10 0.97 ++
100 1.7e+04 8.6e-05 1e+10 1 ++
101 1.7e+04 8.9e-05 1e+10 0.98 ++
102 1.7e+04 8.4e-05 1e+10 1 ++
103 1.7e+04 9e-05 1e+10 0.98 ++
104 1.7e+04 8.2e-05 1e+10 1 ++
105 1.7e+04 9.2e-05 1e+10 0.98 ++
106 1.7e+04 7.4e-05 1e+10 1 ++
107 1.7e+04 9.9e-05 1e+10 0.99 ++
108 1.7e+04 9.3e-05 1e+10 1 ++
109 1.7e+04 8.8e-05 1e+10 1 ++
110 1.7e+04 0.00096 1e+10 0.86 +
111 1.7e+04 7.5e-05 1e+10 0.97 ++
112 1.7e+04 8.3e-05 1e+10 1 ++
113 1.7e+04 7.3e-05 1e+10 0.99 ++
114 1.7e+04 0.00011 1e+10 1 ++
115 1.7e+04 8.1e-05 1e+10 0.99 ++
116 1.7e+04 8.9e-05 1e+10 1 ++
117 1.7e+04 8.1e-05 1e+10 1 ++
118 1.7e+04 7.9e-05 1e+10 1 ++
119 1.7e+04 0.00076 1e+10 0.95 ++
120 1.7e+04 0.0001 1e+10 1 ++
121 1.7e+04 8.8e-05 1e+10 1 ++
122 1.7e+04 7.2e-05 1e+10 0.99 ++
123 1.7e+04 7.9e-05 1e+10 1 ++
124 1.7e+04 7e-05 1e+10 1 ++
125 1.7e+04 0.00012 1e+10 1 ++
126 1.7e+04 7.6e-05 1e+10 0.99 ++
127 1.7e+04 7e-05 1e+10 1 ++
128 1.7e+04 6.6e-05 1e+10 1 ++
129 1.7e+04 6.6e-05 2.7 -27 -
130 1.7e+04 6.6e-05 1.3 -1.3 -
131 1.7e+04 0.0015 13 0.94 ++
132 1.7e+04 6.6e-05 1.3e+02 1 ++
133 1.7e+04 6.1e-05 1.3e+03 1 ++
134 1.7e+04 5e-05 1.3e+04 0.99 ++
135 1.7e+04 6.1e-05 1.3e+05 1 ++
136 1.7e+04 4.6e-05 1.3e+06 0.99 ++
137 1.7e+04 5.8e-05 1.3e+07 1 ++
138 1.7e+04 5.6e-05 1.3e+08 0.98 ++
139 1.7e+04 5.6e-05 1.3e+09 1 ++
140 1.7e+04 9.6e-05 1e+10 0.95 ++
141 1.7e+04 5.8e-05 1e+10 1 ++
142 1.7e+04 6.7e-05 1e+10 1 ++
143 1.7e+04 8.9e-05 1e+10 1 ++
144 1.7e+04 5.8e-05 1e+10 1 ++
145 1.7e+04 0.00014 1e+10 1 ++
146 1.7e+04 5.7e-05 1e+10 1 ++
147 1.7e+04 3.1e-05 1e+10 0.99 ++
Optimization algorithm has converged.
Relative gradient: 3.08022383890033e-05
Cause of termination: Relative gradient = 3.1e-05 <= 4e-05
Number of function evaluations: 433
Number of gradient evaluations: 285
Number of hessian evaluations: 142
Algorithm: Newton with trust region for simple bound constraints
Number of iterations: 148
Proportion of Hessian calculation: 142/142 = 100.0%
Optimization time: 0:00:04.101414
Optimization is complete. Save recoverable results in generalized.yaml.
File generalized.yaml has been generated.
Calculate final gradient and BHHH
File generalized.yaml has been generated.
Calculate second derivatives
File generalized.yaml has been generated.
File generalized.html has been generated.
File generalized.yaml has been generated.
print(results.short_summary())
Results for model generalized
Nbr of parameters: 30
Sample size: 4413
Excluded data: 0
Final log likelihood: -16963.19
Akaike Information Criterion: 33986.38
Bayesian Information Criterion: 34178.15
Get the results in a pandas table
pandas_results = get_pandas_estimated_parameters(
estimation_results=results,
)
display(pandas_results)
{'Estimated parameters': Name Value ... Robust p-value Active bound
0 scale 6.605753 ... 2.318616e-10 False
1 cte_shopping -0.423986 ... 1.603677e-09 False
2 metropolitan_shopping 0.035874 ... 1.182807e-02 False
3 male_shopping 0.057273 ... 2.407794e-05 False
4 age_15_40_shopping 0.043829 ... 9.883479e-04 False
5 spouse_shopping 0.036231 ... 1.335346e-03 False
6 employed_shopping 0.026939 ... 1.064771e-02 False
7 alpha_shopping 0.615191 ... 1.554312e-15 False
8 gamma_shopping 2.085453 ... 2.105894e-09 False
9 cte_socializing -0.288307 ... 1.499895e-09 False
10 number_members_socializing 0.009743 ... 7.040148e-04 False
11 male_socializing 0.073681 ... 1.543035e-07 False
12 age_41_60_socializing -0.037791 ... 1.746398e-03 False
13 bachelor_socializing -0.028529 ... 1.253677e-03 False
14 sunday_socializing 0.056853 ... 1.503333e-06 False
15 alpha_socializing 0.790963 ... 0.000000e+00 False
16 gamma_socializing 2.861612 ... 5.460077e-13 False
17 cte_recreation -0.483386 ... 7.049663e-10 False
18 number_members_recreation 0.011627 ... 1.748382e-03 False
19 male_recreation 0.127972 ... 1.208952e-08 False
20 age_15_40_recreation 0.070180 ... 5.925021e-06 False
21 spouse_recreation -0.038636 ... 3.564425e-04 False
22 alpha_recreation 0.000100 ... 9.994485e-01 True
23 gamma_recreation 27.308276 ... 1.468050e-03 False
24 age_41_60_personal -0.031992 ... 8.881847e-03 False
25 bachelor_personal -0.026395 ... 5.889045e-03 False
26 white_personal -0.051930 ... 2.268625e-05 False
27 sunday_personal 0.053013 ... 7.052202e-06 False
28 alpha_personal 0.339632 ... 3.073891e-03 False
29 gamma_personal 1.864362 ... 0.000000e+00 False
[30 rows x 6 columns]}
Total running time of the script: (0 minutes 5.800 seconds)