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)

Gallery generated by Sphinx-Gallery