Skip to main content

Quick start

The following example uses the base searchlogit to estimate a mixed logit model for choices of electricity supplier (See the data here). The parameters are:

  • X: 2-D array of input data (in long format) with choice situations as rows, and variables as columns

  • y: 1-D array of choices (in long format)

  • varnames: List of variable names that matches the number and order of the columns in X

  • alts: 1-D array of alternative indexes or an alternatives list

  • ids: 1-D array of the ids of the choice situations

  • panels: 1-D array of ids for panel formation

  • randvars: dictionary of variables and their mixing distributions ("n" normal, "ln" lognormal, "t" triangular, "u" uniform, "tn" truncated normal)

  • transvars: List of variables to apply the specified transformation

  • transformation: String specifying the transformation to be applied (default is the Box-Cox transformation)

  • correlation: Either a list of variables names that are correlated or a boolean to set all randvars as correlated

The current version of searchlogit only supports input data in long format.

# Read data from CSV file
import pandas as pd
df = pd.read_csv("https://raw.githubusercontent.com/arteagac/xlogit/master/examples/data/electricity_long.csv")

# reverse sign for randvars with a lognormal distribution
df['tod'] = -df['tod']
df['seas'] = -df['seas']

X = df[varnames]
y = df['choice']

# Fit the model with xlogit
from searchlogit import MixedLogit
model = MixedLogit()
model.fit(X, y,
          varnames,
          alts=df['alt'],
          ids=df['chid'],
          panels=df['id'],
          randvars={'cl':'n','loc':'n','wk':'u','tod':'ln','seas':'n'},
          correlation=['loc', 'wk', 'tod', 'seas'],
          transvars=['cl'],
          n_draws=600
          )
model.summary()
Optimization terminated successfully.
        Current function value: 3942.930393
        Iterations: 66
        Function evaluations: 77
        Gradient evaluations: 77
Estimation time= 51.5 seconds
Frequencies of alternatives: observed choice
[0.22576177 0.26246537 0.23684211 0.26939058]
Frequencies of alternatives: predicted choice
[0.22930773 0.26222102 0.22989339 0.2730377 ]
---------------------------------------------------------------------------
Coefficient              Estimate      Std.Err.         z-val         P>|z|
---------------------------------------------------------------------------
pf                  -0.8844627763  0.0295175526 -29.9639603432             0 ***
loc                  2.2458727521  0.1032222566 21.7576405168             0 ***
wk                   0.2276055259  0.0685607922  3.3197621949      0.000901 ***
tod                  2.1355682749  0.0376005793 56.7961535512             0 ***
seas                 8.7966341596  0.2824599096 31.1429475855             0 ***
chol.loc.loc         1.3698552163  0.1301206261 10.5275793490             0 ***
chol.wk.loc          0.5137795414  0.0664560103  7.7311222681      1.07e-14 ***
chol.wk.wk          -0.5269078200  0.0465699165 -11.3143389438             0 ***
chol.tod.loc        -0.0092950782  0.0277084890 -0.3354595849         0.737
chol.tod.wk          0.0694307288  0.0316747405  2.1919904546        0.0284 *
chol.tod.tod         0.3998943075  0.0283441100 14.1085504981             0 ***
chol.seas.loc        0.2636579056  0.1466998262  1.7972611991        0.0723 .
chol.seas.wk        -0.0387176619  0.1862974259 -0.2078271435         0.835
chol.seas.tod        1.0931383738  0.1523794076  7.1737933030      7.29e-13 ***
chol.seas.seas      -2.9951794692  0.1818545992 -16.4701881742             0 ***
cl                  -0.1571373624  0.0234064621 -6.7134179193       1.9e-11 ***
sd.cl                0.2767984154  0.0345402217  8.0137996096      1.11e-15 ***
lambda.cl            1.1525365710  0.1287181869  1.1850428803         0.236
---------------------------------------------------------------------------
Significance:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Log-Likelihood= -3942.930
AIC= 7921.861
BIC= 7991.861

Quick install

Install searchlogit using pip as follows:

pip install searchlogit

No GPU? No problem

