evomap
offers a comprehensive toolbox to create, explore and analyze spatial representations ('maps') from relationship data. Common applications include Marketing (market structure analysis), Network Analysis (e.g., social, economic, or biological networks), Political Science, or High-Dimensional Data Analysis in general.
Often, relationship data is retrievable over time, as markets and networks tend to evolve. evomap
provides all necessary tools to analyze such data in maps either in static snapshots at a single point in time, or in evolving maps across multiple periods. evomap
provides an all-in-one solution and integrates many steps of the analysis into an easy-to-use API. Specifically, evomap
includes modules for
- preprocessing
- mapping (static/dynamic)
- evaluation
- plotting
Note: As of now, evomap
is available as a pre-release version and parts of evomap
are still under active development. For any bug reports or feature requests, please get in touch.
This pre-release is available via PyPi.
To install evomap
run
pip install evomap
evomap
works best with Python version 3.9. We recommend using Python within a virtual environment, for instance via conda:
conda create -n evomap python=3.9
conda activate evomap
pip install evomap
Note: Currently, evomap
builds its C extensions upon installation on the system. Thus, it requires a C compiler to be present. The right C compiler depends upon your system, e.g. GCC on Linux or MSVC on Windows. For details, see the Cython documentation. In future versions, extensions will be pre-compiled.
The following tutorials provide a good starting point for using evomap
.
For a simple introduction to a typical market structure application, see this example.
If you want to dive deaper into what evomap
has to offer, check out the following examples on
Updated versions of these examples will be available as new features are released.
As of now, evomap
provides implementations of the following mapping methods:
- MDS (Multidimensional Scaling)
- Sammon Mapping (non-linear MDS)
- t-SNE (t-distributed Stochastic Neighbor Embedding)
You can apply all methods statically and dynamically. Moreover, evomap
follows the syntax conventions of scikit-learn
, such that other
machine-learning techniques (such as LLE, Isomap, ... ) can easily be integrated. For more background, see here.
This package is based on the authors' work in
[1] Matthe, M., Ringel, D. M., Skiera, B. (2023), Mapping Market Structure Evolution. Marketing Science, Vol. 42, Issue 3, 589-613.
Read the full paper here (open access): https://doi.org/10.1287/mksc.2022.1385
Please cite our paper if you use this package or part of its code
evomap
also builds upon the work of others, including
[2] Ringel, D. M., & Skiera, B. (2016). Visualizing asymmetric competition among more than 1,000 products using big search data. Marketing Science, 35(3), 511-534.
[3] Torgerson, W. S. (1952). Multidimensional Scaling: I. Theory and method. Psychometrika, 17(4), 401-419.
[4] Van der Maaten, L., & Hinton, G. (2008). Visualizing data using t-SNE. Journal of Machine Learning Research, 9(11).
[5] Sammon, J. W. (1969). A nonlinear mapping for data structure analysis. IEEE Transactions on computers, 100(5), 401-409.
[6] Kruskal, J. B. (1964). Multidimensional scaling by optimizing goodness of fit to a nonmetric hypothesis. Psychometrika, 29(1), 1-27.
If you use the respective methods implemented in evomap
, consider also citing the original references.
Interested in contributing? Check out the contributing guidelines. Please note that this project is released with a Code of Conduct. By contributing to this project, you agree to abide by its terms.
evomap
is licensed under the terms of the MIT license. It is free to use, however, please cite our work.
evomap
was created with cookiecutter
and the py-pkgs-cookiecutter
template.