Tools

Generic convenient tools.

biogeme.tools module

Implements some useful functions

author

Michel Bierlaire

date

Sun Apr 14 10:46:10 2019

biogeme.tools.calculatePrimeNumbers(upperBound)[source]

Calculate prime numbers

Parameters

upperBound (int) – prime numbers up to this value will be computed

Returns

array with prime numbers

Return type

list(int)

>>> tools.calculatePrimeNumbers(10)
[2, 3, 5, 7]
biogeme.tools.checkDerivatives(theFunction, x, names=None, logg=False)[source]

Verifies the analytical derivatives of a function by comparing them with finite difference approximations.

Parameters
  • theFunction (function) –

    A function object that takes a vector as an argument, and returns a tuple:

    • The first element of the tuple is the value of the function \(f\),

    • the second is the gradient of the function,

    • the third is the hessian.

  • x (numpy.array) – arguments of the function

  • names (list(string)) – the names of the entries of x (for reporting).

  • logg (bool) – if True, messages will be displayed.

Returns

tuple f, g, h, gdiff, hdiff where

  • f is the value of the function at x,

  • g is the analytical gradient,

  • h is the analytical hessian,

  • gdiff is the difference between the analytical gradient and the finite difference approximation

  • hdiff is the difference between the analytical hessian and the finite difference approximation

Return type

float, numpy.array,numpy.array, numpy.array,numpy.array

biogeme.tools.countNumberOfGroups(df, column)[source]

This function counts the number of groups of same value in a column. For instance: 1,2,2,3,3,3,4,1,1 would give 5.

Example:

>>>df = pd.DataFrame({'ID': [1, 1, 2, 3, 3, 1, 2, 3],
                      'value':[1000,
                               2000,
                               3000,
                               4000,
                               5000,
                               5000,
                               10000,
                               20000]})
>>>tools.countNumberOfGroups(df,'ID')
6

>>>tools.countNumberOfGroups(df,'value')
7
biogeme.tools.findiff_H(theFunction, x)[source]

Calculates the hessian of a function \(f\) using finite differences

Parameters
  • theFunction (function) – A function object that takes a vector as an argument, and returns a tuple. The first element of the tuple is the value of the function \(f\), and the second is the gradient of the function. The other elements are not used.

  • x (numpy.array) – argument of the function

Returns

numpy matrix containing the hessian calculated by finite differences.

Return type

numpy.array

biogeme.tools.findiff_g(theFunction, x)[source]

Calculates the gradient of a function :math`f` using finite differences

Parameters
  • theFunction (function) – A function object that takes a vector as an argument, and returns a tuple. The first element of the tuple is the value of the function \(f\). The other elements are not used.

  • x (numpy.array) – argument of the function

Returns

numpy vector, same dimension as x, containing the gradient calculated by finite differences.

Return type

numpy.array

biogeme.tools.getPrimeNumbers(n)[source]

Get a given number of prime numbers

Parameters

n (int) – number of primes that are requested

Returns

array with prime numbers

Return type

list(int)

biogeme.tools.likelihood_ratio_test(model1, model2, significance_level=0.95)[source]

This function performs a likelihood ratio test between a restricted and an unrestricted model.

Parameters
  • model1 (tuple(float, int)) – the final loglikelood of one model, and the number of estimated parameters.

  • model2 (tuple(float, int)) – the final loglikelood of the other model, and the number of estimated parameters.

  • significance_level (float) – level of significance of the test. Default: 0.95

Returns

a tuple containing:

  • a message with the outcome of the test

  • the statistic, that is minus two times the difference between the loglikelihood of the two models

  • the threshold of the chi square distribution.

Return type

(str, float, float)

Raises

biogemeError – if the unrestricted model has a lower log likelihood than the restricted model.