searchlogit can also be used without a GPU. However, if you need to speed up your model estimation, there are several low cost and even free options to access cloud GPU resources. For instance:

  • Google Colab offers free GPU resources for learning purposes with no setup required, as the service can be accessed using a web browser. Using searchlogit in Google Colab is very easy as it runs out of the box without needing to install CUDA or CuPy, which are installed by default.

  • For examples of xlogit running in Google Colab see this link.

  • The Google Cloud platform offers GPU processing starting at $0.45 USD per hour for a NVIDIA Tesla K80 GPU with 4,992 CUDA cores.

  • Amazon Sagemaker offers virtual machine instances with the same TESLA K80 GPU at less than $1 USD per hour.

Benchmark

searchlogit extends xlogit. As shown in the plots below, xlogit is significantly faster than existing estimation packages. Also, xlogit provides convenient scaling when the number of random draws increases. These results were obtained using a modest and low-cost NVIDIA GTX 1060 graphics card. More sophisticated graphics cards are expected to provide even faster estimation times. For additional details about this benchmark and for replication instructions check https://xlogit.readthedocs.io/en/latest/benchmark.html.

https://raw.githubusercontent.com/arteagac/xlogit/master/examples/benchmark/results/time_benchmark_artificial.png https://raw.githubusercontent.com/arteagac/xlogit/master/examples/benchmark/results/time_benchmark_apollo_biogeme.png

Notes

The current version allows estimation of:

  • Mixed Logit with several types of mixing distributions (normal, lognormal, triangular, uniform, and truncated normal)

  • Mixed Logit with panel data

  • Mixed Logit with unbalanced panel data

  • Mixed Logit with Halton draws

  • Mixed Logit with correlated random variables

  • Mixed Logit with Box-Cox transformed fixed and random variables

  • Multinomial Logit models with Box-Cox transformed fixed and random variables

  • Conditional logit models

  • Latent class logit models

  • Latent class mixed logit models

  • Weighed regression for all of the logit-based models

  • Handling of unbalanced availability of choice alternatives for all of the supported models

  • Post-estimation tools for prediction and specification testing

  • Inclusion of sample weights for all of the supported models

Contact

If you have any questions, ideas to improve searchlogit, or want to report a bug, just open a new issue in xlogit’s GitHub repository .

Citing searchlogit

Please cite searchlogit as follows:

Beeramoole, P. B., Alexander, P., Kelly, R., Arteaga, C.,. (2022). Searchlogit [Computer software]. https://pypi.org/project/searchlogit/

Or using BibTex as follows:

@misc{searchlogit,
    author = {Beeramoole, P and Paz, A and Kelly, R and Arteaga, C},
    title = "{Searchlogit [Computer software]},
    url = {https://pypi.org/project/searchlogit/},
    year = {2022}
}

Metadata

Release files for searchlogit 0.3.159

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for searchlogit 0.3.159
File Interpreter ABI Platform
searchlogit-0.3.159-py3-none-any.whl Python 3 none any Details

Release files / searchlogit-0.3.159-py3-none-any.whl

Download URL searchlogit-0.3.159-py3-none-any.whl
Size 204.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
da06681d51fdf978eaaa53d0e47d906c315e81a172003ef03fe7c878185266e0
BLAKE2b-256 checksum
How to use checksums
884bef82cf646bdce04a8d68a16a704fc71e4e2381d61ef0f6abb2050aaae622
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release history Release notifications | RSS feed

This release

0.3.159 This release

1 release file

0.3.157

1 release file

0.3.156

1 release file

0.3.147

1 release file

0.3.142

1 release file

0.3.141

1 release file

0.3.140

1 release file

0.3.138

1 release file

0.3.136

1 release file

0.3.129

1 release file

0.3.127

1 release file

0.3.118

1 release file

0.3.116

1 release file

0.3.110

1 release file

0.3.108

1 release file

0.3.107

1 release file

0.3.104

1 release file

0.3.95

2 release files

0.3.91

1 release file

0.3.89

1 release file

0.3.88

1 release file

0.3.87

1 release file

0.3.86

2 release files

0.3.85

1 release file

0.3.84

1 release file

0.3.83

2 release files

0.3.82

1 release file

0.3.81

1 release file

0.3.80

1 release file

0.3.77

1 release file

0.3.75

1 release file

0.3.71

1 release file

0.3.69

1 release file

0.3.67

1 release file

0.3.65

1 release file

0.3.62

2 release files

0.3.61

2 release files

0.3.60

2 release files

0.3.59

2 release files

0.3.58

2 release files

0.3.57

2 release files

0.3.56

2 release files

0.3.55

2 release files

0.3.54

2 release files

0.3.53

2 release files

0.3.52

2 release files

0.3.51

2 release files

0.3.50

2 release files

0.3.49

2 release files

0.3.48

2 release files

0.3.47

2 release files

0.3.46

2 release files

0.3.44

2 release files

0.3.43

2 release files

0.3.42

2 release files

0.3.41

2 release files

0.3.40

2 release files

0.3.39

2 release files

0.3.38

2 release files

0.3.37

2 release files

0.3.36

2 release files

0.3.35

2 release files

0.3.34

2 release files

0.3.25

2 release files

0.3.24

2 release files

0.3.23

2 release files

0.3.22

2 release files

0.3.21

2 release files

0.3.19

2 release files

0.3.17

2 release files

0.3.16

2 release files

0.3.15

2 release files

0.3.14

2 release files

0.3.13

2 release files

0.3.12

2 release files

0.3.11

2 release files

0.3.10

2 release files

0.3.9

2 release files

0.3.8

2 release files

0.3.7

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.2.99

2 release files

0.2.98

2 release files

0.2.97

2 release files

0.2.96

2 release files

0.2.95

2 release files

0.2.94

2 release files

0.2.93

2 release files

0.2.92

2 release files

0.2.88

2 release files

0.2.87

2 release files

0.2.86

2 release files

0.2.85

2 release files

0.2.84

2 release files

0.2.83

2 release files

0.2.82

2 release files

0.2.81

2 release files

0.2.80

2 release files

0.2.79

2 release files

0.2.78

2 release files

0.2.77

2 release files

0.2.76

2 release files

0.2.75

2 release files

0.2.74

2 release files

0.2.73

2 release files

0.2.72

2 release files

0.2.71

2 release files

0.2.70

2 release files

0.2.69

2 release files

0.2.68

2 release files

0.2.67

2 release files

0.2.66

2 release files

0.2.65

2 release files

0.2.64

2 release files

0.2.51

2 release files

0.2.50

2 release files

0.2.49

2 release files

0.2.48

2 release files

0.2.47

2 release files

0.2.46

2 release files

0.2.45

2 release files

0.2.44

2 release files

0.2.34

2 release files

0.2.33

2 release files

0.2.32

2 release files

0.2.31

2 release files

0.2.30

2 release files

0.2.29

2 release files

0.2.28

2 release files

0.2.27

2 release files

0.2.26

2 release files

0.2.25

2 release files

0.2.24

2 release files

0.2.23

2 release files

0.2.22

2 release files

0.2.21

2 release files

0.2.20

2 release files

0.2.19

2 release files

0.2.18

2 release files

0.2.17

2 release files

0.2.16

2 release files

0.2.15

2 release files

0.2.14

2 release files

0.2.13

2 release files

0.2.12

2 release files

0.2.11

2 release files

0.2.10

2 release files

0.2.9

2 release files

0.2.8

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.32

2 release files

0.1.31

2 release files

0.1.30

2 release files

0.1.29

2 release files

0.1.28

2 release files

0.1.27

2 release files

0.1.26

2 release files

0.1.25

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.87

2 release files

0.0.86

2 release files

0.0.85

2 release files

0.0.82

2 release files

0.0.81

2 release files

0.0.80

2 release files

0.0.79

2 release files

0.0.78

2 release files

0.0.77

2 release files

0.0.76

2 release files

0.0.75

2 release files

0.0.74

2 release files

0.0.73

2 release files

0.0.72

2 release files

0.0.71

2 release files

0.0.70

2 release files

0.0.69

2 release files

0.0.68

2 release files

0.0.67

2 release files

0.0.66

2 release files

0.0.52

2 release files

0.0.51

2 release files

0.0.50

2 release files

0.0.49

2 release files

0.0.48

2 release files

0.0.47

2 release files

0.0.46

2 release files

0.0.45

2 release files

0.0.44

2 release files

0.0.43

2 release files

0.0.41

2 release files

0.0.40

2 release files

0.0.39

2 release files

0.0.31

2 release files

0.0.30

2 release files

0.0.29

2 release files

0.0.28

2 release files

0.0.26

2 release files

0.0.25

2 release files

0.0.9

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page