Repository: KaveIO/PhiK Branch: master Commit: 4574c81f0d6b Files: 57 Total size: 1.0 MB Directory structure: gitextract_19gb0anp/ ├── .gitattributes ├── .github/ │ ├── dependabot.yml │ └── workflows/ │ ├── test_matrix.yml │ ├── tests.yml │ ├── valgrind.yml │ └── wheels.yml ├── .gitignore ├── .mbuild.sh ├── .readthedocs.yml ├── CHANGES.rst ├── CMakeLists.txt ├── LICENSE ├── NOTICE ├── README.rst ├── docs/ │ ├── Makefile │ ├── README.rst │ ├── autogenerate.sh │ └── source/ │ ├── code.rst │ ├── conf.py │ ├── developing.rst │ ├── index.rst │ ├── introduction.rst │ ├── phik.decorators.rst │ ├── phik.rst │ ├── phik_index.rst │ ├── publication.rst │ └── tutorials.rst ├── example.py ├── phik/ │ ├── __init__.py │ ├── betainc.py │ ├── binning.py │ ├── bivariate.py │ ├── data_quality.py │ ├── decorators/ │ │ ├── __init__.py │ │ └── pandas.py │ ├── definitions.py │ ├── entry_points.py │ ├── notebooks/ │ │ ├── phik_tutorial_advanced.ipynb │ │ ├── phik_tutorial_basic.ipynb │ │ └── phik_tutorial_spark.ipynb │ ├── outliers.py │ ├── phik.py │ ├── report.py │ ├── resources.py │ ├── significance.py │ ├── simcore/ │ │ ├── __init__.py │ │ ├── asa159.cpp │ │ ├── asa159.hpp │ │ ├── bindings.cpp │ │ └── simulation.hpp │ ├── simulation.py │ ├── statistics.py │ └── utils.py ├── pyproject.toml └── tests/ ├── integration/ │ ├── test_phik_tutorial_advanced.py │ └── test_phik_tutorial_basic.py └── test_phik.py ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitattributes ================================================ phik/notebooks/* linguist-vendored ================================================ FILE: .github/dependabot.yml ================================================ --- version: 2 updates: - package-ecosystem: pip directory: / # Check for updates once a day schedule: interval: daily allow: - dependency-type: all - package-ecosystem: github-actions directory: / # Check for updates once a week schedule: interval: weekly ================================================ FILE: .github/workflows/test_matrix.yml ================================================ name: Test Matrix on: workflow_dispatch: pull_request: push: branches: - master jobs: build: name: ${{ matrix.platform }} Python ${{ matrix.python-version }} strategy: fail-fast: false matrix: platform: [windows-latest, macos-latest, ubuntu-latest] python-version: ["3.9", "3.10", "3.11", "3.12"] runs-on: ${{ matrix.platform }} steps: - uses: actions/checkout@v6 with: submodules: true - uses: actions/setup-python@v6 with: python-version: ${{ matrix.python-version }} - name: Add requirements run: | python -m pip install --upgrade pip wheel - name: Build and install run: pip install --verbose ".[test]" - name: Unit test run: | cd tests pytest test_phik.py -v -W ignore::DeprecationWarning - name: Integration test run: | cd tests pytest integration -v -W ignore::DeprecationWarning ================================================ FILE: .github/workflows/tests.yml ================================================ name: Test on: push jobs: tests: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - name: Set up Python uses: actions/setup-python@v6 with: python-version: 3.9 - name: Install dependencies run: | python -m pip install --upgrade pip pip install . -v pip install "pytest>=4.0.2" "pytest-pylint>=0.13.0" - name: Test with pytest run: | cd tests pytest test_phik.py -W ignore::DeprecationWarning ================================================ FILE: .github/workflows/valgrind.yml ================================================ name: Valgrind on: pull_request: branches: - master workflow_dispatch: defaults: run: shell: bash jobs: pre_job: # continue-on-error: true # Uncomment once integration is finished runs-on: ubuntu-latest # Map a step output to a job output outputs: should_skip: ${{ steps.skip_check.outputs.should_skip }} steps: - id: skip_check uses: fkirc/skip-duplicate-actions@master with: # All of these options are optional, so you can remove them if you are happy with the defaults cancel_others: 'true' do_not_skip: '["pull_request", "workflow_dispatch", "schedule"]' build: name: Valgrind needs: pre_job if: ${{ needs.pre_job.outputs.should_skip != 'true' }} runs-on: ubuntu-latest steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v6 with: submodules: false - uses: actions/setup-python@v6 with: python-version: '3.10' - name: Install dependencies on ubuntu run: | sudo apt-get update sudo apt-get install -y valgrind - name: Install python packages run: | python -m pip install --upgrade pip pytest - name: Install run: | # temp fix for Valgrind issue with later versions pip install scipy==1.9.1 CMAKE_ARGS="-DCMAKE_BUILD_TYPE=Debug" pip install . -v - name: Test run: | cd tests PYTHONMALLOC=malloc valgrind --leak-check=yes --track-origins=yes --log-file=valgrind-log.txt python -m pytest test_phik.py -W ignore::DeprecationWarning ================================================ FILE: .github/workflows/wheels.yml ================================================ name: Wheels on: workflow_dispatch: pull_request: push: branches: - master release: types: - published jobs: make_sdist: name: Make SDist runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - name: Build SDist run: pipx run build --sdist - uses: actions/upload-artifact@v7 with: name: artifact-sdist path: dist/*.tar.gz build_wheels: name: Wheels on ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest] steps: - uses: actions/checkout@v6 with: submodules: true - uses: actions/setup-python@v6 with: python-version: "3.12" - uses: pypa/cibuildwheel@v3.3.1 env: CIBW_ENVIRONMENT: MACOSX_DEPLOYMENT_TARGET=10.13 CIBW_BUILD: 'cp38-* cp39-* cp310-* cp311-* cp312-* cp313-* cp314-*' CIBW_TEST_EXTRAS: test CIBW_TEST_COMMAND: pytest {project}/tests/test_phik.py -W ignore::DeprecationWarning CIBW_ARCHS: "auto64" CIBW_ARCHS_MACOS: "x86_64 arm64" # Skip 32-bit builds CIBW_SKIP: "*-win32 *-manylinux_i686 *-musllinux_x86_64" - name: Show files run: ls -lh wheelhouse shell: bash - name: Verify clean directory run: git diff --exit-code shell: bash - name: Upload wheels uses: actions/upload-artifact@v7 with: name: artifact-${{ matrix.os }} path: wheelhouse/*.whl upload_all: needs: [build_wheels, make_sdist] runs-on: ubuntu-latest if: github.event_name == 'release' && github.event.action == 'published' steps: - uses: actions/download-artifact@v8 with: pattern: artifact-* merge-multiple: true path: dist - uses: pypa/gh-action-pypi-publish@release/v1 with: user: __token__ password: ${{ secrets.pypi_password }} ================================================ FILE: .gitignore ================================================ *.so *egg-info* ================================================ FILE: .mbuild.sh ================================================ cmake -S . -G Ninja -B build \ -DCMAKE_BUILD_TYPE=Release \ -DSKBUILD_PROJECT_NAME="phik" \ -DSKBUILD_PROJECT_VERSION="0.12.4" \ -DPHIK_MBUILD=ON \ -DPython3_EXECUTABLE=$(python3 -c 'import sys; print(sys.executable)') \ -Dpybind11_DIR=$(python3 -c 'import pybind11; print(pybind11.get_cmake_dir())') \ -DCMAKE_EXPORT_COMPILE_COMMANDS=ON cmake --build build --target install --config Release --parallel 4 ================================================ FILE: .readthedocs.yml ================================================ # Read the Docs configuration file # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details # .readthedocs.yml # Required version: 2 # Set the version of Python build: os: ubuntu-22.04 tools: python: "3.10" python: install: - method: pip path: . extra_requirements: - doc ================================================ FILE: CHANGES.rst ================================================ ============= Release notes ============= Version 0.12.5, Jul 2025 ------------------------ - FIX: scipy 1.16.0 no longer supports mvn, code now migrated to qmvn. https://github.com/KaveIO/PhiK/issues/101 https://github.com/KaveIO/PhiK/pull/102 - Drop support for Python 3.8, has reached end of life. Version 0.12.4, Jan 2024 ------------------------ - Add support for Python 3.12. - ENH: added plotting kwargs to correlation_report function. https://github.com/KaveIO/PhiK/issues/58 - FIX: fix of bin edge values they are rounded with 1e-14 https://github.com/KaveIO/PhiK/issues/60 - FIX: numpy random multinomial requires integer number of samples (for nixOS) https://github.com/KaveIO/PhiK/issues/73 - FIX: pandas deprecation warning https://github.com/KaveIO/PhiK/pull/74 - Drop support for Python 3.7, has reached end of life. Version 0.12.3, Dec 2022 ------------------------ - Add support for Python 3.11 Version 0.12.2, Mar 2022 ------------------------ - Fix missing setup.py and pyproject.toml in source distribution - Support wheels ARM MacOS (Apple silicone) Version 0.12.1, Mar 2022 ------------------------ - Two fixes to make calculation of global phik robust: global phik capped in range [0, 1], and check for successful correlation matrix inversion. - Migration to to scikit-build 0.13.1. - Support wheels for Python 3.10. Version 0.12.0, July 2021 ------------------------- C++ Extension ~~~~~~~~~~~~~ Phi_K contains an optional C++ extension to compute the significance matrix using the `hypergeometric` method (also called the`Patefield` method). Note that the PyPi distributed wheels contain a pre-build extension for Linux, MacOS and Windows. A manual (pip) setup will attempt to build and install the extension, if it fails it will install without the extension. If so, using the `hypergeometric` method without the extension will trigger a NotImplementedError. Compiler requirements through Pybind11: - Clang/LLVM 3.3 or newer (for Apple Xcode's clang, this is 5.0.0 or newer) - GCC 4.8 or newer - Microsoft Visual Studio 2015 Update 3 or newer - Intel classic C++ compiler 18 or newer (ICC 20.2 tested in CI) - Cygwin/GCC (previously tested on 2.5.1) - NVCC (CUDA 11.0 tested in CI) - NVIDIA PGI (20.9 tested in CI) Other ~~~~~ * You can now manually set the number of parallel jobs in the evaluation of Phi_K or its statistical significance (when using MC simulations). For example, to use 4 parallel jobs do: .. code-block:: python df.phik_matrix(njobs = 4) df.significance_matrix(njobs = 4) The default value is -1, in which case all available cores are used. When using ``njobs=1`` no parallel processing is applied. * Phi_K can now be calculated with an independent expectation histogram: .. code-block:: python from phik.phik import phik_from_hist2d cols = ["mileage", "car_size"] interval_cols = ["mileage"] observed = df1[["feature1", "feature2"]].hist2d() expected = df2[["feature1", "feature2"]].hist2d() phik_value = phik_from_hist2d(observed=observed, expected=expected) The expected histogram is taken to be (relatively) large in number of counts compared with the observed histogram. Or can compare two (pre-binned) datasets against each other directly. Again the expected dataset is assumed to be relatively large: .. code-block:: python from phik.phik import phik_observed_vs_expected_from_rebinned_df phik_matrix = phik_observed_vs_expected_from_rebinned_df(df1_binned, df2_binned) * Added links in the readme to the basic and advanced Phi_K tutorials on google colab. * Migrated the spark example Phi_K notebook from popmon to directly using histogrammar for histogram creation. Older versions -------------- * Please see documentation for full details: https://phik.readthedocs.io ================================================ FILE: CMakeLists.txt ================================================ cmake_minimum_required(VERSION 3.17...3.27) # Scikit-build-core sets these values for you, or you can just hard-code the # name and version. project( ${SKBUILD_PROJECT_NAME} VERSION ${SKBUILD_PROJECT_VERSION} DESCRIPTION "C++ bindings for simulation RXC tables" LANGUAGES CXX) set(CMAKE_CXX_STANDARD 14) # Define CMAKE_INSTALL_xxx: LIBDIR, INCLUDEDIR include(GNUInstallDirs) find_package(Python REQUIRED COMPONENTS Interpreter Development.Module) find_package(pybind11 CONFIG REQUIRED) set(SUBPATH ${PROJECT_SOURCE_DIR}/phik/simcore/) # ############################################################################## # build ASA159 library # # ############################################################################## if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC") endif() add_library(_asa159 OBJECT ${SUBPATH}/asa159.cpp) target_include_directories(_asa159 PRIVATE ${SUBPATH}) # ############################################################################## # EXECUTABLE # # ############################################################################## pybind11_add_module(_phik_simulation_core MODULE ${SUBPATH}/bindings.cpp ${SUBPATH}/simulation.hpp $) target_compile_definitions(_phik_simulation_core PRIVATE VERSION_INFO=${SKBUILD_PROJECT_VERSION}) target_include_directories( _phik_simulation_core PUBLIC $ $) if(PHIK_MBUILD) set(CMAKE_INSTALL_PREFIX "${PROJECT_SOURCE_DIR}") endif() install(TARGETS _phik_simulation_core LIBRARY DESTINATION "${PROJECT_NAME}/lib") # Quiet a warning, since this project is only valid with SKBUILD set(ignoreMe "${SKBUILD}") ================================================ FILE: LICENSE ================================================ ############################################################################## # # Copyright 2016 KPMG Advisory N.V. (unless otherwise stated) # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # ############################################################################## ================================================ FILE: NOTICE ================================================ ################################################################################################ # # NOTICE: pass-through licensing of bundled components # # PhiK gathers together a toolkit of pre-existing third-party open-source software components. # These software components are governed by their own licenses which PhiK does not # modify or supersede, please consult the originating authors. These components altogether # have a mixture of the following licenses: Apache 2.0, GPL 2.0, AGPL and LGPL, ZPL, MIT, PSF, # BSD and some BSD-like simple licenses. # For scipy and numpy see: http://docs.continuum.io/anaconda/licenses.html . # # Although we have examined the licenses to verify acceptance of commercial and non-commercial # use, please see and consult the original licenses or authors. # ################################################################################################ ================================================ FILE: README.rst ================================================ ========================== Phi_K Correlation Constant ========================== * Version: 0.12.5. Released: Jul 2025 * Release notes: https://github.com/KaveIO/PhiK/blob/master/CHANGES.rst * Repository: https://github.com/kaveio/phik * Documentation: https://phik.readthedocs.io * Publication: `[offical] `_ `[arxiv pre-print] `_ Phi_K is a practical correlation constant that works consistently between categorical, ordinal and interval variables. It is based on several refinements to Pearson's hypothesis test of independence of two variables. Essentially, the contingency test statistic of two variables is interpreted as if coming from a rotated bi-variate normal distribution, where the tilt is interpreted as Phi_K. The combined features of Phi_K form an advantage over existing coefficients. First, it works consistently between categorical, ordinal and interval variables. Second, it captures non-linear dependency. Third, it reverts to the Pearson correlation coefficient in case of a bi-variate normal input distribution. These are useful features when studying the correlation matrix of variables with mixed types. For details on the methodology behind the calculations, please see our publication. Emphasis is paid to the proper evaluation of statistical significance of correlations and to the interpretation of variable relationships in a contingency table, in particular in case of low statistics samples. The presented algorithms are easy to use and available through this public Python library. Example notebooks ================= .. list-table:: :widths: 60 40 :header-rows: 1 * - Static link - Google Colab link * - `basic tutorial `_ - `basic on colab `_ * - `advanced tutorial (detailed configuration) `_ - `advanced on colab `_ * - `spark tutorial `_ - no spark available Documentation ============= The entire Phi_K documentation including tutorials can be found at `read-the-docs `_. See the tutorials for detailed examples on how to run the code with pandas. We also have one example on how calculate the Phi_K correlation matrix for a spark dataframe. Check it out ============ The Phi_K library requires Python >= 3.8 and is pip friendly. To get started, simply do: .. code-block:: bash $ pip install phik or check out the code from out GitHub repository: .. code-block:: bash $ git clone https://github.com/KaveIO/PhiK.git $ pip install -e PhiK/ where in this example the code is installed in edit mode (option -e). You can now use the package in Python with: .. code-block:: python import phik **Congratulations, you are now ready to use the PhiK correlation analyzer library!** Quick run ========= As a quick example, you can do: .. code-block:: python import pandas as pd import phik from phik import resources, report # open fake car insurance data df = pd.read_csv( resources.fixture('fake_insurance_data.csv.gz') ) df.head() # Pearson's correlation matrix between numeric variables (pandas functionality) df.corr() # get the phi_k correlation matrix between all variables df.phik_matrix() # get global correlations based on phi_k correlation matrix df.global_phik() # get the significance matrix (expressed as one-sided Z) # of the hypothesis test of each variable-pair dependency df.significance_matrix() # contingency table of two columns cols = ['mileage','car_size'] df[cols].hist2d() # normalized residuals of contingency test applied to cols df[cols].outlier_significance_matrix() # show the normalized residuals of each variable-pair df.outlier_significance_matrices() # generate a phik correlation report and save as test.pdf report.correlation_report(df, pdf_file_name='test.pdf') For all available examples, please see the `tutorials `_ at read-the-docs. Contact and support =================== * Issues and Ideas: https://github.com/kaveio/phik/issues Please note that support is (only) provided on a best-effort basis. ================================================ FILE: docs/Makefile ================================================ # Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = BUILDDIR = build # User-friendly check for sphinx-build ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) $(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) endif # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source # the i18n builder cannot share the environment and doctrees with the others I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source .PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest coverage gettext help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " singlehtml to make a single large HTML file" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " applehelp to make an Apple Help Book" @echo " devhelp to make HTML files and a Devhelp project" @echo " epub to make an epub" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " latexpdf to make LaTeX files and run them through pdflatex" @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" @echo " text to make text files" @echo " man to make manual pages" @echo " texinfo to make Texinfo files" @echo " info to make Texinfo files and run them through makeinfo" @echo " gettext to make PO message catalogs" @echo " changes to make an overview of all changed/added/deprecated items" @echo " xml to make Docutils-native XML files" @echo " pseudoxml to make pseudoxml-XML files for display purposes" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" @echo " coverage to run coverage check of the documentation (if enabled)" clean: rm -rf $(BUILDDIR)/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." singlehtml: $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml @echo @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in $(BUILDDIR)/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in $(BUILDDIR)/qthelp, like this:" @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/DecisionEngine.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/DecisionEngine.qhc" applehelp: $(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp @echo @echo "Build finished. The help book is in $(BUILDDIR)/applehelp." @echo "N.B. You won't be able to view it unless you put it in" \ "~/Library/Documentation/Help or install it in your application" \ "bundle." devhelp: $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp @echo @echo "Build finished." @echo "To view the help file:" @echo "# mkdir -p $$HOME/.local/share/devhelp/DecisionEngine" @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/DecisionEngine" @echo "# devhelp" epub: $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub @echo @echo "Build finished. The epub file is in $(BUILDDIR)/epub." latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." @echo "Run \`make' in that directory to run these through (pdf)latex" \ "(use \`make latexpdf' here to do that automatically)." latexpdf: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo "Running LaTeX files through pdflatex..." $(MAKE) -C $(BUILDDIR)/latex all-pdf @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." latexpdfja: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo "Running LaTeX files through platex and dvipdfmx..." $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." text: $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text @echo @echo "Build finished. The text files are in $(BUILDDIR)/text." man: $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man @echo @echo "Build finished. The manual pages are in $(BUILDDIR)/man." texinfo: $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo @echo @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." @echo "Run \`make' in that directory to run these through makeinfo" \ "(use \`make info' here to do that automatically)." info: $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo @echo "Running Texinfo files through makeinfo..." make -C $(BUILDDIR)/texinfo info @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." gettext: $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale @echo @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes @echo @echo "The overview file is in $(BUILDDIR)/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in $(BUILDDIR)/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in $(BUILDDIR)/doctest/output.txt." coverage: $(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage @echo "Testing of coverage in the sources finished, look at the " \ "results in $(BUILDDIR)/coverage/python.txt." xml: $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml @echo @echo "Build finished. The XML files are in $(BUILDDIR)/xml." pseudoxml: $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml @echo @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." ================================================ FILE: docs/README.rst ================================================ Generating Documentation with Sphinx ==================================== This README is for generating and writing documentation using Sphinx. On the repository there should already be the auto-generated files along with the regular documentation. Installing Sphinx ----------------- First install Sphinx. Go to http://www.sphinx-doc.org/en/stable/ or run :: pip install -U Sphinx pip install -U sphinx-rtd-theme conda install -c conda-forge nbsphinx The eskapade/docs folder has the structure of a Sphinx project. However, if you want to make a new Sphinx project run: :: sphinx-quickstart It quickly generates a conf.py file which contains your configuration for your sphinx build. Update the HTML docs -------------------- Now we want Sphinx to autogenerate from docstrings and other documentation in the code base. Luckily Sphinx has the apidoc functionality. This goes through a path, finds all the python files and depending on your arguments, parses certain parts of the code (docstring, hidden classes, etc.). **First make sure your environment it setup properly. Python must be able to import all modules otherwise it will not work!** From the the root of the repository: :: $ source setup.sh To run the autogeneration of the documentation type in /docs/: :: ./autogenerate.sh to scan the pyfiles and generate \*.rst files with the documentation. The script itself contains the usage of apidoc. Now to make the actual documentation files run: :: make clean to clean up the old make of sphinx and run: :: make html to make the new html build. It will be stored in (your config can adjust this, but the default is:) docs/build/html/ The index.html is the starting page. Open this file to see the result. Mounting a different repository to vagrant ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ When you want to develop code that is not part of the repository that your vagrant is in, you can mount it seperately. This is done by changing the Vagrantfile, by changing the ``#mount`` line to the path of the repository that you want to mount: :: config.vm.synced_folder "", "", id: "esrepo" where the location to mount is e.g. /opt/eskapade. What is an .rst file? ~~~~~~~~~~~~~~~~~~~~~ R(e)ST is the format that Sphinx uses it stands for ReSTructured (http://docutils.sourceforge.net/docs/user/rst/quickref.html). It looks for other RST files to import, see index.rst to see how the **toctree** refers to other files. ================================================ FILE: docs/autogenerate.sh ================================================ #!/bin/bash # (re)create required directories rm -rf autogen mkdir -p source/_static autogen # auto-generate code documentation sphinx-apidoc -f -H PhiK -o autogen ../python/phik mv autogen/modules.rst autogen/phik_index.rst mv autogen/* source/ # remove auto-gen directory rm -rf autogen ================================================ FILE: docs/source/code.rst ================================================ API Documentation ================= .. toctree:: :maxdepth: 2 phik_index ================================================ FILE: docs/source/conf.py ================================================ # -*- coding: utf-8 -*- # # PhiK documentation build configuration file for sphinx. # # import os #from unittest.mock import MagicMock import phik # Classes that use non-python modules are not always available in the # RTD environment. By mocking them we can still import these classes # in the code and RTD can subsequently go through the code and get # the docstrings. #class Mock(MagicMock): # @classmethod # def __getattr__(cls, name): # return MagicMock() # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. # sys.path.insert(0, os.path.abspath('')) # -- General configuration ------------------------------------------------ # If your documentation needs a minimal Sphinx version, state it here. # needs_sphinx = '1.0' # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ 'sphinx.ext.autodoc', 'sphinx.ext.mathjax', 'sphinx.ext.ifconfig', ] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix(es) of source filenames. # You can specify multiple suffix as a list of string: # source_suffix = ['.rst', '.md'] source_suffix = '.rst' # The encoding of source files. # source_encoding = 'utf-8-sig' # The master toctree document. master_doc = 'index' # General information about the project. project = 'Phi_K correlation library' copyright = '2018, KPMG Advisory N.V.' author = 'KPMG Advanced Analytics & Big Data team' version = phik.__version__ # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. # # This is also used if you do content translation via gettext catalogs. # Usually you set "language" from the command line for these cases. language = 'en' # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. exclude_patterns = ['*test*', 'phik.tutorials.*'] # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # If true, `todo` and `todoList` produce output, else they produce nothing. todo_include_todos = False # -- Options for HTML output ---------------------------------------------- # on_rtd is whether we are on readthedocs.org, this line of code grabbed from docs.readthedocs.org on_rtd = os.environ.get('READTHEDOCS', None) == 'True' if not on_rtd: import sphinx_rtd_theme html_theme = "sphinx_rtd_theme" html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] # otherwise, readthedocs.org uses their theme by default, so no need to specify it # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If false, no index is generated. html_use_index = True # If true, the index is split into individual pages for each letter. # html_split_index = False # If true, links to the reST sources are added to the pages. html_show_sourcelink = True # If true, "Created using Sphinx" is shown in the HTML footer. Default is True. # html_show_sphinx = True # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. html_show_copyright = True # Language to be used for generating the HTML full-text search index. # Sphinx supports the following languages: # 'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja' # 'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr' html_search_language = 'en' # Output file base name for HTML help builder. htmlhelp_basename = 'PhiKdoc' # -- Options for LaTeX output --------------------------------------------- latex_elements = { # The paper size ('letterpaper' or 'a4paper'). # 'papersize': 'letterpaper', # The font size ('10pt', '11pt' or '12pt'). # 'pointsize': '10pt', # Additional stuff for the LaTeX preamble. # 'preamble': '', # Latex figure (float) alignment # 'figure_align': 'htbp', } # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, # author, documentclass [howto, manual, or own class]). latex_documents = [ (master_doc, 'PhiK.tex', 'PhiK Documentation', 'KPMG Advanced Analytics & Big Data team', 'manual'), ] # -- Options for manual page output --------------------------------------- # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ (master_doc, 'phik', 'PhiK Documentation', [author], 1) ] # -- Options for Texinfo output ------------------------------------------- # Grouping the document tree into Texinfo files. List of tuples # (source start file, target name, title, author, # dir menu entry, description, category) texinfo_documents = [ (master_doc, 'PhiK', 'PhiK Documentation', author, 'PhiK', 'One line description of project.', 'Miscellaneous'), ] def skip(app, what, name, obj, skip, options): if name == "__init__": return False return skip def setup(app): app.connect("autodoc-skip-member", skip) ================================================ FILE: docs/source/developing.rst ================================================ =========================== Developing and Contributing =========================== Working on the package ---------------------- You have some cool feature and/or algorithm you want to add to the package. How do you go about it? First clone the package. .. code-block:: bash git clone https://github.com/KaveIO/PhiK.git then .. code-block:: bash pip install -e PhiK/ this will install ``PhiK`` in editable mode, which will allow you to edit the code and run it as you would with a normal installation of the ``PhiK`` correlation analyzer package. To make sure that everything works try executing the tests, e.g. .. code-block:: bash cd PhiK/ phik_trial . or .. code-block:: bash cd PhiK/ python setup.py test That's it. Contributing ------------ When contributing to this repository, please first discuss the change you wish to make via issue, email, or any other method with the owners of this repository before making a change. You can find the contact information on the `index `_ page. Note that when contributing that all tests should succeed. Tips and Tricks --------------- - Enable auto reload in ``jupyter``: .. code-block:: python %load_ext autoreload this will reload modules before executing any user code. ================================================ FILE: docs/source/index.rst ================================================ .. PhiK documentation master file, created by sphinx-quickstart on Thu Jul 7 14:25:54 2016. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. .. include:: ../../README.rst Contents ======== .. toctree:: :maxdepth: 2 introduction tutorials publication developing API --- .. toctree:: :maxdepth: 1 code Indices and tables ------------------ * :ref:`genindex` * :ref:`modindex` ================================================ FILE: docs/source/introduction.rst ================================================ ====================== Why did we build this? ====================== When exploring a data set, for example to model one variable in terms of the others, it is useful to summarize the dependencies between the variables, assess their significances, and visualize the individual variable dependencies. The ``PhiK`` correlation analyzer library contains several useful functions to help one do so. * This library implements a novel correlation coefficient, :math:`\phi_{K}`, with properties that - taken together - form an advantage over existing methods. The calculation of correlation coefficients between paired data variables is a standard tool of analysis for every data analyst. Pearson's correlation coefficient is a de facto standard in most fields, but by construction only works for interval variables (sometimes called continuous variables). Pearson is unsuitable for data sets with mixed variable types, e.g. where some variables are ordinal or categorical. While many correlation coefficients exist, each with different features, we have not been able to find a correlation coefficient with Pearson-like characteristics and a sound statistical interpretation that works for interval, ordinal and categorical variable types alike. The correlation coefficient :math:`\phi_{K}` follows a uniform treatment for interval, ordinal and categorical variables, captures non-linear dependencies, and is similar to Pearson's correlation coefficient in case of a bivariate normal input distribution. * We found that, by default, popular analysis libraries such ``R`` and ``scipy`` make incorrect ("asymptotic") assumptions when assessing the statistical significance of the :math:`\chi^2` contingency test of variable independence. In particular, the actual number of degrees of freedom and the shape of the test statistic distribution can differ significantly from their theoretical predictions in case of low to medium statistics data samples. This leads to incorrect p-values for the hypothesis test of variable independence. A prescription has been implemented to fix these two mistakes. * Visualizing the dependency between variables can be tricky, especially when dealing with (unordered) categorical variables. To help interpret any variable relationship found, we provide a method for the detection of significant excesses or deficits of records with respect to the expected values in a contingency table, so-called outliers, using a statistically independent evaluation for expected frequency of records, accounting for the uncertainty on the expectation. We evaluate the significance of each outlier frequency in a table, and normalize and visualize these accordingly. The resulting plots we find to be very valuable to help interpret variable dependencies, and work alike for interval, ordinal and categorical variables. The ``PhiK`` analysis library is particularly useful in modern-day analysis when studying the dependencies between a set of variables with mixed types, where often some variables are categorical. The package has been used by us to study surveys, insurance claims, correlograms, etc. For details on the methodology behind the calculations, please see our publication. For the available examples on how to use the methods, please see the `tutorials `_ section. ================================================ FILE: docs/source/phik.decorators.rst ================================================ phik.decorators package ======================= Submodules ---------- phik.decorators.pandas module ----------------------------- .. automodule:: phik.decorators.pandas :members: :undoc-members: :show-inheritance: Module contents --------------- .. automodule:: phik.decorators :members: :undoc-members: :show-inheritance: ================================================ FILE: docs/source/phik.rst ================================================ phik package ============ Subpackages ----------- .. toctree:: phik.decorators Submodules ---------- phik.betainc module ------------------- .. automodule:: phik.betainc :members: :undoc-members: :show-inheritance: phik.binning module ------------------- .. automodule:: phik.binning :members: :undoc-members: :show-inheritance: phik.bivariate module --------------------- .. automodule:: phik.bivariate :members: :undoc-members: :show-inheritance: phik.data\_quality module ------------------------- .. automodule:: phik.data_quality :members: :undoc-members: :show-inheritance: phik.definitions module ----------------------- .. automodule:: phik.definitions :members: :undoc-members: :show-inheritance: phik.entry\_points module ------------------------- .. automodule:: phik.entry_points :members: :undoc-members: :show-inheritance: phik.outliers module -------------------- .. automodule:: phik.outliers :members: :undoc-members: :show-inheritance: phik.phik module ---------------- .. automodule:: phik.phik :members: :undoc-members: :show-inheritance: phik.report module ------------------ .. automodule:: phik.report :members: :undoc-members: :show-inheritance: phik.resources module --------------------- .. automodule:: phik.resources :members: :undoc-members: :show-inheritance: phik.significance module ------------------------ .. automodule:: phik.significance :members: :undoc-members: :show-inheritance: phik.simulation module ---------------------- .. automodule:: phik.simulation :members: :undoc-members: :show-inheritance: phik.statistics module ---------------------- .. automodule:: phik.statistics :members: :undoc-members: :show-inheritance: phik.version module ------------------- .. automodule:: phik.version :members: :undoc-members: :show-inheritance: Module contents --------------- .. automodule:: phik :members: :undoc-members: :show-inheritance: ================================================ FILE: docs/source/phik_index.rst ================================================ PhiK ==== .. toctree:: :maxdepth: 4 phik ================================================ FILE: docs/source/publication.rst ================================================ =================== Publication & Talks =================== Publication ----------- * peer-reviewed: https://www.sciencedirect.com/science/article/abs/pii/S0167947320301341 * arXiv pre-print: https://arxiv.org/abs/1811.11440 Talks ----- * Coming soon. Cite as ------- Baak, M., Koopman, R., Snoek, H., & Klous, S. (2020). A new correlation coefficient between categorical, ordinal and interval variables with Pearson characteristics. *Computational Statistics & Data Analysis*, 152, 107043. .. code-block:: latex @article{phik2020, title={A new correlation coefficient between categorical, ordinal and interval variables with Pearson characteristics}, author={Baak, M and Koopman, R and Snoek, H and Klous, S}, journal={Computational Statistics \& Data Analysis}, volume={152}, pages={107043}, year={2020}, publisher={Elsevier} } References ---------- * Web page: https://phik.readthedocs.io * Repository: https://github.com/kaveio/phik * Issues & Ideas: https://github.com/kaveio/phik/issues * Contact us at: kave [at] kpmg [dot] com ================================================ FILE: docs/source/tutorials.rst ================================================ ========= Tutorials ========= This section contains materials on how to use the Phi_K correlation analysis code. There are additional side notes on how certain aspects work and where to find parts of the code. For more in depth explanations on the functionality of the code-base, try the `API docs `_. The tutorials are available in the ``phik/notebooks`` directory. We have: * A basic tutorial: this covers the basics of calculating Phi_K, the statistical significance, and interpreting the correlation. * An advanced tutorial: this shows how to use the advanced features of the ``PhiK`` library. * A spark tutorial: this shows how to calculate the Phi_K correlation matrix for a spark dataframe. You can open these notebooks directly: * Run them interactively at `MyBinder `_. * View them statically: `basic tutorial `_ and the `advanced tutorial `_ and the `spark tutorial `_. ================================================ FILE: example.py ================================================ import pandas as pd import phik from phik import resources, report # open fake car insurance data df = pd.read_csv( resources.fixture('fake_insurance_data.csv.gz') ) df.head() # Pearson's correlation matrix between numeric variables (pandas functionality) df.corr() # get the phi_k correlation matrix between all variables df.phik_matrix() # get global correlations based on phi_k correlation matrix df.global_phik() # get the significance matrix (expressed as one-sided Z) # of the hypothesis test of each variable-pair dependency df.significance_matrix() # contingency table of two columns cols = ['mileage', 'car_size'] df[cols].hist2d() # normalized residuals of contingency test applied to cols df[cols].outlier_significance_matrix() # show the normalized residuals of each variable-pair df.outlier_significance_matrices() # generate a phik correlation report and save as test.pdf report.correlation_report(df, pdf_file_name='test.pdf') ================================================ FILE: phik/__init__.py ================================================ # flake8: noqa import importlib.metadata from phik import decorators from phik.outliers import ( outlier_significance_from_array, outlier_significance_matrices, outlier_significance_matrix, ) from phik.phik import global_phik_array, phik_from_array, phik_matrix from phik.significance import significance_from_array, significance_matrix __version__ = importlib.metadata.version("phik") __all__ = [ "decorators", "phik_from_array", "significance_from_array", "outlier_significance_from_array", "phik_matrix", "global_phik_array", "significance_matrix", "outlier_significance_matrices", "outlier_significance_matrix", ] ================================================ FILE: phik/betainc.py ================================================ """Project: PhiK - correlation analyzer library Created: 2018/09/05 Description: Implementation of incomplete beta function Authors: KPMG Advanced Analytics & Big Data team, Amstelveen, The Netherlands Redistribution and use in source and binary forms, with or without modification, are permitted according to the terms listed in the file LICENSE. """ import numpy as np from scipy.special import gammaln from typing import Tuple def contfractbeta( a: float, b: float, x: float, ITMAX: int = 5000, EPS: float = 1.0e-7 ) -> float: """Continued fraction form of the incomplete Beta function. Code translated from: Numerical Recipes in C. Example kindly taken from blog: https://malishoaib.wordpress.com/2014/04/15/the-beautiful-beta-functions-in-raw-python/ :param float a: a :param float b: b :param float x: x :param int ITMAX: max number of iterations, default is 5000. :param float EPS: epsilon precision parameter, default is 1e-7. :returns: continued fraction form :rtype: float """ az = 1.0 bm = 1.0 am = 1.0 qab = a + b qap = a + 1.0 qam = a - 1.0 bz = 1.0 - qab * x / qap for i in range(ITMAX + 1): em = float(i + 1) tem = em + em d = em * (b - em) * x / ((qam + tem) * (a + tem)) ap = az + d * am bp = bz + d * bm d = -(a + em) * (qab + em) * x / ((qap + tem) * (a + tem)) app = ap + d * az bpp = bp + d * bz aold = az am = ap / bpp bm = bp / bpp az = app / bpp bz = 1.0 if abs(az - aold) < EPS * abs(az): return az raise ValueError( "a={0:f} or b={1:f} too large, or ITMAX={2:d} too small to compute incomplete beta function.".format( a, b, ITMAX ) ) def incompbeta(a: float, b: float, x: float) -> float: """Evaluation of incomplete beta function. Code translated from: Numerical Recipes in C. Here a, b > 0 and 0 <= x <= 1. This function requires contfractbeta(a,b,x, ITMAX = 200) Example kindly taken from blog: https://malishoaib.wordpress.com/2014/04/15/the-beautiful-beta-functions-in-raw-python/ :param float a: a :param float b: b :param float x: x :returns: incomplete beta function :rtype: float """ # special cases if x == 0: return 0 elif x == 1: return 1 # default lbeta = gammaln(a + b) - gammaln(a) - gammaln(b) + a * np.log(x) + b * np.log(1 - x) if x < (a + 1) / (a + b + 2): p = np.exp(lbeta) * contfractbeta(a, b, x) / a else: p = 1 - np.exp(lbeta) * contfractbeta(b, a, 1 - x) / b return p def log_incompbeta(a: float, b: float, x: float) -> Tuple[float, float]: """Evaluation of logarithm of incomplete beta function Logarithm of incomplete beta function is implemented to ensure sufficient precision for values very close to zero and one. Code translated from: Numerical Recipes in C. Here a, b > 0 and 0 <= x <= 1. This function requires contfractbeta(a,b,x, ITMAX = 200) Example kindly taken from blog: https://malishoaib.wordpress.com/2014/04/15/the-beautiful-beta-functions-in-raw-python/ :param float a: a :param float b: b :param float x: x :returns: tuple of log(incb) and log(1-incb) :rtype: tuple """ # special cases if x == 0: return -np.inf, 0 elif x == 1: return 0, -np.inf # default lbeta = gammaln(a + b) - gammaln(a) - gammaln(b) + a * np.log(x) + b * np.log(1 - x) if x < (a + 1) / (a + b + 2): p = np.exp(lbeta) * contfractbeta(a, b, x) / a logp = lbeta + np.log(contfractbeta(a, b, x)) - np.log(a) logq = np.log(1 - p) else: p = 1 - np.exp(lbeta) * (contfractbeta(b, a, 1 - x) / b) logp = np.log(p) logq = lbeta + np.log(contfractbeta(b, a, 1 - x)) - np.log(b) return logp, logq ================================================ FILE: phik/binning.py ================================================ """Project: PhiK - correlation analyzer library Created: 2018/09/06 Description: A set of rebinning functions, to help rebin two lists into a 2d histogram. Authors: KPMG Advanced Analytics & Big Data team, Amstelveen, The Netherlands Redistribution and use in source and binary forms, with or without modification, are permitted according to the terms listed in the file LICENSE. """ import sys from typing import List, Optional, Tuple, Union import numpy as np import pandas as pd from phik import definitions as defs from phik.data_quality import dq_check_nunique_values from phik.utils import array_like_to_dataframe, guess_interval_cols def bin_edges( arr: Union[np.ndarray, list, pd.Series], nbins: int, quantile: bool = False ) -> np.ndarray: """ Create uniform or quantile bin-edges for the input array. :param arr: array like object with input data :param int nbins: the number of bin :param bool quantile: uniform bins (False) or bins based on quantiles (True) :returns: array with bin edges """ if quantile: quantiles = np.linspace(0, 1, nbins + 1) xbins = np.quantile(arr[~np.isnan(arr)], quantiles) xbins[0] -= max(1e-14 * abs(xbins[0]), sys.float_info.min) else: min_value = np.min(arr[~np.isnan(arr)]) constant = max(1e-14 * abs(min_value), sys.float_info.min) xbins = np.linspace( min_value - constant, np.max(arr[~np.isnan(arr)]), nbins + 1 ) return xbins def bin_array( arr: Union[np.ndarray, list], bin_edges: Union[np.ndarray, list] ) -> Tuple[np.ndarray, list]: """ Index the data given the bin_edges. Underflow and overflow values are indicated. :param arr: array like object with input data :param bin_edges: list with bin edges. :returns: indexed data """ # Bin data binned_arr = np.searchsorted(bin_edges, arr).astype(object) # Check if all bins are filled and store bin-labels bin_labels = [] bin_indices = pd.Series(binned_arr).value_counts().index for i in range(1, len(bin_edges)): if i in bin_indices: bin_labels.append((bin_edges[i - 1], bin_edges[i])) # NaN values are added to the overflow bin. Restore NaN values: binned_arr[np.argwhere(np.isnan(arr))] = np.nan # Set underflow values to UF binned_arr[np.argwhere(binned_arr == 0)] = defs.UF # Set overflow values to OF binned_arr[np.argwhere(binned_arr == len(bin_edges))] = defs.OF return binned_arr, bin_labels def bin_data( data: pd.DataFrame, cols: Union[list, np.ndarray, tuple] = (), bins: Union[int, list, np.ndarray, dict] = 10, quantile: bool = False, retbins: bool = False, ): """ Index the input DataFrame given the bin_edges for the columns specified in cols. :param DataFrame data: input data :param list cols: list of columns with numeric data which needs to be indexed :param bins: number of bins, or a list of bin edges (same for all columns), or a dictionary where per column the bins are specified. (default=10)\ E.g.: bins = {'mileage':5, 'driver_age':[18,25,35,45,55,65,125]} :param quantile: when bins is an integer, uniform bins (False) or bins based on quantiles (True) :returns: rebinned DataFrame :rtype: pandas.DataFrame """ xbins = None if isinstance(bins, dict): for col in cols: if col not in bins: raise ValueError( "column {0} is not included in bins dictionary.".format(col) ) elif isinstance(bins, (list, np.ndarray)): xbins = bins # MB 20210307: check for numeric bins turned off here, also done in dq_check_nunique_values(). binned_data = data.copy() bins_dict = {} for col in cols: if np.issubdtype(type(bins), np.integer) or np.issubdtype( type(bins), np.floating ): xbins = bin_edges(data[col].astype(float), int(bins), quantile=quantile) elif isinstance(bins, dict): if np.issubdtype(type(bins[col]), np.integer) or np.issubdtype( type(bins[col]), np.floating ): xbins = bin_edges( data[col].astype(float), int(bins[col]), quantile=quantile ) elif isinstance(bins[col], (list, np.ndarray)): xbins = bins[col] elif xbins is None: raise ValueError( "Unexpected type for bins. The found type was '%s'" % str(type(bins)) ) binned_data[col], bin_labels = bin_array(data[col].astype(float).values, xbins) if retbins: bins_dict[col] = bin_labels if retbins: return binned_data, bins_dict return binned_data def auto_bin_data( df: pd.DataFrame, interval_cols: Optional[list] = None, bins: Union[int, list, np.ndarray, dict] = 10, quantile: bool = False, dropna: bool = True, verbose: bool = True, ) -> pd.DataFrame: """ Index the input DataFrame with automatic bin_edges and interval columns. :param pd.DataFrame data_binned: input data :param list interval_cols: column names of columns with interval variables. :param bins: number of bins, or a list of bin edges (same for all columns), or a dictionary where per column the bins are specified. (default=10)\ E.g.: bins = {'mileage':5, 'driver_age':[18,25,35,45,55,65,125]} :param quantile: when bins is an integer, uniform bins (False) or bins based on quantiles (True) :param bool dropna: remove NaN values with True :param bool verbose: if False, do not print all interval columns that are guessed :return: phik correlation matrix """ # guess interval columns if interval_cols is None: interval_cols = guess_interval_cols(df, verbose) # clean the data df_clean, interval_cols_clean = dq_check_nunique_values( df, interval_cols, dropna=dropna ) # perform rebinning data_binned, binning_dict = bin_data( df_clean, cols=interval_cols_clean, bins=bins, quantile=quantile, retbins=True ) return data_binned, binning_dict def create_correlation_overview_table( vals: List[Tuple[str, str, float]] ) -> pd.DataFrame: """ Create overview table of phik/significance data. :param list vals: list holding tuples of data for each variable pair formatted as ('var1', 'var2', value) :returns: symmetric table with phik/significances of all variable pairs :rtype: pandas.DataFrame """ ll = [] for c0, c1, v in vals: ll.append([c0, c1, v]) ll.append([c1, c0, v]) corr_matrix = pd.DataFrame(ll, columns=["var1", "var2", "vals"]).pivot_table( index="var1", columns="var2", values="vals" ) corr_matrix.columns.name = None corr_matrix.index.name = None return corr_matrix def hist2d_from_rebinned_df( data_binned: pd.DataFrame, dropna: bool = True, drop_underflow: bool = True, drop_overflow: bool = True, ) -> pd.DataFrame: """ Give binned 2d DataFrame of two columns of rebinned input DataFrame :param df: input data. DataFrame must contain exactly two columns :param bool dropna: remove NaN values with True :param bool drop_underflow: do not take into account records in underflow bin when True (relevant when binning\ a numeric variable) :param bool drop_overflow: do not take into account records in overflow bin when True (relevant when binning\ a numeric variable) :returns: histogram DataFrame """ c0, c1 = data_binned.columns if not dropna: data_binned.fillna(defs.NaN, inplace=True) if drop_underflow: data_binned.replace(defs.UF, np.nan, inplace=True) if drop_overflow: data_binned.replace(defs.OF, np.nan, inplace=True) # create a contingency table df_datahist = ( data_binned.groupby([c0, c1])[c0].count().to_frame().unstack().fillna(0) ) df_datahist.columns = df_datahist.columns.droplevel() return df_datahist def hist2d( df: pd.DataFrame, interval_cols: Optional[Union[list, np.ndarray]] = None, bins: Union[int, float, list, np.ndarray, dict] = 10, quantile: bool = False, dropna: bool = True, drop_underflow: bool = True, drop_overflow: bool = True, retbins: bool = False, verbose: bool = True, ) -> Union[pd.DataFrame, Tuple[pd.DataFrame, dict]]: """ Give binned 2d DataFrame of two columns of input DataFrame :param df: input data. DataFrame must contain exactly two columns :param interval_cols: columns with interval variables which need to be binned :param bins: number of bins, or a list of bin edges (same for all columns), or a dictionary where per column the bins are specified. (default=10)\ E.g.: bins = {'mileage':5, 'driver_age':[18,25,35,45,55,65,125]} :param bool quantile: when the number of bins is specified, use uniform binning (False) or quantile binning (True) :param bool dropna: remove NaN values with True :param bool drop_underflow: do not take into account records in underflow bin when True (relevant when binning\ a numeric variable) :param bool drop_overflow: do not take into account records in overflow bin when True (relevant when binning\ a numeric variable) :param bool verbose: if False, do not print all interval columns that are guessed :returns: histogram DataFrame """ if len(df.columns) != 2: raise ValueError("DataFrame should contain only two columns") if interval_cols is None: interval_cols = guess_interval_cols(df, verbose) data_binned, binning_dict = bin_data( df, interval_cols, retbins=True, bins=bins, quantile=quantile ) datahist = hist2d_from_rebinned_df( data_binned, dropna=dropna, drop_underflow=drop_underflow, drop_overflow=drop_overflow, ) if retbins: return datahist, binning_dict return datahist def hist2d_from_array( x: Union[pd.Series, list, np.ndarray], y: [pd.Series, list, np.ndarray], **kwargs ) -> Union[pd.DataFrame, Tuple[pd.DataFrame, dict]]: """ Give binned 2d DataFrame of two input arrays :param x: input data. First array-like. :param y: input data. Second array-like. :param interval_cols: columns with interval variables which need to be binned :param bins: number of bins, or a list of bin edges (same for all columns), or a dictionary where per column the bins are specified. (default=10)\ E.g.: bins = {'mileage':5, 'driver_age':[18,25,35,45,55,65,125]} :param bool quantile: when the number of bins is specified, use uniform binning (False) or quantile binning (True) :param bool dropna: remove NaN values with True :param bool drop_underflow: do not take into account records in underflow bin when True (relevant when binning\ a numeric variable) :param bool drop_overflow: do not take into account records in overflow bin when True (relevant when binning\ a numeric variable) :returns: histogram DataFrame """ df = array_like_to_dataframe(x, y) return hist2d(df, **kwargs) ================================================ FILE: phik/bivariate.py ================================================ """Project: PhiK - correlation analyzer library Created: 2019/11/23 Description: Convert Pearson correlation value into a chi2 value of a contingency test matrix of a bivariate gaussian, and vice-versa. Calculation uses scipy's mvn library. Authors: KPMG Advanced Analytics & Big Data team, Amstelveen, The Netherlands Redistribution and use in source and binary forms, with or without modification, are permitted according to the terms listed in the file LICENSE. """ import warnings import numpy as np import scipy from scipy import optimize _scipy_version = [int(v) for v in scipy.__version__.split('.')] USE_QMVN = True if _scipy_version[0] >= 1 and _scipy_version[1] >= 16 else False if USE_QMVN: from scipy.stats._qmvnt import _qauto, _qmvn else: from scipy.stats._mvn import mvnun def _mvn_un(rho: float, lower: tuple, upper: tuple, rng: np.random.Generator = np.random.default_rng(42)) -> float: """Perform integral of bivariate normal gauss with correlation Integral is performed using scipy's mvn library. :param float rho: tilt parameter :param tuple lower: tuple of lower corner of integral area :param tuple upper: tuple of upper corner of integral area :param np.random.Generator rng: default_rng(42), optional :returns float: integral value """ mu = np.array([0.0, 0.0]) S = np.array([[1.0, rho], [rho, 1.0]]) return _calc_mvnun(lower=lower, upper=upper, mu=mu, S=S, rng=rng) def _calc_mvnun(lower, upper, mu, S, rng = np.random.default_rng(42)): if USE_QMVN: res = _qauto(_qmvn, S, lower, upper, rng)[0] else: res = mvnun(lower, upper, mu, S)[0] return res def _mvn_array(rho: float, sx: np.ndarray, sy: np.ndarray) -> list: """Array of integrals over bivariate normal gauss with correlation Integrals are performed using scipy's mvn library. :param float rho: tilt parameter :param np.ndarray sx: bin edges array of x-axis :param np.ndarray sy: bin edges array of y-axis :returns list: list of integral values """ # ranges = [([sx[i], sy[j]], [sx[i+1], sy[j+1]]) for i in range(len(sx) - 1) for j in range(len(sy) - 1)] # corr = [mvn.mvnun(lower, upper, mu, S)[0] for lower, upper in ranges] # return corr # mean and covariance mu = np.array([0.0, 0.0]) S = np.array([[1.0, rho], [rho, 1.0]]) # callling mvn.mvnun is expensive, so we only calculate half of the matrix, then symmetrize # add half block, which is symmetric in x odd_odd = False ranges = [ ([sx[i], sy[j]], [sx[i + 1], sy[j + 1]]) for i in range((len(sx) - 1) // 2) for j in range(len(sy) - 1) ] # add odd middle row, which is symmetric in y if (len(sx) - 1) % 2 == 1: i = (len(sx) - 1) // 2 ranges += [ ([sx[i], sy[j]], [sx[i + 1], sy[j + 1]]) for j in range((len(sy) - 1) // 2) ] # add center point, add this only once if (len(sy) - 1) % 2 == 1: j = (len(sy) - 1) // 2 ranges.append(([sx[i], sy[j]], [sx[i + 1], sy[j + 1]])) odd_odd = True corr = np.array([_calc_mvnun(lower, upper, mu, S) for lower, upper in ranges]) # add second half, exclude center corr = np.concatenate([corr, corr if not odd_odd else corr[:-1]]) return corr def bivariate_normal_theory( rho: float, nx: int = -1, ny: int = -1, n: int = 1, sx: np.ndarray = None, sy: np.ndarray = None, ) -> np.ndarray: """Return binned pdf of bivariate normal distribution. This function returns a "perfect" binned bivariate normal distribution. :param float rho: tilt parameter :param int nx: number of uniform bins on x-axis. alternative to sx. :param int ny: number of uniform bins on y-axis. alternative to sy. :param np.ndarray sx: bin edges array of x-axis. default is None. :param np.ndarray sy: bin edges array of y-axis. default is None. :param int n: number of entries. default is one. :return: np.ndarray of binned bivariate normal pdf """ if n < 1: raise ValueError("Number of entries needs to be one or greater.") if sx is None: sx = np.linspace(-5, 5, nx + 1) if sy is None: sy = np.linspace(-5, 5, ny + 1) bvn = np.zeros((ny, nx)) for i in range(len(sx) - 1): for j in range(len(sy) - 1): lower = (sx[i], sy[j]) upper = (sx[i + 1], sy[j + 1]) p = _mvn_un(rho, lower, upper) bvn[j, i] = p bvn *= n # patch for entry levels that are below machine precision # (simulation does not work otherwise) bvn[bvn < np.finfo(np.float).eps] = np.finfo(np.float).eps return bvn def chi2_from_phik( rho: float, n: int, subtract_from_chi2: float = 0, corr0: list = None, scale: float = None, sx: np.ndarray = None, sy: np.ndarray = None, pedestal: float = 0, nx: int = -1, ny: int = -1, ) -> float: """Calculate chi2-value of bivariate gauss having correlation value rho Calculate no-noise chi2 value of bivar gauss with correlation rho, with respect to bivariate gauss without any correlation. :param float rho: tilt parameter :param int n: number of records :param float subtract_from_chi2: value subtracted from chi2 calculation. default is 0. :param list corr0: mvn_array result for rho=0. Default is None. :param float scale: scale is multiplied with the chi2 if set. :param np.ndarray sx: bin edges array of x-axis. default is None. :param np.ndarray sy: bin edges array of y-axis. default is None. :param float pedestal: pedestal is added to the chi2 if set. :param int nx: number of uniform bins on x-axis. alternative to sx. :param int ny: number of uniform bins on y-axis. alternative to sy. :returns float: chi2 value """ if sx is None: sx = np.linspace(-5, 5, nx + 1) if sy is None: sy = np.linspace(-5, 5, ny + 1) if corr0 is None: corr0 = _mvn_array(0, sx, sy) if scale is None: # scale ensures that for rho=1, chi2 is the maximum possible value corr1 = _mvn_array(1, sx, sy) delta_corr2 = (corr1 - corr0) ** 2 # protect against division by zero ratio = np.divide( delta_corr2, corr0, out=np.zeros_like(delta_corr2), where=corr0 != 0 ) chi2_one = n * np.sum(ratio) # chi2_one = n * sum([((c1-c0)*(c1-c0)) / c0 for c0, c1 in zip(corr0, corr1)]) chi2_max = n * min(nx - 1, ny - 1) scale = (chi2_max - pedestal) / chi2_one corrr = _mvn_array(rho, sx, sy) delta_corr2 = (corrr - corr0) ** 2 # protect against division by zero ratio = np.divide( delta_corr2, corr0, out=np.zeros_like(delta_corr2), where=corr0 != 0 ) chi2_rho = n * np.sum(ratio) # chi2_rho = (n * sum([((cr-c0)*(cr-c0)) / c0 for c0, cr in zip(corr0, corrr)])) chi2 = pedestal + chi2_rho * scale return chi2 - subtract_from_chi2 def phik_from_chi2( chi2: float, n: int, nx: int, ny: int, sx: np.ndarray = None, sy: np.ndarray = None, pedestal: float = 0, ) -> float: """ Correlation coefficient of bivariate gaussian derived from chi2-value Chi2-value gets converted into correlation coefficient of bivariate gauss with correlation value rho, assuming giving binning and number of records. Correlation coefficient value is between 0 and 1. Bivariate gaussian's range is set to [-5,5] by construction. :param float chi2: input chi2 value :param int n: number of records :param int nx: number of uniform bins on x-axis. alternative to sx. :param int ny: number of uniform bins on y-axis. alternative to sy. :param np.ndarray sx: bin edges array of x-axis. default is None. :param np.ndarray sy: bin edges array of y-axis. default is None. :param float pedestal: pedestal is added to the chi2 if set. :returns float: correlation coefficient """ if pedestal < 0: raise ValueError("noise pedestal should be greater than zero.") if sx is None: sx = np.linspace(-5, 5, nx + 1) elif nx <= 1: raise ValueError("number of bins along x-axis is unknown") if sy is None: sy = np.linspace(-5, 5, ny + 1) elif ny <= 1: raise ValueError("number of bins along y-axis is unknown") corr0 = _mvn_array(0, sx, sy) # scale ensures that for rho=1, chi2 is the maximum possible value corr1 = _mvn_array(1, sx, sy) if 0 in corr0 and len(corr0) > 10000: warnings.warn( "Many cells: {0:d}. Are interval variables set correctly?".format( len(corr0) ) ) delta_corr2 = (corr1 - corr0) ** 2 # protect against division by zero ratio = np.divide( delta_corr2, corr0, out=np.zeros_like(delta_corr2), where=corr0 != 0 ) chi2_one = n * np.sum(ratio) # chi2_one = n * sum([((c1-c0)*(c1-c0)) / c0 if c0 > 0 else 0 for c0,c1 in zip(corr0,corr1)]) chi2_max = n * min(nx - 1, ny - 1) scale = (chi2_max - pedestal) / chi2_one if chi2 > chi2_max and np.isclose(chi2, chi2_max, atol=1e-14): chi2 = chi2_max # only solve for rho if chi2 exceeds noise pedestal if chi2 <= pedestal: return 0.0 elif chi2 >= chi2_max: return 1.0 rho = optimize.brentq( chi2_from_phik, 0, 1, args=(n, chi2, corr0, scale, sx, sy, pedestal), xtol=1e-5 ) return rho ================================================ FILE: phik/data_quality.py ================================================ """Project: PhiK - correlation analyzer library Created: 2018/12/28 Description: A set of functions to check for data quality issues in input data. Authors: KPMG Advanced Analytics & Big Data team, Amstelveen, The Netherlands Redistribution and use in source and binary forms, with or without modification, are permitted according to the terms listed in the file LICENSE. """ import warnings import copy from typing import Tuple import pandas as pd import numpy as np def dq_check_nunique_values( df: pd.DataFrame, interval_cols: list, dropna: bool = True ) -> Tuple[pd.DataFrame, list]: """ Basic data quality checks per column in a DataFrame. The following checks are done: 1. For all non-interval variables, if the number of unique values per variable is larger than 100 a warning is printed. When the number of unique values is large, the variable is likely to be an interval variable. Calculation of phik will be slow(ish) for pairs of variables where one (or two) have many different values (i.e. many bins). 2. For all interval variables, the number of unique values must be at least two. If the number of unique values is zero (i.e. all NaN) the column is removed. If the number of unique values is one, it is not possible to automatically create a binning for this variable (as min and max are the same). The variable is therefore dropped, irrespective of whether dropna is True or False. 3. For all non-interval variables, the number of unique values must be at least either a) 1 if dropna=False (NaN is now also considered a valid category), or b) 2 if dropna=True The function returns a DataFrame where all columns with invalid data are removed. Also the list of interval_cols is updated and returned. :param pd.DataFrame df: input data :param list interval_cols: column names of columns with interval variables. :param bool dropna: remove NaN values when True :returns: cleaned data, updated list of interval columns """ # check for existing columns interval_cols = [col for col in interval_cols if col in df.columns] # check non-interval variable for number of unique values for col in sorted(list(set(df.columns) - set(interval_cols))): if df[col].nunique() > 1000: warnings.warn( "The number of unique values of variable {0:s} is large: {1:d}. Are you sure this is " "not an interval variable? Analysis for pairs of variables including {0:s} can be slow.".format( col, df[col].nunique() ) ) drop_cols = [] # check for interval values whether there are at least two unique values (otherwise I cannot bin automatically) for col in interval_cols: if df[col].nunique() < 2: drop_cols.append(col) warnings.warn( "Not enough unique value for variable {0:s} for analysis {1:d}. Dropping this column".format( col, df[col].nunique() ) ) # check non-interval values whether there are at least two different values OR 1 value and NaN if dropna==False for col in sorted(list(set(df.columns) - set(interval_cols))): if df[col].nunique() == 0 or (df[col].nunique() == 1 and dropna): drop_cols.append(col) warnings.warn( "Not enough unique value for variable {0:s} for analysis {1:d}. Dropping this column".format( col, df[col].nunique() ) ) df_clean = df.copy() interval_cols_clean = copy.copy(interval_cols) if len(drop_cols) > 0: # preserves column order: https://github.com/KaveIO/PhiK/issues/1 df_clean.drop(columns=drop_cols, inplace=True) interval_cols_clean = [col for col in interval_cols if col not in drop_cols] return df_clean, interval_cols_clean def dq_check_hist2d(hist2d: np.ndarray) -> bool: """Basic data quality checks for a contingency table The Following checks are done: 1. There must be at least two bins in both the x and y direction. 2. If the number of bins in the x and/or y direction is larger than 100 a warning is printed. :param hist2d: contingency table :return: bool passed_check """ if 0 in hist2d.shape or 1 in hist2d.shape: warnings.warn( "Too few unique values for variable x ({0:d}) or y ({1:d})".format( hist2d.shape[0], hist2d.shape[1] ) ) return False if hist2d.shape[0] > 1000: warnings.warn( "The number of unique values of variable x is large: {0:d}. " "Are you sure this is not an interval variable? Analysis might be slow.".format( hist2d.shape[0] ) ) if hist2d.shape[1] > 1000: warnings.warn( "The number of unique values of variable y is large: {0:d}. " "Are you sure this is not an interval variable? Analysis might be slow.".format( hist2d.shape[0] ) ) return True ================================================ FILE: phik/decorators/__init__.py ================================================ # flake8: noqa # import pandas DataFrame decorators from phik.decorators import pandas ================================================ FILE: phik/decorators/pandas.py ================================================ """Project: PhiK - correlation analyzer library Module: phik.decorators.pandas Created: 2018/11/14 Description: Decorators for pandas DataFrame objects Authors: KPMG Advanced Analytics & Big Data team, Amstelveen, The Netherlands Redistribution and use in source and binary forms, with or without modification, are permitted according to the terms listed in the file LICENSE. """ from pandas import DataFrame, Series # add function to create a 2d histogram from phik.binning import hist2d, hist2d_from_array DataFrame.hist2d = hist2d Series.hist2d = hist2d_from_array # add phik correlation matrix function from phik.phik import phik_matrix, global_phik_array DataFrame.phik_matrix = phik_matrix DataFrame.global_phik = global_phik_array # add significance matrix function for variable dependencies from phik.significance import significance_matrix DataFrame.significance_matrix = significance_matrix # outlier matrix from phik.outliers import outlier_significance_matrices, outlier_significance_matrix, outlier_significance_from_array DataFrame.outlier_significance_matrices = outlier_significance_matrices DataFrame.outlier_significance_matrix = outlier_significance_matrix Series.outlier_significance_matrix = outlier_significance_from_array ================================================ FILE: phik/definitions.py ================================================ """Project: PhiK - correlation analyzer library Created: 2018/09/05 Description: Definitions used throughout the phik package Authors: KPMG Advanced Analytics & Big Data team, Amstelveen, The Netherlands Redistribution and use in source and binary forms, with or without modification, are permitted according to the terms listed in the file LICENSE. """ # names assigned to underflow and overflow bin when assigning bin indices OF = "OF" UF = "UF" # name replacement of np.nan NaN = "NaN" ================================================ FILE: phik/entry_points.py ================================================ """Project: PhiK - correlation analyzer library Created: 2018/11/13 Description: Collection of phik entry points Authors: KPMG Advanced Analytics & Big Data team, Amstelveen, The Netherlands Redistribution and use in source and binary forms, with or without modification, are permitted according to the terms listed in the file LICENSE. """ def phik_trial(): """Run Phi_K tests. We will keep this here until we've completed switch to pytest or nose and tox. We could also keep it, but I don't like the fact that packages etc. are hard coded. Gotta come up with a better solution. """ import sys import pytest # ['--pylint'] + # -r xs shows extra info on skips and xfails. default_options = ["-rxs"] args = sys.argv[1:] + default_options sys.exit(pytest.main(args)) ================================================ FILE: phik/notebooks/phik_tutorial_advanced.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Phi_K advanced tutorial\n", "\n", "This notebook guides you through the more advanced functionality of the phik package. This notebook will not cover all the underlying theory, but will just attempt to give an overview of all the options that are available. For a theoretical description the user is referred to our paper.\n", "\n", "The package offers functionality on three related topics:\n", "\n", "1. Phik correlation matrix\n", "2. Significance matrix\n", "3. Outlier significance matrix" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%%capture\n", "# install phik (if not installed yet)\n", "import sys\n", "\n", "!\"{sys.executable}\" -m pip install phik" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# import standard packages\n", "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import itertools\n", "\n", "import phik\n", "\n", "from phik import resources\n", "from phik.binning import bin_data\n", "from phik.decorators import *\n", "from phik.report import plot_correlation_matrix\n", "\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# if one changes something in the phik-package one can automatically reload the package or module\n", "%load_ext autoreload\n", "%autoreload 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Load data\n", "\n", "A simulated dataset is part of the phik-package. The dataset concerns car insurance data. Load the dataset here:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "data = pd.read_csv( resources.fixture('fake_insurance_data.csv.gz') )" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
car_colordriver_ageareamileagecar_size
0black26.377219suburbs156806.288398XXL
1black58.976840suburbs74400.323559XL
2multicolor55.744988downtown267856.748015XXL
3metalic57.629139downtown259028.249060XXL
4green21.490637downtown110712.216080XL
\n", "
" ], "text/plain": [ " car_color driver_age area mileage car_size\n", "0 black 26.377219 suburbs 156806.288398 XXL\n", "1 black 58.976840 suburbs 74400.323559 XL\n", "2 multicolor 55.744988 downtown 267856.748015 XXL\n", "3 metalic 57.629139 downtown 259028.249060 XXL\n", "4 green 21.490637 downtown 110712.216080 XL" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Specify bin types\n", "\n", "The phik-package offers a way to calculate correlations between variables of mixed types. Variable types can be inferred automatically although we recommend to variable types to be specified by the user. \n", "\n", "Because interval type variables need to be binned in order to calculate phik and the significance, a list of interval variables is created." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['driver_age', 'mileage']" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data_types = {'severity': 'interval',\n", " 'driver_age':'interval',\n", " 'satisfaction':'ordinal',\n", " 'mileage':'interval',\n", " 'car_size':'ordinal',\n", " 'car_use':'ordinal',\n", " 'car_color':'categorical',\n", " 'area':'categorical'}\n", "\n", "interval_cols = [col for col, v in data_types.items() if v=='interval' and col in data.columns]\n", "interval_cols\n", "# interval_cols is used below" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Phik correlation matrix\n", "\n", "Now let's start calculating the correlation phik between pairs of variables. \n", "\n", "Note that the original dataset is used as input, the binning of interval variables is done automatically." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
car_colordriver_ageareamileagecar_size
car_color1.0000000.3896710.5904560.0000000.000000
driver_age0.3896711.0000000.1055060.0000000.000000
area0.5904560.1055061.0000000.0000000.000000
mileage0.0000000.0000000.0000001.0000000.768589
car_size0.0000000.0000000.0000000.7685891.000000
\n", "
" ], "text/plain": [ " car_color driver_age area mileage car_size\n", "car_color 1.000000 0.389671 0.590456 0.000000 0.000000\n", "driver_age 0.389671 1.000000 0.105506 0.000000 0.000000\n", "area 0.590456 0.105506 1.000000 0.000000 0.000000\n", "mileage 0.000000 0.000000 0.000000 1.000000 0.768589\n", "car_size 0.000000 0.000000 0.000000 0.768589 1.000000" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "phik_overview = data.phik_matrix(interval_cols=interval_cols)\n", "phik_overview" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Specify binning per interval variable\n", "\n", "Binning can be set per interval variable individually. One can set the number of bins, or specify a list of bin edges. Note that the measured phik correlation is dependent on the chosen binning. \n", "The default binning is uniform between the min and max values of the interval variable." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
car_colordriver_ageareamileagecar_size
car_color1.0000000.3883500.5904560.0000000.000000
driver_age0.3883501.0000000.0711890.0000000.000000
area0.5904560.0711891.0000000.0000000.000000
mileage0.0000000.0000000.0000001.0000000.665845
car_size0.0000000.0000000.0000000.6658451.000000
\n", "
" ], "text/plain": [ " car_color driver_age area mileage car_size\n", "car_color 1.000000 0.388350 0.590456 0.000000 0.000000\n", "driver_age 0.388350 1.000000 0.071189 0.000000 0.000000\n", "area 0.590456 0.071189 1.000000 0.000000 0.000000\n", "mileage 0.000000 0.000000 0.000000 1.000000 0.665845\n", "car_size 0.000000 0.000000 0.000000 0.665845 1.000000" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bins = {'mileage':5, 'driver_age':[18,25,35,45,55,65,125]}\n", "phik_overview = data.phik_matrix(interval_cols=interval_cols, bins=bins)\n", "phik_overview" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Do not apply noise correction\n", "\n", "For low statistics samples often a correlation larger than zero is measured when no correlation is actually present in the true underlying distribution. This is not only the case for phik, but also for the pearson correlation and Cramer's phi (see figure 4 in XX ). In the phik calculation a noise correction is applied by default, to take into account erroneous correlation values as a result of low statistics. To switch off this noise cancellation (not recommended), do:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
car_colordriver_ageareamileagecar_size
car_color1.0000000.4078600.5941720.1362670.096629
driver_age0.4078601.0000000.1903900.1996060.121585
area0.5941720.1903901.0000000.1496790.067452
mileage0.1362670.1996060.1496791.0000000.770836
car_size0.0966290.1215850.0674520.7708361.000000
\n", "
" ], "text/plain": [ " car_color driver_age area mileage car_size\n", "car_color 1.000000 0.407860 0.594172 0.136267 0.096629\n", "driver_age 0.407860 1.000000 0.190390 0.199606 0.121585\n", "area 0.594172 0.190390 1.000000 0.149679 0.067452\n", "mileage 0.136267 0.199606 0.149679 1.000000 0.770836\n", "car_size 0.096629 0.121585 0.067452 0.770836 1.000000" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "phik_overview = data.phik_matrix(interval_cols=interval_cols, noise_correction=False)\n", "phik_overview" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Using a different expectation histogram\n", "\n", "By default phik compares the 2d distribution of two (binned) variables with the distribution that assumes no dependency between them. One can also change the expected distribution though. Phi_K is calculated in the same way, but using the other expectation distribution. " ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "from phik.binning import auto_bin_data\n", "from phik.phik import phik_observed_vs_expected_from_rebinned_df, phik_from_hist2d\n", "from phik.statistics import get_dependent_frequency_estimates" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "# get observed 2d histogram of two variables\n", "cols = [\"mileage\", \"car_size\"]\n", "icols = [\"mileage\"]\n", "observed = data[cols].hist2d(interval_cols=icols).values" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.768588829489185\n" ] } ], "source": [ "# default phik evaluation from observed distribution\n", "phik_value = phik_from_hist2d(observed)\n", "print (phik_value)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.768588829489185\n" ] } ], "source": [ "# phik evaluation from an observed and expected distribution\n", "expected = get_dependent_frequency_estimates(observed)\n", "phik_value = phik_from_hist2d(observed=observed, expected=expected)\n", "print (phik_value)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "# one can also compare two datasets against each other, and get a full phik matrix that way.\n", "# this needs binned datasets though. \n", "# (the user needs to make sure the binnings of both datasets are identical.) \n", "data_binned, _ = auto_bin_data(data, interval_cols=interval_cols)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "# here we are comparing data_binned against itself\n", "phik_matrix = phik_observed_vs_expected_from_rebinned_df(data_binned, data_binned)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
car_colordriver_ageareamileagecar_size
car_color1.00.00.00.00.0
driver_age0.01.00.00.00.0
area0.00.01.00.00.0
mileage0.00.00.01.00.0
car_size0.00.00.00.01.0
\n", "
" ], "text/plain": [ " car_color driver_age area mileage car_size\n", "car_color 1.0 0.0 0.0 0.0 0.0\n", "driver_age 0.0 1.0 0.0 0.0 0.0\n", "area 0.0 0.0 1.0 0.0 0.0\n", "mileage 0.0 0.0 0.0 1.0 0.0\n", "car_size 0.0 0.0 0.0 0.0 1.0" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# all off-diagonal entries are zero, meaning the all 2d distributions of both datasets are identical.\n", "# (by construction the diagonal is one.)\n", "phik_matrix" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Statistical significance of the correlation\n", "\n", "When assessing correlations it is good practise to evaluate both the correlation and the significance of the correlation: a large correlation may be statistically insignificant, and vice versa a small correlation may be very significant. For instance, scipy.stats.pearsonr returns both the pearson correlation and the p-value. Similarly, the phik package offers functionality the calculate a significance matrix. Significance is defined as:\n", "\n", "$$Z = \\Phi^{-1}(1-p)\\ ;\\quad \\Phi(z)=\\frac{1}{\\sqrt{2\\pi}} \\int_{-\\infty}^{z} e^{-t^{2}/2}\\,{\\rm d}t $$\n", "\n", "Several corrections to the 'standard' p-value calculation are taken into account, making the method more robust for low statistics and sparse data cases. The user is referred to our paper for more details.\n", "\n", "Due to the corrections, the significance calculation can take a few seconds." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
car_colordriver_ageareamileagecar_size
car_color85.49865519.83672037.623764-0.559532-0.483387
driver_age19.83672084.3705421.852524-0.572284-0.459980
area37.6237641.85252472.415600-0.560672-0.273138
mileage-0.559532-0.572284-0.56067291.26267749.285368
car_size-0.483387-0.459980-0.27313849.28536869.064056
\n", "
" ], "text/plain": [ " car_color driver_age area mileage car_size\n", "car_color 85.498655 19.836720 37.623764 -0.559532 -0.483387\n", "driver_age 19.836720 84.370542 1.852524 -0.572284 -0.459980\n", "area 37.623764 1.852524 72.415600 -0.560672 -0.273138\n", "mileage -0.559532 -0.572284 -0.560672 91.262677 49.285368\n", "car_size -0.483387 -0.459980 -0.273138 49.285368 69.064056" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "significance_overview = data.significance_matrix(interval_cols=interval_cols)\n", "significance_overview" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Specify binning per interval variable\n", "Binning can be set per interval variable individually. One can set the number of bins, or specify a list of bin edges. Note that the measure phik correlation is dependent on the chosen binning." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
car_colordriver_ageareamileagecar_size
car_color85.48087020.54440037.613135-0.214896-0.447747
driver_age20.54440083.3441682.478032-0.563892-0.534263
area37.6131352.47803272.428355-0.309349-0.260994
mileage-0.214896-0.563892-0.30934977.78408647.010736
car_size-0.447747-0.534263-0.26099447.01073669.081712
\n", "
" ], "text/plain": [ " car_color driver_age area mileage car_size\n", "car_color 85.480870 20.544400 37.613135 -0.214896 -0.447747\n", "driver_age 20.544400 83.344168 2.478032 -0.563892 -0.534263\n", "area 37.613135 2.478032 72.428355 -0.309349 -0.260994\n", "mileage -0.214896 -0.563892 -0.309349 77.784086 47.010736\n", "car_size -0.447747 -0.534263 -0.260994 47.010736 69.081712" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bins = {'mileage':5, 'driver_age':[18,25,35,45,55,65,125]}\n", "significance_overview = data.significance_matrix(interval_cols=interval_cols, bins=bins)\n", "significance_overview" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Specify significance method\n", "\n", "The recommended method to calculate the significance of the correlation is a hybrid approach, which uses the G-test statistic. The number of degrees of freedom and an analytical, empirical description of the $\\chi^2$ distribution are sed, based on Monte Carlo simulations. This method works well for both high as low statistics samples.\n", "\n", "Other approaches to calculate the significance are implemented:\n", "- asymptotic: fast, but over-estimates the number of degrees of freedom for low statistics samples, leading to erroneous values of the significance\n", "- MC: Many simulated samples are needed to accurately measure significances larger than 3, making this method computationally expensive.\n" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
car_colordriver_ageareamileagecar_size
car_color85.52657419.68156437.661844-0.385023-0.333340
driver_age19.68156484.0146541.742050-0.947153-0.793434
area37.6618441.74205072.440209-0.465002-0.123678
mileage-0.385023-0.947153-0.46500291.30112949.332305
car_size-0.333340-0.793434-0.12367849.33230569.107448
\n", "
" ], "text/plain": [ " car_color driver_age area mileage car_size\n", "car_color 85.526574 19.681564 37.661844 -0.385023 -0.333340\n", "driver_age 19.681564 84.014654 1.742050 -0.947153 -0.793434\n", "area 37.661844 1.742050 72.440209 -0.465002 -0.123678\n", "mileage -0.385023 -0.947153 -0.465002 91.301129 49.332305\n", "car_size -0.333340 -0.793434 -0.123678 49.332305 69.107448" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "significance_overview = data.significance_matrix(interval_cols=interval_cols, significance_method='asymptotic')\n", "significance_overview" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Simulation method\n", "\n", "The chi2 of a contingency table is measured using a comparison of the expected frequencies with the true frequencies in a contingency table. The expected frequencies can be simulated in a variety of ways. The following methods are implemented:\n", "\n", " - multinominal: Only the total number of records is fixed. (default)\n", " - row_product_multinominal: The row totals fixed in the sampling.\n", " - col_product_multinominal: The column totals fixed in the sampling.\n", " - hypergeometric: Both the row or column totals are fixed in the sampling. (Note that this type of sampling is only available when row and column totals are integers, which is usually the case.)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "scrolled": true }, "outputs": [], "source": [ "# --- Warning, can be slow\n", "# turned off here by default for unit testing purposes\n", "\n", "#significance_overview = data.significance_matrix(interval_cols=interval_cols, simulation_method='hypergeometric')\n", "#significance_overview" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Expected frequencies" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "from phik.simulation import sim_2d_data_patefield, sim_2d_product_multinominal, sim_2d_data" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
areacountry_sidedowntownhillssuburbsunpaved_roads
driver_age
111.086.0123.0147.021.0
29.077.0137.0125.031.0
37.0102.0131.0130.018.0
417.083.0130.095.014.0
513.068.0120.072.08.0
67.030.051.047.09.0
71.011.023.014.07.0
80.04.07.08.02.0
90.00.01.01.00.0
100.01.01.00.00.0
\n", "
" ], "text/plain": [ "area country_side downtown hills suburbs unpaved_roads\n", "driver_age \n", "1 11.0 86.0 123.0 147.0 21.0\n", "2 9.0 77.0 137.0 125.0 31.0\n", "3 7.0 102.0 131.0 130.0 18.0\n", "4 17.0 83.0 130.0 95.0 14.0\n", "5 13.0 68.0 120.0 72.0 8.0\n", "6 7.0 30.0 51.0 47.0 9.0\n", "7 1.0 11.0 23.0 14.0 7.0\n", "8 0.0 4.0 7.0 8.0 2.0\n", "9 0.0 0.0 1.0 1.0 0.0\n", "10 0.0 1.0 1.0 0.0 0.0" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "inputdata = data[['driver_age', 'area']].hist2d(interval_cols=['driver_age'])\n", "inputdata" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Multinominal" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "data total: 2000.0\n", "sim total: 2000\n", "data row totals: [ 65. 462. 724. 639. 110.]\n", "sim row totals: [ 75 468 748 586 123]\n", "data column totals: [388. 379. 388. 339. 281. 144. 56. 21. 2. 2.]\n", "sim column totals: [378 380 375 335 281 164 59 25 1 2]\n" ] } ], "source": [ "simdata = sim_2d_data(inputdata.values)\n", "print('data total:', inputdata.sum().sum())\n", "print('sim total:', simdata.sum().sum())\n", "print('data row totals:', inputdata.sum(axis=0).values)\n", "print('sim row totals:', simdata.sum(axis=0))\n", "print('data column totals:', inputdata.sum(axis=1).values)\n", "print('sim column totals:', simdata.sum(axis=1))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### product multinominal" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "data total: 2000.0\n", "sim total: 2000\n", "data row totals: [ 65 462 724 639 110]\n", "sim row totals: [ 65 462 724 639 110]\n", "data column totals: [388 379 388 339 281 144 56 21 2 2]\n", "sim column totals: [399 353 415 349 272 139 45 22 4 2]\n" ] } ], "source": [ "simdata = sim_2d_product_multinominal(inputdata.values, axis=0)\n", "print('data total:', inputdata.sum().sum())\n", "print('sim total:', simdata.sum().sum())\n", "print('data row totals:', inputdata.sum(axis=0).astype(int).values)\n", "print('sim row totals:', simdata.sum(axis=0).astype(int))\n", "print('data column totals:', inputdata.sum(axis=1).astype(int).values)\n", "print('sim column totals:', simdata.sum(axis=1).astype(int))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### hypergeometric (\"patefield\")" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "data total: 2000.0\n", "sim total: 2000\n", "data row totals: [ 65 462 724 639 110]\n", "sim row totals: [ 65 462 724 639 110]\n", "data column totals: [388 379 388 339 281 144 56 21 2 2]\n", "sim column totals: [388 379 388 339 281 144 56 21 2 2]\n" ] } ], "source": [ "# patefield simulation needs compiled c++ code.\n", "# only run this if the python binding to the (compiled) patefiled simulation function is found.\n", "try:\n", " from phik.simcore import _sim_2d_data_patefield\n", " CPP_SUPPORT = True\n", "except ImportError:\n", " CPP_SUPPORT = False\n", "\n", "if CPP_SUPPORT:\n", " simdata = sim_2d_data_patefield(inputdata.values)\n", " print('data total:', inputdata.sum().sum())\n", " print('sim total:', simdata.sum().sum())\n", " print('data row totals:', inputdata.sum(axis=0).astype(int).values)\n", " print('sim row totals:', simdata.sum(axis=0))\n", " print('data column totals:', inputdata.sum(axis=1).astype(int).values)\n", " print('sim column totals:', simdata.sum(axis=1))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Outlier significance\n", "\n", "The normal pearson correlation between two interval variables is easy to interpret. However, the phik correlation between two variables of mixed type is not always easy to interpret, especially when it concerns categorical variables. Therefore, functionality is provided to detect \"outliers\": excesses and deficits over the expected frequencies in the contingency table of two variables. \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Example 1: mileage versus car_size" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For the categorical variable pair mileage - car_size we measured:\n", "\n", "$$\\phi_k = 0.77 \\, ,\\quad\\quad \\mathrm{significance} = 46.3$$\n", "\n", "Let's use the outlier significance functionality to gain a better understanding of this significance correlation between mileage and car size.\n" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "c0 = 'mileage'\n", "c1 = 'car_size'\n", "\n", "tmp_interval_cols = ['mileage']" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
car_sizeLMSXLXSXXL
53.5_30047.06.88215521.48347618.076204-8.20953610.820863-22.423985
30047.0_60040.520.034528-0.251737-3.4084092.534277-1.973628-8.209536
60040.5_90033.91.627610-3.043497-2.26580910.215936-1.246784-8.209536
90033.9_120027.4-3.711579-3.827278-2.88547512.999048-1.638288-7.185622
120027.4_150020.9-7.665861-6.173001-4.7467629.629145-2.841508-0.504521
150020.9_180014.4-7.533189-6.063786-4.6600491.559370-2.7850496.765549
180014.4_210007.8-5.541940-4.425929-3.360023-4.802787-1.94246910.520540
210007.8_240001.3-3.496905-2.745103-2.030802-5.850529-1.1008738.723925
240001.3_269994.8-5.275976-4.207164-3.186534-8.616464-1.83094413.303101
269994.8_299988.2-8.014016-6.458253-4.973240-12.868389-2.98905520.992824
\n", "
" ], "text/plain": [ "car_size L M S XL XS \\\n", "53.5_30047.0 6.882155 21.483476 18.076204 -8.209536 10.820863 \n", "30047.0_60040.5 20.034528 -0.251737 -3.408409 2.534277 -1.973628 \n", "60040.5_90033.9 1.627610 -3.043497 -2.265809 10.215936 -1.246784 \n", "90033.9_120027.4 -3.711579 -3.827278 -2.885475 12.999048 -1.638288 \n", "120027.4_150020.9 -7.665861 -6.173001 -4.746762 9.629145 -2.841508 \n", "150020.9_180014.4 -7.533189 -6.063786 -4.660049 1.559370 -2.785049 \n", "180014.4_210007.8 -5.541940 -4.425929 -3.360023 -4.802787 -1.942469 \n", "210007.8_240001.3 -3.496905 -2.745103 -2.030802 -5.850529 -1.100873 \n", "240001.3_269994.8 -5.275976 -4.207164 -3.186534 -8.616464 -1.830944 \n", "269994.8_299988.2 -8.014016 -6.458253 -4.973240 -12.868389 -2.989055 \n", "\n", "car_size XXL \n", "53.5_30047.0 -22.423985 \n", "30047.0_60040.5 -8.209536 \n", "60040.5_90033.9 -8.209536 \n", "90033.9_120027.4 -7.185622 \n", "120027.4_150020.9 -0.504521 \n", "150020.9_180014.4 6.765549 \n", "180014.4_210007.8 10.520540 \n", "210007.8_240001.3 8.723925 \n", "240001.3_269994.8 13.303101 \n", "269994.8_299988.2 20.992824 " ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "outlier_signifs, binning_dict = data[[c0,c1]].outlier_significance_matrix(interval_cols=tmp_interval_cols, \n", " retbins=True)\n", "outlier_signifs" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Specify binning per interval variable\n", "Binning can be set per interval variable individually. One can set the number of bins, or specify a list of bin edges. \n", "\n", "Note: in case a bin is created without any records this bin will be automatically dropped in the phik and (outlier) significance calculations. However, in the outlier significance calculation this will currently lead to an error as the number of provided bin edges does not match the number of bins anymore." ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
car_sizeLMSXLXSXXL
0.0_100.0-0.223635-0.153005-0.096640-0.5041672.150837-1.337308
100.0_1000.0-0.742899-0.5332112.164954-1.4699965.704340-3.272689
1000.0_10000.0-3.4896683.49985618.061724-6.83106211.617394-13.063085
10000.0_100000.025.08672315.956527-0.2518775.162309-3.896807-8.209536
100000.0_1000000.0-8.209536-17.223164-13.626621-2.140870-8.68884444.933133
\n", "
" ], "text/plain": [ "car_size L M S XL XS \\\n", "0.0_100.0 -0.223635 -0.153005 -0.096640 -0.504167 2.150837 \n", "100.0_1000.0 -0.742899 -0.533211 2.164954 -1.469996 5.704340 \n", "1000.0_10000.0 -3.489668 3.499856 18.061724 -6.831062 11.617394 \n", "10000.0_100000.0 25.086723 15.956527 -0.251877 5.162309 -3.896807 \n", "100000.0_1000000.0 -8.209536 -17.223164 -13.626621 -2.140870 -8.688844 \n", "\n", "car_size XXL \n", "0.0_100.0 -1.337308 \n", "100.0_1000.0 -3.272689 \n", "1000.0_10000.0 -13.063085 \n", "10000.0_100000.0 -8.209536 \n", "100000.0_1000000.0 44.933133 " ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bins = [0,1E2, 1E3, 1E4, 1E5, 1E6]\n", "outlier_signifs, binning_dict = data[[c0,c1]].outlier_significance_matrix(interval_cols=tmp_interval_cols, \n", " bins=bins, retbins=True)\n", "outlier_signifs" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Specify binning per interval variable -- dealing with underflow and overflow\n", "\n", "When specifying custom bins as situation can occur when the minimal (maximum) value in the data is smaller (larger) than the minimum (maximum) bin edge. Data points outside the specified range will be collected in the underflow (UF) and overflow (OF) bins. One can choose how to deal with these under/overflow bins, by setting the drop_underflow and drop_overflow variables.\n", "\n", "Note that the drop_underflow and drop_overflow options are also available for the calculation of the phik matrix and the significance matrix." ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
car_sizeLMSXLXSXXL
100.0_1000.0-0.742899-0.5332112.164954-1.4699965.704340-3.272689
1000.0_10000.0-3.4896683.49985618.061724-6.83106211.617394-13.063085
10000.0_100000.025.08672315.956527-0.2518775.162309-3.896807-8.209536
OF-8.209536-17.223164-13.626621-2.140870-8.68884444.933133
UF-0.223635-0.153005-0.096640-0.5041672.150837-1.337308
\n", "
" ], "text/plain": [ "car_size L M S XL XS \\\n", "100.0_1000.0 -0.742899 -0.533211 2.164954 -1.469996 5.704340 \n", "1000.0_10000.0 -3.489668 3.499856 18.061724 -6.831062 11.617394 \n", "10000.0_100000.0 25.086723 15.956527 -0.251877 5.162309 -3.896807 \n", "OF -8.209536 -17.223164 -13.626621 -2.140870 -8.688844 \n", "UF -0.223635 -0.153005 -0.096640 -0.504167 2.150837 \n", "\n", "car_size XXL \n", "100.0_1000.0 -3.272689 \n", "1000.0_10000.0 -13.063085 \n", "10000.0_100000.0 -8.209536 \n", "OF 44.933133 \n", "UF -1.337308 " ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bins = [1E2, 1E3, 1E4, 1E5]\n", "outlier_signifs, binning_dict = data[[c0,c1]].outlier_significance_matrix(interval_cols=tmp_interval_cols, \n", " bins=bins, retbins=True, \n", " drop_underflow=False,\n", " drop_overflow=False)\n", "outlier_signifs" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Dealing with NaN's in the data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's add some missing values to our data" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [], "source": [ "data.loc[np.random.choice(range(len(data)), size=10), 'car_size'] = np.nan\n", "data.loc[np.random.choice(range(len(data)), size=10), 'mileage'] = np.nan" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Sometimes there can be information in the missing values and in which case you might want to consider the NaN values as a separate category. This can be achieved by setting the dropna argument to False." ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
car_sizeLMNaNSXLXSXXL
100.0_1000.0-0.742899-0.533211-0.0536202.185319-1.4673225.704340-3.254118
1000.0_10000.0-3.4896683.4998561.63243817.591610-6.82151111.617394-13.000691
10000.0_100000.024.90916415.798682-1.078812-0.0812424.943028-3.875525-8.209536
NaN0.1326490.488424-0.073439-0.455333-0.132365-0.211155-0.012896
OF-8.209536-17.158980-0.283391-13.396642-1.909226-8.65180043.560131
UF-0.223635-0.153005-0.013130-0.094218-0.5030512.150837-1.328194
\n", "
" ], "text/plain": [ "car_size L M NaN S XL \\\n", "100.0_1000.0 -0.742899 -0.533211 -0.053620 2.185319 -1.467322 \n", "1000.0_10000.0 -3.489668 3.499856 1.632438 17.591610 -6.821511 \n", "10000.0_100000.0 24.909164 15.798682 -1.078812 -0.081242 4.943028 \n", "NaN 0.132649 0.488424 -0.073439 -0.455333 -0.132365 \n", "OF -8.209536 -17.158980 -0.283391 -13.396642 -1.909226 \n", "UF -0.223635 -0.153005 -0.013130 -0.094218 -0.503051 \n", "\n", "car_size XS XXL \n", "100.0_1000.0 5.704340 -3.254118 \n", "1000.0_10000.0 11.617394 -13.000691 \n", "10000.0_100000.0 -3.875525 -8.209536 \n", "NaN -0.211155 -0.012896 \n", "OF -8.651800 43.560131 \n", "UF 2.150837 -1.328194 " ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bins = [1E2, 1E3, 1E4, 1E5]\n", "outlier_signifs, binning_dict = data[[c0,c1]].outlier_significance_matrix(interval_cols=tmp_interval_cols, \n", " bins=bins, retbins=True, \n", " drop_underflow=False,\n", " drop_overflow=False,\n", " dropna=False)\n", "outlier_signifs" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here OF and UF are the underflow and overflow bin of car_size, respectively.\n", "\n", "To just ignore records with missing values set dropna to True (default)." ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
car_sizeLMSXLXSXXL
100.0_1000.0-0.745805-0.5341792.177522-1.4736025.695755-3.268662
1000.0_10000.0-3.4517933.55970517.674546-6.77080711.651568-12.916946
10000.0_100000.025.03589615.868135-0.1211914.904070-3.896177-8.209536
OF-8.209536-17.164792-13.459625-1.934622-8.69554744.449479
UF-0.224643-0.153312-0.095154-0.5056612.146765-1.335316
\n", "
" ], "text/plain": [ "car_size L M S XL XS \\\n", "100.0_1000.0 -0.745805 -0.534179 2.177522 -1.473602 5.695755 \n", "1000.0_10000.0 -3.451793 3.559705 17.674546 -6.770807 11.651568 \n", "10000.0_100000.0 25.035896 15.868135 -0.121191 4.904070 -3.896177 \n", "OF -8.209536 -17.164792 -13.459625 -1.934622 -8.695547 \n", "UF -0.224643 -0.153312 -0.095154 -0.505661 2.146765 \n", "\n", "car_size XXL \n", "100.0_1000.0 -3.268662 \n", "1000.0_10000.0 -12.916946 \n", "10000.0_100000.0 -8.209536 \n", "OF 44.449479 \n", "UF -1.335316 " ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bins = [1E2, 1E3, 1E4, 1E5]\n", "outlier_signifs, binning_dict = data[[c0,c1]].outlier_significance_matrix(interval_cols=tmp_interval_cols, \n", " bins=bins, retbins=True, \n", " drop_underflow=False,\n", " drop_overflow=False,\n", " dropna=True)\n", "outlier_signifs" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that the dropna option is also available for the calculation of the phik matrix and the significance matrix." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.8" }, "pycharm": { "stem_cell": { "cell_type": "raw", "metadata": { "collapsed": false }, "source": [] } } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: phik/notebooks/phik_tutorial_basic.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Phi_K basic tutorial\n", "\n", "This notebook guides you through the basic functionality of the phik package. The package offers functionality on three related topics:\n", "\n", "1. Phik correlation matrix\n", "2. Significance matrix\n", "3. Outlier significance matrix\n", "\n", "For more information on the underlying theory, the user is referred to our paper." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%%capture\n", "# install phik (if not installed yet)\n", "import sys\n", "\n", "!\"{sys.executable}\" -m pip install phik" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# import standard packages\n", "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import itertools\n", "\n", "import phik\n", "\n", "from phik import resources\n", "from phik.binning import bin_data\n", "from phik.report import plot_correlation_matrix\n", "\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# if one changes something in the phik-package one can automatically reload the package or module\n", "%load_ext autoreload\n", "%autoreload 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Load data\n", "\n", "A simulated dataset is part of the phik-package. The dataset concerns fake car insurance data. Load the dataset here:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "data = pd.read_csv( resources.fixture('fake_insurance_data.csv.gz') )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Take a first look at the data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's use a simple data.head() to get an idea of what the data looks like and inspect the different types of variables." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
car_colordriver_ageareamileagecar_size
0black26.377219suburbs156806.288398XXL
1black58.976840suburbs74400.323559XL
2multicolor55.744988downtown267856.748015XXL
3metalic57.629139downtown259028.249060XXL
4green21.490637downtown110712.216080XL
\n", "
" ], "text/plain": [ " car_color driver_age area mileage car_size\n", "0 black 26.377219 suburbs 156806.288398 XXL\n", "1 black 58.976840 suburbs 74400.323559 XL\n", "2 multicolor 55.744988 downtown 267856.748015 XXL\n", "3 metalic 57.629139 downtown 259028.249060 XXL\n", "4 green 21.490637 downtown 110712.216080 XL" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Specify bin types\n", "\n", "The phik-package offers a way to calculate correlations between variables of mixed types. Variable types can be inferred automatically although we recommend variable types to be specified by the user. \n", "\n", "Because interval type variables need to be binned in order to calculate phik and the significance, a list of interval variables is created." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['driver_age', 'mileage']" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data_types = {'severity': 'interval',\n", " 'driver_age':'interval',\n", " 'satisfaction':'ordinal',\n", " 'mileage':'interval',\n", " 'car_size':'ordinal',\n", " 'car_use':'ordinal',\n", " 'car_color':'categorical',\n", " 'area':'categorical'}\n", "\n", "interval_cols = [col for col, v in data_types.items() if v=='interval' and col in data.columns]\n", "interval_cols" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Visually inspect pairwise correlations" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Bin the interval variables\n", "\n", "To get a feeling for the data, let's bin the interval variables and create 2d histograms to inspect the correlations between variables. By binning the interval variables we can treat all variable types in the same way.\n" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "# bin the interval variables\n", "data_binned, binning_dict = bin_data(data, cols=interval_cols, retbins=True)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'driver_age': [(18.030700817879673, 28.34523864121504),\n", " (28.34523864121504, 38.659776464550404),\n", " (38.659776464550404, 48.974314287885775),\n", " (48.974314287885775, 59.288852111221146),\n", " (59.288852111221146, 69.60338993455652),\n", " (69.60338993455652, 79.91792775789187),\n", " (79.91792775789187, 90.23246558122725),\n", " (90.23246558122725, 100.54700340456262),\n", " (100.54700340456262, 110.86154122789799),\n", " (110.86154122789799, 121.17607905123334)],\n", " 'mileage': [(53.54305708442213, 30047.010932306846),\n", " (30047.010932306846, 60040.478807529274),\n", " (60040.478807529274, 90033.94668275169),\n", " (90033.94668275169, 120027.41455797412),\n", " (120027.41455797412, 150020.88243319656),\n", " (150020.88243319656, 180014.35030841897),\n", " (180014.35030841897, 210007.81818364142),\n", " (210007.81818364142, 240001.28605886383),\n", " (240001.28605886383, 269994.75393408624),\n", " (269994.75393408624, 299988.2218093087)]}" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "binning_dict" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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HpjpysvZBzsi+ovtmY44awZJ35V0d5ev7/Z3HhERVUn7GxHRvUE5haQbS3V2PNh+tnPBo1byvn2w/1FxQhERDWb7OOC4qvOIiBhs0v5GRDsYlCMwIiIiIiIiIqK9pANjhuclLQ1Qfn+h4nwiIiIiIiIiopQOjBmuodgWivL71RXmEhERERERERE1BmUHhqQLKfa+XlnS05K+QrGl09aSHgO2Lp93nv8EcAqwd3n+aj3EPlHS08D85bnHlOUblOW7AD+X9EDNNTcBlwJbldds2+CXHBEREREREdHWBuUinrY/382hrbo5f/gsxD4cOLxO+R3Ast1cs2lv40dEREREREQMRoNyBEZEREREREREtBfZrjqHtiTpL8A8XYq/aPu+/qi/o6PDEydO7I+qIqLJJE2y3VF1HtE7aX8jBo60v+0l7W/EwDG77e+gnELSCLY/VnUOEREREREREYNFOjDa2DZz7V51CnWNm3oR0Lr5wYwct55jl4oz6d610y8FYNt596g4k/rGvvVboD1+zyM+sG/FmXRvzItnV51CzIaxj3e7lnOfbLv8gwCs8JNTmhL/7wd/G4CNv/DjpsQHuO2CQwBY6+CfNCX+vT85GIBbn1yhKfEBPv7hvwOw7Q3fakr8sZv/FICVv9+cn9Ej/1v8jLb65I+aEh9g/HXfAZr/Gvrj9xztZZuNjq06hbrGTTgKgJErH1FxJt0b/UixR8HIpfarOJPujX7+TADW37c5bUtfTTq7aJu2XXCvmZxZnbGvjwLgjEc+WXEm3dt/5etm+9qsgRERERERERERLS8dGBERERERERHR8tKBEREREREREREtLx0YEREREREREdHy0oFRQ9JBku6X9ICkb5Vli0u6VtJj5ffFerh+CUnXSXpd0uldjq0v6T5Jf5V0miSV5ZtJulPSNEmfa+4rjIiIiIiIiGhP6cAoSVoD+BqwIbA28GlJKwJHAONtrwiML5935y3gf4FD6xw7E9gXWLH8GlGWPwXsDVzQ91cRERERERERMTClA2OGVYEJtt+0PQ24AdgJ2AEYVZ4zCtixuwC237B9M0VHxn9IWhpY2PZttg2c3xnH9hO27wWmN/oFRURERERERAwU6cCY4X5gs3IayPzAdsBywFK2nwUovy85G7E/BDxd8/zpsmyWSNpX0kRJEydPnjwbaURERERERES0p3RglGw/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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# plot each variable pair\n", "plt.rc('text', usetex=False)\n", "\n", "n=0\n", "for i in range(len(data.columns)):\n", " n=n+i\n", " \n", "ncols=3\n", "nrows=int(np.ceil(n/ncols))\n", "fig, axes = plt.subplots(nrows, ncols, figsize=(15,4*nrows))\n", "ndecimals = 0\n", "\n", "for i, comb in enumerate(itertools.combinations(data_binned.columns.values, 2)):\n", " \n", " c = int(i%ncols)\n", " r = int((i-c)/ncols )\n", "\n", " # get data\n", " c0, c1 = comb\n", " datahist = data_binned.groupby([c0,c1])[c0].count().to_frame().unstack().fillna(0)\n", " datahist.columns = datahist.columns.droplevel()\n", " \n", " # plot data\n", " img = axes[r][c].pcolormesh(datahist.values, edgecolor='w', linewidth=1)\n", " \n", " # axis ticks and tick labels\n", " if c0 in binning_dict.keys():\n", " ylabels = ['{1:.{0}f}_{2:.{0}f}'.format(ndecimals, binning_dict[c0][i][0], binning_dict[c0][i][1])\n", " for i in range(len(binning_dict[c0]))]\n", " else:\n", " ylabels = datahist.index\n", "\n", " if c1 in binning_dict.keys(): \n", " xlabels = ['{1:.{0}f}_{2:.{0}f}'.format(ndecimals, binning_dict[c1][i][0], binning_dict[c1][i][1])\n", " for i in range(len(binning_dict[c1]))]\n", " else:\n", " xlabels = datahist.columns\n", " \n", " # axis labels\n", " axes[r][c].set_yticks(np.arange(len(ylabels)) + 0.5)\n", " axes[r][c].set_xticks(np.arange(len(xlabels)) + 0.5)\n", " axes[r][c].set_xticklabels(xlabels, rotation='vertical')\n", " axes[r][c].set_yticklabels(ylabels, rotation='horizontal') \n", " axes[r][c].set_xlabel(datahist.columns.name)\n", " axes[r][c].set_ylabel(datahist.index.name) \n", " axes[r][c].set_title('data')\n", " \n", "plt.tight_layout()\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Correlation: mileage vs car_size\n", "\n", "From the above plots it seems like there might be an interesting a correlation between mileage and car_size. Let's see what phik correlation is measured for this data." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "phik = 0.77\n", "significance = 49.22\n" ] } ], "source": [ "x, y = data[['mileage', 'car_size']].T.values\n", "\n", "print('phik = %.2f'%phik.phik_from_array(x, y, num_vars=['x']))\n", "print('significance = %.2f'%phik.significance_from_array(x, y, num_vars=['x'])[1])\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Indeed there is a correlation between these variables and the correlation is also significant. To better understand the correlation, we can have a look at the significance of excesses and deficits in the 2-dimensional contingency table, so-called \"outlier significances\"." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
yLMSXLXSXXL
53.5_30047.06.88215521.48347618.076204-8.20953610.820863-22.423985
30047.0_60040.520.034528-0.251737-3.4084092.534277-1.973628-8.209536
60040.5_90033.91.627610-3.043497-2.26580910.215936-1.246784-8.209536
90033.9_120027.4-3.711579-3.827278-2.88547512.999048-1.638288-7.185622
120027.4_150020.9-7.665861-6.173001-4.7467629.629145-2.841508-0.504521
150020.9_180014.4-7.533189-6.063786-4.6600491.559370-2.7850496.765549
180014.4_210007.8-5.541940-4.425929-3.360023-4.802787-1.94246910.520540
210007.8_240001.3-3.496905-2.745103-2.030802-5.850529-1.1008738.723925
240001.3_269994.8-5.275976-4.207164-3.186534-8.616464-1.83094413.303101
269994.8_299988.2-8.014016-6.458253-4.973240-12.868389-2.98905520.992824
\n", "
" ], "text/plain": [ "y L M S XL XS \\\n", "53.5_30047.0 6.882155 21.483476 18.076204 -8.209536 10.820863 \n", "30047.0_60040.5 20.034528 -0.251737 -3.408409 2.534277 -1.973628 \n", "60040.5_90033.9 1.627610 -3.043497 -2.265809 10.215936 -1.246784 \n", "90033.9_120027.4 -3.711579 -3.827278 -2.885475 12.999048 -1.638288 \n", "120027.4_150020.9 -7.665861 -6.173001 -4.746762 9.629145 -2.841508 \n", "150020.9_180014.4 -7.533189 -6.063786 -4.660049 1.559370 -2.785049 \n", "180014.4_210007.8 -5.541940 -4.425929 -3.360023 -4.802787 -1.942469 \n", "210007.8_240001.3 -3.496905 -2.745103 -2.030802 -5.850529 -1.100873 \n", "240001.3_269994.8 -5.275976 -4.207164 -3.186534 -8.616464 -1.830944 \n", "269994.8_299988.2 -8.014016 -6.458253 -4.973240 -12.868389 -2.989055 \n", "\n", "y XXL \n", "53.5_30047.0 -22.423985 \n", "30047.0_60040.5 -8.209536 \n", "60040.5_90033.9 -8.209536 \n", "90033.9_120027.4 -7.185622 \n", "120027.4_150020.9 -0.504521 \n", "150020.9_180014.4 6.765549 \n", "180014.4_210007.8 10.520540 \n", "210007.8_240001.3 8.723925 \n", "240001.3_269994.8 13.303101 \n", "269994.8_299988.2 20.992824 " ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "phik.outlier_significance_from_array(x, y, num_vars=['x'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The values displayed in the matrix are the significances of the outlier frequencies, i.e. a large value means that the measured frequency for that bin is significantly different from the expected frequency in that bin.\n", "\n", "Let's visualise for easier interpretation." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "outlier_signifs = phik.outlier_significance_from_array(x, y, num_vars=['x'])\n", "\n", "zvalues = outlier_signifs.values\n", "xlabels = outlier_signifs.columns\n", "ylabels = outlier_signifs.index\n", "xlabel = 'x'\n", "ylabel = 'y'\n", "\n", "plot_correlation_matrix(zvalues, x_labels=xlabels, y_labels=ylabels, \n", " x_label=xlabel,y_label=ylabel,\n", " vmin=-5, vmax=5, title='outlier significance',\n", " identity_layout=False, fontsize_factor=1.2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# $\\phi_k$ functions for dataframes\n", "\n", "In our data we have 5 different columns, meaning we have to evaluate 4+3+2+1=10 pairs of variables for possible correlations. In a large dataset, with many different variables, this can easily become a cumbersome task. Can we do this more efficient? yes! We have provided functions that work on dataframes, to allow you to calculate the phik correlation, significance and outlier significance for all different variable combinations at once.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The functions are by default available after import of the phik package." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# $\\phi_k$ correlation matrix\n", "\n", "Now let's start calculating the phik correlation coefficient between pairs of variables. \n", "\n", "Note that the original dataset is used as input, the binning of interval variables is done automatically." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
car_colordriver_ageareamileagecar_size
car_color1.0000000.3896710.5904560.0000000.000000
driver_age0.3896711.0000000.1055060.0000000.000000
area0.5904560.1055061.0000000.0000000.000000
mileage0.0000000.0000000.0000001.0000000.768589
car_size0.0000000.0000000.0000000.7685891.000000
\n", "
" ], "text/plain": [ " car_color driver_age area mileage car_size\n", "car_color 1.000000 0.389671 0.590456 0.000000 0.000000\n", "driver_age 0.389671 1.000000 0.105506 0.000000 0.000000\n", "area 0.590456 0.105506 1.000000 0.000000 0.000000\n", "mileage 0.000000 0.000000 0.000000 1.000000 0.768589\n", "car_size 0.000000 0.000000 0.000000 0.768589 1.000000" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "phik_overview = data.phik_matrix(interval_cols=interval_cols)\n", "phik_overview" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When no interval columns are provided, the code makes an educated guess" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "interval columns not set, guessing: ['driver_age', 'mileage']\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
car_colordriver_ageareamileagecar_size
car_color1.0000000.3896710.5904560.0000000.000000
driver_age0.3896711.0000000.1055060.0000000.000000
area0.5904560.1055061.0000000.0000000.000000
mileage0.0000000.0000000.0000001.0000000.768589
car_size0.0000000.0000000.0000000.7685891.000000
\n", "
" ], "text/plain": [ " car_color driver_age area mileage car_size\n", "car_color 1.000000 0.389671 0.590456 0.000000 0.000000\n", "driver_age 0.389671 1.000000 0.105506 0.000000 0.000000\n", "area 0.590456 0.105506 1.000000 0.000000 0.000000\n", "mileage 0.000000 0.000000 0.000000 1.000000 0.768589\n", "car_size 0.000000 0.000000 0.000000 0.768589 1.000000" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.phik_matrix()" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_correlation_matrix(phik_overview.values, x_labels=phik_overview.columns, y_labels=phik_overview.index, \n", " vmin=0, vmax=1, color_map='Blues', title=r'correlation $\\phi_K$', fontsize_factor=1.5,\n", " figsize=(7,5.5))\n", "plt.tight_layout()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Global correlation: $g_k$\n", "\n", "The global correlation coefficient is a measure of the total correlation of one variable to all other variables in the dataset. They give an indication of how well on variable can be modelled in terms of the other variables. A calculation of the global correlation coefficient is provided within the phik package." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "car_color 0.6760316805291614\n", "driver_age 0.41913014836289686\n", "area 0.6057526929030086\n", "mileage 0.7685888294891848\n", "car_size 0.7685888294891848\n" ] } ], "source": [ "global_correlation, global_labels = data.global_phik(interval_cols=interval_cols)\n", "for c, l in zip(global_correlation, global_labels):\n", " print(l, c[0])" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_correlation_matrix(global_correlation, x_labels=[''], y_labels=global_labels, \n", " vmin=0, vmax=1, figsize=(3.5,4),\n", " color_map='Blues', title=r'$g_k$',\n", " fontsize_factor=1.5)\n", "plt.tight_layout()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Statistical significance of the correlation: $Z$-score\n", "\n", "When assessing correlations it is good practise to evaluate both the correlation and the significance of the correlation: a large correlation may be statistically insignificant, and vice versa a small correlation may be very significant. For instance, scipy.stats.pearsonr returns both the pearson correlation and the p-value. Similarly, the phik package offers functionality the calculate a significance matrix. Significance is defined as:\n", "\n", "$$Z = \\Phi^{-1}(1-p)\\ ;\\quad \\Phi(z)=\\frac{1}{\\sqrt{2\\pi}} \\int_{-\\infty}^{z} e^{-t^{2}/2}\\,{\\rm d}t $$\n", "\n", "Several corrections to the 'standard' p-value calculation are taken into account, making the method more robust for low statistics and sparse data cases. The user is referred to our paper for more details.\n", "\n", "As a result, the calculation may take a few seconds." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
car_colordriver_ageareamileagecar_size
car_color85.45407319.83944137.584186-0.622065-0.620222
driver_age19.83944184.3318221.814443-0.679303-0.509666
area37.5841861.81444372.420956-0.666399-0.361338
mileage-0.622065-0.679303-0.66639991.22964849.233473
car_size-0.620222-0.509666-0.36133849.23347369.041094
\n", "
" ], "text/plain": [ " car_color driver_age area mileage car_size\n", "car_color 85.454073 19.839441 37.584186 -0.622065 -0.620222\n", "driver_age 19.839441 84.331822 1.814443 -0.679303 -0.509666\n", "area 37.584186 1.814443 72.420956 -0.666399 -0.361338\n", "mileage -0.622065 -0.679303 -0.666399 91.229648 49.233473\n", "car_size -0.620222 -0.509666 -0.361338 49.233473 69.041094" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "significance_overview = data.significance_matrix(interval_cols=interval_cols)\n", "significance_overview" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAdgAAAGECAYAAACVlTEVAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdd3gUxRvA8e+kNwKh19AChI4QpAqIolQRkSaigMAPkSKgAgKKEnovdlHEQhekSAdBQKoiCIbepAcIBEJIm98fezlyyV0adzkj7+d57jl2dnZ23hy52Sm7UVprhBBCCGFfLs6ugBBCCPFfJA2sEEII4QDSwAohhBAOIA2sEEII4QDSwAohhBAOIA2sEEII4QDSwAqRDkoprZQ648TzzzXVoZGVfTWVUhuVUrdMebRSKpdSqqvp36OyvsZCCDdnV0AIkXlKqRzAT0BBYAvwD6CBGGfWSwgBSh40IUTalFLBQKzW+qSTzl8IyAmc01pHJUl/CtgIfKu1fiXZMTmBQkC41jo8K+srhJAerBDporUOc/L5LwGXrOwqYno/ZeWYW8AtR9ZLCGGbzMGKR5pSqoJS6hul1Aml1D2l1HWl1CGl1CdKqTJJ8lmdg1WGXkqpP5VS0Uqpy0qpOUqp/LbmTRPLUkq5KKXeUkqFmY69qJT6SCnlb+U8FmUppRoppTTwjSnL+0nmX0eZ8ticgzXVu5NSaoMp5mhTnRaZesVJ87ZUSn2plDpimueNMv17jI26NjKdd65SKsAU0wWl1H2l1FGl1GCllLLxeeQxlXtIKXXXdL6DSqmJpl588vxNlVKrlVLXTOWfUkpNVUrlsVa+EFlJerDikaWUqg5sB7yBv4CVgCdQAvgfsAM4nkYxU4E3MeY8t2D0GJsDjYGDaRz7A9AK+AUIA+oBfYAKSqnGOvX5m8sYjWuQ6bg/gQOmfQdsHQSglHIF5gPtTPXeAVwBigEtAA9gU5JD5mL8XA5h/Jx8gRrAu0BLpVRdrfVdK6fKBfxmev/V9P4EMBnIAYxKVq/ywHqgqKk+60y7ygJvAzuB5UnyjweGmGLYi9HDrwoMBJ5TStXTWl9J7WchhENpreUlr0fyhdFwaOBtK/tKAKWSbGvgTLI89U3pN4EqSdJ9gLWmfRpolOy4xPRjQLEk6fkxhnqtHTPXRnpXU/ooKzFY3QeMMKUfSRqjaV9OoGGytDaAT7I0L+BLUzkjku1rlCTGHwGvJPtqAXHAHcAvSbobxkWGBmYCnsnKrAiUTrLdzpT3MFA2SbrCaLg1sMDZ/8fk9Wi/ZIhYPMrymd7XJ9+htT6jtU4xr5lMb9P7dK21ubeqjUVI/YGENI7vr7U+n+S4q8DHps2GaRybKUopD2AwRgPULnmMWutbWuutydKW6SQLq0xp0UA/jMayjY3T3QH+Z8qbeNxujIuPxF5woheAcsBuYIDW+n6y8x3WlgvMhpveX9JaH0uSTwMfYPTiX1RK5bVRNyEcThpY8Sjbb3r/SCnVQCmV0SmTeqb3hcl3mL70UxuqjcVY/ZvcUdN74QzWJb1CMIZq92mtD6f3IKVUKaVUP6XUTKXUV0qpucAnGMOzZWwctk9rfc1KurUYnza9zzM1kqnVJT/GUPAJrfWfyfebjt8BuGLZiAuRpWQOVjzKJgJ1gaeArcBdpdQeYA3wtU771pbERTfnbOw/B1S3se+y1jrOSnqk6d0zjXNnVjHT+7FUcyWhlJqI0evN6AX5eRvp1mLMSL1KmN6DTAu9UiM9WOE00sCKR5bW+g7wtFKqDtASY+6wPvAk8K5S6hmt9V4HnT6t4WNHS9cN8EqpDhgLjC5gLB76DbiqtY4x7b/IgwuN5DITY3rqldjQX+bBQihbzmaiDkLYhTSw4pGntf4No+FAKZULCAXeAKbzYBjYmksYvalAjAU6yRWzkuZsib3KsunM/4LpvbfWelXSHUopH4wnSNm7XptSy4jxtCowHqDR1U7nF8LuZA5WiCS01hEYt58AVEoj+w7Te7vkO5RSQcBjdqyavewDIoCaSqkK6cgfYHq3NtzbCWPVrj0kzke/Yuse2URa638wLmgqKKXSe6EgRJaTBlY8spRSvZVSpazsam56tzWHmOgz0/tApVTlJOV6Y9xq8q/7/TIN7U7DaBgXKaVKJt2vlMqplEq6gjlxQdLrSRs+pVQ1YJwdq/YjxvxrbWCqabVz0npVTPZZfYjx812qlEpxIaOUKqKU6mvH+gmRYTJELB5lvYFPlFJhGPeE3gdKA48D8Ty4FcQqrfWvSqnpGA+a2KeU2gzcxniYQgzGgyta8e978P5YjN7180CYUmo7Dx40UR3YgLHoC4wLhVcxHrzRSCl1AON+3QbAEowGsfjDVkhrHaeUaotxy9SbQEel1E6MC4EyGKMJbTA9ElJrPV8pVQljtGGfqV6nMG7/CQTKYyymmv2wdRMis/51V9hCZKGRGA9LiMNY2PQ8kBv4DgjRWv+UjjIGYTTUR01lNMJoJGpjPCEK4Lpda/2QTKuX22I8iGIXxq0sL2A8QWkVxtxzYt7jGLf2LMN4CMVzGPcPDwU627lefwHVMJ70dJsHT8TSwARTXZPmH45xv/BSjLng1jy4OPrYVFchnEb+mo4QDqCU8gNOYzzxKJfWOt7JVRJCZDHpwQrxEJRSwUop32Rp/sDnGPdgLpDGVYhHk/RghXgISqnZQDeMp0JdxGhUH8MYaj4F1LbxNCMhxH+cLHIS4uEsw/ibrCFATVPaGYy53Yla63/V/KsQIutID1YIIYRwAOnBOknevHl1iRIlnF0NIYTIEvv37w/XWudLO2faVGAuTbS1R3mn4drddVrrpvaoQ3pIA+skJUqUYH/NR/PHrz8x7rZQr9d2ck2yXmLs3Fnq3Io4g19bAHTEd06uSNZTuV4GQF+f69yKOInK0xWllP2eCx0dB23TetCaFZ/uztI//vBofsMLIYTI1pRLxp/SmdUTotLACiGEyHakgRVCCCHsTWWugc1q0sAKIYTIdqSBFUIIIexMoUjjrxr+K0gDK4QQInuRIWIhhBDCMaSBFUIIIexNerBCCCGEY0gDK4QQQtiZQkkDK4QQQtidDBELIYQQjiENrBBCCOEAch+sEEIIYW8yRCyEEELYnyxyEkIIIRwhm/RgXZxdASGEEOK/SHqwQgghsh3pwQq7cnVxZcgzXTj2wWKiZ27j/NgVTH1xgEWenN5+zOkynOuT1xE5bTM/951G6XxF01X+c1We4OCI77g3cyuH35tP+xpP28yrlGLfsLnoT3bRolK9h4orowrnzEfktM3oT3bh6+ltTs9M7C7KhXee6cK2wZ8SPmkd4ZPWsa7fDEKKl7fIV6FQSdb0ncaFcSuJnrmNs2OW88XL71LQP49DYkwvrTVjJy2lWPD/8M73Eg2eHcmBg6fTPO79MQupXGsQ/oW7kKPQy4Q0eIeFS3dYzfvjT7uo2XAI3vleIk9gV5q2CeXu3Wh7h5JhWmvGTllBYMUB+BTqTsPmoRw4dDbN47r1+QyXgC4pXmHHLprzxMTE8fbI+TRoNhqfQt1xCejiyFAyTGvN2GmrCKwyCJ+ivWjYchwHDp1L17HXb9zhf4PmUqjCAHyK9qJ87WHMW/jgs9/7+ym695tDmZpD8C32P4JrDeODicuJjo51VDiZolxUhl9ZTXqw2cjXr4zgqXIhfLB6DmFXzlIsoAAVCpWwyLOwRyiVCpdiwKJp3Iq+y4hmXdk0YBaVQzsTGR1ls+x6pauytNc4Pt72I/0XTaV5pbrM7/4hN6Nus+HvPSny96j3HEVy5rN3iOkyqW1f7ty/h5+Xj0V6ZmL39vBk6LNd+Hrnasat/QYN9G34ItsHf0bdyT35/dxRwGi8T1+/xLzda7gYEU7JvIV4v0UPagSWo+b47sQnxDs6bKvGT1nG6IlLmRTaheCyRZg6eyVPt/qQv/ZMpWCBAJvH3Y6MomvnRlQILoqrqwtLlu+iY9dpuLq68OLzdcz5vpy7kb5vzeGdN1szKbQLN2/eZfO2v4iLc068SY2ftpLQycuZ+EEngssWYtpHa2jy/HgO7RxHwQK5Uj02uGxhvprd0yKtRGBe87+j7t1nzre/8HiN0tR9vAybtx1xSAyZNX7GakKnrGDiqPYElynEtE/W0aTtJA79GkrBAjltHnc78h4NW43Dz9eLmeNeJm9uP44cu0hMTJw5z8Llezh5+irv9GtOmVIFOHjkPO+NW8ahI/+wZG7frAgvbdlkDlYa2CSUUqOAvlrrvGnlzWrPVqhNx5AmVA19mb8vn7Gap3bJSjxboTaNp7/BlqP7Adh9+jCnQ3+kV/3nmbLxB5vlj2zejW0nDjBg0VQAfjn2OxULleK95q+laGBz+eRgzHO9Gbr8Y+Z0GW6fANOpflBVmlaozdi13zC5bX9zemZjvxdzn1Ij2xIRFWlO2xS2l2MfLKZvw3Z0/zYUgN9OHeK3U4fMebYeh39uXmPDgJlUKRLEH+ePOiLcVEVHxzB+2nKGDW5D3/81A6DO42UpUbEPsz9bS+h7nWweO218N4vtZ56qxuG/zzPvh63mBjY8/DYDh81l1qTu9OzWxJy3zXO1HBBNxkRHxzBh+iqGDmxF315G3erUDKJk1UHM/mIDoSPapXq8r48ntWsG2dyfK6cv109/ilKK2Z9v+Fc1sNHRsUyY8TNDB7Sgbw9jlKlOSBAlq7/F7DkbCX23rc1jx05bxf2YOPZuHIK3twcATz5hOVozpH9z8uX1N283qh+Ml6c7vQd/w9nz4RQv5vyvx+yyiliGiC19CTzr7EpY071uSzYf3WezcQWoVqwssfFxbD32hzntauQNDl44keowroebO0+WrcGi/Zss0hfs20CdUpXw9/K1SB/dqhc7Th5kU9i+zAWTSS7KhVntB/Phz18RfueWxb7Mxp6gEywaV4DY+DgOXzxF/hy2e4AA1+8adfBwc8516s7dR7l9O4r2beqa03x9vWjVrAZrNvyRypHW5cmdg5jYBz2ZRct2AvBq50YPXVd727nnOLcj79H++QeNva+vFy2bPsbajQftco5/64MMHsT+uDnN19eTls9WY+3GQ6kcCXPnb6d75yfMjas1SRvXRI9VDgTg6rXbmay1nansMUT8n2lglVLeaedKndb6H631fnvUx95qlajIsSvnmdVhMLembuLujF9Y2ms8hXI+uJr0cvMgLj6OBJ1gcez92BjKFyxhs+zSeYvg4eZO2GXL+au/L5/B1cWVsgUCzWmViwTRrU5L3vpxln0Cy4DeDdrg5e7BR78sSbEvs7Fb4+HmTo3AYI5cTjmXqZTC3dWNsgUCGf98H/acOcyeM87p3YQdu4CrqwtlggpapJcvV5SwYxfSVUZcXDwREXf5fuE21m/+k97dnzHv2733OOXKFGbOvM0ULdcL94AO1HpyKDt3hdk1jswIO3bJiL10stjLFibs+EUbRz1w5OgFcgb2xKtAN55oOpqtO/52VFXtLuzEZSP2UgUs0suXKUzYiUs2jzt99hpXr90ml78PLTpOxbNQD/KX68egEfMthoit2bn3BC4uinJlCtklBntQSmX4lc5yXZVSfyilVj1sHZ3WwCqlGiiltiil7iilbimlflFKPaaUKqSU+kopdUopdU8pdUwpFaqU8khybAmllFZKdVZKzVNKRQAr03HOXEqpL5VSF5VS0Uqpc0qpL5LsH6WUCk+y/YvpPMlfc5PkCVRKLVBK3VBKRSml1imlytnvJ2Uo6J+HrnWaU61oWTrOGUG3eaHUCCzHsv9NMOc5ce0fvD28qFS4tDnNy92TSoVLk9s35VVpogAfY1/EPcue3E1Tzy7AJ4c5bVb7QXy0dSknr/1jl7jSK7evP6Nb9WLQkhnEWZnvzGzs1gxv2pUAnxx8uWNFin0/vzGVmNnbOTpqEbl9/Wn58VtorTMekB3cjLiLn58Xrq6uFukBuXyJirpPTEzqi1J27TmGe0AHAoq9StfeHzFjYjeeb/WgV3T5agRHj18kdOJSJnz4MisXDcXXx4umL4zhytUIh8SUXjcj7uLn64Wrq+VXmBF7TKoNRrUqJZg8uhMr5g/iu89fJz4hgWfaTGDP/pOOrrZdGLF7WondJ9XYL181RlyGfLCYwgUDWLNwEMPebMmnc7cwYuyPNs93+cotxk5bRZf2dfHP8dD9GLtxYA92AGCXKy6njG0ppRoBG4AtwKvAXaAeUASIA24Ag4CbQFlgFJAP+F+yoiYDPwLtgPSsupgK1AUGApeBYkCDVPL3AZJ+O1fAGEY+ZoojN7AduA70BqKAocBGpVRZrfW9dNQpXZRSKBStP32bG3eNYZpLt8LZNvhTGpcLYfPRfaw7sotT4Rf47KUhdPs2lNv37jK+TR9yevsSG5/6FSqQoqFQKFO6sd0h5GnKFShOq0/esldY6Tbmud7sPnOENYd/s7r/YWNP1LxSXYY368rgpTM5diXlqsx+C6eS29efMvmLMaJZV9b0nUa9Sb24HxeT6djSQ2tNfPyD3nnixbi1q/LEzzGtK/bKFQPZu3U8EbeiWL1uP30Hz8E/hw+d2tUHICFBc+dONIvnDaZpk8cAqFurHMUrvs7sz9YweqTtOV57Shm7Mr1bz2trX6IBvS1ngVo8U42KtYcwbuoKln0/8OErbEe2Y7f2uSfmsV5WQoKRoWJwYb6YbszBN25Qgcg70YybvopR77TGx8fT4piYmDg6vPYxfr5eTA3Nms87XRy0yEkpVRRoAYzBaIMeirMWOY0D/gSe1Q++1dcm2W/+BldK7cBogL9SSvXTWif9JtultX4jA+d9HPhIa70wSdp3tjJrrc1jf0qpnMA8YDOQ2G0cCPgC1bTWN5LU9wzQHfgoaXlKqV5AL4DAwEAg/cMtN6MiORV+wdy4Amw/+Sf3Y2OoUKgkm4/uIzY+jo5fjmT+ax9ydNQiAH49cYB5u9fQuFxIKmUbZeZK0lM1tv0Ao2fr5uLKpDb9mLD+W1yUCzm9/fD3NuZmfT298fP04c5926uUH0aFQiXpXrcVDab2Jqe3UScfDy8Acnr5EZ+QQHTs/UzFnlRI8fIsfC2Uz35dzozNC63mOXHtPFyDPWcO8+uJA5we/SMv1XyGr3976NGkVG3dfpgnm48ybzesX4H2L9QlMvIe8fHxFr3YiFtR+Ph44u6e+q+3r68XIdWNhT5PP1mFW7eiGPLed+YGNneA8bNu9ERF8zH+/j7UqFaKI2FZN4KxdUcYjVuNNW83rBdMu+drEXknmvj4BIuenBG7R5qxJ+Xt7UGzJlVZtfaAXettD1t3HKXx8w9GqRrWLUe75x/PVOy5A4zf10b1gy3SGz9RnlETlnPyzFUqVyhmTtda82qfLzh89ALbfx5OQC7LtRjO9BCLnPIqpZIuHvlca/15ku3pwDuA5ZdhJmV5A6uU8gVqAQO0lbE1ZVyaDcBoiEoCXkl2BwInkmyvzuDpDwBvK6XigY1a62PprLML8D3gCXTUWif2lp/G6InfVkol/iwjgf1Aim910wf5OUBISIhO311rhr8vn8HTzd1a3SzmHfeePULQey9StkAgcfHxnAq/wMo+k9l1+i+bZZ8Mv0BMXCzBBYqz7fiDxTHBBYoTnxDPsSvn8PX0pljuAkxr9ybT2r1pcfzCHqGcuHqeMu+nvnIzs8rkL4aHmzu73pmTYt+F8Sv5cscKen43NlOxJz3H6jemsOnoPvotnJKuep27cZkbUbcpla9IhmPKqBrVSrN363jzdg4/by5cukF8fAInTl6mXNkHdQg7doHgshmvU/Vqpfj6uy3Exsbh7u5G+XJFUEqlGNnQWuOShQtGalQtwZ7NH5i3LWI/dcViXjDs+EWCyxTO1Hn+jWuaalQtzp4N75m3c/h5ceHSTeuxn7hEcJDti/bSJfLj4ZHyKz/x43VxsRxyHjhiPj+t/YP1S94i+F8095rIJXMTnOFaa6tX3EqplsBVrfV+0yjrQ3NGDzYAUICt2fg3MYZ+xwNbMYaJa2L0Br2S5b2SwXP3BT4E3gM+UkqdAEZqrRekcdyHwFNAfa11eJL0vEBtoIOVYzZZScu0VYe280HLnuTxzWlevdog6DE83Nz5858TKfInDm8G5SvG08E1afXx2zbLjomLZcux/bSr8RSfb19uTu8Q8jS/nfqL29F3cXVxpdHUPhbHFcyZmwWvhTJs+cdsPuq4tWHbT/yZ4txNK9Zm6LOv0Gz2QE6FWy7oyUjsYMxvr+s3g5PXLtBpzsgUC6VsKVsgkLx+uTgdnvaimoeVI4e3ubeZqHhgPvz9fVi8/DdGvPMiAFFR91m5Zh+9ktxWk147doVRtEgecw+oZdMafDBuMVu2Hab5s9UBuHXrLvsPnOKt/s89ZETplyOHNyGPlbJIK14sD/45vFn8025GvPU8YMS+au0f9Hz1yQyVf+9eDGs3HqRGtZJ2q7O9GLFb1qt4sbxG7Cv2MmKw8TlERd1n1boD9Hyloc2yPDzcaNKwIlt+tVyktmnbEXx8PAgqmd+cNm76KmZ/sZGFc/pQv3ZZO0ZkH0qBq/2viOoBzymlmmO0Nf5Kqe+01i9ntkBnNLA3gQRsj4+2AxZrrc03WCqlKtjIm6HVJVrrCKA/0F8pVQVjKOB7pdTBpMPBSSml2gDvAq9ZWWF8A1gBjLZyaKSVtEz7fPty+j/ZnpV9JjN27Tfk8PJhwvNvsOHvPew4+ac534hm3Qi7cpbwOxFULhLEyGbdWLBvIxvDHtzL2qVWM77qMpzS773IuRuXARj989f8MvAjprV7k+UHttG8Ul2aV6xL09lGbzU+IZ6tx3+3qFPx3MZHeOjCSfacOWzPcC1cv3srxblL5DHO/euJA9y9b0x1ZyZ2L3dP1vSdRoBPDvounEyVog8asfuxsRz4xxjkmPRCP+IS4tl9+jAR9yIpX7Ak7zzzMieunmfBvg0Oiz01Xl4eDB34PKMnLiEgl6/xoIlZq0hI0PTr3cycb94Pv9C9z8ecPPgRxQPzcfbcNbq9/hEvtatPqZIFuHMnmmUr97BgyQ4+mf7g4Qsh1YNo3aImr73xMeM/eJm8eXIwcfpPuLu58UbPpk6I+AEvLw+GvNmS0Mk/EZDTl+CyhZn20Roj9l4PVkLPW7Cd1/p+wYnfp1A8MC+3bkXRquMUOrevR1CpAoRfj2T6J2u5cOkmC7+2fIjCmg1/cjfqPgf+MlbXL/nJ+H9U87FSFA903r2gXl7uDBnQnNApK43PvUwhpn28zoi9x4Onr81buIPX+n/FiX0TzPeujnz7OZ5oMZbu/ebQ8YVaHDx8ngkzVzNi8HN4ehojZD8s+Y3hoUvp2qk+RQoFsGvfg8VfpUvks3objzO42nkURWs9DBgG5nVCbz1M4wpOaGC11neVUruBV5RSs60ME3sD95OldXZAPQ4qpd42lR0MpGhgTQ37N8CnWuuvrRSzCWgPHLbngiZrIqOjaDy9LzPbD2LBa6OJiY/lpz9/ZeCS6Rb58vjlZHqDN8nrm4vzN68weeMPKR6y4KJccHN1My9iAthx8k9e/OJdQp/7H68/8QKnr1/kpa/fs/oUp3+rzMReIEduqhUzrtBXvzHVIu+Z65coOaINAPvO/U2/Ru3pVb81Xu6enLtxmaV/bGHc2m+IinHeYwOHDm5DgtaMm7KM6zfuEPJYKTasGEmB/A+eZJSQYCyUSfxVy5XTh8KFAgidtJTLVyLIldOXCsFFWb3kXXNPNdF3X/bn7RHfMmjYXKLuxVCvdjk2r36fANP8rDMNHdiKhATN+OkrjdirlWT9siEUyP/gSUYJCQlG7KZrcU9PN/Ll9WfM5J+4Gn4bL0936jwexC+rhqfoJfcZPJez5x8MWLXvatya9tVHPen6UmprIx1v6IAWpthXc/3mHUKqlWD9kreSxZ74uT847vHqpVjx/QDeHb2EH5buIn/eHLw7sBXD3mxhzrPhF+Niee787cydv93ivF/Neo2uneo7Nrh0UDikB2t3yhm3GCilGgAbMRYMfY6xiKkOsA9jVW9/jBVcJzEawPoY87GVtdZ/KaVKAKeBVlrrdK8uUUptB5YBf2H0fnsCzYBgrfU/yZ/kpJQ6htHgdwaSLq66prU+qZTKC/wOXABmmd4LAA2B7Vrr+bbqEhISovfXfDQfpKU/2QWAer22k2uS9RJj585S51bEGfyMJwzpCJvrCv+zVC6jI6Svz3VuRZxE5emKUmq/rfnPjPIqGaBLvP9Uho872m2p3eqQHk75htdab1NKNcEYWv0Oo/H6A1iOMd+ZDwg1Zf8Ro8FN8z7XdPgN6AqUwLit5w+gmdba1pLIMqb3rcnSvwG6aq3DlVK1MZZ0TwNyYcwtbwfs8zgZIYQQFhQqW/RgndaF0lpvxfY9qN2spJl/mlrrM0m3M3DOtwGbK1601qMw7rlN3E7zHFrri1ivrxBCCAfILkPEj+YYpRBCiOxL2X+RkyP8ZxpY0/2zrqlkibd2360QQojsxejBOrsWafvPPOwf45GLsam8XnVe1YQQQtiTq4vK8Cur/Wd6sBiLoGqmsj/ln0YRQgiR7cgcbBbTWl/HeOi+EEKI/zClnNMjzaj/TAMrhBDi0ZEd5mClgRVCCJGtKGQVsRBCCGF/jnnYv91JAyuEECJbkUVOQgghhAMYQ8TOrkXapIEVQgiR7UgPVgghhLCz7HKbTjboZAshhBDZj/RghRBCZCuyyEkIIYRwEFnkJIQQQtiZkvtghRBCCMfIDoucpIF1Iv3JLmdXwake6fj92jq7Bk6jcr3s7Co4jcrT1dlV+E+QOVghhBDCAZSSOViRBvV6bWdXwSkSe66PYvyJsetrXzq5JllP5esBPOKxX5/r3Io4if177kp6sEIIIYS9GUPEzq5F2qSBFUIIke24SA9WCCGEsC/pwQohhBCOoCAb3KUjDawQQojsRXqwQgghhIO4ZIMurDSwQgghshXpwQohhBCOIHOwQgghhP1JD1YIIYRwELkPVgghhLAz6cEKIYQQDiJzsEIIIYSdyR9cF0IIIRxEerBCCCGEnckcrBBCCOEgLvIH14UQQgj7Ukr+4LoQQgjhEDIHKxyicM58HB21ED8vH/zefJK79+8BkNPbj6kvDpPMqK8AACAASURBVOD5qg3wcHXn15N/0m/hFE5e+8dmWS7KhbeadKZl5XpUKFgSgP3nwhi+4lP2nf3bnK9CoZJMadufKkWCyOObkyuRN1j/9x5GrviMy7evOzZgoHXVBnzYshflCgRy8VY4s35ZzLRN8y3yvN6gLS0q1aV2yUrk8ctJo6l92Hr891TLzS7x26K1ZtyMn/l07lbCb9yhZrUSzBjTkWqVA9M89vqNO7w7Zhkr1h7gVuQ9ihfNw7ABzXilQ10ARk1cwYeTV1o9dszwNgwb0NyusWSUI2MH2HfgDMPHLGP/wbNoraleuTih7z5PrRqlHBlWumitGTd9NZ9+vdkUe0lmjOuc/thDl7Bi7R/cum2KfWBLXulQD4C9v5/ik6+38OuuY1y8HEGxwrnp1LYWQ/q3wMvL3dGhpYvMwQqHmdS2L3fu38PPy8cifWGPUCoVLsWARdO4FX2XEc26smnALCqHdiYyOspqWd4engx9tgtf71zNuLXfoIG+DV9k++DPqDu5J7+fOwoYjffp65eYt3sNFyPCKZm3EO+36EGNwHLUHN+d+IR4h8Vbt1QVfuw1nq9+W8VbP86kVomKTGjzBgk6gRmbF5rzvVK7GVpr1v29i5dqPpuusrND/KkZP3MNoVNXM/H9FwkOKsi0TzfQpN00Dm0dRcECOW0edzvyHg1bT8TP14uZ4zqRN7cfR45eIib2QRw9Xq5P08YVLY5bvuYAE2etpVnjSg6LKb0cGfv5Czdo8uJUqlcJ5JvZ3QGY/NE6nm0/nT9/eZ/ixfI4PL7UjJ+xmtApK5g4qj3BZQox7ZN1NGk7iUO/hqYde6txpthfNmI/dpGYmDhznoXL93Dy9FXe6decMqUKcPDIed4bt4xDR/5hydy+WRFeukgP1o6UUhrop7Webdr+BQjXWr/o1IplsfpBVWlaoTZj137D5Lb9zem1S1bi2Qq1aTz9DbYc3Q/A7tOHOR36I73qP8+UjT9YLe9ezH1KjWxLRFSkOW1T2F6OfbCYvg3b0f3bUAB+O3WI304dMufZehz+uXmNDQNmUqVIEH+cP+qIcAF4r0V3tp/8k57fjQVgw997CPDx573m3fl461Ji440vh7qTeqK1pmLhUuluYLND/LZER8cyYeZahvZvRt/XGgNQJ6Q0JUOGMvurzYQOa2Pz2LHTf+b+/Tj2rn8Lb28PAJ6sH2yRp2jh3BQtnNsiLXTqaoLLFExXT8mRHB376g0HibwTzdKv+5Arp3EhW7dmafIFD+TnjYd4vVsjxwSWDtHRsUyY8TNDB7Sgb4+nAagTEkTJ6m8xe85GQt9ta/PYsdNWcT8mjr0bhzyI/YnyFnmG9G9Ovrz+5u1G9YPx8nSn9+BvOHs+nOLF8jogqv+mbLAOy6wOsNjZlXAmF+XCrPaD+fDnrwi/c8tiX7ViZYmNj2PrsT/MaVcjb3DwwglaVKpns8wEnWDRuADExsdx+OIp8ucISLU+1+8adfBwc+x1WrWiZdkYttcibf3fu8ntm5M6pSqb07TWGS47O8Rvy869J7gdeY/2rUPMab6+nrR8piprN/2V6rFz5++ge+f65i/Z9Lhx8y4bth6hY5vHM11ne3F07LFx8bi5ueLn62lO8/P1xM3NNVP/z+xp557jRuzPP/gcfH09aflsNdZuPJTKkTB3/na6d34i1diTNq6JHjNdUF29djuTtbYvY4hYZfiV1bJNA6u13qW1vuLsejhT7wZt8HL34KNflqTY5+XmQVx8HAk6wSL9fmwM5QuWyNB5PNzcqREYzJHLp1PsU0rh7upG2QKBjH++D3vOHGbPmSMZKj+jvNw9iImLtUi7HxcDkOHY0uPfFr8tYccv4+rqQplSBSzSy5cpRNiJyzaPO332GlfDI8nl70OLTjPwLNKb/OUHMmjkQouhwuSWrNxPbGw8HdvUtFsMmeXo2Nu2rIGPtweD31/M1Wu3uXrtNgNHLiIgpw/tnguxWX5WCDthK/bChJ24ZPO402evcfXabSP2jlPxLNSD/OX6MWjE/FQ/dzAuaFxcFOXKFLJLDA/N9OfqMvpKtUiliimltiil/lZKHVZKDXjYamZ5A6uUmquU2qeUaqGUOqKUilJKrVZK5VZKBZkCvGvKUyXJcVopleoEgFKqkqmsSNNrsVKqYJL9vkqp2Uqpo6bznlZKfaSU8k9WToBSaoGpHheVUkOUUpOVUmeS5Qs05bthKm+dUqqcnX5UFnL7+jO6VS8GLZlBnJX5vhPX/sHbw4tKhUub07zcPalUuDS5fVNekaZmeNOuBPjk4MsdK1Ls+/mNqcTM3s7RUYvI7etPy4/fcvgV/Ylr/1CzRAWLtMdLGHODGY0tPf5t8dty81YUfr6euLpa/hoH5PIhKirG5pfm5atGL2TIh0soXCiANQsGMGxAcz79Zisjxi23eb6Fy/dQvUogZUsXtJknqzg69sIFc7H5x8H8uGo/BSsOpmDFwSxb/TtrF75Jvrw5HBdYOtyMuJvJ2I0RlyEfLKZwwQDWLBzEsDdb8uncLYwY+6PN812+coux01bRpX1d/HN42y+Qh5C4yCmjrzTEAYO11uWB2sAbSqkKaRyTKmf1YAOBD4ERQC+gLvA5sMD0ehFjfniBUunr1yulgoAdgBfQBegKVARWJinDB3AFhgPNgJFAY1IOPc8FmgADTPV7BuiQ7Hy5ge1AOaA30B7wBTYqpez+v3DMc73ZfeYIaw7/ZnX/uiO7OBV+gc9eGkLZAoEU9M/Dpy+9Q05v3wwtwGleqS7Dm3VlyPKPOHblXIr9/RZOpdaE13j561H4eXqzpu80PN3SP8yYGZ9uW0brKk/Qo15rcvnk4JnytRj8dCcA4hMS0jg6Y/6N8YMx/B0XF29+xccbcVv79Uhs8G395iQkGPsrBhfmi6mv0PiJ8gzs3YSh/Zsx68tNREXdT3HMpSsRbN15zCnDw86I/dKVCNq99ik1qhbn5wUD+HnBAGpULU7LzjM590/WrRrPWOyY9lkvyyL26d1o3KACA19/lqEDWjDriw1WP/eYmDg6vPYxfr5eTA3tZJ+g7MRFqQy/UqO1vqS1/t3070jgb6DIQ9XxYQ5+CLmB9lrrH7XW3wFfAG2BmVrrz7TWa4B3gfJAcCrlJPU+cBloprVerrVeCrQGqgPNAbTW17TWr2utl2itt2I05j2AZ5RSgWD0goHngN5a6y+11quAlkDyRnMgRoP6lNZ6kSlfK8Af6G6tgkqpXqae+b5r166lMyzjFpHudVvxweovyentR05vP3w8vADI6eWHl7snsfFxdPxyJAX8c3N01CIuTVhNqbxFmLd7DVcib6brPCHFy7PwtVA++3W5xercpE5cO8+eM4f5fs9anp31Jo8VLctLNZ9JdyyZ8dXOlXz66zI+6fQ2N6ds4Mf/jefD1V8BcOX2Dbud598aP8DWncfwKNzb/Hq67RQCcvoQeSfa/KWbKOLWPXx8PHB3tz43nDvAF4BG9Sx/tRrXD+b+/ThOnkn5f3PRT/vQGjo8n/XDw86IfdLsdcTFJ7B4Tm+aNq5E08aVWPLV67i6ujD54/UOiNK6rTuO4lGwh/n1dJuJBOTytRF7VPpiT7agq/ET5U2xX7VI11rzap8vOHz0AqsXDCQgl68dI3s4D9GDzZv4HWx69bJavlIlgMeA3Q9TT2etIj6jtT6ZZPuE6X2zlbQiGFcSaXka+AZIUEolxnUaOAOEAKsBlFJdgEFAGYwGMlFZ4JwpL4D5BkCt9T2l1EaMYYOk59sA3E5yvkhgf5IyLGitP8foqRMSEqJT9o+sK5O/GB5u7ux6Z06KfRfGr+TLHSvo+d1Y9p49QtB7L1K2QCBx8fGcCr/Ayj6T2XU69UUfiedY/cYUNh3dR7+FU9JVr3M3LnMj6jal8j3URV6aEnQC/RZOYeTKzymaKz+nr18kuEBxgHTFlh7/5vgBalQtzp71w83bOfy8uHDpJvHxCZw4fZVyQQ+GbcNOXCI4yPYwbukS+fDwSPmrrzF6OC5WJqsWLttL/VpBFCuSO8U+R3NG7EdPXKZiucIWjZWHhxsVyxXmlJULEEepUbU4eza8Z962iP3UFYs5USN223OkpUvktx67qefrkuzZgwNHzOentX+wfslbBP9b5l6TyOQfXA/XWqc6ia6U8gOWAm9qrR9qVZezGtiIZNsxVtIT07zSWWZeYIjplVwxAKVUG2Ae8AlGD/kGUAhYluQ8BYFIrXV0sjKS/1blxWhwO5DSpnTWOV22n/iTRlP7WKQ1rViboc++QrPZAzkVfsFiX+LQZlC+YjwdXJNWH7+davkF/fOwrt8MTl67QKc5I1MslLKlbIFA8vrl4nT4xQxEk3kRUZHmFb99GrZlx8mDHL1y9qHLzQ7x5/DzIqRaCYu04kXz4J/Dm8Ur9jFiUEsAoqLus2r9QXp2ecJmWR4ebjRpWJ4t28Ms0jdtC8PHx4Ogkvkt0s+cC2fX/lN8NKGzfYLJIGfEHlg0D2s2HSImJs7cKN2/H8tfYRdp+UyVFOU6So4c3oQ8VtIirXixvKbY9zJi8HOAKfZ1B+j5SkObZRmxV2TLr8ljP5Licx83fRWzv9jIwjl9qF+7rB0jsg+lMt3AplGucsdoXL/XWtuemE6nbHMfbDrcwGgov7SyL9z03g7YrbU2t1ZKqeT/Iy8DOZRSXska2XxWzrcCGG3lfJFW0jLt+t1bKZ5IVCKPcUX564kD5ic5jWjWjbArZwm/E0HlIkGMbNaNBfs2sjFsj/m4LrWa8VWX4ZR+70XO3biMl7sna/pOI8AnB30XTqZK0SBz3vuxsRz45xgAk17oR1xCPLtPHybiXiTlC5bknWde5sTV8yzYt8Ge4aZQq2RF6peuyoF/juPv5UunkCY8W6E29af8zyJfjcBgSuQpRLEAY3Vlw7KPkdcvJ2euX2L/ubBsG78tXl7uDOnflNCpqwnI6UtwGeNhCwkJmn6vPWXON2/hTl578xtO7BlrfkDCyMGteKLVBLr3/5qObR7n4JF/mDBrDSMGtcTT0/JpPQuW78XNzZUXW9XI0vhS4+jYe7z8BHO+384LXT/m9W6N0Frz8Ve/cOnKLXp1aeCUmBN5ebkzZEBzQqesJCCXr/GgiY/XGbGb7osFmLdwB6/1/4oT+yaY710d+fZzPNFiLN37zaHjC7U4ePg8E2auZsTg58yx/7DkN4aHLqVrp/oUKRTArn0PBhtLl8hn9TaerJf2nGqGSzQmtucAf2utp9qjzP9SA7sJqATs17aXdXoDyWfyk1+W7zO9PwcsAjAtWmqCZcO5CWNh02Gt9b2HqLfd5PHLyfQGb5LXNxfnb15h8sYfUjxgwkW54ObqhsL4z1kgR26qFTOuUFe/Yfl/6sz1S5QcYdywv+/c3/Rr1J5e9Vvj5e7JuRuXWfrHFsat/YaomOSdffuKjY+jQ42nGdWiBwla8+uJA9Sb3Iu/Lp60yNe3UTu61mlh3v6gZU8A5v62mm7zjOug7Bh/aob2b0ZCgmb8zJ+5fvMuIVWLs37xQArkf/AlmKA18fEJFqudH69ekhXf9uXdMcv44cc95M+bg3ffbMGwAc1SnGPhsj089USw01fPJufI2GtULc6aBQP4cPJKXnnDmJqpXL4o6xcPpGqlYlkXpA1DB7QwYp++mus37xBSrQTrl7xFgfwPnuKUkJAY+4PjHq9eihXfD+Dd0Uv4YekuI/aBrRj25oPfmw2/HAaMe2bnzt9ucd6vZr1G1071HRtcOiiM32U7q4exQPaQUuqAKe1drfXPmS1QZfUtBkqpuUClpOPgSqmuwNdADq31HVNaCYw51FZa61VpPclJKVUW2APsBL7C6LUWwWgY52qtf1FK9QE+wli9vBtj8VNroFTieUxlrcD4Yb+D0aMdhDFHG6u1LmXKkxf4HbgAzDK9FwAaAtu11pYPyk0mJCRE76/5X7q+ST/9yS4A1Ou108j535MYu75mbaDlv03l6wE84rFfn+vcijiJytMVpdT+tOY/0yuocgE9+aeXMnxcm9LT7VaH9PjPfMNrrY8ppWoDoRgLibwxGr1NPFgw9RlGYzoAY851A/ASsCtZcV0x5mlnAncwGuVTgHkJpdY63HS+McA0IBdwCePWnYN2D1AIIYSZI+Zg7S3LG1itdVcraXMx7j1NmnYGUEm2VbL9jayUE4ZxD62tc8cDb5leSSUv+wZJFi+ZVgn/RbIl21rri0A3W+cTQghhfyod97X+G/xnerD2pJRqBxQGDmHc19oT47aeV5xZLyGEEAaXbPCkX2lgrbuL0TMNwnjy0yGMOdo9qR4lhBDC4YxFTtKDzZZMq8YyvXJMCCGEY0kDK4QQQtidcsRtOnYnDawQQohsRYaIhRBCCEdw0KMS7U0aWCGEENmK9GCFEEIIh5A5WCGEEMIhXJAerBBCCGFXMkQshBBCOIQMEQshhBB256g/uG5v0sAKIYTIdqSBFUIIIRxAhoiFEEIIO1PIn6sTQgghHCI73Kbz7+9jCyGEENmQ9GCFEEJkK3IfrEiT/mSXs6vgVI9y/CpfD2dXwWke6djzdHV2Ff4blCxyEkIIIRxAFjmJtNxZ6uwaOIdfWwD0tS+dXJGsl9h7U6/XdnJNsl7iiMXyUwOdXJOs93ypacCj+bmD/UerFKCkByuEEELYn0s2WKMrDawQQohsRkkPVgghhLA3JYuchBBCCEdQKBkiFkIIIexPerBCCCGEA0gPVgghhLAzJX9wXQghhHAMWUUshBBC2J2S+2CFEEIIe5MnOQkhhBCOoGQOVgghhHAIhauzq5AmaWCFEEJkK7KKWAghhHAQuQ9WCCGEcADpwQohhBB2puSv6QghhBCOIffBiiyhtWbc5B/5ZM56wq9HUrN6aWZO6k61KiVTPe79MQv5ccVuzp6/htaacmUK8/aA1nRoWy9F3h9/2sW4qcv468h5fLw9qFkjiKXfvYWvr5ejwko3rTXjZvzMp3O3En7jDjWrlWDGmI5UqxyY5rHXb9zh3THLWLH2ALci71G8aB6GDWjGKx3qAjBq4go+nLzS6rFjhrdh2IDmdo0luS0DP6ZR2epW99WZ2IMz1y8x6OlOPFO+FqXzFuFmVCSbj+1j2PJPuHQrPN3naV21Act7T2Tf2b+pOb6bOT2keHn6NGjLE0FVKZwrH+dvXuGHveuZsO5b7sfFPHR8mXHpTATLv9jHsQOXOXfsOuVrFib0h3ZpHnfi4BW+m7KDk39dBa0pVTE/nQfXpWy1QuY8B7afZdPiwxz94xLXLkTSoX8tOg6o48hwbGr72JMMeqoT5QoUx9fTi7M3LvPt7rVMXP8tsfFxNCxTnV8GfWz12HVHdtF01ps2y/76lZF0rdMiRXrwqA4cvXLWvF0jMJixrV+nRmAwSsHv548x/KdP2XPm8MMH+FCkByuyyPgpyxg9cSmTQrsQXLYIU2ev5OlWH/LXnqkULBBg87jbkVF07dyICsFFcXV1YcnyXXTsOg1XVxdefP7Bl8qXczfS9605vPNmayaFduHmzbts3vYXcXHxWRFemsbPXEPo1NVMfP9FgoMKMu3TDTRpN41DW0dRsEBOm8fdjrxHw9YT8fP1Yua4TuTN7ceRo5eIiX0QV4+X69O0cUWL45avOcDEWWtp1riSw2JK1Gf+RPy9fS3SPmzZi8eKlWXv2b9pWqE2bao25MsdK9h95jAF/HMzqkUPdr79BZVGv8Td+/fSPIenmwdTXxzA5VvXU+zrUONpSucrwoT133H86nmqFA1idKteVCkSxIufD7NbnBlx7vh19v9yhrKPFSI2Nn3/B8MvRvL+K0spVTE/AyY/C8DyL/bxwavLmPbzy+Qv4g/AH9vOcvZoOFXqBrJ91VGHxZAeeXxzsuXY70za8D0R9yJ5vERFRrV4jYL+uem3cAq/nw+j9sTXLI4JDCjIop5jWHP4tzTL//vSGbp9O9oi7cz1S+Z/Fw3Iz8YBs/j9/FFe+eYDAN5u8jLr+8+gSujLnLtx+eGDzCT5e7AiS0RHxzB+2nKGDW5D3/81A6DO42UpUbEPsz9bS+h7nWweOy1JTwXgmaeqcfjv88z7Yau5gQ0Pv83AYXOZNak7Pbs1Medt81wtB0STcdHRsUyYuZah/ZvR97XGANQJKU3JkKHM/mozocPa2Dx27PSfuX8/jr3r38Lb2wOAJ+sHW+QpWjg3RQvntkgLnbqa4DIF09VDflh/Xz5jse3u6kZI8WAW7t9EfEI820/+SfAHHYlPeNDQ/H7uKMc+WEzbx55k3q6f0zzH2006cyHiGievXaBS4VIW+yas/5bwOxHm7a3Hfyc69j6fdx5GYO6CTvmSrflUKWo1KQ3AxDdWcftm2hcR+345TfTdWIZ+0hJff2PUJbh6IV4N+YzffzlN085VAXh16BN0e7cBAHs2nnRQBOnz+fblFtu/HPsdfy9f3mjYln4LpxAZHcXu05Y9yQZBjxGfEM+i/ZvSLP9uzL0UxyfVolI9cnj58MJnQ7l17w4AO08dInzSWppXqsun237MRFT2kx1WEf/7ayhStXP3UW7fjqJ9m7rmNF9fL1o1q8GaDX9kuLw8uXMQExtn3l60bCcAr3Zu9NB1dYSde09wO/Ie7VuHmNN8fT1p+UxV1m76K9Vj587fQffO9c2Na3rcuHmXDVuP0LHN45mu88NoWrEOuX1zMn/vegBu3btj0bgCHL96nrv375E/h+3Ri0TFAgrwzjMvM2DRNKv7kzauif44fwwgXeU7gouLyvAx8bEJuLi54OXz4LP28nHHxc0FrR+u7Kx0/e4tPNzcbe7vGNKErcf/yND0gC3urm7ExcdzJ8koyJ3oKOLi41E4++dk3Aeb0VdWkwbWCqWU8ycW0yns2AVcXV0oE1TQIr18uaKEHbuQrjLi4uKJiLjL9wu3sX7zn/Tu/ox53+69xylXpjBz5m2maLleuAd0oNaTQ9m5K8yucWRW2PHLRvylClikly9TiLATtntXp89e42p4JLn8fWjRaQaeRXqTv/xABo1cSExMnM3jlqzcT2xsPB3b1LRbDBnRMeRp/rl5lV9PHLCZp3KRIHw9vTly6XSa5U1p259F+zfxx/n0D4fWLVWZ+IR4i7m6f7s6TYPw9HLj67HbiAiPIiI8iq/GbMPP35O6zco4u3qpclEueLt7Uq90Vfo/2Z5PbPQcg/IVo3pgOebv3ZCucisUKsmtqZuInrmNXwd/RoMyj1nsX/rHFqJio5nStj/5cgSQL0cA09q9yc2oSBb/nnYP2dEULhl+pVmmUk2VUkeVUieUUkMfto7/+SFipVQdYBgQAuQEjgOTtNbfm/Z3Bb4GagETTe9jgdFKqUrABKCBqbi1QD+t9WXTsb6m/U2AYsAV4GdgmNb6dlbEdzPiLn5+Xri6Wj42LCCXL1FR94mJicXDw/YV7649x6jz1LsAuLm5MnvKazzf6kHv7PLVCI4ev0joxKVMHP0yeXLnYOL0n2j6whiOH5hFgfy5HBNYOt28FYWfryeurpa/PAG5fIiKiiEmJg4Pj5T/zS9fNT6eIR8uoUObx1mzYAB/Hv6H4WOX4ebmysT3X7R6voXL91C9SiBlSxe0ut+RvN09aVW5Pp9v/8lmHqUUM9oN5NiVc6w/sjvV8hqVrc6zFWpTdlTaC4QSFfDPzfBmXfl291oio6PSfZyz5S7gx+jv2zKm5wpWf2NcnATk9+W9uW3ImcfHybVL3d0ZW/By9wTgm12refvHWVbzdarZhJi4WJb+sSXNMv84f5TdZw5z5NJp8vnlYvDTL7Gh/0zqT/4fe88eAeDSrXCenPYGq/pMYUDjDgBcjLjGs7MGWB3ZyEqOeJKTUsoV+Ajj+/wfYK9SaoXW+khmy/zPN7BAcWAH8CkQDdQDvlZKJWit5yfJNx/4BPgAiFBKBZmO2wd0AVyB0cBKpdTjWmsN+JjShwPXMBrZ4cBi4Fl7B6K1Jj4+wbytVOJ7yuEabRr3srYvqcoVA9m7dTwRt6JYvW4/fQfPwT+HD53a1QcgIUFz5040i+cNpmkT4wq3bq1yFK/4OrM/W8PokbbneO0tZfzK4j15XmOf9bISEoz9FYML88XUVwBo/ER5Iu9EM27Gz4x6uxU+Pp4Wx1y6EsHWnccYP7LtQ8eSGa2qPEEOL1/z8LA141r3oU6pSjSc2oe4BNsLgFxdXJnZfhCha77myu0b6Tq/u6sbi3qM4c79ewxcMj3D9XemG1fvMvGN1ZSqlJ8+Y58GYM13fzKmx0+MW9yefIX9nVxD2+pO6oWPhxePl6jAe827M7vDW7yxYFKKfB1DmrD+793cjEr72n7mlkUW26v/2smR9+bzbtNXafPZEAAK+udhSc+x7D8XRo/vxgLwRsMXWf3GVOpO6sn5m1fsEF3mOWAV8ePACa31KaN8tQBoDUgDa4vWekHiv5XxTbwNKAr0xGhUE83UWs9Ikvdb4DLQTGsdY0o7CIQBzYHVWutrwOtJjnEDTgPblVKBWutzSeuilOoF9AIIDMz4Apmt2w/zZPNR5u2G9SvQ/oW6REbeIz4+3qIXG3ErCh8fT9zdU/+IfX29CKkeBMDTT1bh1q0ohrz3nbmBzR3gB0CjJx6spPX396FGtVIcCfsnwzE8jK07j9G4zWTzdsO6ZWn3XAiRd6KJj0+w6MVG3LqHj4+HzfhzBxgrcxvVs1zU1Lh+MKMmruDkmWtUrlDUYt+in/ahNXR43nnDw8evnmf/OevD8683aMvbTTrT6av30ryNomf91uTyzsE3u34mp7fxGXu4ueHq4kJObz/u3r+XooGe1/V9KhYqRb3JvYiIirRPUFlk+Rf7iI9P4J3ZLXBzN35PKtcpxhtPzeWnL36nx/uNnFvBVCQO3+84+SfhdyKY1/V9pmz8gVPhD6aAqhQJokKhkoxZMzdT54iOvc/Ph3fSqnJ9c9rbTV7GzdWNFz8fZv6/sPnoPo5/HzBVfwAAIABJREFUsJi3mnRmwKKpmQ/KefIqpfYl2f5ca/256d9FgPNJ9v2DMaKZaf/5BlYpFYDRK22N8QNMbIWST1CuTrb9NPANkGBqOMFoPM9gDDevNpXfBRgElAGS3k9RFrBoYE0f5OcAISEhmgyqUa00e7eON2/n8PPmwqUbxMcncOLkZcqVLWLeF3bsAsFJttOrerVSfP3dFmJj43B3d6N8uSIopcw9wiSxZPmCkBpVi7Nn/XDzdg4/Ly5cumnEf/oq5ZLMQ4eduERwkO1h3NIl8lkdOtYYcVqLbeGyvdSvFUSxIrlT7HM0fy9fmlWsw8T131nd/8JjTzKrwyDeWTabRfs3plleuQKBFMtdgCsTU64yjpi6kZe/HsX3e9aa06a1e5PWVZ6gycwB2WruNdGFkzcJLJPH3LgCuHu4UqxMHi6fc+5wZ0b8bmpsS+YtbNHAdgxpQlRMND8d3PZQ5Sf9PQ8uWJzDF09ZXGjFxsdx+NJpSufN+HeLvakMf4MCEK61DrGxz9oXWubOYvIoLHKaC3QAJgHPADWBr4DkC5mSj3fkBYYAsclepTCGglFKtQHmAb8B7YDaQOJ9IXZfKJUjhzch1YPMr3Jli1C3Vjn8/X1YvPzBfW9RUfdZuWYfzZo8lkpp1u3YFUbRInnMPb+WTWugtWbLtgc9olu37rL/wCmqVi7xf/buOzqKqg3g8O+SnhBqQu8dAUEI0hFQehGUpiCCIEpHAUVFRY0UEZAiiPpRrDSlFykCUqR3kBJ6JwFCCyEkud8fsymbbBpsgd33OScn2Zk7M/dmk33n1nnkMmWEf2ZvgioVif8qXSIPNauWIIu/D/MWJ9yURkTcZ+mq/TR5PuV5qp6e7jR8rizrNpnXBtf+cwRfX09KFM1ltv302TC27jrpsNHDbSrVw9vDi993Jh/A8lzJyvzabTiT189n7Jrf0nW+yevnU29cb7OvlYf+5eiVM9Qb15vV/22PTzu0cRf61WtH55mfsfnEPquVyZ4C8/tz9tg1HkQlChb3ozl77BqBBR7f5uGkahV7GoBTYRfNtncIeoEl+zela96zJd4eXjQtV4NdZxMGu525fpny+Yrh4ZZwI+rp7kH5fMU4ff2SpdPYl47N+FfqzmP6bDcpAFxMIW26OHUN1jQauDnQV2v9XaLtlm4skt6pXAcWAD9aSBs3Br4dsE1r3TvRuZ97pExnkLe3J0Pfac0XX80nezY/Y6GJSUuJjdX0e7tpfLqfflvPG72ncGL/txQuFMiZs6F06/Utr7arTbGiublzJ5IFS7Yze/5mpn7zZvxxQZVL8GLzqnTvM4VRn3UmIKcxyMnD3Z0+bzaxZ1Et8vb24P3+TQget4zsWf0oU9JYaCI2VtOv+/Px6X6as4XuA2cRsn0EhQvmBODjQS2p03I0b/SfQcc2z7L/8HlGT1rBsHdb4OVlPjBs9sIduLu70bZlFbuWL07HoBfYe+4YR5LMiy2TpwgL3x7NkctnmLNrDdWKJjTlh94Oj6/lvFatKdNf+4jin7Tl7PXLnAg9z4lQ8yb+rjWaE5A5GxuO747f9krVRoxs3ZsZW5ZyIfyq2flPhF5wyGCX+/cesGv9aQCuXbnDvTtRbFlxHIAq9Yrg5eNBr/ozKFetAH1HGXO3G7Yvz5q5hxjdawlNOldEa82Kn/dxI/QujTpWiD/31Qu3CNlv3GtHP4jlXMh1tqw4jpePO1Xqpb4ymrWt6DueNUd2cOjSKWJiY6hV/GkGPf8qs3euNqu9VitajmIB+Xl3/gSL50n63mfx9mNpn7H8sm0lIaHnCcicjXee70j+rIG0/yGhhejHzYvoUasVC94azZR//kCh6FOvLXmzBvD9xoUWr2U/Oj0BM6N2ACWVUkUxWjg7Aq8+ygmdOsACXhhNwvfjNiil/IFWpF31XwuUB3bppO2jCXwSn9uk08Nl9eENHdSGWK0ZOXYB167fIeiZYqxe/LHZCN/YWGOAUFxRsmX1JV/e7ASP+YPLV8LJltWPp8oUYNn8D2nW2Hxpvl9+7M+QYT/z7gczibgXRa3qpfl72adkN/XPOtrQ/k2JjdWMmricazfuElSxMKvmvUPuXAk1k1htXn6AZysXZfHPffnwywX89ud2cgX48+HA5nwwoGmya8xZsJ3n65QhMMDfLmVKLKdfVp4vU5WPF09Ltq9akXJk8/Wnkq8/W4b8YLZv5r/L6PaTsVJPJpUJdzf3DM9fbFTW6ILqVrMF3Wq2MNvXddYXzNqatGfF9m5ei2BMX/Prxr2etqEbuQpkJSYmlthEA+KKV8jNJ9NbM2fSNiYMMpq+C5UOYPisNhQtGxif7uC/55j0fkIrwZblx9my/DiB+f35/h/zVZNsbceZ/+haozlFcuQlOjaGk2EX+WDR1GQLPHQMakh4xO0UV29K+t7fj35A6O1whjXtRi7/7ERGR/HvyQM8N76XWf/+7rNHaTJpIJ82787PXT8F4MCFEzSc0J/9F0JsVOp00lg9wGqto5VSfYG/MOLGdK31I60JqVKOHc5BKbUdCAQGA7HAUNPrLFrrgETTdPy11ncSHVcK2A5swWhSDsPow20IzNRar1dK9cYY1j0M2IYx+OlFjGbkllrrpSnlKygoSO9c75il5hwuszEKV4daahxwbiqwh/G9V3UH58T+9NStACw8+Y6Dc2J/rYsZC3m44vsOxnuvlNqVSv9nhgRVKal3bp2Y4eOUZzOr5SE9nL0GC0YV/3uMvtJrwGSM6TV9UztIa31MKVUdCDYd74PRbLAWiLt9m4YRTAdg9LmuNl1vq9VLIYQQIkGs1ZuIrc7pA6zWOgRoYGHXcNP+mRgDoSwdewSwvOKAsT8Go2Y8OMkuR68jJoQQzs36fbBW5/QBVgghhJPRNhnkZHUSYIUQQjx5JMAKIYQQ1qalD1YIIYSwCanBCiGEEFZmg3mwtiABVgghxBNGBjkJIYQQNmHMkny8SYAVQgjxZNEyyEkIIYSwDWkiFkIIIaxN+mCFEEII25AAK4QQQlib1GCFEEII69PIICchhBDCJqQGK4QQQlibNBELIYQQtiEBVgghhLAyWWhCCCGEsBGpwYpUZX7Z0TlwKBXYw9FZcBg9daujs+AwrYuNd3QWHMaV33erkwArhBBCWJk0EYu06PBfHJ0Fh1DZOgOgQ390cE7sL67WvvDkOw7Oif3F1VxVr+oOzon9xdVcXbHs4Lo1dwmwQgghnjyx2tE5SJMEWCGEEE8eaSIWQgghrEz6YIUQQggbkSZiIYQQwspksX8hhBDCFqSJWAghhLANaSIWQgghrEyaiIUQQghb0FKDFUIIIaxOarBCCCGEjUiAFUIIIaxNo7U0EQshhBDWJU3EQgghhI1IgBVCCCGsTUYRCyGEENYnTcRCCCGEjUiAFfagtWbkuCV8N30tYddvU/WZYkwY/RqVKhRO9bhuvacx6/dNybYf3jaaMqXyARAVFc1HX8xj284Qdu49RWTkA2Jv/GyTcjwsrTUjJyznu5kbCLt+h6qVijDhy45UqlAozWOvXb/Dh18uYPHKvdy8fY/CBXLywYCmdOlQMz7Nzr2n+ejLBezafwatNZUrFCb4w9ZUq1LMlsVK0aXT4Sz8YSfH9l7m7LFrlK2aj+Df2qV5XMj+K/wydjMnDl4FrSlWLhedBtWkVKW88Wn2bjrD2nmHOLrnEqEXbtOhfzU6Dqhhy+KkqkPQC7zX8DVK5SrIzcg7rD2yk6ELp3DpZpjF9OPbDWRgg458vfpXhvw5KdVzD2/Rg5cq1aNwjrwoBUevnGXM6l+Zu2tNfJqn8hZl7Mv9eTp/CXL6ZeXK7eus+m87Hy+exuVb16xa1qSKBxZgSMNOVC9anvL5irExZB/1x/c2S5PVJzPj2g6gdcW6eLp5sPHEPvrNGcuJ0POpntvDzZ2hjbvQpVpT8mcL5EJ4KL/u+IsRK2cRFf0gWXqlFDuGzqBKoTK0+HYQyw5utmpZM0xLE7Gwk1HjlxD89UK++uwVypTKy/hvV9Cw9SgObBlJntzZUj22TKl8TJ/8ptm2IoUC4n+OuHef//28nmerFKfmsyX5+5/DNinDoxg1cQXB45bx1adtKVMiD+O/W03DduM5sGE4eXJnTfG4W7fv8dyLX5HZz5uJI18hIEdmDh+9RNSDmPg05y5cp2HbcVR+uhCzJr8BwNff/kXj9t+wb/2nFC6Y0+blS+rs8WvsWn+aUs/k5UGivKYm7OJtPu3yB8XK5WLA140BWPjDTj57fQHjl3cmV/4sAOz55wxnjobxdM1CbFp61GZlSI+WT9dhdvdgJq+fx5A/J5E3awDBrd5iae+xBI3qmmyaRtk8RXijRktu3ruTrvNn8fZj5r/LOXz5FDGxMbR9pgFzegQTExvDH3vWAUYAO3XtEj9tW8HF8DCKBuTl0+Y9qFKoNFVHvUFMbPp+/w+jXN6iNCtXk62nDuLp5mExzZwewZTPV4wBc8dzM/Iuw5p2Ze2ASVQI7sTtyIgUzz2qdR/ertuGYYunsefcUSoXLENwq55k8/Fn4LzxydL3qNWK/FkDrVY2q3DmGqxSqjxwAKivtV6fSrr1QJjWuu3DXkukLDIyitHfLGXoOy3p27MhADWqlqBoxXeZ/MNqgoelXrPx8/WietUSKe7PltWPa6e+QynF5O9XP3YBNjLyAaMnrmRo/6b07d4AgBpBxSkaNJTJ0/8m+IM2KR474pvl3L8fzY5Vg/Hx8QSgfu0yZmmWrd7P7TuR/DGjN9my+gJQs2pxAsu8w/I1B+jVrZ5tCpaKqs8Xo1rD4gB81Wcpt27cS/OYnetPEXn3AUOntsAvizcAZSrn5fWgaexef4omnSoC8PrQOnT7sC4A29ecsFEJ0ufVqo3YdfYI/eaMjd92K/Iui3uNoXTuwhy5fNos/cQOg5iwbg6vVWuarvO/O3+C2evV/22nXL5idKneLD7A/nvyAP+ePBCfZsNxOH8jlNUDJvJ0/hLsOWe7m5AlBzaxeP9GAOa9OYKAzOY3y9WLlqfxU9Vp8E0f1h3dBcC2U4c4FfwnPWu3Zuya31I896tVGzH1nz8Zv/Z3ANYf203+bIF0erZxsgCbzdefL1u9zdCFU/jfax9Zs4iP5gkIsJnscI3ewAd2uI5L2rL9OLdu36N962rx2/z8vGnR5BlWrtlvlWsopaxyHlvYsiPEKP+LQfHb/Py8aNGoIivXHkz12Jm/b+aNTrXjg6slD6JjcHd3I7OfV/y2zH5euLu7OWyie6ZMGX8/Yh7Eksk9E96+CWX19vUgk3smEhfjYc5tKx5u7slqo+ERtwFImsuXn6lP2TyFGfXXT490zWt3b+Lplnq949rdmwB4utu2ATCtv69KBUvxICaaDcf2xG+7evs6+y+E0Lx8rVSPtfi7vXcbS//qX7TsyeYT+1l7ZGf6M29rcU3EGf2yM5sFWKWUD4DW+rDW+ritrpPkmt72uM7j5MixS7i5ZaJk8Txm28uWyseR4xfTPP7w0QtkLfQm3rm7UafJF2zY/J+tsmoTR45fNspfLLfZ9rIl83Ik5HKKx506E8rVsNtky+JL81cm4JX/bXKVfYd3P55DVFR0fLqXW1TB18eTQZ/O42roLa6G3uKdj+eSPasv7VoFpXj+x02NJiXw8nZnxoh/CA+LIDwsgulf/kPmLF7UbFrS0dmzaPqWJdQpUYnXqjXF39uXkrkKEtzqLf4+upP/EtVevT28GPtyf4YumEJEVGSGr+OWyY2sPpl5tWpjGpV9lu82LkiWRimFh5s7pXIXYlTr3mw/fYjtpx3bmuPt7kl0TDSx2rwmd/9BFGXzFEn12B83L+atOq2pWexp/Lx8qF2iIr3qvsTk9fPN0lXIX4JuNVowOI3+bIeIjc341yNQSo1RSh1RSu1XSi1QSqXe/0YGAqxSqrdS6pxS6q5SagmQN8l+rZR6Vyn1jVIqFKP5GKXUeqXUfNPP9U3pyiU5NrtSKkop1T3RttpKqQ1KqQil1DWl1A9KKf9E+7uazvWs6Rr3gCHpKEcNpdRipdRFU1n2KqU6WUhXz/SLjFRK7TBdJ0wpNTxJuheVUjtN6S4rpb5SSlnuMLGBG+F3yeznjZub+VuZPZsfERFRZsEiqUpPF+HrL15h8e/v8sv3vYiJjaVRm9Fs3+XYpsGMuHEzgsx+XhbK75tq+S9fvQXA+5/PJ1/e7KyYPYAPBjTju1kbGDZyYXy6fHmy8fefg/hz6S7ylBtEnnKDWLBsNyvnDCQwwN/iuR9HOXJn5otfX2brXyF0q/Y93ap9z9a/QvhkZhuy5vR1dPYsWn5wC11nfcH3nYZya/zfHPtsHm6Z3Hhp2lCzdB807sKlW9f4ZfvKDF+jWtFyRH+7mfBxa5j5+scMmDueRfv+SZ6XPuOImryJo8PnksMvCy2mDHb4Un0hoefx8fSmfL7i8du8Pbwon684OfyypHrs0IXf8see9Wwe8j13vlnHxkHT+HPver5YPt0s3aT27/Lthj/SHDRld3HTdOwYYIHVQHmt9dPAMdLRMpuuNg6l1IvAt8B3wELgOWC6haRDgH+A17AcvDcAl4D2wKeJtsd1lC0wXa8WsNZ0rbZATmAUkN30OrHfganAZ0B4OopTGNhsKkskUAuYoZSK1Vr/brp+fmA5sAX4EMgD/Ar4JD6RUqq96frTTOmKAyNNZR+cjrxkiNaamJiEP5K4pltLzTpx//ypte4OeLux2evmjSpRrvr7jBy3mAW/vvPoGbaylMufvJBplT/W1FxUrkw+fhjXBYAGdcpy+04kIycsZ/iQlvj6enHpSjjtun9HlYqF+WH86wBMmb6OFp0msnnZUAoVsP8gp4dx/epdvuqzjGLlc9F7xAsArPhlH1/2WMTIee0JzJf6B7Ij1CtVme9efY8Jf89lxaF/yZ0lB8Ob92DBW6N5YUI/YnUsRXLmZXDDTjT4ps9DXePAhRMEjexKNl9/mpevyeSOg7kVeZfZO1ebpes3Zxw5/LJQMldBhjXtyoq+46k1pif3o6OsUdSH8tfhrZwMu8C0V9+n28/B3Lp3l1FtepPVx48HMSnfWAMMadiZzs82pu/sr9l/IYSKBUryRcueXLtzk0+X/gAYI7hL5y5My6lW/yizAvs3+WqtVyV6uZXksSiZ9HYifASs1Fr3Mr3+SykVCPRIku6y1rpDKhmMVUrNAzpgHmA7AKu01tdNr0cBWxKfSyl1AVirlCqvtU7cuTZRa20+WiEVWuvZic6pMG4ICgBvYgRLgIFABNBSa33PlPYWMCfJsWOAn7TWvRNtvw98q5QaqbU2G8evlOoJ9AQoVCjtKSRJbdh8hAYtR8S/fq5WGdq1rsbtO5HExMSa1eLCb0bg6+uJh0f6+4l8fDxp2rAiS1fuzXDe7GHDlmM0aPN1/OvnapaiXaugFMp/L9Xy58juB0C9WuaDmhrULsPwrxZz4nQoFZ4qwJjJfxEdE8u8/70df64GtctQqvpHfD1lFRNHvGLtYtrEwh92EhMTy3uTm+Pu4QZAhRoF6fP8TBb9sJsen9ZzbAYtGPvyABbv38TQhd/Gb9t7/hhHh8/lxYp1WbB3PaNa92HFoX85cvkMWX0yA5BJKbzcPcnqkznNEcURUZHsOnsEgLVHdpDVJzOj2/RJFmBDQs9BKGw/fYiNIXs59cWfvFq1ETP+XWrlUqffg5hoOv74Mb93/5yjw+cCsDFkLz9tW0GD0il3X+T0y0pwq7foM/trfty8KP64qOgHTO44mMkb5nPj7i3GtOnH6FU/k0llIqtPZrL4GP8zfl4+ZPby5c79lEcp28XD1UgDlFKJO5O/11p//xDneYNE8SAlaX76KqXcgGeAfkl2/UnyALssHRmbA/RXSlXUWu9TSgUADUwZRinlC9QA+imlEudvE/AAqAIkDrDpuWY8pVR2jNrui0B+wM2060KiZFWB1XHB1WRxklOVAgoBc5Pk82/AGyiPUWOPZ3ojvwcICgrK8O1XlYpF2P73Z/Gv/TP7cOHSdWJiYgk5eYXSJRNa7Y8cv0iZkvkyegkg9VqvI1WpWJjtqxJGMfpn9ubCpRtG+U9dpXSJhH7oIyGXKFMij6XTAFC8SCCensn//DXG2xI32OdoyGXKlc5nFqg9Pd0pVzofJ0+HPnKZ7OXCiRsUKpkzPrgCeHi6UbBkTi6fTU/Dj/2VyVOY33euMtt27MpZIqIiKR6YH4DSuQtRqWApXn6mvlm6fvXb0a9+Owp80JIL4el/n3afPcobNVvinsmN6BSm4Jy9fpnrEbcoZsqDI+04c5gSn7SlVO5CRMfEcDLsAkt6f83WUykP8CsWkB9Pdw/2nj9mtn3PuWN4uLlTOEceoqIfUDBHbsa3G8j4dgPN0s3pEUzI1XOU/DTtudc2o0HHPFQNNkxrneLdh1JqDUaLZVIfaa0XmdJ8BERjtGqmKj3Vm0BTuqtJtid9DXAlHef7FziLUWvdB7yMkdm4jq/sGEFviukrqYIPcc3EZgLVgS+Aw8AtoBdGwI2TBzAbgqu1jlRKJb4djpssujyF6yTN5yPz9/ch6BnzxQ0KF8xJFn8f5i3axrDBrQGIiLjP0pV7ePP1+pZOk6J796JYuWY/VSoVtVqerck/szdBlYqYbStcwFT+xTsZ9m4LwFT+Vft587U6KZ7L09Odhs+VZd2mI2bb1/5zBF9fT0oUzQVAoQI5WbH2AFFR0fEB+f79Bxw8cpEWjZ62YulsKzC/P7vXn+ZBVAwenkaQfXA/mrPHrhH0/OP5fp+5dpnKBUubbSuTpwi+nt6cvnYJgB6/jCCzl3kf8uzuX7Dh+B6m/vMnoXcydvNQq/jTnLt+JcXgClAqdyECMmfjVFjagwjt5diVswCUCCzIC2Wq0nJKysNRzlw3Bv9VLlianWcSBjVWKWy05py+dok79+9Rb5z5ohZ5suZgdvdgPlg4hb9N04IcygZNxFrrF1Lbr5R6HWgBPK/T0QmfngAbihEAcyXZnvQ1QJoX1FprpdRcjAD7oen7Cq31bVOScNN5hmM5eCX9q073b9k0yrg50Fdr/V2i7Un7iy9j3FgkPTZzok1xzdk9gT0kdyq9+XoU3t6evD+wBcFfLyJ7Vj/KlMrH+G9XEBur6dezUXy6n2ZvonvfHwjZPZbChQK4eTOClh3H0ql9LUoUy03Ytdt8M3UlFy7dYM6MvmbXWLF6H3cj7rP34BkA5i/aDkDVZ4pRONGiFI7g7e3B+/2bEDxumVH+ksZCE7Gxmn7dn49P99OcLXQfOIuQ7SPiF4f4eFBL6rQczRv9Z9CxzbPsP3ye0ZNWMOzdFnh5GePUenSuw/9+3cRLXafQq1s9tNZMmb6eS1du0vO1ug4p8/17D9i1/jQA167c4d6dKLasMAbqV6lXBC8fD3rVn0G5agXoO8qYG92wfXnWzD3E6F5LaNK5IlprVvy8jxuhd2nUsUL8ua9euEXIfuOeNfpBLOdCrrNlxXG8fNypUs++gfi7jX8yvu1ALt4MM/pg/XPwSfM3OBV2keUHtwDEN+8mFhkdxbkbV9hwfHf8tteqNWX6ax9R/JO2nL1+mUI58jCjyzB+27GKk2EXyOzlS5uKz/FK1Ua8/dvo+OPGvNSP6NgYtp06RPi925TNU5T3GnUm5Oq5ZM3I1ubj4UWz8saKYvmzBZLF2y++pr784BbuPbjPsKbdOHLlDGF3wqmQvwQfN+3G7J1rWHNke4plv3r7Ogv2rmd0mz54e3iy/0IIlQqUYniLHszdtYYw001J4t8fQOEcRgvZgQsn2H76kE3Lniat4eFqsA9NKdUEeB94TmudrvbxNAOs1jpGKbUXo4b3XaJdLz1ULg2zgcFKqRYYA6biO7K01neVUluB0lrrzx/hGpZ4YdSO78dtMI1MboV5oN4BdFNK+SRqJm6V5FxHMZqVi2itf7ByPjNk6DstiY3VjPpmCdeu3yGoUlFWLXif3LkSVjGKjY0lJiY2vgnUy8udwIAsfPn1Iq6G3cLby4Maz5Zg/dKPktWSew+ayZlzCUvTte9qDNmf/u2bdH3VMUEmsaH9mxrln7icazfuElSxMKvmvUPuXAkDd2JNA6QS33Q+W7koi3/uy4dfLuC3P7eTK8CfDwc254MBCQsVVKlYmBWzB/D510vo0ud/AFQoW4BV896hYnmrN1Kky81rEYzpa94zEvd62oZu5CqQlZiYWGITDQgrXiE3n0xvzZxJ25gwyBhtW6h0AMNntaFo2YR7yYP/nmPS+wmBY8vy42xZfpzA/P58/0/8IH+7mLhuLlEx0fSq8xJv12lD+L3bbArZzweLMj4dJ5PKhLubO8o0gzY84jYXw8MY1rQbebLkIDziDocvn6LZ5HdYcejf+ON2nv2PfvXa07P2i3h7eHH2+mX+2LOOkStnPdSUoIzI5Z+D+T1Hmm2Le13kozacuX6JnJmz8k3dgQT4ZePcjSt8vea3ZAtMJC07wOuzPueTZt3pX789+bIGcCE8lGkbFyYbRSzMTMaIIatNAyu3aq3fTu0AlZ6h5kqpNhh9rt9hjPR9DuiCMTiovtZ6vVJKA/201pOTHLseCys5KaWOA35AFiBX4jsCpVRtjFHEc4H5wG2M/s7mGG3hx5RSXYEZgL/WOn1roxnn3o5ROx0MxAJDTa+zaK0DTGnyA8cxRhGPx2gyHgrkA0bHBX6lVAfgZ4xRxCuAKKAY0Bpom9pdTlBQkN6xZmBKu52aytYZAB36o4NzYn8q0Bi2sPDk4zdK29ZaFzNWCFK9qjs4J/anp24FXLPsYJRfKbUrtf7PjKhSLKfe9nmzDB/n8dovVstDeqRrHqzWegHGIKeWGH2lzwCPejs7B2Mu7ZKkgUhrvQmoixH4fgaWAO8B58h4n2tSr2I03/4ETAD+MP2c+PoXMIJ5Lowbi34Yg7DcMPps49LNwajZVwLmmdL2BnZjBFshhBDWpjGaiDP6ZWe2M+jcAAAgAElEQVTpnsNhqplOTrJZJdpvceyp1rpeCtuHAcNSud42oEkq+2diDFjKEK11CMao5aSGJ0m3DogfxWKqVXthDMxKnG4FRu1VCCGEPWgg5pEXjrA5eZpOCpRSozEGL10GSgMfY4ws3pDacUIIIWxNo+VxdfZlGg2cYrO31jr15U3MeWEsJJEbow94FfCu1vrxv20SQghnFtdE/JhzqgCLsXzj6yntVEoV1VqfTs+JtNYDMVZ0EkII8biRGqzdDSd5P3Fij8/McCGEEA/n4VdysiunCrCm2ulpB2dDCCGETekn4oHrThVghRBCuADpgxVCCCFsQ0YRCyGEENYmNVghhBDCFhyzMlNGSYAVQgjxZNHSRCyEEELYhiyVKIQQQliXlhqsEEIIYQvSByuEEEJYn0aWShRCCCFsQZZKFEIIIaxNarBCCCGELWgZRSyEEEJYnYwiFmlR2To7OgsOpQJ7ODoLDtO62HhHZ8Fh9NStjs6Cw7hy2a1O+mCFEEIIK5MarEiLvjbT0VlwCJWzK+Ca5Y8ru+pV3bEZcYC42puU3fXYouYuo4iFEEIIK9NaSw1WCCGEsIVYqcEKIYQQVvaE9MFmcnQGhBBCCGckNVghhBBPFA3oWFloQgghhLAurWUUsRBCCGELT0IfrARYIYQQTxYt82CFEEIIm5AarBBCCGFlWkOsBFghhBDC2mSQkxBCCGF9T8hCExJghRBCPHEkwAohhBBWpmUUsRBCCGELWlZyEkIIIaxOarBCCCGEbUgfrLALrTUjv1nGdzP+Juz6HapWKsqEkZ2oVKFQmsdeu36HD4Pns3jlHm7eukfhAjn54J0WdOlQC4Adu08ydcY6Nm49xsXL4RTMl4NXXq7G+/2b4+3tYeuipYszl//lZ+rz7vOvUDp3Yfy8vDlz/TI/b1vJV6t+5kFMNM+VrMz6d6dYPPavw1tpMmlgiuee0eVjutZonmx7meEdOHrlTPzrKoXKMOLFXlQpVAalYPe5Y3y06Du2nz706AVMQ/HAAgxp2InqRctTPl8xNobso/743mZpsvpkZlzbAbSuWBdPNw82nthHvzljORF6PtVze7i5M7RxF7pUa0r+bIFcCA/l1x1/MWLlLKKiHyRLr5Rix9AZVClUhhbfDmLZwc1WLaslHYJe4L2Gr1EqV0FuRt5h7ZGdDF04hUs3w+LTnApeQJGcec2Ou3zzGnmHJn9vU/JixbosfPsrdp75j6qjusVvL5wjL6e/XJAs/eydq3nlfx8/RImsQ+bBCrsZNWEZwWMX89Xw9pQpmZfxU/+i4ctjOLAxmDy5s6Z43K3b93iu5Ugy+3kzcWRnAnJk5vCxi0RFRcenmbNwOydOXeW9fs0oWSw3+w+f45ORCzhw+DzzZ/a1R/HS5Mzlz+mXlXXHdjNm9a+E37vNs0XKMbx5d/JkyUG/OWPZfe4I1b/qbnZMoex5mPvml6w49G+a5//v0mm6/fyF2bbT1y7F/1wgey7WDJjE7nNH6TLrMwCGNOzMqv4TeDq4M2evX370QqaiXN6iNCtXk62nDuLpZvmGZk6PYMrnK8aAueO5GXmXYU27snbAJCoEd+J2ZESK5x7Vug9v123DsMXT2HPuKJULliG4VU+y+fgzcN74ZOl71GpF/qyBVitbWlo+XYfZ3YOZvH4eQ/6cRN6sAQS3eoulvccSNKorWicEmF+3/8Wk9XPjX0dFR1s6pUVe7p6MazuAyzevpZhm0PyJbD65L/512J2bGSyN9UkT8RNKKXUamK+1HuzovKQlMvIBoycsZ+iA5vTt8QIANYJKULTyYCb/bw3BH76c4rEjxi/lflQ0O9a8j4+PJwD165Q1S/N+/2YEBmSJf12vdhm8vTx4e9AszpwLo3DBABuUKv2cvfzfb1po9nr9sd1k8fajz3Mv02/OWG5HRrDtlHlNsm6JZ4iJjWHurrVpnv9u1L1kxyfWvHwt/L19eWnaUG7euwPAlpMHCBuzkmbla/LdP38+RKnSb8mBTSzevxGAeW+OICBzNrP91YuWp/FT1WnwTR/WHd0FwLZThzgV/Cc9a7dm7JrfUjz3q1UbMfWfPxm/9nfA+N3mzxZIp2cbJwuw2Xz9+bLV2wxdOIX/vfaRNYuYav52nT1Cvzlj47fdirzL4l5jKJ27MEcun47ffulmWKrvY2qGNOzEhfBQToReoHy+YhbTHL1y5qHPbxNaPxFNxPLA9Sfclu3HuXX7Hu1bPxu/zc/PixaNK7FyzYFUj535+ybe6FQnPrhYkji4xHnG1PR6NfTWQ+baelyx/Nfu3sTTPeXm6Y5BDdlwfI9ZM+LD8nBzJzomhjv378VvuxMZQXRMDAr1yOdPS+JamiWVCpbiQUw0G47tid929fZ19l8IoXn5Wqke6+HmHn/TECf83m2UhWJ90bInm0/sZ+2RnenP/COymL+I2wBW+80XzJ6b9xp1ZsDc5DX2x52O0Rn+srcnJsAqpXwcnYeMUkp52/oaR0Iu4+aWiZLFcpttL1syH0dCLqVwFJw6E8rV0Ftky+JL847j8Mrbg1yl+/HusN/Nmkgt2bIjhEyZFKVL5k01nT24SvkzqUz4eHhRq3hF+tdvz9QUao4lAgtSuVBpft+xOl3nfSpvUW6OW0vkxH/YOGgadUs+Y7b/jz3riHgQydiX+xPon51A/+yMbzeQGxG3mbc77RqyrXm7exIdE02sNp+ycf9BFGXzFEn12B83L+atOq2pWexp/Lx8qF2iIr3qvsTk9fPN0lXIX4JuNVow+M9J1s5+qqZvWUKdEpV4rVpT/L19KZmrIMGt3uLvozv5L1HtFeCNmi24P2kj4ePWMO/NERTKkSdd1xj7cn/m7lrLnnNHU003o8swor/dzMVRSxn78gC8PbwetljWYVrJKaNf1qCUGqyU0kqpNJuvbNZErJSqC3wGVAVigD3AO8Bl4EugHpAXOAfMBT7XWkeZji0CnAI6A42BVsBO4IV0XLcwMApoCPgCIcAorfVvpv0BwFigBeADbAcGa61TvTVVSrUHPgZKAVeBn4BPtdbRpv1dgRlANeAr0/cRwBeWzmctN8LvktnPCzc383ul7Nl8iYiIIioqGk/P5G/z5atGH8r7n82jQ5tnWTHnXfYdOsdHX/6Bu7sbXw1vb/F6l6/cZMT4pbzWviZZ/B1/z+Mq5b87YV38h9qsrcsYksKH/StVGxIV/YA/9qxL85x7zh1l2+lDHL50isDM2Rj0wqus7j+R2l+/xY4zhwGj6bH++D4s7T2WAQ06AHAxPJTGkwYQdifcSqV7eCGh5/Hx9KZ8vuIcvHgCAG8PL8rnK46/t2+qxw5d+C0+nl5sHvJ9/LZvN8zni+XTzdJNav8u3274gxOh5ymcw343VcsPbqHrrC/432sf8lPXTwHYfGI/raYOMUu3aN8/bD11kPPhVymbpwifNu/OxkHfUeGLTtyKvJvi+euVqkzjp6pTani7FNPcj45i8vp5rPpvO7fu3aVeqcq836gzxQPz0/q796xT0IegccwoYqVUQYzYcjY96W0SYJVS9YDVwDrgdeAuUAvID0QD14F3gRsYAWs4EAi8leRUXwN/Au0wgnRa180F/AtEAIMxgnd5oGCiZAuBEqb9YcAQYJ1S6hmtdUgK520EzMEIqkOApzECZ07g7STJfwemYtxcWPUTSGtNTEzCnboytWUpC21acS1rlpq7IGEEXrky+fjhG2PUYIO6T3H7TiQjv1nK8PdexNfX/C41KiqaDt2nkNnPm3HBrzxqcTLMlctfc0xPfD29ebbIU3zS7A0mdxhMn9ljkqXrGNSQVf9t40ZE2s3XE9fNNXu97OAWDn/yOx82eZ02094HIE+WnMx/cwS7zh6hxy8jAOjzXFuW9RlHzTFvcu7GFSuU7uH9dXgrJ8MuMO3V9+n2czC37t1lVJveZPXx40FM6i0RQxp2pvOzjek7+2v2XwihYoGSfNGyJ9fu3OTTpT8Axije0rkL03Kq/Ydj1CtVme9efY8Jf89lxaF/yZ0lB8Ob92DBW6N5YUK/+Fp74v7iTSH72HLyAHs//IluNVsw4e85Fs/tlsmNie3fJXjFDK7cup5iHi7fumbWB7zh+G6u3L7O1Ffeo2KBkuw7f9xKpc0gx82DHQ+8ByxKT2Jb1WBHAvuAxjqhE2Vlov3xf61Kqc0YAXi6UqpfXC3WZKvWuk8GrvsOkBWoorWOax+Mb8dSSjXBCPT1tNYbTNv+Bk5jBM6kAT7O58B6rfXrcWUxfaiPVEoFa60TzweYqLWeYOkkSqmeQE+AQoXSnkKS1IbNR2nQenT86+dqlqZd62e5fSeSmJhYs1pc+M0IfH098fCw/BbnyO4HGIN2EmtQpyzDRy/kxOmrVHgq4b5Ea83rvX/g0NELbFr+Edmz+WU4/4/Klcsf14S3+cQ+wu6E81PXTxm75jdOhl2IT/N0/hI8lbcoX66Y+VDXiHxwn+WHttCyQu34bUMadsbdzZ22339AdKxxj/v30Z0c/2wegxt2YsDccQ9fKCt4EBNNxx8/5vfun3N0uHHDsDFkLz9tW0GD0kEpHpfTLyvBrd6iz+yv+XHzovjjoqIfMLnjYCZvmM+Nu7cY06Yfo1f9TCaViaw+mcniY7zvfl4+ZPby5c79lEcpP6qxLw9g8f5NDF34bfy2veePcXT4XF6sWJcFe9dbPO7QxZMcvXKWygVLp3juN2u/SDYff2ZtXU5Wn8wAeLq745bJKOfd+/fi3++k5u/+m6mvvEflgqUdF2DRDztNJ0Aplbi18nut9fcppk5EKdUKuKC13mfppt4SqwdYpZQfRvPoAG1hhIIycjYAI9AUBRL3UxbCaNKNsyyDl28ArEwUXJN6FgiNC64AWuu7SqmlQG1LByil3IDKQNIJhXOA0UANYF568mx6I78HCAoKyvBfR5WKhdm++pP41/6Zvblw6QYxMbGEnLxi1id4JOQSZUqk3JxVvEgui02nce9YpkzmTa7vDPudRSv3sGr+YMo4qO/V1csfZ7cp2BYNyGcWYDsGNSQiKpJF+/95pPMn/rctk6cwhy6eNPuwfRATzaFLpygekP+RrmMtO84cpsQnbSmVuxDRMTGcDLvAkt5fs/XUwRSPKRaQH093D/aeP2a2fc+5Y3i4uVM4Rx6ioh9QMEduxrcbyPh25v/+c3oEE3L1HCU/Tbl59VGVyVOY33euMtt27MpZIqIiKR6Y9u9ek/JHTOnchSiYIzdXvlqebF/4uDV0njGcX7evtHBkwt9Haue3NQ085EqJYVrrFO+8lFJrAEsd2B8BHwKNMnIxW9Rgs2MMckspyA3EaPodBWzAaCauCnyLebAFyGj7U05gRyr786ZwzitAjhSOCQA8LBwX9zrpcTZrM/P39yHomaJm2woXDCCLvw/zFu9g2KBWAERE3GfpX3t5s8tzKZ7L09Odhs+VY93GI2bb1/5zGF9fT0oUzRW/beQ3S5n8wxrm/K83tauXsmKJMsbVyx+nVrGnATgVdtFse4egF1iyfxN3E434zQhvDy+alqvBrrMJA17OXL9Ms3I18HBzj29y9XT3oHy+Yiw5sOkhS2Abx64Y3WIlAgvyQpmqtJwyJMW0Z0zzdysXLM3OM//Fb69S2GjROH3tEnfu36PeOPNFLfJkzcHs7sF8sHAKf5umBdnKmWuXk9VCy+Qpgq+nt9lc5aTK5StG6dyFmJZkildik9fPZ+Fe8xuxoY1fo2hAPt76dXSyQVSJta3cAMDs78Tu9EMH2NRPq7XFcT5KqQoYFcK42msBYLdS6lmtdYqTwW0RYG8AsRjBzJJ2wDytdfxkMqXUUymkzegt0rVUrgtG0M9lYXtujH5hS8KABxaOixu2mvQ4u97WeXt78P6AZgSPXUL2bH7GQgtT/iI2VtOvR8Lfyk9zNtO9/3RCdo6On7v58ZBW1Gk+gjf6/Y+OL1Vj/6FzjJ64jGGDWuHlZUwD+W3+v3wU/AddX6lN/rzZ2brzRPw5ixcJtDiNxZ6cvfwr+o5nzZEdHLp0ipjYGGoVf5pBz7/K7J2rzWqv1YqWo1hAft6db7F3gteqNWX6ax9R/JO2nL1+mSzefiztM5Zftq0kJPQ8AZmz8c7zHcmfNZD2PyTM8/xx8yJ61GrFgrdGM+WfP1Ao+tRrS96sAXy/MeUPcGvx8fCiWfmaAOTPFkgWbz9efqY+YAwCuvfgPsOaduPIlTOE3QmnQv4SfNy0G7N3rmHNke0plv/q7ess2Lue0W364O3hyf4LIVQqUIrhLXowd9ea+AFcG47vNstP3CCnAxdO2Hwlq+82/sn4tgO5eDPM6IP1z8Enzd/gVNhFlh/cAkCz8jXp/GwTlh7YzMWboZTJU4RhTbty9sYVZv67NMXynwg9n2ylq641mhOQOZtZmT9t3gN/b182n9jPrci71C1RiSENO/HHnnUcuGBxyIrd2HOtf631ARLFANNaCUFa61Tnwlk9wJqaXLcBXZRSky00E/sA95Ns62Sly68F+iulcmutLdUktwGfKaXqaq3/AVBK+QLNgeTrgQFa6xil1C6MG4OpiXa1x7iRSHu5HBsbOqA5sbGaUd8s49qNOwRVKsKq+YPJnSthFaPYWGOAUOJ349nKxVj86wA+/GI+v/2xlVwB/nz4Tks+GJiwxNrq9caHyMzfNzHzd/May/RJ3en6isWWdbty5vLvOPMfXWs0p0iOvETHxnAy7CIfLJqabIGHjkENCY+4neLqTZlUJtzd3OPnrt6PfkDo7XCGNe1GLv/sREZH8e/JAzw3vhe7zibU6nefPUqTSQP5tHl3fjaNZD1w4QQNJ/Rnvx0+YHP552B+z5Fm2+JeF/moDWeuXyJn5qx8U3cgAX7ZOHfjCl+v+S3ZAhNJyw/w+qzP+aRZd/rXb0++rAFcCA9l2saFyUYRO8rEdXOJiommV52XeLtOG8Lv3WZTyH4+WDSFiKhIAM7duEou/+x8024g2Xz9uXbnJisPb+XDRVPNVrGyVP70OHLlNINf6ESPWq3w8fDi7PXLjFn9K1+unGnNomaYBp6AdSZQaU3kfqiTGlN01gB/Y/Q53sXoq9wJ1AX6Y4wiPoERXGtjVL8raK0PJpqm01JrvTTp+VO5biDGdKAIjKlA54CygJ/W+itTmk1AcWAoRo13MFAFiB9FnHQlJ9Mo4r+AmcBsoAIQDMzUWr9tStMVY5qOv9bafHa4BUFBQXrHX4/HUoP2pnJ2BUBfm+nQfDhCXNlVr+qOzYgD6KlbASm7K9JTt6KU2pVa/2dGPOXtrX8uXCTDxwUdO2q1PKSHTRaaMNUO4+ah/oIxIOg54DzGiNzfMQLU70AURsC1xnVDMUYJ7wG+AZZiDKZKPGepDcYUom8wBicpoEFKU3RM510FdASCgCUY/chjAdeMkEII4UBxg5wy+mVvNltowjRSt24Ku7tZ2BbfdqG1Pp34dQavewbokMr+UKBLGucoYmHbHIwbhZSOmYlRwxVCCGFLNhrkZG1PzFKJQgghxJPkiXmajmn+rFsqSWIszbsVQgjhfKQGa12vY0yXSenr9ZQPFUII4Sxcvg/WBpZgLEiRklP2yogQQggHekL6YJ+YAKu1voYxrUYIIYQLe4SlEu3qiQmwQgghBCA1WCGEEMJWnoQxrRJghRBCPFGkiVgIIYSwBWkiFkIIIWxDAqwQQghhZdJELIQQQtiCNBELIYQQ1ic1WCGEEMIWpAYrhBBC2Ebs4z8NVgKsEEKIJ4s0EQshhBC2IE3EQgghhPVJDVakSeXs6ugsOJQrl19P3eroLDiMlF1Yw5MQYNWTsGCyM1JKhQJnHJiFACDMgdd3JCm763Ll8ju67IW11oHWOJFSaiVGeTIqTGvdxBp5SA8JsC5KKbVTax3k6Hw4gpTdNcsOrl1+Vy67o2RydAaEEEIIZyQBVgghhLABCbCu63tHZ8CBpOyuy5XL78pldwjpgxVCCCFsQGqwQgghhA1IgBVCCCFsQAKsEEIIYQMSYIUQwokopbyUUh8ppSo6Oi+uTgY5uQillBfwBhAEFAT6aK2PK6U6APu11v85NIPCppRSBYBSgHfSfVrr5fbPkf0opbID5TH+7ldorW8opbyBKK31E7DgXsYppSKAplrrDY7OiyuTtYhdgFKqFLAayArsAuoB/qbddYDmQBeHZM5OXPUGQynlD8wFGsVtMn1PfGftZtdM2YlSyg0YCfQBfDDKXBW4AfwB7AQ+dVgGbWsbUAWQAOtA0kTsGiYCZ4EiQGMSPmTB+Aes7YA82Y3pBuMYxodtEeB5zG8wPnBMzuxiJFAIo5wKaINxg/U/4BRQ3WE5s70RwJtAX6AY5n/3i4CWjsiUnbwH9FJK9VVKFVNK+SmlfBN/OTqDrkACrGuoA4zUWodjXnMBuALktX+W7MqVbzCaAV9i1GgALmqt/9Fa98QIMkMcljPb6wIM1VrPAM4l2XcCI+g6q21AcYy//ePALeB2ki9hY9JE7BoiMZrILMkPhNsxL45QB2intQ43NRsm5uw3GLmBc1rrGKXUXSBHon3LMZpKnVU2jEBqiSdO2jRu8gbJb6aFnUmAdQ2rgQ+VUmuAO6Zt2tQv2Q/jg9aZufINxjkSHut1HGgB/GV6XQ3jd+OsDgIvAmss7GsK7LZvduxHaz3T0XkQEmBdxRBgMxCCEWw18AlQDuNO/iXHZc0uXPkGYzXwArAAGA/MUkpVAe4DdYGxDsybrQUDfyilfIB5GH/3lZRSbYC3gFaOzJw9KKXyATUwWi6uA/9qrS86NleuQ6bpuAjTVIV3MQb4BGD8s60Fxmmtrzkyb7amlCqIcYPhgxFwOgCLSbjBqK61vuy4HNqOaTCLr9Y6zPS6DdCWhN/FNGedqgKglGoPfIUx0CvOBWCQ1nquY3Jle6aukEkYg7wSN4XHYCz638+Z3/fHhQRY4RJc+QZDxI8kj3vfj2on/+BTSgUDg4GPgTkYYw1yY9xcfg6M0Vp/4rgcugYJsC5AKTUdOAp8lfSDRSlVDBimtX7DIZkTdqGUakrCHOBgrfVZpVRdIESaDJ2PUuosMFFr/bWFfYOB/lrrQsmPFNYkAdYFKKVigViMGtsrWuvrifZVA7ZorZ15RKXLUkrlxmgOrwKcBooCVbXWu5VSM4BIrXUvB2bRZpRSqdXQYjGmruxzxtWOlFKRQCut9SoL+xoBi7XWyVb1EtYlg5xcx5sYCyrsUkq10VrvdXSG7EUpdYqUpyzEf9ACk7XWu+yWMfuYBGQGymAE2KhE+9bgvCsZgTGAzRvwM72+g/G7ALiL8fnnpZTai7Gs4BX7Z9FmjgEdgWQB1rT9qH2z45pkoQnXcQijifAQsFkp5dRLIybxB8aHqT/GBPylpu9ZAA+MJfOqA1uVUo0dlUkbaYLRBRBC8puM8xjTlJxVM+ASRr+jj9Y6C8bgro6m7S9gjKQOxPlGUwcDXZVSa5RSbyul2iil3jKNpH/dtF/YmNRgXYjW+pZSqiXwBTBDKVUVY51aZ3cV446+hdY6ft6nafrGEoxVnspjNKV+RsI8UWcRk8L2AOCePTNiZ5OBUVrreXEbtNb3gbmmNZonaa0rmwYEOVXA0VrPVUqFY/w9T8C4kXyAsRZ5E631akfmz1VIDdbFaMMwjKkaXYBfHJwle+iPMVrYbFEFrfU9jLmhfbTWMcAPQAUH5M+WNgL9kqxgFVeTfQP42/5ZspungZSmX10Cypp+PkLC2tROQ2u9SmtdA6PWngejFl9Tgqv9SA3WNWzA6GeMp7VeoJQ6Cix0TJbsKhvGFAVLcpPQL3eTlGt7T6r3gU0YqxotwAiubyqlymPU2p15sf9jwACl1BqtdXzfs2mBkXdI6IfMgzGNxSmZ5rtedXQ+XJEEWBegta6fwvbDGM8IdXZLga+UUjeBpVrrKKWUJ8ZKPl+Z9oNRe01p7donktb6oGnlpuFAV4wbiJcwRpR311ofd1zubG4AsAw4r5RaDYRi9Lc2xBj41MyU7hngT4fk0IqUUl9lILnWWr9vs8wIQKbpCBeglMoGzMJ4PJnGeJKIP8ZTdZYAr5seBNAWuKu1XuGwzFqRqaY2GOOmYp+j8+MIpqUC38EY4JcHo8l4B/CNs83/NY2WTy+ttXbmpwk9FiTAOiml1FWgsdZ6j1IqlDSerKG1zmWfnDmOUqoc5h+0O7XWhxybK9tSSkVgTEFxurmeQjzupInYeX1LQr/St8ijqzAFU6cOqBZsw1hkQgKsEHYmNVjhMpRSBTD6nJOtYKO1dson6pimYv2GMVVjOcZNl9k/vdY6wgFZswulVAeMRVZSet+dtuXGtAzqEKA2CU/T2Qh8rbU+6ci8uQoJsC5KKVUGY3Wf7c7WF5WUac7jXKBR3CbT9/g/fmddKtK0TGYci//sTlz2V4HpwEygp+nnTBiD28KBn7TWnzssgzZkGti2DuN5v0tJWOy/OcaNRn2ttdM+D/dxIQHWBSilpmEManjb9LoD8CvGh80djInnWxyYRZtSSk0G6mPUZDYBbYAbQGegAcb6zDscl0PbUUp1Je3+91n2yY19KaX2APOBURiLLASZ1mD2x3hU33xLi+E7A6XUOoz/76aJWyhMjy9cDsRqrRs4Kn+uQgKsC1BKnQE+0Fr/Znp9DNgKvIexVm0OrfXzDsyiTSmlTgLDMB7b9QCoFhdQlVJjgYJa6/YOzKKwAaXUHYzVu9YrpR4ADbXW60372gDjtdZFHJhFm1FK3QXaa62XWdjXApijtfZLfqSwJlnJyTXkAs4BKKVKAiUwHl13GePhy884MG/2kBs4Z1qt6S5Gf1Sc5SQ0HTslpVQH05q0Z5VSV5N+OTp/NnQT8DL9fIGElZvA6CbIafcc2c89Ui5fDoymY2FjEmBdw3USVjJ6AbistT5oeq0Ap+yDS+Qcxrq7AMeBFon2VcOJP2xM/ZCzgBCgAMZ6y0sx/vdvYazX66x2YiyXCHYGxRUAAAmfSURBVEa5P1FKvamUeh0YgzHC2lktA0YppWon3mh6PRJj/rewMZmm4xpWAJ+bng36HuYL/JfHeIyZM1uNcWOxAGPt4VmmQSD3MZ6m4mxPUklsCMbDHUZhDPSZkqQf0mlHEGMEksKmnz8x/TwF44ZyB8bvw1m9CywCNpjmwV/BaMnKBWwBBjkwby5D+mBdgFIqK0ZgqQrsxVjc/pZp30aMB6477bJppoEdvlrrMNPrNhgPO/DBCDLTTOu1Oh1X7oe0xLS6lVfc33+SfYWAi1rraPvnzDaUUk0w/u/zYjzgYJulh7AL25AAK5IxPSt2idb6hqPzIh6NUuoC8IbW+i+l1GlgtNZ6qmnfS8AsrbXTPUkmo0xPG4oCqsr0FWEt0kQszJg+aGZg3PU6VYBVSjXFWCqxIBCstT6rlKoLhDjxXOC4fsi/SOiHjMYIJp/g3P2QGaXSTvJkUEp1xBgdP8bCvsHAWa21KzwL2qFkkJOwxGk+aACUUrmVUtswLewPdCdh0FM34GNH5c0ORmI8UB6MgLodox9yBhCGc/dDurKhpDx4LwL4wI55cVlSgxWuYBLGM1/LYAzoikq0bw3wqQPyZBda660Yc57RWocDL6bWDymcRkmMZwBb8p9pv7AxCbDCFTTBeCRdiKkJPLHzQH4H5MlhtNb3MUZQC+cVgTEty5KCyPtvF9JELFxFTArbAzAm5QvhTNYAHyulzB5moJQKBD4CZCSxHUgNVriCjUA/pVTiZePihs+/Afxt/ywJYVPvY3QNnFBKrcSYopMXaIzxoIP3HJg3lyEBVriC9zEW+T+IsdiEBt5USpXHWGijugPzJmzA1M88GFiqtd6XjkNiMVa8CrNpxuzENEK+IsaCE/WBSsA1jPEI4+PmhAvbknmwTk4p5Y0xPWNE3AID6TjmdWCxM82DVUoVB4YDz2M0C18H1gLDtdbHHZg1YSNKqQiMp8nIw+bTIHPfbUMCrAtQSt0A2mqt1zo6L0LYi+mRbUu01uMcnZfHmSyyYTvSROwaFgOtMWpsQriK94DflFJRGE9NukKSZ+Mmflaqi3Oque+PC6nBugDTE1XGAP+S8gfNcgdkzWaUUhlZpUZrrTvYLDPCIZRSideXtvhBp7V29idJpclUg41/IL2j8+NMpAbrGn4xfX/J9JWUxvkeWRfo6AwIh3uDFAKrEPYgNVgXoJQqnFYarfUZe+RFCPF4kRqs7UgN1gVI8BSuTCn1FFAFYwWj6Vrry0qpEsAVrfVtx+ZOODMJsC5EKeUOFAK8k+7TWh+2f45sRynVG5intQ41/ZwqrfUUO2RL2JFSKjMwHePZvw8wPu9WApeBERgPQRjssAwKpydNxC5AKeUBTMR4koyXpTTONtjDNMClutZ6e5LBLpZoZyu/AKXU90Az4DVgM8bTZYK01ruVUl2BwVrr8g7Mok3I3PfHh9RgXcMnQAuMx7T9CvQB7gKdgeJAP8dlzTa01pks/SxcykvAAK31OgsPeTgDpDk24UmktY5USlUlAwMXtdazbJgllyUB1jW0x1jFaC5GgN2utd4F/KSUmgW8iDF9x6kppUpjPDknaRO51lqvcECWhG35YCwPaIk/KT8AwhnI3PfHgARY11AQOKa1jlFKRQLZE+37f3v3EmplFYZx/P8WRWYDoZvSpJqEA+lCFA2yA2ZhCQcxtCAEg2wSRYMGhWBGlJRgkBAhWNJFK8gsyiwpzUhEI7EmRdIhB1LRBcQ4Uvg0WJ/lOe2tTb71faz1/EDYh+XggQP7PevyrvUq8BpwXyfJMoiIWcBGYCaDG+pLbFMy2AssIe27TnYH8HneOFltA56JiBlU0vveRy6wdTgMTGs+fw/MJj1nBWmJuHTrSYdc5gPfMfHBdSvXcmB7RGwH3iQVmNsi4iFSgZ3dZbiW1dj73jsusHXYAdwIvAusA1Y3bQrHgDtJM9iSzQQWStrWdRDLR9JnETEHWAWsJa1erCQ943azpL1d5mvZZV0HMJ8irkJETAcukPR18/OJv+CnAB8Bj0s62mHEVkXEx8BGSeu6zmLdiIgppK2R333/sOXiAluB5l3ISwbtuUTE7cAhSQfyJ8ujma1vBJ4FPiE9OD2Bv3TLExFLgc2S/vP7rkVNve995AJbgWYGt0vSigFjK4DZkubkT5ZHREwjLY0P2osCyusDNoiIY6S9xg+BTcCWkldqTlZj73sfeQ+2DteQ9qEG2Q08mDFLF14BbgBW40NONbmY9EfVIuAl4M+I2EpazXhP0niH2dpWXe97H3kGW4GIOAIskbR5wNgC4GVJ5+VPlkdEHAXulVT6YS4bIiLOJ507WATcBPxBurno7k6DtSQivgGepvnDgvSY+hfN2AZgXFKxrXl94Rtu6rAXWDZkbBmwL2OWLoyRvlCtUpJ+kfRCsxUyChwB7uo4Vpv+6X0nXRE5ufd9YSepKuMl4jo8RuoH3ANsIF12PoPUhH8lMLe7aFk8DKyMiP2SxroOY/k1l40sbv5dDhwkXfhfqtp733vBBbYCkj6NiFuAp4DnSP2Ax4E9wFxJu7rMl8FK0knKbyNijMGniK/LHcraFREzSUvCi4ErgEOk60I3VfDu6Q7q7n3vBe/BViYiziUtF/1WS2tKRLx4uv8jaWmOLJZP84rSYdItTq9L2t1xpGxq733vCxdYMytSRIwAO1Xhl1ztve994UNOZlYkSTtqLK6NNcD1Q8aubcatZd6DNbNiRMQbwCOSDjafT0WSFufI1YHae997wQXWzEpyIXBW8/kiJj3RVpEzgalDxqYCZ2fMUi3vwZqZFaa5HvWYpHkDxrYCUySNZA9WGRdYMytORJwDHAAekDTowfWiRcSJvtcvGdL7XkF7Xue8RGxmxZE03jzycLzrLF1w73s/eAZrZkWKiDXAdEklX4l4WjX2vveFZ7BmVqofgEURsQ94H/iRiYeeJOn5TpJl1BRVF9YOeAZrZkVqbnI6FflNVGuTC6yZmVkLvERsZsVoTs/+X/JhH2uTZ7BmVoxmWVikU7Mwcc81Jv2Ml4itTZ7BmllJZp30eQawHvgAeAv4iXS700LgVuCe7OmsKp7BmlmRImIL8JWk5QPGngCukjQ/fzKrhV/TMbNSzQF2DhnbCYzki2I1coE1s1L9CowOGVvQjJu1xnuwZlaqVcDaiLgUeId/92BHgXnA/Z0lsyp4D9bMihURo8CjwNWkCcVfwH7gSUlvd5nNyucCa2bFi4gzSG/F/iypygcALD8XWDMzsxb4kJOZmVkLXGDNzMxa4AJrZmbWAhdYMzOzFvwNxt7hl1hvdpgAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_correlation_matrix(significance_overview.fillna(0).values, x_labels=significance_overview.columns, \n", " y_labels=significance_overview.index, vmin=-5, vmax=5, title='significance', \n", " usetex=False, fontsize_factor=1.5, figsize=(7,5.5))\n", "plt.tight_layout()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Outlier significance\n", "\n", "The normal pearson correlation between two interval variables is easy to interpret. However, the phik correlation between two variables of mixed type is not always easy to interpret, especially when it concerns categorical variables. Therefore, functionality is provided to detect \"outliers\": excesses and deficits over the expected frequencies in the contingency table of two variables. \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Example 1: car_color versus area\n", "\n", "For the categorical variable pair car_color - area we measured:\n", "\n", "$$\\phi_k = 0.59 \\, ,\\quad\\quad \\mathrm{significance} = 37.6$$\n", "\n", "Let's use the outlier significance functionality to gain a better understanding of the significance correlation between car color and area.\n" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "c1 = 'car_color'\n", "c0 = 'area'" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
car_colorblackbluegraygreenmetalicmulticolorredwhite
area
country_side-5.636485-5.277175-1.6880325.8246646.5060200.092630-2.282290-1.193468
downtown-16.444319-8.2095363.45052114.17644112.2387852.582260-3.863796-4.400847
hills-8.2095363.0543069.244711-2.097600-3.0225534.7896652.695864-1.092375
suburbs19.5332218.315558-8.209536-8.209536-8.209536-6.5298461.6678143.964555
unpaved_roads13.043553-1.776804-6.095289-5.532779-4.566500-3.829519-1.3398811.074386
\n", "
" ], "text/plain": [ "car_color black blue gray green metalic \\\n", "area \n", "country_side -5.636485 -5.277175 -1.688032 5.824664 6.506020 \n", "downtown -16.444319 -8.209536 3.450521 14.176441 12.238785 \n", "hills -8.209536 3.054306 9.244711 -2.097600 -3.022553 \n", "suburbs 19.533221 8.315558 -8.209536 -8.209536 -8.209536 \n", "unpaved_roads 13.043553 -1.776804 -6.095289 -5.532779 -4.566500 \n", "\n", "car_color multicolor red white \n", "area \n", "country_side 0.092630 -2.282290 -1.193468 \n", "downtown 2.582260 -3.863796 -4.400847 \n", "hills 4.789665 2.695864 -1.092375 \n", "suburbs -6.529846 1.667814 3.964555 \n", "unpaved_roads -3.829519 -1.339881 1.074386 " ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "outlier_signifs, binning_dict = data[[c0,c1]].outlier_significance_matrix(retbins=True)\n", "outlier_signifs" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "zvalues = outlier_signifs.values\n", "xlabels = binning_dict[c1] if c1 in binning_dict.keys() else outlier_signifs.columns\n", "ylabels = binning_dict[c0] if c0 in binning_dict.keys() else outlier_signifs.index\n", "xlabel = c1\n", "ylabel = c0\n", "\n", "plot_correlation_matrix(zvalues, x_labels=xlabels, y_labels=ylabels, \n", " x_label=xlabel,y_label=ylabel,\n", " vmin=-5, vmax=5, title='outlier significance',\n", " identity_layout=False, fontsize_factor=1.2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The significance of each cell is expressed in terms of Z (one-sided).\n", "\n", "Interesting, owners of a green car are more likely to live in the country side, and black cars are more likely to travel on unpaved roads!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Example 2: mileage versus car_size" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For the categorical variable pair mileage - car_size we measured:\n", "\n", "$$\\phi_k = 0.77 \\, ,\\quad\\quad \\mathrm{significance} = 46.3$$\n", "\n", "Let's use the outlier significance functionality to gain a better understanding of this significance correlation between mileage and car size.\n" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "c0 = 'mileage'\n", "c1 = 'car_size'\n", "\n", "tmp_interval_cols = ['mileage']" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
car_sizeLMSXLXSXXL
53.5_30047.06.88215521.48347618.076204-8.20953610.820863-22.423985
30047.0_60040.520.034528-0.251737-3.4084092.534277-1.973628-8.209536
60040.5_90033.91.627610-3.043497-2.26580910.215936-1.246784-8.209536
90033.9_120027.4-3.711579-3.827278-2.88547512.999048-1.638288-7.185622
120027.4_150020.9-7.665861-6.173001-4.7467629.629145-2.841508-0.504521
150020.9_180014.4-7.533189-6.063786-4.6600491.559370-2.7850496.765549
180014.4_210007.8-5.541940-4.425929-3.360023-4.802787-1.94246910.520540
210007.8_240001.3-3.496905-2.745103-2.030802-5.850529-1.1008738.723925
240001.3_269994.8-5.275976-4.207164-3.186534-8.616464-1.83094413.303101
269994.8_299988.2-8.014016-6.458253-4.973240-12.868389-2.98905520.992824
\n", "
" ], "text/plain": [ "car_size L M S XL XS \\\n", "53.5_30047.0 6.882155 21.483476 18.076204 -8.209536 10.820863 \n", "30047.0_60040.5 20.034528 -0.251737 -3.408409 2.534277 -1.973628 \n", "60040.5_90033.9 1.627610 -3.043497 -2.265809 10.215936 -1.246784 \n", "90033.9_120027.4 -3.711579 -3.827278 -2.885475 12.999048 -1.638288 \n", "120027.4_150020.9 -7.665861 -6.173001 -4.746762 9.629145 -2.841508 \n", "150020.9_180014.4 -7.533189 -6.063786 -4.660049 1.559370 -2.785049 \n", "180014.4_210007.8 -5.541940 -4.425929 -3.360023 -4.802787 -1.942469 \n", "210007.8_240001.3 -3.496905 -2.745103 -2.030802 -5.850529 -1.100873 \n", "240001.3_269994.8 -5.275976 -4.207164 -3.186534 -8.616464 -1.830944 \n", "269994.8_299988.2 -8.014016 -6.458253 -4.973240 -12.868389 -2.989055 \n", "\n", "car_size XXL \n", "53.5_30047.0 -22.423985 \n", "30047.0_60040.5 -8.209536 \n", "60040.5_90033.9 -8.209536 \n", "90033.9_120027.4 -7.185622 \n", "120027.4_150020.9 -0.504521 \n", "150020.9_180014.4 6.765549 \n", "180014.4_210007.8 10.520540 \n", "210007.8_240001.3 8.723925 \n", "240001.3_269994.8 13.303101 \n", "269994.8_299988.2 20.992824 " ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "outlier_signifs, binning_dict = data[[c0,c1]].outlier_significance_matrix(interval_cols=tmp_interval_cols, \n", " retbins=True)\n", "outlier_signifs" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that the interval variable mileage is binned automatically in 10 uniformly spaced bins!" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "zvalues = outlier_signifs.values\n", "xlabels = outlier_signifs.columns\n", "ylabels = outlier_signifs.index\n", "xlabel = c1\n", "ylabel = c0\n", "\n", "plot_correlation_matrix(zvalues, x_labels=xlabels, y_labels=ylabels, \n", " x_label=xlabel,y_label=ylabel,\n", " vmin=-5, vmax=5, title='outlier significance',\n", " identity_layout=False, fontsize_factor=1.2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Correlation report" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A full correlation report can be created automatically for a dataset by pairwise evaluation of all correlations, significances and outlier significances. \n", "\n", "Note that for a dataset with many different columns the number of outlier significances plots can grow large very rapidly. Therefore, the feature is implemented to only evaluate outlier significances for those variable pairs with a significance and correlation larger than the given thresholds." ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "interval columns not set, guessing: ['driver_age', 'mileage']\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from phik import report\n", "rep = report.correlation_report(data, significance_threshold=3, correlation_threshold=0.5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Recap" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To summarize, the main functions in the phik correlation package working on a dataframe are:\n", "\n", "- `df[twocols].hist2d()` or `series.hist2d(other_series)`\n", "- `df.phik_matrix()`\n", "- `df.global_phik()`\n", "- `df.significance_matrix()`\n", "- `df[twocols].outlier_significance_matrix()` or `series.hist2d(other_series)`\n", "- `df.outlier_significance_matrices()`" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "interval columns not set, guessing: ['driver_age', 'mileage']\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
mileage12345678910
driver_age
154.030.013.029.057.061.036.011.036.061.0
251.041.013.017.064.041.035.012.030.075.0
365.029.021.024.053.054.035.014.027.066.0
449.023.017.030.050.054.021.017.025.053.0
541.028.019.015.033.045.027.011.023.039.0
621.012.05.012.026.025.010.08.010.015.0
77.08.02.03.08.09.04.02.03.010.0
85.02.00.01.06.01.01.01.01.03.0
90.00.00.00.01.00.00.00.00.01.0
100.00.00.01.01.00.00.00.00.00.0
\n", "
" ], "text/plain": [ "mileage 1 2 3 4 5 6 7 8 9 10\n", "driver_age \n", "1 54.0 30.0 13.0 29.0 57.0 61.0 36.0 11.0 36.0 61.0\n", "2 51.0 41.0 13.0 17.0 64.0 41.0 35.0 12.0 30.0 75.0\n", "3 65.0 29.0 21.0 24.0 53.0 54.0 35.0 14.0 27.0 66.0\n", "4 49.0 23.0 17.0 30.0 50.0 54.0 21.0 17.0 25.0 53.0\n", "5 41.0 28.0 19.0 15.0 33.0 45.0 27.0 11.0 23.0 39.0\n", "6 21.0 12.0 5.0 12.0 26.0 25.0 10.0 8.0 10.0 15.0\n", "7 7.0 8.0 2.0 3.0 8.0 9.0 4.0 2.0 3.0 10.0\n", "8 5.0 2.0 0.0 1.0 6.0 1.0 1.0 1.0 1.0 3.0\n", "9 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0\n", "10 0.0 0.0 0.0 1.0 1.0 0.0 0.0 0.0 0.0 0.0" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data[['driver_age', 'mileage']].hist2d()\n", "# Alternatively: data['driver_age'].hist2d(data['mileage'])" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "interval columns not set, guessing: ['driver_age', 'mileage']\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
car_colordriver_ageareamileagecar_size
car_color1.0000000.3896710.5904560.0000000.000000
driver_age0.3896711.0000000.1055060.0000000.000000
area0.5904560.1055061.0000000.0000000.000000
mileage0.0000000.0000000.0000001.0000000.768589
car_size0.0000000.0000000.0000000.7685891.000000
\n", "
" ], "text/plain": [ " car_color driver_age area mileage car_size\n", "car_color 1.000000 0.389671 0.590456 0.000000 0.000000\n", "driver_age 0.389671 1.000000 0.105506 0.000000 0.000000\n", "area 0.590456 0.105506 1.000000 0.000000 0.000000\n", "mileage 0.000000 0.000000 0.000000 1.000000 0.768589\n", "car_size 0.000000 0.000000 0.000000 0.768589 1.000000" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.phik_matrix()" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "interval columns not set, guessing: ['driver_age', 'mileage']\n" ] }, { "data": { "text/plain": [ "(array([[0.67603168],\n", " [0.41913015],\n", " [0.60575269],\n", " [0.76858883],\n", " [0.76858883]]),\n", " array(['car_color', 'driver_age', 'area', 'mileage', 'car_size'],\n", " dtype=object))" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.global_phik()" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "interval columns not set, guessing: ['driver_age', 'mileage']\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
car_colordriver_ageareamileagecar_size
car_color85.46830219.78760737.609394-0.634132-0.586560
driver_age19.78760784.3143151.857272-0.586955-0.532817
area37.6093941.85727272.400210-0.593527-0.334542
mileage-0.634132-0.586955-0.59352791.22158449.249503
car_size-0.586560-0.532817-0.33454249.24950369.047125
\n", "
" ], "text/plain": [ " car_color driver_age area mileage car_size\n", "car_color 85.468302 19.787607 37.609394 -0.634132 -0.586560\n", "driver_age 19.787607 84.314315 1.857272 -0.586955 -0.532817\n", "area 37.609394 1.857272 72.400210 -0.593527 -0.334542\n", "mileage -0.634132 -0.586955 -0.593527 91.221584 49.249503\n", "car_size -0.586560 -0.532817 -0.334542 49.249503 69.047125" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.significance_matrix()" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "interval columns not set, guessing: ['mileage']\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
53.5_30047.030047.0_60040.560040.5_90033.990033.9_120027.4120027.4_150020.9150020.9_180014.4180014.4_210007.8210007.8_240001.3240001.3_269994.8269994.8_299988.2
area
country_side-0.1782040.1925840.099073-1.8189240.1039070.8882250.2514801.4915320.016080-0.869129
downtown0.625586-2.1411060.5417850.931452-0.9261770.5825850.917301-0.729204-0.9782480.610302
hills-0.8268071.346029-0.8410900.0084980.0713561.0289400.1070510.080217-0.397630-0.904236
suburbs0.9726210.0981960.712079-0.0599750.975536-1.759184-0.716170-0.6036230.059615-0.050745
unpaved_roads-1.4694380.518041-0.915745-0.475005-0.679357-0.545607-0.8083210.9013332.1756201.339934
\n", "
" ], "text/plain": [ " 53.5_30047.0 30047.0_60040.5 60040.5_90033.9 \\\n", "area \n", "country_side -0.178204 0.192584 0.099073 \n", "downtown 0.625586 -2.141106 0.541785 \n", "hills -0.826807 1.346029 -0.841090 \n", "suburbs 0.972621 0.098196 0.712079 \n", "unpaved_roads -1.469438 0.518041 -0.915745 \n", "\n", " 90033.9_120027.4 120027.4_150020.9 150020.9_180014.4 \\\n", "area \n", "country_side -1.818924 0.103907 0.888225 \n", "downtown 0.931452 -0.926177 0.582585 \n", "hills 0.008498 0.071356 1.028940 \n", "suburbs -0.059975 0.975536 -1.759184 \n", "unpaved_roads -0.475005 -0.679357 -0.545607 \n", "\n", " 180014.4_210007.8 210007.8_240001.3 240001.3_269994.8 \\\n", "area \n", "country_side 0.251480 1.491532 0.016080 \n", "downtown 0.917301 -0.729204 -0.978248 \n", "hills 0.107051 0.080217 -0.397630 \n", "suburbs -0.716170 -0.603623 0.059615 \n", "unpaved_roads -0.808321 0.901333 2.175620 \n", "\n", " 269994.8_299988.2 \n", "area \n", "country_side -0.869129 \n", "downtown 0.610302 \n", "hills -0.904236 \n", "suburbs -0.050745 \n", "unpaved_roads 1.339934 " ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data[['area', 'mileage']].outlier_significance_matrix()" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "interval columns not set, guessing: ['driver_age', 'mileage']\n" ] } ], "source": [ "os_matrices = data.outlier_significance_matrices()" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "dict_keys(['car_color:driver_age', 'car_color:area', 'car_color:mileage', 'car_color:car_size', 'driver_age:area', 'driver_age:mileage', 'driver_age:car_size', 'area:mileage', 'area:car_size', 'mileage:car_size'])" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "os_matrices.keys()" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
53.5_30047.030047.0_60040.560040.5_90033.990033.9_120027.4120027.4_150020.9150020.9_180014.4180014.4_210007.8210007.8_240001.3240001.3_269994.8269994.8_299988.2
car_color
black0.3664251.387093-1.320194-1.2745581.908010-0.880578-1.260293-0.498607-0.4497940.492858
blue-0.409760-1.676495-0.5154911.9696500.474818-1.260466-0.505987-0.5756991.6754510.601026
gray0.267888-0.338430-1.1483780.048682-0.2382851.5227691.282298-0.812279-0.589854-0.887127
green-0.1959060.3994711.306739-0.9187230.373229-0.859866-0.8625440.772096-0.1699120.471057
metalic0.697184-0.3858060.6726200.205599-1.5435001.1681470.2494710.513459-0.174870-0.952009
multicolor-0.478862-0.5919870.8937830.050843-2.1048570.9946210.1090200.578461-0.5064601.287415
red-0.5511060.5489491.370043-0.050064-1.8227480.0555212.2081750.9219550.219336-1.556492
white-0.0550251.219026-0.596627-0.4277301.888206-0.471175-0.851352-0.393054-0.697834-0.323899
\n", "
" ], "text/plain": [ " 53.5_30047.0 30047.0_60040.5 60040.5_90033.9 90033.9_120027.4 \\\n", "car_color \n", "black 0.366425 1.387093 -1.320194 -1.274558 \n", "blue -0.409760 -1.676495 -0.515491 1.969650 \n", "gray 0.267888 -0.338430 -1.148378 0.048682 \n", "green -0.195906 0.399471 1.306739 -0.918723 \n", "metalic 0.697184 -0.385806 0.672620 0.205599 \n", "multicolor -0.478862 -0.591987 0.893783 0.050843 \n", "red -0.551106 0.548949 1.370043 -0.050064 \n", "white -0.055025 1.219026 -0.596627 -0.427730 \n", "\n", " 120027.4_150020.9 150020.9_180014.4 180014.4_210007.8 \\\n", "car_color \n", "black 1.908010 -0.880578 -1.260293 \n", "blue 0.474818 -1.260466 -0.505987 \n", "gray -0.238285 1.522769 1.282298 \n", "green 0.373229 -0.859866 -0.862544 \n", "metalic -1.543500 1.168147 0.249471 \n", "multicolor -2.104857 0.994621 0.109020 \n", "red -1.822748 0.055521 2.208175 \n", "white 1.888206 -0.471175 -0.851352 \n", "\n", " 210007.8_240001.3 240001.3_269994.8 269994.8_299988.2 \n", "car_color \n", "black -0.498607 -0.449794 0.492858 \n", "blue -0.575699 1.675451 0.601026 \n", "gray -0.812279 -0.589854 -0.887127 \n", "green 0.772096 -0.169912 0.471057 \n", "metalic 0.513459 -0.174870 -0.952009 \n", "multicolor 0.578461 -0.506460 1.287415 \n", "red 0.921955 0.219336 -1.556492 \n", "white -0.393054 -0.697834 -0.323899 " ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "os_matrices['car_color:mileage']" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.8" }, "pycharm": { "stem_cell": { "cell_type": "raw", "metadata": { "collapsed": false }, "source": [] } } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: phik/notebooks/phik_tutorial_spark.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Phi_K spark tutorial\n", "\n", "This notebook shows you how to obtain the Phi_K correlation matrix for a spark dataframe.\n", "Calculating the Phi_K matrix consists of two steps:\n", "\n", "- Obtain the 2d contingency tables for all variable pairs. To make these we use the [`histogrammar` package](https://github.com/histogrammar/histogrammar-python).\n", "- Calculate the Phi_K value for each variable pair from its contingency table.\n", "\n", "Make sure you install the histogrammar package to make the 2d histograms, that are then used to calculate phik." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "%%capture\n", "# install histogrammar (if not installed yet)\n", "import sys\n", "\n", "!\"{sys.executable}\" -m pip install histogrammar" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import itertools\n", "\n", "import pandas as pd\n", "import histogrammar as hg\n", "from histogrammar.plot.hist_numpy import get_2dgrid\n", "\n", "import phik\n", "from phik import resources\n", "from phik.phik import spark_phik_matrix_from_hist2d_dict" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# histogramming is done using the histogrammar library" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from pyspark.sql import SparkSession\n", "from pyspark import __version__ as pyspark_version\n", "\n", "scala = '2.12' if int(pyspark_version[0]) >= 3 else '2.11'\n", "hist_jar = f'io.github.histogrammar:histogrammar_{scala}:1.0.20'\n", "hist_spark_jar = f'io.github.histogrammar:histogrammar-sparksql_{scala}:1.0.20'\n", "\n", "spark = SparkSession.builder.config(\n", " \"spark.jars.packages\", f'{hist_spark_jar},{hist_jar}'\n", ").getOrCreate()\n", "\n", "spark = SparkSession.builder.config(\n", " \"spark.jars.packages\", f'{hist_spark_jar},{hist_jar}'\n", ").getOrCreate()\n", "\n", "sc = spark.sparkContext" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Load data\n", "\n", "A simulated dataset is part of the phik-package. The dataset concerns fake car insurance data. Load the dataset here:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "data = pd.read_csv( resources.fixture('fake_insurance_data.csv.gz') )\n", "sdf = spark.createDataFrame(data)\n", "sdf.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "combis = itertools.combinations_with_replacement(sdf.columns, 2)\n", "combis = [list(c) for c in combis]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "print(combis)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# step 1: create histograms (this runs spark histogrammar in the background)\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# see the doc-string of hg_make_histograms() for binning options.\n", "hists = sdf.hg_make_histograms(combis)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# collect the numpy contingency tables into a dict\n", "grids = {k:(get_2dgrid(h)[2]) for k,h in hists.items()}\n", "print(grids)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# we can store the histograms if we want to\n", "if False:\n", " import pickle\n", "\n", " with open('grids.pkl', 'wb') as outfile:\n", " pickle.dump(grids, outfile)\n", "\n", " with open('grids.pkl', 'rb') as handle:\n", " grids = pickle.load(handle)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# step 2: calculate phik matrix (runs rdd parallellization over all 2d histograms)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "phik_matrix = spark_phik_matrix_from_hist2d_dict(sc, grids)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "phik_matrix" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.8" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: phik/outliers.py ================================================ """Project: PhiK - correlation analyzer library Created: 2018/09/05 Description: Functions for calculating the statistical significance of outliers in a contingency table. Authors: KPMG Advanced Analytics & Big Data team, Amstelveen, The Netherlands Redistribution and use in source and binary forms, with or without modification, are permitted according to the terms listed in the file LICENSE. """ from typing import Tuple, Union, Optional import itertools import numpy as np import pandas as pd import warnings from scipy import stats from scipy.special import betainc from phik import definitions as defs from .binning import bin_data, hist2d_from_rebinned_df from .betainc import log_incompbeta from .statistics import z_from_logp from .data_quality import dq_check_nunique_values from .utils import array_like_to_dataframe, guess_interval_cols def poisson_obs_p(nobs: int, nexp: float, nexperr: float) -> float: """ Calculate p-value for nobs observations given the expected value and its uncertainty using the Linnemann method. If the uncertainty on the expected value is known the Linnemann method is used. Otherwise the Poisson distribution is used to estimate the p-value. Measures of Significance in HEP and Astrophysics Authors: J. T. Linnemann http://arxiv.org/abs/physics/0312059 Code inspired by: https://root.cern.ch/doc/master/NumberCountingUtils_8cxx_source.html#l00086 Three fixes are added for: * nobs = 0, when - by construction - p should be 1. * uncertainty of zero, for which Linnemann's function does not work, but one can simply revert to regular Poisson. * when nexp=0, betainc always returns 1. Here we set nexp = nexperr. :param int nobs: observed count :param float nexp: expected number :param float nexperr: uncertainty on the expected number :returns: p-value :rtype: float """ if nobs == 0: return 1 if nexperr > 0: nexpalt = nexp if nexp > 0 else nexperr tau = nexpalt / (nexperr * nexperr) b = nexpalt * tau + 1 x = 1 / (1 + tau) p = betainc(nobs, b, x) else: # assume error==0 p = stats.poisson.sf(nobs - 1, nexp) return p def log_poisson_obs_p(nobs: int, nexp: float, nexperr: float) -> Tuple[float, float]: """ Calculate logarithm of p-value for nobs observations given the expected value and its uncertainty using the Linnemann method. If the uncertainty on the expected value is known the Linnemann method is used. Otherwise the Poisson distribution is used to estimate the p-value. Measures of Significance in HEP and Astrophysics Authors: J. T. Linnemann http://arxiv.org/abs/physics/0312059 Code inspired by: https://root.cern.ch/doc/master/NumberCountingUtils_8cxx_source.html#l00086 Three fixes are added for: * nobs = 0, when - by construction - p should be 1. * uncertainty of zero, for which Linnemann's function does not work, but one can simply revert to regular Poisson. * when nexp=0, betainc always returns 1. Here we set nexp = nexperr. :param int nobs: observed count :param float nexp: expected number :param float nexperr: uncertainty on the expected number :returns: tuple containing pvalue and 1 - pvalue :rtype: tuple """ if nobs == 0: # p=1, 1-p=0 --> logp=0,log(1-p)=-inf return 0, -np.inf if nexperr > 0: nexpalt = nexp if nexp > 0 else nexperr tau = nexpalt / (nexperr * nexperr) b = nexpalt * tau + 1 x = 1 / (1 + tau) tlogp = log_incompbeta(nobs, b, x) else: # assume error==0. nobs>0 at this stage logp = stats.poisson.logsf(nobs - 1, nexp) p = stats.poisson.sf(nobs - 1, nexp) tlogp = (logp, np.log(1 - p)) return tlogp def poisson_obs_z(nobs: int, nexp: float, nexperr: float) -> float: """ Calculate the Z-value for measuring nobs observations given the expected value. The Z-value express the number of sigmas the observed value deviates from the expected value, and is based on the p-value calculation. If the uncertainty on the expected value is known the Linnemann method is used. Otherwise the Poisson distribution is used to estimate the p-value. :param int nobs: observed count :param float nexp: expected number :param float nexperr: uncertainty on the expected number :returns: Z-value :rtype: float """ p_value = poisson_obs_p(nobs, nexp, nexperr) # special cases: numerically too close to zero or one. # try to evaluate log(p) or log(1-p) if p_value == 0 or p_value == 1: tlogp = log_poisson_obs_p(nobs, nexp, nexperr) if p_value == 0: logp = tlogp[0] z_value = z_from_logp(logp) else: log1mp = tlogp[1] z_value = z_from_logp(log1mp, flip_sign=True) # default: else: z_value = -stats.norm.ppf(p_value) return z_value def poisson_obs_mid_p(nobs: int, nexp: float, nexperr: float) -> float: """ Calculate the p-value for measuring nobs observations given the expected value. The Lancaster mid-P correction is applied to take into account the effects of discrete statistics. If the uncertainty on the expected value is known the Linnemann method is used for the p-value calculation. Otherwise the Poisson distribution is used to estimate the p-value. :param int nobs: observed count :param float nexp: expected number :param float nexperr: uncertainty on the expected number :returns: mid p-value :rtype: float """ p = poisson_obs_p(nobs, nexp, nexperr) pplus1 = poisson_obs_p(nobs + 1, nexp, nexperr) mid_p = 0.5 * (p - pplus1) p -= mid_p return p def log_poisson_obs_mid_p( nobs: int, nexp: float, nexperr: float ) -> Tuple[float, float]: """ Calculate the logarithm of the p-value for measuring nobs observations given the expected value. The Lancaster mid-P correction is applied to take into account the effects of discrete statistics. If the uncertainty on the expected value is known the Linnemann method is used for the p-value calculation. Otherwise the Poisson distribution is used to estimate the p-value. :param int nobs: observed count :param float nexp: expected number :param float nexperr: uncertainty on the expected number :returns: tuple of log(p) and log(1-p) :rtype: tuple """ tlogp = log_poisson_obs_p(nobs, nexp, nexperr) tlogpp1 = log_poisson_obs_p(nobs + 1, nexp, nexperr) # 1. evaluate log([p+pp1]/2) ; note that p > pp1 # = log(0.5) + log(p) + log(1 + exp[log(pp1)-log(p)]) lp = tlogp[0] lp1 = tlogpp1[0] logmidp = np.log(0.5) + lp + np.log(1 + np.exp(lp1 - lp)) # 2. let q = 1 - p; note that qp1 > q # evaluate log(1-[p+pp1]/2) = log ([q+qp1]/2) # = log(0.5) + log(qp1) + log(1 + exp[log(q)-log(qp1)]) lq = tlogp[1] lq1 = tlogpp1[1] logmidq = np.log(0.5) + lq1 + np.log(1 + np.exp(lq - lq1)) return logmidp, logmidq def poisson_obs_mid_z(nobs: int, nexp: float, nexperr: float) -> float: """Calculate the Z-value for measuring nobs observations given the expected value. The Z-value express the number of sigmas the observed value deviates from the expected value, and is based on the p-value calculation. The Lancaster midP correction is applied to take into account the effects of low statistics. If the uncertainty on the expected value is known the Linnemann method is used for the p-value calculation. Otherwise the Poisson distribution is used to estimate the p-value. :param int nobs: observed count :param float nexp: expected number :param float nexperr: uncertainty on the expected number :returns: Z-value :rtype: tuple """ p_value = poisson_obs_mid_p(nobs, nexp, nexperr) # special cases: numerically too close to zero or one. # try to evaluate log(p) or log(1-p) if p_value == 0 or p_value == 1: tlogp = log_poisson_obs_mid_p(nobs, nexp, nexperr) if p_value == 0: logp = tlogp[0] z_value = z_from_logp(logp) else: log1mp = tlogp[1] z_value = z_from_logp(log1mp, flip_sign=True) # default: else: z_value = -stats.norm.ppf(p_value) return z_value def get_independent_frequency_estimates( values: np.ndarray, CI_method: str = "poisson" ) -> Tuple[np.ndarray, np.ndarray]: """ Calculation of expected frequencies, based on the ABCD-method, i.e. independent frequency estimates. :param values: The contingency table. The table contains the observed number of occurrences in each category. :param string CI_method: method to be used for uncertainty calculation. poisson: normal poisson error.\ exact_poisson: error calculated from the asymmetric exact poisson interval :returns exp, experr: expected frequencies, error on the expected frequencies """ # Initialize exp = np.zeros(values.shape) experr = np.zeros(values.shape) # Calculate dependent expected value using ABCD method for i in range(values.shape[0]): for j in range(values.shape[1]): Aobs = values[i][j] B = values[i].sum() - Aobs C = values[:, j].sum() - Aobs D = values.sum() - B - C - Aobs # prediction for A can only be calculated if D is non-zero if D > 0: exp[i][j] = B * C / D sigmaB = get_uncertainty(B, CI_method=CI_method) sigmaC = get_uncertainty(C, CI_method=CI_method) sigmaD = get_uncertainty(D, CI_method=CI_method) experr[i][j] = np.sqrt( pow(sigmaB * C / D, 2) + pow(sigmaC * B / D, 2) + pow(sigmaD * exp[i][j] / D, 2) ) # in case of zero D, A is infinity. Set prediction to NaN. else: exp[i][j] = np.nan experr[i][j] = np.nan return exp, experr def get_uncertainty(x: float, CI_method: str = "poisson") -> float: """ Calculate the uncertainty on a random number x taken from the poisson distribution The uncertainty on the x is calculated using either the standard poisson error (poisson) or using the asymmetric exact poisson interval (exact_poisson). https://www.ncbi.nlm.nih.gov/pubmed/2296988 #FIXME: check ref :param float x: value, must be equal or greater than zero :param string CI_method: method to be used for uncertainty calculation. poisson: normal poisson error.\ exact_poisson: error calculated from the asymmetric exact poisson interval :return x_err: the uncertainty on x (1 sigma) """ if CI_method == "exact_poisson": xerr = get_exact_poisson_uncertainty(x) elif CI_method == "poisson": xerr = get_poisson_uncertainty(x) else: raise NotImplementedError("CI method {} not valid".format(CI_method)) return xerr def get_poisson_uncertainty(x: float) -> float: """ Calculate the uncertainty on x using standard poisson error. In case x=0 the error=1 is assigned. :param float x: value :return x_err: the uncertainty on x (1 sigma) :rtype: float """ return np.sqrt(x) if x >= 1 else 1.0 def get_exact_poisson_uncertainty(x: float, nsigmas: float = 1) -> float: """ Calculate the uncertainty on x using an exact poisson confidence interval. The width of the confidence interval can be specified using the number of sigmas. The default number of sigmas is set to 1, resulting in an error that is approximated by the standard poisson error sqrt(x). Exact poisson uncertainty is described here: https://ms.mcmaster.ca/peter/s743/poissonalpha.html https://www.statsdirect.com/help/rates/poisson_rate_ci.htm https://www.ncbi.nlm.nih.gov/pubmed/2296988 :param float x: value :return x_err: the uncertainty on x (1 sigma) :rtype: float """ # see formula at: # https://en.wikipedia.org/wiki/Poisson_distribution#Confidence_interval pl = stats.norm.cdf(-1 * nsigmas, loc=0, scale=1) pu = stats.norm.cdf(1 * nsigmas, loc=0, scale=1) lb = stats.chi2.ppf(pl, 2 * x) / 2 if x != 0 else 0 ub = stats.chi2.ppf(pu, 2 * (x + 1)) / 2 # average err is almost equal to sqrt(x)+0.5 return (ub - lb) / 2 def get_outlier_significances( obs: np.ndarray, exp: np.ndarray, experr: np.ndarray ) -> Tuple[np.ndarray, np.ndarray]: """ Evaluation of significance of observation Evaluation of the significance of the difference between the observed number of occurrences and the expected number of occurrences, taking into account the uncertainty on the expected number of occurrences. When the uncertainty is not zero, the Linnemann method is used to calculate the p-values. :param obs: observed numbers :param exp: expected numbers :param experr: uncertainty on the expected numbers :returns: pvalues, zvalues """ pvalues = np.zeros(obs.shape) zvalues = np.zeros(obs.shape) for i in range(obs.shape[0]): for j in range(obs.shape[1]): pvalues[i][j] = poisson_obs_mid_p(obs[i][j], exp[i][j], experr[i][j]) zvalues[i][j] = poisson_obs_mid_z(obs[i][j], exp[i][j], experr[i][j]) return pvalues, zvalues def outlier_significance_matrix_from_hist2d( data: np.ndarray, CI_method: str = "poisson" ) -> Tuple[np.ndarray, np.ndarray]: """ Calculate the significance matrix of excesses or deficits in a contingency table :param data: numpy array contingency table :param string CI_method: method to be used for uncertainty calculation. poisson: normal poisson error.\ exact_poisson: error calculated from the asymmetric exact poisson interval :return: p-value matrix, outlier significance matrix """ # get expected values exp, experr = get_independent_frequency_estimates(data, CI_method=CI_method) pvalues, zvalues = get_outlier_significances(data, exp, experr) return pvalues, zvalues def outlier_significance_matrix_from_rebinned_df( data_binned: pd.DataFrame, binning_dict: dict, CI_method: str = "poisson", ndecimals: int = 1, dropna: bool = True, drop_underflow: bool = True, drop_overflow: bool = True, ) -> pd.DataFrame: """ Calculate the significance matrix of excesses or deficits :param data_binned: input data. DataFrame must contain exactly two columns :param dict binning_dict: dictionary with bin edges for each binned interval variable. When no bin_edges are\ provided values are used as bin label. Otherwise, bin labels are constructed based on provided bin edge information. :param string CI_method: method to be used for uncertainty calculation. poisson: normal poisson error. \ exact_poisson: error calculated from the asymmetric exact poisson interval :param ndecimals: number of decimals to use in labels of binned interval variables to specify bin edges (default=1) :param bool dropna: remove NaN values with True :param bool drop_underflow: do not take into account records in underflow bin when True (relevant when binning\ a numeric variable) :param bool drop_overflow: do not take into account records in overflow bin when True (relevant when binning\ a numeric variable) :return: outlier significance matrix (pd.DataFrame) """ c0, c1 = data_binned.columns df_datahist = hist2d_from_rebinned_df( data_binned, dropna, drop_underflow, drop_overflow ) if 1 in df_datahist.shape or 0 in df_datahist.shape: warnings.warn( "Too few unique values for variable {0:s} ({1:d}) or {2:s} ({3:d}) to calculate outlier " "significances".format(c0, df_datahist.shape[0], c1, df_datahist.shape[1]) ) return np.nan for c, a in [(c0, "index"), (c1, "columns")]: if c in binning_dict.keys(): # check for missing bins. This can occur due to NaN values for variable c1 in which case rows are dropped orig_vals = ( data_binned[~data_binned[c].isin([defs.UF, defs.OF, defs.NaN])][c] .value_counts() .sort_index() .index ) missing = list(set(orig_vals) - set(getattr(df_datahist, a))) imissing = [] for v in missing: imissing.append(np.where(orig_vals == v)[0][0]) vals = [ "{1:.{0}f}_{2:.{0}f}".format( ndecimals, binning_dict[c][i][0], binning_dict[c][i][1] ) for i in range(len(binning_dict[c])) if not i in imissing ] vals += list(getattr(df_datahist, a)[len(vals) :]) # to deal with UF and OF setattr(df_datahist, a, vals) pvalues, zvalues = outlier_significance_matrix_from_hist2d( df_datahist.values, CI_method=CI_method ) outlier_overview = pd.DataFrame( zvalues, index=df_datahist.index, columns=df_datahist.columns ) return outlier_overview def outlier_significance_matrix( df: pd.DataFrame, interval_cols: Optional[list] = None, CI_method: str = "poisson", ndecimals: int = 1, bins=10, quantile: bool = False, dropna: bool = True, drop_underflow: bool = True, drop_overflow: bool = True, retbins: bool = False, verbose: bool = True, ): """ Calculate the significance matrix of excesses or deficits :param df: input data. DataFrame must contain exactly two columns :param interval_cols: columns with interval variables which need to be binned :param string CI_method: method to be used for uncertainty calculation. poisson: normal poisson error.\ exact_poisson: error calculated from the asymmetric exact poisson interval :param bins: number of bins, or a list of bin edges (same for all columns), or a dictionary where per column the bins are specified. (default=10)\ E.g.: bins = {'mileage':5, 'driver_age':[18,25,35,45,55,65,125]} :param ndecimals: number of decimals to use in labels of binned interval variables to specify bin edges (default=1) :param bool quantile: when the number of bins is specified, use uniform binning (False) or quantile binning (True) :param bool dropna: remove NaN values with True :param bool drop_underflow: do not take into account records in underflow bin when True (relevant when binning\ a numeric variable) :param bool drop_overflow: do not take into account records in overflow bin when True (relevant when binning\ a numeric variable) :param bool retbins: if true, function also returns dict with bin_edges of rebinned variables. :param bool verbose: if False, do not print all interval columns that are guessed :return: outlier significance matrix (pd.DataFrame) """ if len(df.columns) != 2: raise ValueError("df should contain only two columns") if interval_cols is None: interval_cols = guess_interval_cols(df, verbose) df_clean, interval_cols_clean = dq_check_nunique_values( df, interval_cols, dropna=dropna ) data_binned, binning_dict = bin_data( df_clean, interval_cols_clean, retbins=True, bins=bins, quantile=quantile ) os_matrix = outlier_significance_matrix_from_rebinned_df( data_binned, binning_dict, CI_method=CI_method, ndecimals=ndecimals, dropna=dropna, drop_underflow=drop_underflow, drop_overflow=drop_overflow, ) if retbins: return os_matrix, binning_dict return os_matrix def outlier_significance_matrices_from_rebinned_df( data_binned: pd.DataFrame, binning_dict=None, CI_method="poisson", ndecimals=1, combinations: Union[list, tuple] = (), dropna=True, drop_underflow=True, drop_overflow=True, ): """ Calculate the significance matrix of excesses or deficits for all possible combinations of variables, or for those combinations specified using combinations. This functions could also be used instead of outlier_significance_matrices in case all variables are either categorical or ordinal, so no binning is required. :param data_binned: input data. Interval variables need to be binned. DataFrame must contain exactly two columns :param dict binning_dict: dictionary with bin edges for each binned interval variable. When no bin_edges are\ provided values are used as bin label. Otherwise, bin labels are constructed based on provided bin edge information. :param string CI_method: method to be used for uncertainty calculation. poisson: normal poisson error.\ exact_poisson: error calculated from the asymmetric exact poisson interval :param ndecimals: number of decimals to use in labels of binned interval variables to specify bin edges (default=1) :param combinations: in case you do not want to calculate an outlier significance matrix for all permutations of\ the available variables, you can specify a list of the required permutations here, in the format\ [(var1, var2), (var2, var4), etc] :param bool dropna: remove NaN values with True :param bool drop_underflow: do not take into account records in underflow bin when True (relevant when binning\ a numeric variable) :param bool drop_overflow: do not take into account records in overflow bin when True (relevant when binning\ a numeric variable) :return: dictionary with outlier significance matrices (pd.DataFrame) """ if binning_dict is None: binning_dict = {} # create a list of all possible combinations of variables, in case no selection of combinations is specified if not combinations: combinations = itertools.combinations(data_binned.columns, 2) outliers_overview = [] for i, (c0, c1) in enumerate(combinations): zvalues_overview = outlier_significance_matrix_from_rebinned_df( data_binned[[c0, c1]].copy(), binning_dict, CI_method=CI_method, ndecimals=ndecimals, dropna=dropna, drop_underflow=drop_underflow, drop_overflow=drop_overflow, ) outliers_overview.append((c0, c1, zvalues_overview)) return outliers_overview def outlier_significance_matrices( df: pd.DataFrame, interval_cols: Optional[list] = None, CI_method: str = "poisson", ndecimals: int = 1, bins=10, quantile: bool = False, combinations: Union[list, tuple] = (), dropna: bool = True, drop_underflow: bool = True, drop_overflow: bool = True, retbins: bool = False, verbose: bool = True, ): """ Calculate the significance matrix of excesses or deficits for all possible combinations of variables, or for those combinations specified using combinations :param df: input data :param interval_cols: columns with interval variables which need to be binned :param string CI_method: method to be used for uncertainty calculation. poisson: normal poisson error. \ exact_poisson: error calculated from the asymmetric exact poisson interval :param ndecimals: number of decimals to use in labels of binned interval variables to specify bin edges (default=1) :param bins: number of bins, or a list of bin edges (same for all columns), or a dictionary where per column the bins are specified. (default=10)\ E.g.: bins = {'mileage':5, 'driver_age':[18,25,35,45,55,65,125]} :param bool quantile: when the number of bins is specified, use uniform binning (False) or quantile binning (True) :param combinations: in case you do not want to calculate an outlier significance matrix for all permutations of\ the available variables, you can specify a list of the required permutations here, in the format\ [(var1, var2), (var2, var4), etc] :param bool dropna: remove NaN values with True :param bool drop_underflow: do not take into account records in underflow bin when True (relevant when binning\ a numeric variable) :param bool drop_overflow: do not take into account records in overflow bin when True (relevant when binning\ a numeric variable) :param bool retbins: if true, function also returns dict with bin_edges of rebinned variables. :param bool verbose: if False, do not print all interval columns that are guessed :return: dictionary with outlier significance matrices (pd.DataFrame) """ if interval_cols is None: interval_cols = guess_interval_cols(df, verbose) df_clean, interval_cols_clean = dq_check_nunique_values( df, interval_cols, dropna=dropna ) data_binned, binning_dict = bin_data( df_clean, interval_cols_clean, retbins=True, bins=bins, quantile=quantile ) os_matrices = outlier_significance_matrices_from_rebinned_df( data_binned, binning_dict, CI_method, ndecimals, combinations=combinations, dropna=dropna, drop_underflow=drop_underflow, drop_overflow=drop_overflow, ) # Convert to dict os_matrices = {":".join([c0, c1]): v for c0, c1, v in os_matrices} if retbins: return os_matrices, binning_dict return os_matrices def outlier_significance_from_array( x: Union[np.ndarray, list, pd.Series], y: Union[np.ndarray, list, pd.Series], num_vars: list = None, bins: Union[int, list, np.ndarray, dict] = 10, quantile: bool = False, ndecimals: int = 1, CI_method: str = "poisson", dropna: bool = True, drop_underflow: bool = True, drop_overflow: bool = True, verbose: bool = True, ) -> pd.DataFrame: """ Calculate the significance matrix of excesses or deficits of input x and input y. x and y can contain interval, \ ordinal or categorical data. Use the num_vars variable to indicate whether x and/or y contain interval data. :param list x: array-like input :param list y: array-like input :param list num_vars: list of variables which are numeric and need to be binned, either ['x'],['y'],or['x','y'] :param bins: number of bins, or a list of bin edges (same for all columns), or a dictionary where per column the bins are specified. (default=10)\ E.g.: bins = {'mileage':5, 'driver_age':[18,25,35,45,55,65,125]} :param bool quantile: when the number of bins is specified, use uniform binning (False) or quantile binning (True) :param ndecimals: number of decimals to use in labels of binned interval variables to specify bin edges (default=1) :param string CI_method: method to be used for uncertainty calculation. poisson: normal poisson error. \ exact_poisson: error calculated from the asymmetric exact poisson interval :param bool dropna: remove NaN values with True :param bool drop_underflow: do not take into account records in underflow bin when True (relevant when binning a \ numeric variable) :param bool drop_overflow: do not take into account records in overflow bin when True \ (relevant when binning a numeric variable) :param bool verbose: if False, do not print all interval columns that are guessed :return: outlier significance matrix (pd.DataFrame) """ df = array_like_to_dataframe(x, y) if num_vars is None: num_vars = guess_interval_cols(df, verbose) return outlier_significance_matrix( df, interval_cols=num_vars, bins=bins, quantile=quantile, ndecimals=ndecimals, CI_method=CI_method, dropna=dropna, drop_underflow=drop_underflow, drop_overflow=drop_overflow, verbose=verbose, ) def outlier_significance_from_binned_array( x: Union[np.ndarray, list, pd.Series], y: Union[np.ndarray, list, pd.Series], CI_method: str = "poisson", dropna: bool = True, drop_underflow: bool = True, drop_overflow: bool = True, ) -> pd.DataFrame: """ Calculate the significance matrix of excesses or deficits of input x and input y. x and y can contain binned interval, ordinal or categorical data. :param list x: array-like input :param list y: array-like input :param string CI_method: method to be used for uncertainty calculation. poisson: normal poisson error. \ exact_poisson: error calculated from the asymmetric exact poisson interval :param bool dropna: remove NaN values with True :param bool drop_underflow: do not take into account records in underflow bin when True (relevant when binning \ a numeric variable) :param bool drop_overflow: do not take into account records in overflow bin when True (relevant when binning \ a numeric variable) :return: outlier significance matrix (pd.DataFrame) """ df = array_like_to_dataframe(x, y) return outlier_significance_matrix( df, CI_method=CI_method, dropna=dropna, drop_underflow=drop_underflow, drop_overflow=drop_overflow, ) ================================================ FILE: phik/phik.py ================================================ """Project: PhiK - correlation analyzer library Created: 2018/09/05 Description: Functions for the Phik correlation calculation Authors: KPMG Advanced Analytics & Big Data team, Amstelveen, The Netherlands Redistribution and use in source and binary forms, with or without modification, are permitted according to the terms listed in the file LICENSE. """ from typing import Tuple, Union, Optional import numpy as np import itertools import pandas as pd from joblib import Parallel, delayed from scipy.linalg import inv, pinv from phik import definitions as defs from .bivariate import phik_from_chi2 from .statistics import ( get_chi2_using_dependent_frequency_estimates, estimate_simple_ndof, get_pearson_chi_square, ) from .binning import create_correlation_overview_table, bin_data, auto_bin_data from .data_quality import dq_check_hist2d from .utils import array_like_to_dataframe, make_shapes_equal def spark_phik_matrix_from_hist2d_dict(spark_context, hist_dict: dict): """Correlation matrix of bivariate gaussian using spark parallelization over variable-pair 2d histograms See spark notebook phik_tutorial_spark.ipynb as example. Each input histogram gets converted into correlation coefficient of bivariate gauss with correlation value rho, assuming giving binning and number of records. Correlation coefficient value is between 0 and 1. :param spark_context: spark context :param hist_dict: dict of 2d numpy grids with value-counts. keys are histogram names. :return: phik correlation matrix """ for k, v in hist_dict.items(): if not isinstance(v, np.ndarray) and v.shape[1] == 2: raise TypeError("hist_dict should be a dictionary of 2d numpy arrays.") hist_list = list(hist_dict.items()) hist_rdd = spark_context.parallelize(hist_list) phik_rdd = hist_rdd.map(_phik_from_row) phik_list = phik_rdd.collect() phik_overview = create_correlation_overview_table(phik_list) return phik_overview def _phik_from_row(row: Tuple[str, np.ndarray]) -> Tuple[str, str, float]: """Helper function for spark parallel processing :param row: rdd row, where row[0] is key and rdd[1] :return: union of key, phik-value """ key, grid = row c = key.split(":") if len(c) == 2 and c[0] == c[1]: return c[0], c[1], 1.0 try: phik_value = phik_from_hist2d(grid) except TypeError: phik_value = np.nan return c[0], c[1], phik_value def phik_from_hist2d( observed: np.ndarray, noise_correction: bool = True, expected: np.ndarray = None ) -> float: """ correlation coefficient of bivariate gaussian derived from chi2-value Chi2-value gets converted into correlation coefficient of bivariate gauss with correlation value rho, assuming giving binning and number of records. Correlation coefficient value is between 0 and 1. Bivariate gaussian's range is set to [-5,5] by construction. :param observed: 2d-array observed values :param bool noise_correction: apply noise correction in phik calculation :param expected: 2d-array expected values. Optional, default is None, otherwise evaluated automatically. :returns float: correlation coefficient phik """ if isinstance(observed, pd.DataFrame): observed = observed.values if isinstance(expected, pd.DataFrame): expected = expected.values # chi2 contingency test chi2 = ( get_chi2_using_dependent_frequency_estimates(observed, lambda_="pearson") if expected is None else get_pearson_chi_square(observed, expected) ) # noise pedestal pedestal = estimate_simple_ndof(observed) if noise_correction else 0 if pedestal < 0: pedestal = 0 # phik calculation adds noise pedestal to theoretical chi2 return phik_from_chi2(chi2, observed.sum(), *observed.shape, pedestal=pedestal) def phik_from_rebinned_df( data_binned: pd.DataFrame, noise_correction: bool = True, dropna: bool = True, drop_underflow: bool = True, drop_overflow: bool = True, njobs: int = -1, ) -> pd.DataFrame: """ Correlation matrix of bivariate gaussian derived from chi2-value Chi2-value gets converted into correlation coefficient of bivariate gauss with correlation value rho, assuming giving binning and number of records. Correlation coefficient value is between 0 and 1. Bivariate gaussian's range is set to [-5,5] by construction. :param pd.DataFrame data_binned: input data where interval variables have been binned :param bool noise_correction: apply noise correction in phik calculation :param bool dropna: remove NaN values with True :param bool drop_underflow: do not take into account records in underflow bin when True (relevant when binning\ a numeric variable) :param bool drop_overflow: do not take into account records in overflow bin when True (relevant when binning\ a numeric variable) :param int njobs: number of parallel jobs used for calculation of phik. default is -1. 1 uses no parallel jobs. :return: phik correlation matrix """ if not dropna: # if not dropna replace the NaN values with the string NaN. Otherwise the rows with NaN are dropped # by the groupby. data_binned.replace(np.nan, defs.NaN, inplace=True) if drop_underflow: data_binned.replace(defs.UF, np.nan, inplace=True) if drop_overflow: data_binned.replace(defs.OF, np.nan, inplace=True) # cache column order (https://github.com/KaveIO/PhiK/issues/1) column_order = data_binned.columns if njobs == 1: # Useful when for instance using cProfiler: https://docs.python.org/3/library/profile.html phik_list = [ _calc_phik(co, data_binned[list(co)], noise_correction) for co in itertools.combinations_with_replacement( data_binned.columns.values, 2 ) ] else: phik_list = Parallel(n_jobs=njobs)( delayed(_calc_phik)(co, data_binned[list(co)], noise_correction) for co in itertools.combinations_with_replacement( data_binned.columns.values, 2 ) ) if len(phik_list) == 0: return pd.DataFrame(np.nan, index=column_order, columns=column_order) phik_overview = create_correlation_overview_table(phik_list) # restore column order phik_overview = phik_overview.reindex(columns=column_order) phik_overview = phik_overview.reindex(index=column_order) return phik_overview def _calc_phik( comb: tuple, data_binned: pd.DataFrame, noise_correction: bool ) -> Tuple[str, str, float]: """Split off calculation of phik for parallel processing :param tuple comb: union of two string columns :param pd.DataFrame data_binned: input data where interval variables have been binned :param bool noise_correction: apply noise correction in phik calculation :return: tuple of variable-x, variable-y, phik-value """ c0, c1 = comb if c0 == c1: return c0, c1, 1.0 datahist = data_binned.groupby([c0, c1], observed=False)[c0].count().to_frame().unstack().fillna(0) # If 0 or only 1 values for one of the two variables, it is not possible to calculate phik. # This check needs to be done after creation of OF, UF and NaN bins. if any([v in datahist.shape for v in [0, 1]]): return c0, c1, np.nan datahist.columns = datahist.columns.droplevel() phikvalue = phik_from_hist2d(datahist.values, noise_correction=noise_correction) return c0, c1, phikvalue def phik_matrix( df: pd.DataFrame, interval_cols: Optional[list] = None, bins: Union[int, list, np.ndarray, dict] = 10, quantile: bool = False, noise_correction: bool = True, dropna: bool = True, drop_underflow: bool = True, drop_overflow: bool = True, verbose: bool = True, njobs: int = -1, ) -> pd.DataFrame: """ Correlation matrix of bivariate gaussian derived from chi2-value Chi2-value gets converted into correlation coefficient of bivariate gauss with correlation value rho, assuming giving binning and number of records. Correlation coefficient value is between 0 and 1. Bivariate gaussian's range is set to [-5,5] by construction. :param pd.DataFrame data_binned: input data :param list interval_cols: column names of columns with interval variables. :param bins: number of bins, or a list of bin edges (same for all columns), or a dictionary where per column the\ bins are specified (default=10). E.g.: bins = {'mileage':5, 'driver_age':[18,25,35,45,55,65,125]} :param quantile: when bins is an integer, uniform bins (False) or bins based on quantiles (True) :param bool noise_correction: apply noise correction in phik calculation :param bool dropna: remove NaN values with True :param bool drop_underflow: do not take into account records in underflow bin when True (relevant when binning\ a numeric variable) :param bool drop_overflow: do not take into account records in overflow bin when True (relevant when binning\ a numeric variable) :param bool verbose: if False, do not print all interval columns that are guessed :param int njobs: number of parallel jobs used for calculation of phik. default is -1. 1 uses no parallel jobs. :return: phik correlation matrix """ data_binned, binning_dict = auto_bin_data( df=df, interval_cols=interval_cols, bins=bins, quantile=quantile, dropna=dropna, verbose=verbose, ) return phik_from_rebinned_df( data_binned, noise_correction, dropna=dropna, drop_underflow=drop_underflow, drop_overflow=drop_overflow, njobs=njobs, ) def global_phik_from_rebinned_df( data_binned: pd.DataFrame, noise_correction: bool = True, dropna: bool = True, drop_underflow: bool = True, drop_overflow: bool = True, njobs: int = -1, ) -> Tuple[np.ndarray, np.ndarray]: """ Global correlation values of variables, obtained from the PhiK correlation matrix. A global correlation value is a simple approximation of how well one feature can be modeled in terms of all others. The global correlation coefficient is a number between zero and one, obtained from the PhiK correlation matrix, that gives the highest possible correlation between a variable and the linear combination of all other variables. See PhiK paper or for original definition: https://inspirehep.net/literature/101965 Global PhiK uses two important simplifications / approximations: - The variables are assumed to belong to a multinormal distribution, which is typically not the case. - The correlation should be a Pearson correlation matrix, allowing for negative values, which is not the case with PhiK correlations (which are positive by construction). To correct for these, the Global PhiK values are artificially capped between 0 and 1. Still, the Global PhiK values are useful, quick, simple estimates that are interesting in an exploratory study. For a solid, trustworthy estimate be sure to use a classifier or regression model instead. :param pd.DataFrame data_binned: rebinned input data :param bool noise_correction: apply noise correction in phik calculation :param bool dropna: remove NaN values with True :param bool drop_underflow: do not take into account records in underflow bin when True (relevant when binning\ a numeric variable) :param bool drop_overflow: do not take into account records in overflow bin when True (relevant when binning\ a numeric variable) :param int njobs: number of parallel jobs used for calculation of phik. default is -1. 1 uses no parallel jobs. :return: global correlations array """ phik_overview = phik_from_rebinned_df( data_binned, noise_correction, dropna=dropna, drop_underflow=drop_underflow, drop_overflow=drop_overflow, njobs=njobs, ) V = phik_overview.values # check if V is ill-conditioned if np.linalg.cond(V) > np.finfo(V.dtype).eps: Vinv = inv(V) else: # use pseudo inverse to try handle finite but ill-conditioned arrays; # non-finite values will still trigger an exception Vinv = pinv(V) global_correlations = np.sqrt( 1 - (1 / (np.diagonal(V) * np.diagonal(Vinv))) )[:, None] # Cap values to [0.0, 1.0] domain. See issue: # https://github.com/KaveIO/PhiK/issues/37 global_correlations[global_correlations > 1.0] = 1.0 global_correlations[global_correlations < 0.0] = 0.0 return global_correlations, phik_overview.index.values def global_phik_array( df: pd.DataFrame, interval_cols: list = None, bins: Union[int, list, np.ndarray, dict] = 10, quantile: bool = False, noise_correction: bool = True, dropna: bool = True, drop_underflow: bool = True, drop_overflow: bool = True, verbose: bool = True, njobs: int = -1, ) -> Tuple[np.ndarray, np.ndarray]: """ Global correlation values of variables, obtained from the PhiK correlation matrix. A global correlation value is a simple approximation of how well one feature can be modeled in terms of all others. The global correlation coefficient is a number between zero and one, obtained from the PhiK correlation matrix, that gives the highest possible correlation between a variable and the linear combination of all other variables. See PhiK paper or for original definition: https://inspirehep.net/literature/101965 Global PhiK uses two important simplifications / approximations: - The variables are assumed to belong to a multinormal distribution, which is typically not the case. - The correlation should be a Pearson correlation matrix, allowing for negative values, which is not the case with PhiK correlations (which are positive by construction). To correct for these, the Global PhiK values are artificially capped between 0 and 1. Still, the Global PhiK values are useful, quick, simple estimates that are interesting in an exploratory study. For a solid, trustworthy estimate be sure to use a classifier or regression model instead. :param pd.DataFrame data_binned: input data :param list interval_cols: column names of columns with interval variables. :param bins: number of bins, or a list of bin edges (same for all columns), or a dictionary where per column the\ bins are specified (default=10). E.g.: bins = {'mileage':5, 'driver_age':[18,25,35,45,55,65,125]} :param quantile: when bins is an integer, uniform bins (False) or bins based on quantiles (True) :param bool noise_correction: apply noise correction in phik calculation :param bool dropna: remove NaN values with True :param bool drop_underflow: do not take into account records in underflow bin when True (relevant when binning\ a numeric variable) :param bool drop_overflow: do not take into account records in overflow bin when True (relevant when binning\ a numeric variable) :param bool verbose: if False, do not print all interval columns that are guessed :param int njobs: number of parallel jobs used for calc of global phik. default is -1. 1 uses no parallel jobs. :return: global correlations array """ data_binned, binning_dict = auto_bin_data( df=df, interval_cols=interval_cols, bins=bins, quantile=quantile, dropna=dropna, verbose=verbose, ) return global_phik_from_rebinned_df( data_binned, noise_correction=noise_correction, dropna=dropna, drop_underflow=drop_underflow, drop_overflow=drop_overflow, njobs=njobs, ) def phik_from_array( x: Union[np.ndarray, pd.Series], y: Union[np.ndarray, pd.Series], num_vars: Union[str, list] = None, bins: Union[int, dict, list, np.ndarray] = 10, quantile: bool = False, noise_correction: bool = True, dropna: bool = True, drop_underflow: bool = True, drop_overflow: bool = True, ) -> float: """ Correlation matrix of bivariate gaussian derived from chi2-value Chi2-value gets converted into correlation coefficient of bivariate gauss with correlation value rho, assuming giving binning and number of records. Correlation coefficient value is between 0 and 1. Bivariate gaussian's range is set to [-5,5] by construction. :param x: array-like input :param y: array-like input :param num_vars: list of numeric variables which need to be binned, e.g. ['x'] or ['x','y'] :param bins: number of bins, or a list of bin edges (same for all columns), or a dictionary where per column the\ bins are specified (default=10). E.g.: bins = {'mileage':5, 'driver_age':[18,25,35,45,55,65,125]} :param quantile: when bins is an integer, uniform bins (False) or bins based on quantiles (True) :param bool noise_correction: apply noise correction in phik calculation :param bool dropna: remove NaN values with True :param bool drop_underflow: do not take into account records in underflow bin when True (relevant when binning\ a numeric variable) :param bool drop_overflow: do not take into account records in overflow bin when True (relevant when binning\ a numeric variable) :return: phik correlation coefficient """ if num_vars is None: num_vars = [] elif isinstance(num_vars, str): num_vars = [num_vars] if len(num_vars) > 0: df = array_like_to_dataframe(x, y) x, y = bin_data(df, num_vars, bins=bins, quantile=quantile).T.values return phik_from_binned_array( x, y, noise_correction=noise_correction, dropna=dropna, drop_underflow=drop_underflow, drop_overflow=drop_overflow, ) def phik_from_binned_array( x: Union[np.ndarray, pd.Series], y: Union[np.ndarray, pd.Series], noise_correction: bool = True, dropna: bool = True, drop_underflow: bool = True, drop_overflow: bool = True, ) -> float: """ Correlation matrix of bivariate gaussian derived from chi2-value Chi2-value gets converted into correlation coefficient of bivariate gauss with correlation value rho, assuming giving binning and number of records. Correlation coefficient value is between 0 and 1. Bivariate gaussian's range is set to [-5,5] by construction. :param x: array-like input. Interval variables need to be binned beforehand. :param y: array-like input. Interval variables need to be binned beforehand. :param bool noise_correction: apply noise correction in phik calculation :param bool dropna: remove NaN values with True :param bool drop_underflow: do not take into account records in underflow bin when True (relevant when binning\ a numeric variable) :param bool drop_overflow: do not take into account records in overflow bin when True (relevant when binning\ a numeric variable) :return: phik correlation coefficient """ if not dropna: x = pd.Series(x).fillna(defs.NaN).astype(str).values y = pd.Series(y).fillna(defs.NaN).astype(str).values if drop_underflow or drop_overflow: x = pd.Series(x).astype(str).values y = pd.Series(y).astype(str).values if drop_underflow: x[np.where(x == defs.UF)] = np.nan y[np.where(y == defs.UF)] = np.nan if drop_overflow: y[np.where(y == defs.OF)] = np.nan x[np.where(x == defs.OF)] = np.nan hist2d = pd.crosstab(x, y).values dq_okay = dq_check_hist2d(hist2d) if not dq_okay: return np.nan return phik_from_hist2d(hist2d, noise_correction=noise_correction) def phik_observed_vs_expected_from_rebinned_df( obs_binned: pd.DataFrame, exp_binned: pd.DataFrame, noise_correction: bool = True, dropna: bool = True, drop_underflow: bool = True, drop_overflow: bool = True, njobs: int = -1, ) -> pd.DataFrame: """ PhiK correlation matrix of comparing observed with expected dataset Chi2-value gets converted into correlation coefficient of bivariate gauss with correlation value rho, assuming giving binning and number of records. Correlation coefficient value is between 0 and 1. :param pd.DataFrame obs_binned: observed input data where interval variables have been binned :param pd.DataFrame exp_binned: expected input data where interval variables have been binned :param bool noise_correction: apply noise correction in phik calculation :param bool dropna: remove NaN values with True :param bool drop_underflow: do not take into account records in underflow bin when True (relevant when binning\ a numeric variable) :param bool drop_overflow: do not take into account records in overflow bin when True (relevant when binning\ a numeric variable) :param int njobs: number of parallel jobs used for calculation of phik. default is -1. 1 uses no parallel jobs. :return: phik correlation matrix """ # basic checks if isinstance(obs_binned, np.ndarray): obs_binned = pd.DataFrame(obs_binned) if isinstance(exp_binned, np.ndarray): exp_binned = pd.DataFrame(exp_binned) assert set(obs_binned.columns) == set(exp_binned.columns) if not dropna: # if not dropna replace the NaN values with the string NaN. Otherwise the rows with NaN are dropped # by the groupby. obs_binned.replace(np.nan, defs.NaN, inplace=True) exp_binned.replace(np.nan, defs.NaN, inplace=True) if drop_underflow: obs_binned.replace(defs.UF, np.nan, inplace=True) exp_binned.replace(defs.UF, np.nan, inplace=True) if drop_overflow: obs_binned.replace(defs.OF, np.nan, inplace=True) exp_binned.replace(defs.OF, np.nan, inplace=True) # cache column order (https://github.com/KaveIO/PhiK/issues/1) column_order = obs_binned.columns if njobs == 1: # Useful when for instance using cProfiler: https://docs.python.org/3/library/profile.html phik_list = [ _calc_phik_obs_vs_exp( co, obs_binned[list(co)], exp_binned[list(co)], noise_correction ) for co in itertools.combinations_with_replacement( obs_binned.columns.values, 2 ) ] else: phik_list = Parallel(n_jobs=njobs)( delayed(_calc_phik_obs_vs_exp)( co, obs_binned[list(co)], exp_binned[list(co)], noise_correction ) for co in itertools.combinations_with_replacement( obs_binned.columns.values, 2 ) ) if len(phik_list) == 0: return pd.DataFrame(np.nan, index=column_order, columns=column_order) phik_overview = create_correlation_overview_table(phik_list) # restore column order phik_overview = phik_overview.reindex(columns=column_order) phik_overview = phik_overview.reindex(index=column_order) return phik_overview def _calc_phik_obs_vs_exp( comb: tuple, obs_binned: pd.DataFrame, exp_binned: pd.DataFrame, noise_correction: bool, ) -> Tuple[str, str, float]: """Split off calculation of phik for parallel processing :param tuple comb: union of two string columns :param pd.DataFrame obs_binned: observed data where interval variables have been binned :param pd.DataFrame exp_binned: expected data where interval variables have been binned :param bool noise_correction: apply noise correction in phik calculation :return: """ c0, c1 = comb # identity check if c0 == c1: return c0, c1, 1.0 observed = obs_binned.groupby([c0, c1])[c0].count().to_frame().unstack().fillna(0) # If 0 or only 1 values for one of the two shape variables, it is not possible to calculate phik. # This check needs to be done after creation of OF, UF and NaN bins. if any([v in observed.shape for v in [0, 1]]): return c0, c1, np.nan expected = exp_binned.groupby([c0, c1])[c0].count().to_frame().unstack().fillna(0) # If 0 or only 1 values for one of the two shape variables, it is not possible to calculate phik. # This check needs to be done after creation of OF, UF and NaN bins. if any([v in expected.shape for v in [0, 1]]): return c0, c1, np.nan # ensure that both observed and expected have the same number of columns and rows # if not, add these and and fill with zeros. expected = make_shapes_equal(observed, expected) phik_value = phik_from_hist2d( observed=observed, noise_correction=noise_correction, expected=expected ) return c0, c1, phik_value ================================================ FILE: phik/report.py ================================================ """Project: PhiK - correlation analyzer library Created: 2018/09/06 Description: Functions to create nice correlation overview and matrix plots Authors: KPMG Advanced Analytics & Big Data team, Amstelveen, The Netherlands Redistribution and use in source and binary forms, with or without modification, are permitted according to the terms listed in the file LICENSE. """ import itertools import os from typing import Callable, Dict, Tuple, Union import matplotlib.pyplot as plt import numpy as np import pandas as pd from matplotlib import colors from matplotlib.backends.backend_pdf import PdfPages from .binning import bin_data from .data_quality import dq_check_nunique_values from .outliers import outlier_significance_matrix_from_rebinned_df from .phik import global_phik_from_rebinned_df, phik_from_rebinned_df from .significance import significance_from_rebinned_df from .utils import guess_interval_cols def plot_hist_and_func( data: Union[list, np.ndarray, pd.Series], func: Callable, funcparams, xbins=False, labels=None, xlabel="", ylabel="", title="", xlimit=None, alpha=1, ): """ Create a histogram of the provided data and overlay with a function. :param list data: data :param function func: function of the type f(x, a, b, c) where parameters a, b, c are optional :param list funcparams: parameter values to be given to the function, to be specified as [a, b, c] :param xbins: specify binning of histogram, either by giving the number of bins or a list of bin edges :param labels: labels of histogram and function to be used in the legend :param xlabel: figure xlabel :param ylabel: figure ylabel :param title: figure title :param xlimit: x limits figure :param alpha: alpha histogram :return: """ if labels is None: labels = ["", ""] # If binning is not specified, create binning here if not np.any(xbins) and not xlimit: xmin = np.min(data) xmax = np.max(data) xnbins = int(len(data) / 50 + 1) xbins = np.linspace(xmin, xmax, xnbins) elif type(xbins) == int or type(xbins) == float: xmin = np.min(data) if xlimit: xmin = xlimit[0] xmax = np.max(data) if xmax: xmax = xlimit[1] xnbins = int(xbins + 1) xbins = np.linspace(xmin, xmax, xnbins) # Plot a histogram of the data plt.hist(data, bins=xbins, label=labels[0], alpha=alpha) # Find bin centers for plotting the function xvals = xbins[:-1] + np.diff(xbins)[0] / 2 bw = xbins[1] - xbins[0] # Plot the fit plt.plot( xvals, len(data) * bw * func(xvals, *funcparams), linewidth=2, label=labels[1] ) if xlabel: plt.xlabel(xlabel) if ylabel: plt.ylabel(ylabel) if title: plt.title(title) if len(labels[0]) > 0: plt.legend() def plot_correlation_matrix( matrix_colors: np.ndarray, x_labels: list, y_labels: list, pdf_file_name: str = "", title: str = "correlation", vmin: float = -1, vmax: float = 1, color_map: str = "RdYlGn", x_label: str = "", y_label: str = "", top: int = 20, matrix_numbers: np.ndarray = None, print_both_numbers: bool = True, figsize: tuple = (7, 5), usetex: bool = False, identity_layout: bool = True, fontsize_factor: float = 1, ) -> None: """Create and plot correlation matrix. Copied with permission from the eskapade package (pip install eskapade) :param matrix_colors: input correlation matrix :param list x_labels: Labels for histogram x-axis bins :param list y_labels: Labels for histogram y-axis bins :param str pdf_file_name: if set, will store the plot in a pdf file :param str title: if set, title of the plot :param float vmin: minimum value of color legend (default is -1) :param float vmax: maximum value of color legend (default is +1) :param str x_label: Label for histogram x-axis :param str y_label: Label for histogram y-axis :param str color_map: color map passed to matplotlib pcolormesh. (default is 'RdYlGn') :param int top: only print the top 20 characters of x-labels and y-labels. (default is 20) :param matrix_numbers: input matrix used for plotting numbers. (default it matrix_colors) :param identity_layout: Plot diagonal from right top to bottom left (True) or bottom left to top right (False) """ if not isinstance(matrix_colors, np.ndarray): raise TypeError("matrix_colors is not a numpy array.") # basic matrix checks assert (matrix_colors.shape[0] == len(y_labels)) or ( matrix_colors.shape[0] + 1 == len(y_labels) ), "matrix_colors shape inconsistent with number of y-labels" assert (matrix_colors.shape[1] == len(x_labels)) or ( matrix_colors.shape[1] + 1 == len(x_labels) ), "matrix_colors shape inconsistent with number of x-labels" if matrix_numbers is None: matrix_numbers = matrix_colors print_both_numbers = False # only one set of numbers possible else: assert matrix_numbers.shape[0] == len( y_labels ), "matrix_numbers shape inconsistent with number of y-labels" assert matrix_numbers.shape[1] == len( x_labels ), "matrix_numbers shape inconsistent with number of x-labels" if identity_layout: matrix_colors = np.array([a[::-1] for a in matrix_colors]) x_labels = x_labels[::-1] if matrix_numbers is not None: matrix_numbers = np.array([a[::-1] for a in matrix_numbers]) plt.rc("text", usetex=usetex) fig, ax = plt.subplots(figsize=figsize) # cmap = 'RdYlGn' #'YlGn' norm = colors.Normalize(vmin=vmin, vmax=vmax) img = ax.pcolormesh( matrix_colors, cmap=color_map, edgecolor="w", linewidth=1, norm=norm ) # set x-axis properties def tick(lab): """Get tick.""" if isinstance(lab, (float, int)): lab = "NaN" if np.isnan(lab) else "{0:.0f}".format(lab) lab = str(lab) if len(lab) > top: lab = lab[:17] + "..." return lab # reduce default fontsizes in case too many labels? # nlabs = max(len(y_labels), len(x_labels)) # axis ticks and tick labels if len(x_labels) == matrix_colors.shape[1] + 1: ax.set_xticks(np.arange(len(x_labels))) else: ax.set_xticks(np.arange(len(x_labels)) + 0.5) ax.set_xticklabels( [tick(lab) for lab in x_labels], rotation="vertical", fontsize=10 * fontsize_factor, ) if len(y_labels) == matrix_colors.shape[0] + 1: ax.set_yticks(np.arange(len(y_labels))) else: ax.set_yticks(np.arange(len(y_labels)) + 0.5) ax.set_yticklabels( [tick(lab) for lab in y_labels], rotation="horizontal", fontsize=10 * fontsize_factor, ) # Turn ticks off in case no labels are provided if len(x_labels) == 1 and len(x_labels[0]) == 0: plt.tick_params( axis="x", # changes apply to the x-axis which="both", # both major and minor ticks are affected bottom=False, # ticks along the bottom edge are off top=False, # ticks along the top edge are off labelbottom=False, ) if len(y_labels) == 1 and len(y_labels[0]) == 0: plt.tick_params( axis="y", # changes apply to the x-axis which="both", # both major and minor ticks are affected left=False, # ticks along the bottom edge are off right=False, # ticks along the top edge are off labelbottom=False, ) # make plot look pretty ax.set_title(title, fontsize=14 * fontsize_factor) if x_label: ax.set_xlabel(x_label, fontsize=12 * fontsize_factor) if y_label: ax.set_ylabel(y_label, fontsize=12 * fontsize_factor) fig.colorbar(img) # annotate with correlation values numbers_set = ( [matrix_numbers] if not print_both_numbers else [matrix_numbers, matrix_colors] ) for i in range(matrix_numbers.shape[1]): for j in range(matrix_numbers.shape[0]): point_color = float(matrix_colors[j][i]) white_cond = ( (point_color < 0.7 * vmin) or (point_color >= 0.7 * vmax) or np.isnan(point_color) ) y_offset = 0.5 for m, matrix in enumerate(numbers_set): if print_both_numbers: if m == 0: y_offset = 0.7 elif m == 1: y_offset = 0.25 point = float(matrix[j][i]) label = "NaN" if np.isnan(point) else "{0:.2f}".format(point) color = "w" if white_cond else "k" ax.annotate( label, xy=(i + 0.5, j + y_offset), color=color, horizontalalignment="center", verticalalignment="center", fontsize=10 * fontsize_factor, ) plt.tight_layout() # save plot in file if pdf_file_name: pdf_file = PdfPages(pdf_file_name) plt.savefig(pdf_file, format="pdf", bbox_inches="tight", pad_inches=0) plt.close() pdf_file.close() def correlation_report( data: pd.DataFrame, interval_cols: list = None, bins=10, quantile: bool = False, do_outliers: bool = True, pdf_file_name: str = "", significance_threshold: float = 3, correlation_threshold: float = 0.5, noise_correction: bool = True, store_each_plot: bool = False, lambda_significance: str = "log-likelihood", simulation_method: str = "multinominal", nsim_chi2: int = 1000, significance_method: str = "asymptotic", CI_method: str = "poisson", verbose: bool = True, plot_phik_matrix_kws: dict = {}, plot_global_phik_kws: dict = {}, plot_significance_matrix_kws: dict = {}, plot_outlier_significance_kws: dict = {}, ) -> Tuple[pd.DataFrame, pd.DataFrame, Dict[str, pd.DataFrame], Dict[str, str]]: """ Create a correlation report for the given dataset. The following quantities are calculated: * The phik correlation matrix * The significance matrix * The outlier significances measured in pairs of variables. (optional) :param data: input dataframe :param interval_cols: list of columns names of columns containing interval data :param bins: number of bins, or a list of bin edges (same for all columns), or a dictionary where per column the bins are specified. (default=10)\ E.g.: bins = {'mileage':5, 'driver_age':[18,25,35,45,55,65,125]} :param quantile: when bins is an integer, uniform bins (False) or bins based on quantiles (True) :param do_outliers: Evaluate outlier significances of variable pairs (when True) :param pdf_file_name: file name of the pdf where the results are stored :param store_each_plot: store each plot in folder derived from pdf_file_name. If true, single pdf is no longer stored. Default is false. :param significance_threshold: evaluate outlier significance for all variable pairs with a significance of \ uncorrelation higher than this threshold :param correlation_threshold: evaluate outlier significance for all variable pairs with a phik correlation \ higher than this threshold :param noise_correction: Apply noise correction in phik calculation :param lambda_significance: test statistic used in significance calculation. Options: [pearson, log-likelihood] :param simulation_method: sampling method using in significance calculation. Options: [mutlinominal, \ row_product_multinominal, col_product_multinominal, hypergeometric] :param nsim_chi2: number of simulated datasets in significance calculation. :param significance_method: method for significance calculation. Options: [asymptotic, MC, hybrid] :param CI_method: method for uncertainty calculation for outlier significance calculation. Options: [poisson, \ exact_poisson] :param bool verbose: if False, do not print all interval columns that are guessed :param dict plot_phik_matrix_kws: kwargs passed to plot_correlation_matrix() to plot the phik matrix. \ updates the default plotting values. :param dict plot_global_phik_kws: kwargs passed to plot_correlation_matrix() to plot the global-phik vector. \ updates the default plotting values. :param dict plot_significance_matrix_kws: kwargs passed to plot_correlation_matrix() to plot significance matrix. \ updates the default plotting values. :param dict plot_outlier_significance_kws: kwargs passed to plot_correlation_matrix() to plot the outlier \ significances. updates the default plotting values. :returns: phik_matrix (pd.DataFrame), global_phik (np.array), significance_matrix (pd.DataFrame), \ outliers_overview (dictionary), output_files (dictionary) """ if interval_cols is None: interval_cols = guess_interval_cols(data, verbose) data_clean, interval_cols_clean = dq_check_nunique_values(data, interval_cols) # create pdf(s) to save plots output_files = dict() plot_file_name = "" if store_each_plot: folder = os.path.dirname(pdf_file_name) folder += "/" if folder else "./" # if each plot is stored, single overview file is no longer stored. # (b/c of problem with multiple PdfPages) pdf_file_name = "" if pdf_file_name: pdf_file = PdfPages(pdf_file_name) data_binned, binning_dict = bin_data( data_clean, interval_cols_clean, bins=bins, quantile=quantile, retbins=True ) ### 1. Phik if store_each_plot: plot_file_name = folder + "phik_matrix.pdf" output_files["phik_matrix"] = plot_file_name phik_matrix = phik_from_rebinned_df(data_binned, noise_correction) default_plot_phik_matrix = dict( x_labels=phik_matrix.columns, y_labels=phik_matrix.index, vmin=0, vmax=1, color_map="Blues", title=r"correlation $\phi_K$", fontsize_factor=1.5, figsize=(7, 5.5), pdf_file_name=plot_file_name, ) default_plot_phik_matrix.update(plot_phik_matrix_kws) plot_correlation_matrix(phik_matrix.values, **default_plot_phik_matrix) if pdf_file_name: plt.savefig(pdf_file, format="pdf", bbox_inches="tight", pad_inches=0) plt.show() ### 1b. global correlations if store_each_plot: plot_file_name = folder + "global_phik.pdf" output_files["global_phik"] = plot_file_name global_phik, global_labels = global_phik_from_rebinned_df( data_binned, noise_correction ) default_plot_global_phik = dict( x_labels=[""], y_labels=global_labels, vmin=0, vmax=1, figsize=(3.5, 4), color_map="Blues", title=r"$g_k$", fontsize_factor=1.5, pdf_file_name=plot_file_name, ) default_plot_global_phik.update(plot_global_phik_kws) plot_correlation_matrix(global_phik, **default_plot_global_phik) # plt.tight_layout() if pdf_file_name: plt.savefig(pdf_file, format="pdf", bbox_inches="tight", pad_inches=0) plt.show() ### 2. Significance if store_each_plot: plot_file_name = folder + "significance_matrix.pdf" output_files["significance_matrix"] = plot_file_name significance_matrix = significance_from_rebinned_df( data_binned, lambda_significance, simulation_method, nsim_chi2, significance_method, ) default_plot_significance_matrix = dict( x_labels=significance_matrix.columns, y_labels=significance_matrix.index, vmin=-5, vmax=5, title="significance", usetex=False, fontsize_factor=1.5, figsize=(7, 5.5), pdf_file_name=plot_file_name, ) default_plot_significance_matrix.update(plot_significance_matrix_kws) plot_correlation_matrix( significance_matrix.fillna(0).values, **default_plot_significance_matrix ) if pdf_file_name: plt.savefig(pdf_file, format="pdf", bbox_inches="tight", pad_inches=0) plt.show() ### 3. Outlier significance outliers_overview = {} if do_outliers: for i, comb in enumerate(itertools.combinations(data_binned.columns, 2)): c0, c1 = comb if ( abs(significance_matrix.loc[c0, c1]) < significance_threshold or phik_matrix.loc[c0, c1] < correlation_threshold ): continue zvalues_df = outlier_significance_matrix_from_rebinned_df( data_binned[[c0, c1]].copy(), binning_dict, CI_method=CI_method ) combi = ":".join(comb).replace(" ", "_") xlabels = zvalues_df.columns ylabels = zvalues_df.index xlabel = zvalues_df.columns.name ylabel = zvalues_df.index.name if store_each_plot: plot_file_name = folder + "pulls_{0:s}.pdf".format(combi) output_files[combi] = plot_file_name default_plot_outlier_significance = dict( x_labels=xlabels, y_labels=ylabels, x_label=xlabel, y_label=ylabel, vmin=-5, vmax=5, title="outlier significance", identity_layout=False, fontsize_factor=1.2, pdf_file_name=plot_file_name, ) default_plot_outlier_significance.update(plot_outlier_significance_kws) plot_correlation_matrix( zvalues_df.values, **default_plot_outlier_significance ) outliers_overview[combi] = zvalues_df if pdf_file_name: plt.savefig(pdf_file, format="pdf", bbox_inches="tight", pad_inches=0) plt.show() # save plots if pdf_file_name: output_files["all"] = pdf_file_name plt.close() pdf_file.close() return ( phik_matrix, global_phik, significance_matrix, outliers_overview, output_files, ) ================================================ FILE: phik/resources.py ================================================ """Project: PhiK - correlation analyzer library Created: 2018/11/13 Description: Collection of helper functions to get fixtures, i.e. for test data and notebooks. These are mostly used by the (integration) tests and example notebooks. Authors: KPMG Advanced Analytics & Big Data team, Amstelveen, The Netherlands Redistribution and use in source and binary forms, with or without modification, are permitted according to the terms listed in the file LICENSE. """ import pathlib from pathlib import Path ROOT_DIRECTORY = Path(__file__).resolve().parent # Fixtures _FIXTURE = {_.name: _ for _ in pathlib.Path(ROOT_DIRECTORY / "data").glob("*")} # Tutorial notebooks _NOTEBOOK = { _.name: _ for _ in pathlib.Path(ROOT_DIRECTORY / "notebooks").glob("*.ipynb") } # Resource types _RESOURCES = {"fixture": _FIXTURE, "notebook": _NOTEBOOK} def _resource(resource_type, name: str) -> str: """Return the full path filename of a resource. :param str resource_type: The type of the resource. :param str name: The name of the resource. :returns: The full path filename of the fixture data set. :rtype: str :raises FileNotFoundError: If the resource cannot be found. """ full_path = _RESOURCES[resource_type].get(name, None) if full_path and full_path.exists(): return str(full_path) raise FileNotFoundError( 'Could not find {resource_type} "{name!s}"! Does it exist?'.format( resource_type=resource_type, name=name ) ) def fixture(name: str) -> str: """Return the full path filename of a fixture data set. :param str name: The name of the fixture. :returns: The full path filename of the fixture data set. :rtype: str :raises FileNotFoundError: If the fixture cannot be found. """ return _resource("fixture", name) def notebook(name: str) -> str: """Return the full path filename of a tutorial notebook. :param str name: The name of the notebook. :returns: The full path filename of the notebook. :rtype: str :raises FileNotFoundError: If the notebook cannot be found. """ return _resource("notebook", name) ================================================ FILE: phik/significance.py ================================================ """Project: PhiK - correlation analyzer library Created: 2018/09/05 Description: Functions for doing the significance evaluation of an hypothesis test of variable independence using a contingency table. Authors: KPMG Advanced Analytics & Big Data team, Amstelveen, The Netherlands Redistribution and use in source and binary forms, with or without modification, are permitted according to the terms listed in the file LICENSE. """ from typing import Tuple, Union import numpy as np import pandas as pd import math import itertools import warnings from scipy import stats from scipy import special, optimize from phik import definitions as defs from .binning import bin_data, create_correlation_overview_table from .statistics import get_chi2_using_dependent_frequency_estimates from .statistics import estimate_ndof, theoretical_ndof from .simulation import sim_chi2_distribution from .data_quality import dq_check_nunique_values, dq_check_hist2d from .utils import array_like_to_dataframe, guess_interval_cols def fit_test_statistic_distribution( chi2s: Union[list, np.ndarray], nbins: int = 50 ) -> Tuple[float, float, float, float]: """ Fit the hybrid chi2-distribution to the data to find f. Perform a binned likelihood fit to the data to find the optimal value for the fraction f in h(x|f) = N * (f * chi2(x, ndof) + (1-f) * gauss(x, ndof, sqrt(ndof)) The parameter ndof is fixed in the fit using ndof = mean(x). The total number of datapoints N is also fixed. :param list chi2s: input data - a list of chi2 values :param int nbins: in order to fit the data a histogram is created with nbins number of bins :returns: f, ndof, sigma (width of gauss), bw (bin width) """ def myfunc(x, N, f, k, sigma): return N * (f * stats.chi2.pdf(x, k) + (1 - f) * stats.norm.pdf(x, k, sigma)) ffunc = lambda x, f: myfunc(x, nsim * bw, f, kmean, lsigma) def gtest(p, x, y): f = ffunc(x, *p) ll = f - special.xlogy(y, f) + special.gammaln(y + 1) return np.sqrt(ll) kmean = np.mean(chi2s) # NOTE: this is used to fix kmean in the fit! lsigma = np.sqrt(kmean) # NOTE: this is used to fix sigma in the fit! nsim = len(chi2s) # NOTE: this is used to fix N in fit (N=nsim*bw) ! yhist, xbounds = np.histogram(chi2s, bins=nbins) bw = xbounds[1] - xbounds[0] # NOTE: this is used to fix N in fit (N=nsim*bw) ! xhist = xbounds[:-1] + np.diff(xbounds) / 2 initGuess = (1.0,) # starting value for parameter f res = optimize.least_squares( gtest, initGuess, bounds=((0.0,), (1,)), args=(xhist, yhist) ) return res.x[0], kmean, lsigma, bw def hfunc(x: float, N: float, f: float, k: float, sigma: float) -> float: """ Definition of the combined probability density function h(x) h(x|f) = N * (f * chi2(x, k) + (1-f) * gauss(x, k, sigma) :param float x: x :param float N: normalisation :param float f: fraction [0,1] :param float k: ndof of chi2 function and mean of gauss :param float sigma: width of gauss :return: h(x|f) """ return N * (f * stats.chi2.pdf(x, k) + (1 - f) * stats.norm.pdf(x, k, sigma)) def significance_from_chi2_ndof(chi2: float, ndof: float) -> Tuple[float, float]: """ Convert a chi2 into significance using knowledge about the number of degrees of freedom Conversion is done using asymptotic approximation. :param float chi2: chi2 value :param float ndof: number of degrees of freedom :returns: p_value, significance """ p_value = stats.chi2.sf(chi2, ndof) z_value = -stats.norm.ppf(p_value) # scenario where p_value is too small to evaluate Z # use Chernoff approximation for p-value upper bound # see: https://en.wikipedia.org/wiki/Chi-squared_distribution if p_value == 0: z = chi2 / ndof u = -math.log(2 * math.pi) - ndof * math.log(z) + ndof * (z - 1) z_value = math.sqrt(u - math.log(u)) return p_value, z_value def significance_from_chi2_asymptotic( values: np.ndarray, chi2: float ) -> Tuple[float, float]: """ Convert a chi2 into significance using knowledge about the number of degrees of freedom Convention is done using asymptotic approximation. :param float chi2: chi2 value :param float ndof: number of degrees of freedom :returns: p_value, significance """ ndof = theoretical_ndof(values) p_value, z_value = significance_from_chi2_ndof(chi2, ndof) return p_value, z_value def significance_from_chi2_MC( chi2: float, values: np.ndarray, nsim: int = 1000, lambda_: str = "log-likelihood", simulation_method: str = "multinominal", chi2s=None, njobs: int = -1, ) -> Tuple[float, float]: """ Convert a chi2 into significance using knowledge about the shape of the chi2 distribution of simulated data Calculate significance based on simulation (MC method), using a simple percentile. :param float chi2: chi2 value :param list chi2s: provide your own chi2s values (optional) :param int njobs: number of parallel jobs used for simulation. default is -1. 1 uses no parallel jobs. :returns: pvalue, significance """ # determine effective number of degrees of freedom using simulation if chi2s is None: chi2s = sim_chi2_distribution( values, nsim=nsim, lambda_=lambda_, simulation_method=simulation_method, njobs=njobs, ) # calculate p_value based on simulation (MC method) empirical_p_value = 1.0 - stats.percentileofscore(chi2s, chi2) / 100.0 empirical_z_value = -stats.norm.ppf(empirical_p_value) return empirical_p_value, empirical_z_value def significance_from_chi2_hybrid( chi2: float, values: np.ndarray, nsim: int = 1000, lambda_: str = "log-likelihood", simulation_method: str = "multinominal", chi2s=None, njobs: int = -1, ) -> Tuple[float, float]: """ Convert a chi2 into significance using a hybrid method This method combines the asymptotic method with the MC method, but applies several corrections: * use effective number of degrees of freedom instead of number of degrees of freedom. The effective number of\ degrees of freedom is measured as mean(chi2s), with chi2s a list of simulated chi2 values. * for low statistics data sets, with on average less than 4 data points per bin, the distribution of chi2-values\ is better described by h(x|f) then by the usual chi2-distribution. Use h(x|f) to convert the chi2 value to \ the pvalue and significance. h(x|f) = N * (f * chi2(x, ndof) + (1-f) * gauss(x, ndof, sqrt(ndof)) :param float chi2: chi2 value :param list chi2s: provide your own chi2s values (optional) :param float avg_per_bin: average number of data points per bin :param int njobs: number of parallel jobs used for simulation. default is -1. 1 uses no parallel jobs. :returns: p_value, significance """ # determine effective number of degrees of freedom using simulation if chi2s is None: chi2s = sim_chi2_distribution( values, nsim=nsim, lambda_=lambda_, simulation_method=simulation_method, njobs=njobs, ) # average number of records per bin avg_per_bin = values.sum() / values.shape[0] * values.shape[1] if avg_per_bin <= 4: f, endof, lsigma, bw = fit_test_statistic_distribution(chi2s) pvalue_h = f * stats.chi2.sf(chi2, endof) + (1 - f) * stats.norm.sf( chi2, endof, lsigma ) else: endof = estimate_ndof(chi2s) pvalue_h = stats.chi2.sf(chi2, endof) zvalue_h = -stats.norm.ppf(pvalue_h) if pvalue_h == 0: # apply Chernoff approximation as upper bound for p-value # see: https://en.wikipedia.org/wiki/Chi-squared_distribution z = chi2 / endof u = -math.log(2 * math.pi) - endof * math.log(z) + endof * (z - 1) if avg_per_bin <= 4: u += -2 * math.log(f) zvalue_h = math.sqrt(u - math.log(u)) return pvalue_h, zvalue_h def significance_from_hist2d( values: np.ndarray, nsim: int = 1000, lambda_: str = "log-likelihood", simulation_method: str = "multinominal", significance_method: str = "hybrid", njobs: int = -1, ) -> Tuple[float, float]: """ Calculate the significance of correlation of two variables based on the contingency table :param values: contingency table :param int nsim: number of simulations :param str lambda_: test statistic. Available options are [pearson, log-likelihood] :param str simulation_method: simulation method. Options: [multinominal, row_product_multinominal, \ col_product_multinominal, hypergeometric]. :param str significance_method: significance_method. Options: [asymptotic, MC, hybrid] :param int njobs: number of parallel jobs used for simulation. default is -1. 1 uses no parallel jobs. :return: pvalue, significance """ # chi2 of the data chi2 = get_chi2_using_dependent_frequency_estimates(values, lambda_=lambda_) if significance_method == "asymptotic": # calculate pvalue and zvalue based on chi2 and ndof (asymptotic method) pvalue, zvalue = significance_from_chi2_asymptotic(values, chi2) elif significance_method == "MC": # calculate pvalue based on simulation (MC method) pvalue, zvalue = significance_from_chi2_MC( chi2, values, nsim=nsim, lambda_=lambda_, simulation_method=simulation_method, njobs=njobs, ) elif significance_method == "hybrid": # low statistics : calculate pvalue and zvalue using h(x|f) and endof # high statistics: calculate pvalue and zvalue using chi2-distribution and endof pvalue, zvalue = significance_from_chi2_hybrid( chi2, values, nsim=nsim, lambda_=lambda_, simulation_method=simulation_method, njobs=njobs, ) else: raise NotImplementedError( "simulation_method {0:s} is unknown".format(simulation_method) ) return pvalue, zvalue def significance_from_rebinned_df( data_binned: pd.DataFrame, lambda_: str = "log-likelihood", simulation_method: str = "multinominal", nsim: int = 1000, significance_method: str = "hybrid", dropna: bool = True, drop_underflow: bool = True, drop_overflow: bool = True, njobs: int = -1, ) -> pd.DataFrame: """ Calculate significance of correlation of all variable combinations in the DataFrame :param data_binned: input binned DataFrame :param int nsim: number of simulations :param str lambda_: test statistic. Available options are [pearson, log-likelihood] :param str simulation_method: simulation method. Options: [mutlinominal, row_product_multinominal, \ col_product_multinominal, hypergeometric]. :param str significance_method: significance_method. Options: [asymptotic, MC, hybrid] :param bool dropna: remove NaN values with True :param bool drop_underflow: do not take into account records in underflow bin when True (relevant when binning\ a numeric variable) :param bool drop_overflow: do not take into account records in overflow bin when True (relevant when binning\ a numeric variable) :param int njobs: number of parallel jobs used for simulation. default is -1. :return: significance matrix """ if not dropna: # if not dropna replace the NaN values with the string NaN. Otherwise the rows with NaN are dropped # by the groupby. data_binned.replace(np.nan, defs.NaN, inplace=True) if drop_underflow: data_binned.replace(defs.UF, np.nan, inplace=True) if drop_overflow: data_binned.replace(defs.OF, np.nan, inplace=True) # cache column order (https://github.com/KaveIO/PhiK/issues/1) column_order = data_binned.columns signifs = [] for i, (c0, c1) in enumerate( itertools.combinations_with_replacement(data_binned.columns.values, 2) ): datahist = ( data_binned.groupby([c0, c1])[c0].count().to_frame().unstack().fillna(0) ) if 1 in datahist.shape or 0 in datahist.shape: signifs.append((c0, c1, np.nan)) warnings.warn( "Too few unique values for variable {0:s} ({1:d}) or {2:s} ({3:d}) to calculate significance".format( c0, datahist.shape[0], c1, datahist.shape[1] ) ) continue datahist.columns = datahist.columns.droplevel() datahist = datahist.values pvalue, zvalue = significance_from_hist2d( datahist, nsim=nsim, lambda_=lambda_, simulation_method=simulation_method, significance_method=significance_method, njobs=njobs, ) signifs.append((c0, c1, zvalue)) if len(signifs) == 0: return pd.DataFrame(np.nan, index=column_order, columns=column_order) significance_overview = create_correlation_overview_table(signifs) # restore column order significance_overview = significance_overview.reindex(columns=column_order) significance_overview = significance_overview.reindex(index=column_order) return significance_overview def significance_matrix( df: pd.DataFrame, interval_cols: list = None, lambda_: str = "log-likelihood", simulation_method: str = "multinominal", nsim: int = 1000, significance_method: str = "hybrid", bins: Union[int, list, np.ndarray, dict] = 10, dropna: bool = True, drop_underflow: bool = True, drop_overflow: bool = True, verbose: bool = True, njobs: int = -1, ) -> pd.DataFrame: """ Calculate significance of correlation of all variable combinations in the dataframe :param pd.DataFrame df: input data :param list interval_cols: column names of columns with interval variables. :param int nsim: number of simulations :param str lambda_: test statistic. Available options are [pearson, log-likelihood] :param str simulation_method: simulation method. Options: [mutlinominal, row_product_multinominal, \ col_product_multinominal, hypergeometric]. :param int nsim: number of simulated datasets :param str significance_method: significance_method. Options: [asymptotic, MC, hybrid] :param bool dropna: remove NaN values with True :param bins: number of bins, or a list of bin edges (same for all columns), or a dictionary where per column the bins are specified. (default=10)\ E.g.: bins = {'mileage':5, 'driver_age':[18,25,35,45,55,65,125]} :param bool dropna: remove NaN values with True :param bool drop_underflow: do not take into account records in underflow bin when True (relevant when binning\ a numeric variable) :param bool drop_overflow: do not take into account records in overflow bin when True (relevant when binning\ a numeric variable) :param bool verbose: if False, do not print all interval columns that are guessed :param int njobs: number of parallel jobs used for simulation. default is -1. 1 uses no parallel jobs. :return: significance matrix """ if interval_cols is None: interval_cols = guess_interval_cols(df, verbose) df_clean, interval_cols_clean = dq_check_nunique_values( df, interval_cols, dropna=dropna ) data_binned = bin_data(df_clean, interval_cols_clean, bins=bins) return significance_from_rebinned_df( data_binned, lambda_=lambda_, simulation_method=simulation_method, nsim=nsim, significance_method=significance_method, dropna=dropna, drop_underflow=drop_underflow, drop_overflow=drop_overflow, njobs=njobs, ) def significance_from_array( x: Union[np.ndarray, pd.Series], y: Union[np.ndarray, pd.Series], num_vars=None, bins: Union[int, list, np.ndarray, dict] = 10, quantile: bool = False, lambda_: str = "log-likelihood", nsim: int = 1000, significance_method: str = "hybrid", simulation_method: str = "multinominal", dropna: bool = True, drop_underflow: bool = True, drop_overflow: bool = True, njobs: int = -1, ) -> Tuple[float, float]: """ Calculate the significance of correlation Calculate the significance of correlation for two variables which can be of interval, oridnal or categorical type.\ Interval variables will be binned. :param x: array-like input :param y: array-like input :param num_vars: list of numeric variables which need to be binned, e.g. ['x'] or ['x','y'] :param bins: number of bins, or a list of bin edges (same for all columns), or a dictionary where per column the bins are specified. (default=10)\ E.g.: bins = {'mileage':5, 'driver_age':[18,25,35,45,55,65,125]} :param quantile: when bins is an integer, uniform bins (False) or bins based on quantiles (True) :param str lambda_: test statistic. Available options are [pearson, log-likelihood] :param int nsim: number of simulated datasets :param str simulation_method: simulation method. Options: [mutlinominal, row_product_multinominal, \ col_product_multinominal, hypergeometric]. :param str significance_method: significance_method. Options: [asymptotic, MC, hybrid] :param bool dropna: remove NaN values with True :param bool drop_underflow: do not take into account records in underflow bin when True (relevant when binning\ a numeric variable) :param bool drop_overflow: do not take into account records in overflow bin when True (relevant when binning\ a numeric variable) :param int njobs: number of parallel jobs used for simulation. default is -1. 1 uses no parallel jobs. :return: p-value, significance """ if num_vars is None: num_vars = [] elif isinstance(num_vars, str): num_vars = [num_vars] if len(num_vars) > 0: df = array_like_to_dataframe(x, y) x, y = bin_data(df, num_vars, bins=bins, quantile=quantile).T.values return significance_from_binned_array( x, y, lambda_=lambda_, significance_method=significance_method, nsim=nsim, simulation_method=simulation_method, dropna=dropna, drop_underflow=drop_underflow, drop_overflow=drop_overflow, njobs=njobs, ) def significance_from_binned_array( x: Union[np.ndarray, pd.Series], y: Union[np.ndarray, pd.Series], lambda_: str = "log-likelihood", significance_method: str = "hybrid", nsim: int = 1000, simulation_method: str = "multinominal", dropna: bool = True, drop_underflow: bool = True, drop_overflow: bool = True, njobs: int = -1, ) -> Tuple[float, float]: """ Calculate the significance of correlation Calculate the significance of correlation for two variables which can be of interval, oridnal or categorical type. \ Interval variables need to be binned. :param x: array-like input :param y: array-like input :param str lambda_: test statistic. Available options are [pearson, log-likelihood] :param str simulation_method: simulation method. Options: [multinominal, row_product_multinominal, \ col_product_multinominal, hypergeometric]. :param int nsim: number of simulated datasets :param str significance_method: significance_method. Options: [asymptotic, MC, hybrid] :param bool dropna: remove NaN values with True :param bool drop_underflow: do not take into account records in underflow bin when True (relevant when binning\ a numeric variable) :param bool drop_overflow: do not take into account records in overflow bin when True (relevant when binning\ a numeric variable) :param int njobs: number of parallel jobs used for simulation. default is -1. 1 uses no parallel jobs. :return: p-value, significance """ if not dropna: x = pd.Series(x).fillna(defs.NaN).astype(str).values y = ( pd.Series(y).fillna(defs.NaN).astype(str).values ) # crosstab cannot handle mixed type y! if drop_underflow or drop_overflow: x = pd.Series(x).astype(str).values y = pd.Series(y).astype(str).values if drop_underflow: x[np.where(x == defs.UF)] = np.nan y[np.where(y == defs.UF)] = np.nan if drop_overflow: y[np.where(y == defs.OF)] = np.nan x[np.where(x == defs.OF)] = np.nan hist2d = pd.crosstab(x, y).values if not dq_check_hist2d(hist2d): return np.nan, np.nan return significance_from_hist2d( hist2d, lambda_=lambda_, significance_method=significance_method, simulation_method=simulation_method, nsim=nsim, njobs=njobs, ) ================================================ FILE: phik/simcore/__init__.py ================================================ import importlib.util try: _ext_spec = importlib.util.find_spec("phik.lib._phik_simulation_core") except ModuleNotFoundError: _ext_spec = None if _ext_spec is not None: from phik.lib._phik_simulation_core import _sim_2d_data_patefield CPP_SUPPORT = True else: CPP_SUPPORT = False def _sim_2d_data_patefield(*args, **kwargs): msg = "Patefield requires a compiled extension that was not found." raise NotImplementedError(msg) __all__ = ["CPP_SUPPORT", "_sim_2d_data_patefield"] ================================================ FILE: phik/simcore/asa159.cpp ================================================ /* * Taken from: * https://people.sc.fsu.edu/~jburkardt/cpp_src/asa159/asa159.html * * Michael Patefield, * Algorithm AS 159: An Efficient Method of Generating RXC Tables with Given Row and Column Totals, * Applied Statistics, * Volume 30, Number 1, 1981, pages 91-97. */ # include # include # include # include # include #include using namespace std; # include "asa159.hpp" //****************************************************************************80 int i4_max ( int i1, int i2 ) //****************************************************************************80 // // Purpose: // // I4_MAX returns the maximum of two I4's. // // Licensing: // // This code is distributed under the GNU LGPL license. // // Modified: // // 13 October 1998 // // Author: // // John Burkardt // // Parameters: // // Input, int I1, I2, are two integers to be compared. // // Output, int I4_MAX, the larger of I1 and I2. // { int value; if ( i2 < i1 ) { value = i1; } else { value = i2; } return value; } //****************************************************************************80 int i4_min ( int i1, int i2 ) //****************************************************************************80 // // Purpose: // // I4_MIN returns the minimum of two I4's. // // Licensing: // // This code is distributed under the GNU LGPL license. // // Modified: // // 13 October 1998 // // Author: // // John Burkardt // // Parameters: // // Input, int I1, I2, two integers to be compared. // // Output, int I4_MIN, the smaller of I1 and I2. // { int value; if ( i1 < i2 ) { value = i1; } else { value = i2; } return value; } //****************************************************************************80 void i4mat_print ( int m, int n, int a[], string title ) //****************************************************************************80 // // Purpose: // // I4MAT_PRINT prints an I4MAT. // // Discussion: // // An I4MAT is an MxN array of I4's, stored by (I,J) -> [I+J*M]. // // Licensing: // // This code is distributed under the GNU LGPL license. // // Modified: // // 10 September 2009 // // Author: // // John Burkardt // // Parameters: // // Input, int M, the number of rows in A. // // Input, int N, the number of columns in A. // // Input, int A[M*N], the M by N matrix. // // Input, string TITLE, a title. // { i4mat_print_some ( m, n, a, 1, 1, m, n, title ); return; } //****************************************************************************80 void i4mat_print_some ( int m, int n, int a[], int ilo, int jlo, int ihi, int jhi, string title ) //****************************************************************************80 // // Purpose: // // I4MAT_PRINT_SOME prints some of an I4MAT. // // Discussion: // // An I4MAT is an MxN array of I4's, stored by (I,J) -> [I+J*M]. // // Licensing: // // This code is distributed under the GNU LGPL license. // // Modified: // // 20 August 2010 // // Author: // // John Burkardt // // Parameters: // // Input, int M, the number of rows of the matrix. // M must be positive. // // Input, int N, the number of columns of the matrix. // N must be positive. // // Input, int A[M*N], the matrix. // // Input, int ILO, JLO, IHI, JHI, designate the first row and // column, and the last row and column to be printed. // // Input, string TITLE, a title. // { # define INCX 10 int i; int i2hi; int i2lo; int j; int j2hi; int j2lo; cout << "\n"; cout << title << "\n"; if ( m <= 0 || n <= 0 ) { cout << "\n"; cout << " (None)\n"; return; } // // Print the columns of the matrix, in strips of INCX. // for ( j2lo = jlo; j2lo <= jhi; j2lo = j2lo + INCX ) { j2hi = j2lo + INCX - 1; if ( n < j2hi ) { j2hi = n; } if ( jhi < j2hi ) { j2hi = jhi; } cout << "\n"; // // For each column J in the current range... // // Write the header. // cout << " Col:"; for ( j = j2lo; j <= j2hi; j++ ) { cout << " " << setw(6) << j - 1; } cout << "\n"; cout << " Row\n"; cout << "\n"; // // Determine the range of the rows in this strip. // if ( 1 < ilo ) { i2lo = ilo; } else { i2lo = 1; } if ( ihi < m ) { i2hi = ihi; } else { i2hi = m; } for ( i = i2lo; i <= i2hi; i++ ) { // // Print out (up to INCX) entries in row I, that lie in the current strip. // cout << setw(5) << i - 1 << ":"; for ( j = j2lo; j <= j2hi; j++ ) { cout << " " << setw(6) << a[i-1+(j-1)*m]; } cout << "\n"; } } return; # undef INCX } //****************************************************************************80 void i4vec_print ( int n, int a[], string title ) //****************************************************************************80 // // Purpose: // // I4VEC_PRINT prints an I4VEC. // // Discussion: // // An I4VEC is a vector of I4's. // // Licensing: // // This code is distributed under the GNU LGPL license. // // Modified: // // 14 November 2003 // // Author: // // John Burkardt // // Parameters: // // Input, int N, the number of components of the vector. // // Input, int A[N], the vector to be printed. // // Input, string TITLE, a title. // { int i; cout << "\n"; cout << title << "\n"; cout << "\n"; for ( i = 0; i < n; i++ ) { cout << " " << setw(8) << i << ": " << setw(8) << a[i] << "\n"; } return; } //****************************************************************************80 int i4vec_sum ( int n, int a[] ) //****************************************************************************80 // // Purpose: // // I4VEC_SUM sums the entries of an I4VEC. // // Discussion: // // An I4VEC is a vector of I4's. // // Example: // // Input: // // A = ( 1, 2, 3, 4 ) // // Output: // // I4VEC_SUM = 10 // // Licensing: // // This code is distributed under the GNU LGPL license. // // Modified: // // 26 May 1999 // // Author: // // John Burkardt // // Parameters: // // Input, int N, the number of entries in the vector. // // Input, int A[N], the vector to be summed. // // Output, int I4VEC_SUM, the sum of the entries of A. // { int i; int sum; sum = 0; for ( i = 0; i < n; i++ ) { sum = sum + a[i]; } return sum; } //****************************************************************************80 double r8_uniform_01 ( int *seed ) //****************************************************************************80 // // Purpose: // // R8_UNIFORM_01 is a unit pseudorandom R8. // // Discussion: // // This routine implements the recursion // // seed = 16807 * seed mod ( 2**31 - 1 ) // unif = seed / ( 2**31 - 1 ) // // The integer arithmetic never requires more than 32 bits, // including a sign bit. // // Licensing: // // This code is distributed under the GNU LGPL license. // // Modified: // // 11 August 2004 // // Reference: // // Paul Bratley, Bennett Fox, Linus Schrage, // A Guide to Simulation, // Springer Verlag, pages 201-202, 1983. // // Bennett Fox, // Algorithm 647: // Implementation and Relative Efficiency of Quasirandom // Sequence Generators, // ACM Transactions on Mathematical Software, // Volume 12, Number 4, pages 362-376, 1986. // // Parameters: // // Input/output, int *SEED, a seed for the random number generator. // // Output, double R8_UNIFORM_01, a new pseudorandom variate, strictly between // 0 and 1. // { int k; double r; k = *seed / 127773; *seed = 16807 * ( *seed - k * 127773 ) - k * 2836; if ( *seed < 0 ) { *seed = *seed + 2147483647; } r = ( double ) ( *seed ) * 4.656612875E-10; return r; } //****************************************************************************80 void rcont2 ( int nrow, int ncol, int nrowt[], int ncolt[], bool *key, int *seed, int matrix[], int *ierror ) //****************************************************************************80 // // Purpose: // // RCONT2 constructs a random two-way contingency table with given sums. // // Discussion: // // It is possible to specify row and column sum vectors which // correspond to no table at all. As far as I can see, this routine does // not detect such a case. // // Licensing: // // This code is distributed under the GNU LGPL license. // // Modified: // // 10 March 2009 // // Author: // // Original FORTRAN77 version by WM Patefield. // C++ version by John Burkardt. // // Reference: // // WM Patefield, // Algorithm AS 159: // An Efficient Method of Generating RXC Tables with // Given Row and Column Totals, // Applied Statistics, // Volume 30, Number 1, 1981, pages 91-97. // // Parameters: // // Input, int NROW, NCOL, the number of rows and columns // in the table. NROW and NCOL must each be at least 2. // // Input, int NROWT[NROW], NCOLT[NCOL], the row and column // sums. Each entry must be positive. // // Input/output, bool *KEY, a flag that indicates whether data has // been initialized for this problem. Set KEY = .FALSE. before the first // call. // // Input/output, int *SEED, a seed for the random number generator. // // Output, int MATRIX[NROW*NCOL], the matrix. // // Output, int *IERROR, an error flag, which is returned // as 0 if no error occurred. // { bool done1; bool done2; static double *fact = NULL; int i; int ia; int iap; int ib; int ic; int id; int idp; int ie; int igp; int ihp; int ii; int iip; int j; int jc; int *jwork; int l; bool lsm; bool lsp; int m; int nll; int nlm; int nlmp; int nrowtl; static int ntotal = 0; double r; double sumprb; double x; double y; *ierror = 0; // // On user's signal, set up the factorial table. // if ( !(*key) ) { *key = true; if ( nrow <= 1 ) { cout << "\n"; cout << "RCONT - Fatal error!\n"; cout << " Input number of rows is less than 2.\n"; *ierror = 1; return; } if ( ncol <= 1 ) { cout << "\n"; cout << "RCONT - Fatal error!\n"; cout << " The number of columns is less than 2.\n"; *ierror = 2; return; } for ( i = 0; i < nrow; i++ ) { if ( nrowt[i] <= 0 ) { cout << "\n"; cout << "RCONT - Fatal error!\n"; cout << " An entry in the row sum vector is not positive.\n"; *ierror = 3; return; } } for ( j = 0; j < ncol; j++ ) { if ( ncolt[j] <= 0 ) { cout << "\n"; cout << "RCONT - Fatal error!\n"; cout << " An entry in the column sum vector is not positive.\n"; *ierror = 4; return; } } if ( i4vec_sum ( ncol, ncolt ) != i4vec_sum ( nrow, nrowt ) ) { cout << "\n"; cout << "RCONT - Fatal error!\n"; cout << " The row and column sum vectors do not have the same sum.\n"; *ierror = 6; return; } ntotal = i4vec_sum ( ncol, ncolt ); if ( fact ) { delete [] fact; } fact = new double[ntotal+1]; // // Calculate log-factorials. // x = 0.0; fact[0] = 0.0; for ( i = 1; i <= ntotal; i++ ) { x = x + log ( ( double ) ( i ) ); fact[i] = x; } } // // Construct a random matrix. // jwork = new int[ncol]; for ( i = 0; i < ncol - 1; i++ ) { jwork[i] = ncolt[i]; } jc = ntotal; for ( l = 0; l < nrow - 1; l++ ) { nrowtl = nrowt[l]; ia = nrowtl; ic = jc; jc = jc - nrowtl; for ( m = 0; m < ncol - 1; m++ ) { id = jwork[m]; ie = ic; ic = ic - id; ib = ie - ia; ii = ib - id; // // Test for zero entries in matrix. // if ( ie == 0 ) { ia = 0; for ( j = m; j < ncol; j++ ) { matrix[l+j*nrow] = 0; } break; } // // Generate a pseudo-random number. // r = r8_uniform_01 ( seed ); // // Compute the conditional expected value of MATRIX(L,M). // done1 = false; for ( ; ; ) { nlm = ( int ) ( ( double ) ( ia * id ) / ( double ) ( ie ) + 0.5 ); iap = ia + 1; idp = id + 1; igp = idp - nlm; ihp = iap - nlm; nlmp = nlm + 1; iip = ii + nlmp; x = exp ( fact[iap-1] + fact[ib] + fact[ic] + fact[idp-1] - fact[ie] - fact[nlmp-1] - fact[igp-1] - fact[ihp-1] - fact[iip-1] ); if ( r <= x ) { break; } sumprb = x; y = x; nll = nlm; lsp = false; lsm = false; // // Increment entry in row L, column M. // while ( !lsp ) { j = ( id - nlm ) * ( ia - nlm ); if ( j == 0 ) { lsp = true; } else { nlm = nlm + 1; x = x * ( double ) ( j ) / ( double ) ( nlm * ( ii + nlm ) ); sumprb = sumprb + x; if ( r <= sumprb ) { done1 = true; break; } } done2 = false; while ( !lsm ) { // // Decrement the entry in row L, column M. // j = nll * ( ii + nll ); if ( j == 0 ) { lsm = true; break; } nll = nll - 1; y = y * ( double ) ( j ) / ( double ) ( ( id - nll ) * ( ia - nll ) ); sumprb = sumprb + y; if ( r <= sumprb ) { nlm = nll; done2 = true; break; } if ( !lsp ) { break; } } if ( done2 ) { break; } } if ( done1 ) { break; } if ( done2 ) { break; } r = r8_uniform_01 ( seed ); r = sumprb * r; } matrix[l+m*nrow] = nlm; ia = ia - nlm; jwork[m] = jwork[m] - nlm; } matrix[l+(ncol-1)*nrow] = ia; } // // Compute the last row. // for ( j = 0; j < ncol - 1; j++ ) { matrix[nrow-1+j*nrow] = jwork[j]; } matrix[nrow-1+(ncol-1)*nrow] = ib - matrix[nrow-1+(ncol-2)*nrow]; delete [] jwork; return; } //****************************************************************************80 void timestamp ( ) //****************************************************************************80 // // Purpose: // // TIMESTAMP prints the current YMDHMS date as a time stamp. // // Example: // // May 31 2001 09:45:54 AM // // Licensing: // // This code is distributed under the GNU LGPL license. // // Modified: // // 03 October 2003 // // Author: // // John Burkardt // // Parameters: // // None // { # define TIME_SIZE 40 static char time_buffer[TIME_SIZE]; const struct tm *tm; time_t now; now = time ( NULL ); tm = localtime ( &now ); strftime ( time_buffer, TIME_SIZE, "%d %B %Y %I:%M:%S %p", tm ); cout << time_buffer << "\n"; return; # undef TIME_SIZE } ================================================ FILE: phik/simcore/asa159.hpp ================================================ /* * Taken from: * https://people.sc.fsu.edu/~jburkardt/cpp_src/asa159/asa159.html * * Michael Patefield, * Algorithm AS 159: An Efficient Method of Generating RXC Tables with Given Row and Column Totals, * Applied Statistics, * Volume 30, Number 1, 1981, pages 91-97. */ #ifndef PYTHON_PHIK_SIMCORE_ASA159_HPP_ #define PYTHON_PHIK_SIMCORE_ASA159_HPP_ #include int i4_max ( int i1, int i2 ); int i4_min ( int i1, int i2 ); void i4mat_print ( int m, int n, int a[], std::string title ); void i4mat_print_some ( int m, int n, int a[], int ilo, int jlo, int ihi, int jhi, std::string title ); void i4vec_print ( int n, int a[], std::string title ); int i4vec_sum ( int n, int a[] ); double r8_uniform_01 ( int *seed ); void rcont2 ( int nrow, int ncol, int nrowt[], int ncolt[], bool *key, int *seed, int matrix[], int *ierror ); void timestamp ( ); #endif // PYTHON_PHIK_SIMCORE_ASA159_HPP_ ================================================ FILE: phik/simcore/bindings.cpp ================================================ #include "simulation.hpp" #include PYBIND11_MODULE(_phik_simulation_core, m) { bind_simulation(m); } ================================================ FILE: phik/simcore/simulation.hpp ================================================ /* python/phik/simulation/simulation.hpp wrapper and bindings for * Michael Patefield, * Algorithm AS 159: An Efficient Method of Generating RXC Tables with Given Row and Column Totals, * Applied Statistics, * Volume 30, Number 1, 1981, pages 91-97. * * https://people.sc.fsu.edu/~jburkardt/cpp_src/asa159/asa159.html */ #ifndef PYTHON_PHIK_SIMCORE_SIMULATION_HPP_ #define PYTHON_PHIK_SIMCORE_SIMULATION_HPP_ #include "asa159.hpp" #include #include namespace py = pybind11; struct simulation_error: std::exception { const char* p_message; explicit simulation_error(const char* message) : p_message(message) {} const char* what() const throw() { return p_message; } }; void _sim_2d_data_patefield( int nrow, int ncol, const py::array_t& nrowt, const py::array_t& ncolt, int seed, py::array_t& result ) { bool key = false; int ierror = 0; int* nrowt_ptr = reinterpret_cast(nrowt.request().ptr); int* ncolt_ptr = reinterpret_cast(ncolt.request().ptr); int* result_ptr = reinterpret_cast(result.request().ptr); // constructs a random two-way contingency table with given sums, // the underlying memory of result is directly modified rcont2(nrow, ncol, nrowt_ptr, ncolt_ptr, &key, &seed, result_ptr, &ierror); if (ierror != 0) { throw simulation_error("Could not construct two-way contingency table"); } return; } auto docstring = R"pbdoc(Construct a random two-way contingency table with given sums Parameters ---------- nrow : int number of rows in the table, should be >= 2 ncol : int number of columns in the table, should be >= 2 nrowt : np.array[int] the row sums, note all values should be positive ncolt : np.array[int] the col sums, note all values should be positive seed : int random seed for the generation result : np.array[int] initialized array where the results will be stored Reference --------- WM Patefield, Algorithm AS 159: An Efficient Method of Generating RXC Tables with Given Row and Column Totals, Applied Statistics, Volume 30, Number 1, 1981, pages 91-97. )pbdoc"; void bind_simulation(py::module &m) { m.def( "_sim_2d_data_patefield", &_sim_2d_data_patefield, docstring, py::arg("nrow"), py::arg("ncol"), py::arg("nrowt"), py::arg("ncolt"), py::arg("seed"), py::arg("result") ); } #endif // PYTHON_PHIK_SIMCORE_SIMULATION_HPP_ ================================================ FILE: phik/simulation.py ================================================ """Project: PhiK - correlation analyzer library Created: 2018/09/05 Description: Helper functions to simulate 2D datasets Authors: KPMG Advanced Analytics & Big Data team, Amstelveen, The Netherlands Redistribution and use in source and binary forms, with or without modification, are permitted according to the terms listed in the file LICENSE. """ import numpy as np from joblib import Parallel, delayed from .statistics import get_dependent_frequency_estimates from .statistics import get_chi2_using_dependent_frequency_estimates from phik.simcore import CPP_SUPPORT, _sim_2d_data_patefield NUMPY_INT_MAX = np.iinfo(np.int32).max - 1 def sim_2d_data(hist:np.ndarray, ndata:int=0) -> np.ndarray: """ Simulate a 2 dimensional dataset given a 2 dimensional pdf :param array-like hist: contingency table, which contains the observed number of occurrences in each category. This table is used as probability density function. :param int ndata: number of simulations :return: simulated data """ if ndata <= 0: ndata = int(np.rint(hist.sum())) if ndata <= 0: raise ValueError('ndata (or hist.sum()) has to be positive') # scale and ravel hc = hist[:] / hist.sum() hcr = hc.ravel() hout = np.random.multinomial(n=ndata, pvals=hcr) hout2d = np.reshape(hout, hc.shape) return hout2d def sim_2d_data_patefield(data: np.ndarray, seed : int = None) -> np.ndarray: """ Simulate a two dimensional dataset with fixed row and column totals. Simulation algorithm by Patefield: W. M. Patefield, Applied Statistics 30, 91 (1981) Python implementation inspired by (C version): https://people.sc.fsu.edu/~jburkardt/c_src/asa159/asa159.html :param data: contingency table, which contains the observed number of occurrences in each category.\ :param seed: optional seed for the simulation, primarily for testing purposes.\ This table is used as probability density function. :return: simulated data """ if not CPP_SUPPORT: raise NotImplementedError( 'Patefield requires a compiled extension that was not found.' ) # number of rows and columns nrows, ncols = data.shape # totals per row and column # NOTE we assume that sum will fit in a 32 bit int nrowt = np.rint(data.sum(axis=1)).astype(np.int32) ncolt = np.rint(data.sum(axis=0)).astype(np.int32) # set seed if it is None seed = seed or np.random.randint(0, NUMPY_INT_MAX) # allocate memory that will be set by _sim_2d_data_patefield matrix = np.empty(nrows * ncols, dtype=np.int32) # simulate the data, returned through matrix inplace modification _sim_2d_data_patefield(nrows, ncols, nrowt, ncolt, seed, matrix) return matrix.reshape(ncols, nrows).T def sim_2d_product_multinominal(data:np.ndarray, axis: int) -> np.ndarray: """ Simulate 2 dimensional data with either row or column totals fixed. :param data: contingency table, which contains the observed number of occurrences in each category.\ This table is used as probability density function. :param axis: fix row totals (0) or column totals (1). :return: simulated data """ if axis == 1: return np.array([list(sim_2d_data(data[i])) for i in range(data.shape[0])]) elif axis == 0: return np.array([list(sim_2d_data(data.T[i])) for i in range(data.shape[1])]).T else: raise NotImplementedError("Axis should be 0 (row) or 1 (column).") def sim_data(data:np.ndarray, method:str='multinominal') -> np.ndarray: """ Simulate a 2 dimensional dataset given a 2 dimensional pdf Several simulation methods are provided: - multinominal: Only the total number of records is fixed. - row_product_multinominal: The row totals fixed in the sampling. - col_product_multinominal: The column totals fixed in the sampling. - hypergeometric: Both the row or column totals are fixed in the sampling. Note that this type of sampling is\ only available when row and column totals are integers. :param data: contingency table :param str method: sampling method. Options: [multinominal, hypergeometric, row_product_multinominal,\ col_product_multinominal] :return: simulated data """ if method == 'multinominal': return sim_2d_data(data) elif method == 'hypergeometric': return sim_2d_data_patefield(data) elif method == 'row_product_multinominal': return sim_2d_product_multinominal(data, 0) elif method == 'col_product_multinominal': return sim_2d_product_multinominal(data, 1) else: raise NotImplementedError('selected method not recognized.') def sim_chi2_distribution(values: np.ndarray, nsim:int=1000, lambda_:str='log-likelihood', simulation_method:str='multinominal', alt_hypothesis:bool=False, njobs:int=-1) -> list: """ Simulate 2D data and calculate the chi-square statistic for each simulated dataset. :param values: The contingency table. The table contains the observed number of occurrences in each category :param int nsim: number of simulations (optional, default=1000) :param str simulation_method: sampling method. Options: [multinominal, hypergeometric, row_product_multinominal, col_product_multinominal] :param str lambda_: test statistic. Available options are [pearson, log-likelihood]. :param bool alt_hypothesis: if True, simulate values directly, and not its dependent frequency estimates. :param int njobs: number of parallel jobs used for simulation. default is -1. 1 uses no parallel jobs. :returns chi2s: list of chi2 values for each simulated dataset """ exp_dep = get_dependent_frequency_estimates(values) if not alt_hypothesis else values if njobs == 1: chi2s = [_simulate_and_fit(exp_dep, simulation_method, lambda_) for _ in range(nsim)] else: chi2s = Parallel(n_jobs=njobs)(delayed(_simulate_and_fit)(exp_dep, simulation_method, lambda_) for _ in range(nsim)) return chi2s def _simulate_and_fit(exp_dep: np.ndarray, simulation_method: str='multinominal', lambda_:str='log-likelihood') -> float: """split off simulate function to allow for parallellization""" simdata = sim_data(exp_dep, method=simulation_method) simchi2 = get_chi2_using_dependent_frequency_estimates(simdata, lambda_) return simchi2 ================================================ FILE: phik/statistics.py ================================================ """Project: PhiK - correlation coefficient package Created: 2018/09/05 Description: Statistics helper functions, for the calculation of phik and significance of a contingency table. Authors: KPMG Advanced Analytics & Big Data team, Amstelveen, The Netherlands Redistribution and use in source and binary forms, with or without modification, are permitted according to the terms listed in the file LICENSE. """ from typing import Union import numpy as np from scipy import stats def get_dependent_frequency_estimates(vals: np.ndarray) -> np.ndarray: """ Calculation of dependent expected frequencies. Calculation is based on the marginal sums of the table, i.e. dependent frequency estimates. :param vals: The contingency table. The table contains the observed number of occurrences in each category :returns exp: expected frequencies """ # use existing scipy functionality return stats.contingency.expected_freq(vals) def get_chi2_using_dependent_frequency_estimates( vals: np.ndarray, lambda_: str = "log-likelihood" ) -> float: """ Chi-square test of independence of variables in a contingency table. The expected frequencies are based on the marginal sums of the table, i.e. dependent frequency estimates. :param vals: The contingency table. The table contains the observed number of occurrences in each category :returns test_statistic: the test statistic value """ values = vals[:] # remove rows with only zeros, scipy doesn't like them. values = values[~np.all(values == 0, axis=1)] # remove columns with only zeros, scipy doesn't like them. values = values.T[~np.all(values.T == 0, axis=1)].T # use existing scipy functionality test_statistic, _, _, _ = stats.chi2_contingency(values, lambda_=lambda_) return test_statistic def get_pearson_chi_square( observed: np.ndarray, expected: np.ndarray = None, normalize: bool = True ) -> float: """Calculate pearson chi square between observed and expected 2d contingency matrix :param observed: The observed contingency table. The table contains the observed number of occurrences in each cell. :param expected: The expected contingency table. The table contains the expected number of occurrences in each cell. :param bool normalize: normalize expected frequencies, default is True. :return: the pearson chi2 value """ observed = np.asarray(observed) if np.any(observed < 0): raise ValueError("All values in `observed` must be non-negative.") if observed.size == 0: raise ValueError("No data; `observed` has size 0.") if expected is None: expected = get_dependent_frequency_estimates(observed) expected = np.asarray(expected) # important to ensure that observed and expected have same normalization if normalize: expected = expected * (np.sum(observed) / np.sum(expected)) terms = np.divide( (observed.astype(np.float64) - expected) ** 2, expected, out=np.zeros_like(expected), where=expected != 0, ) return np.sum(terms) def estimate_ndof(chi2values: Union[list, np.ndarray]) -> float: """ Estimation of the effective number of degrees of freedom. A good approximation of endof is the average value. Alternatively a fit to the chi2 distribution can be make. Both values are returned. :param list chi2values: list of chi2 values :returns: endof0, endof """ return np.mean(chi2values) def estimate_simple_ndof(observed: np.ndarray) -> int: """ Simple estimation of the effective number of degrees of freedom. This equals the nominal calculation for ndof minus the number of empty bins in the expected contingency table. :param observed: numpy array of observed cell counts :returns: endof """ # use existing scipy functionality expected = stats.contingency.expected_freq(observed) endof = ( expected.size - np.sum(expected.shape) + expected.ndim - 1 - (expected == 0).sum() ) # require minimum number of degrees of freedom if endof < 0: endof = 0 return endof def theoretical_ndof(observed: np.ndarray) -> int: """ Simple estimation of the effective number of degrees of freedom. This equals the nominal calculation for ndof minus the number of empty bins in the expected contingency table. :param observed: numpy array of observed cell counts :returns: theoretical ndof """ return observed.size - np.sum(observed.shape) + observed.ndim - 1 def z_from_logp(logp: float, flip_sign: bool = False) -> float: """ Convert logarithm of p-value into one-sided Z-value :param float logp: logarithm of p-value, should not be greater than 0 :param bool flip_sign: flip sign of Z-value, e.g. use for input log(1-p). Default is false. :returns: statistical significance Z-value :rtype: float """ # pvalue == 0, Z = infinity if logp == -np.inf: return np.inf if not flip_sign else -np.inf p_value = np.exp(logp) # scenario where p-value is numerically too small to evaluate Z if p_value == 0: # kicks in here when Z > 37 # approach valid when ~ Z > 1.5. u = -2.0 * np.log(2 * np.pi) - 2.0 * logp z_value = np.sqrt(u - np.log(u)) else: z_value = -stats.norm.ppf(p_value) if flip_sign: z_value *= -1.0 return z_value ================================================ FILE: phik/utils.py ================================================ from typing import Union import pandas as pd import numpy as np def array_like_to_dataframe( x: Union[pd.Series, list, np.ndarray], y: Union[pd.Series, list, np.ndarray] ) -> pd.DataFrame: """Concat two array-like data structures into a DataFrame :param x: pd.Series, list or np.ndarray :param y: pd.Series, list or np.ndarray :return: pd.DataFrame """ x_name = x.name if isinstance(x, pd.Series) else "x" y_name = y.name if isinstance(y, pd.Series) else "y" return pd.DataFrame(np.array([x, y]).T, columns=[x_name, y_name]) def guess_interval_cols(df: pd.DataFrame, verbose: bool = False) -> list: """Select columns that have a dtype part of np.number :param df: DataFrame :param bool verbose: print all interval columns that are guessed :return: list of interval columns """ interval_cols = df.select_dtypes(include=[np.number]).columns.tolist() if interval_cols and verbose: print("interval columns not set, guessing: {}".format(str(interval_cols))) if not isinstance(interval_cols, list): raise ValueError("Could not guess interval columns") return interval_cols def make_shapes_equal(observed: pd.DataFrame, expected: pd.DataFrame) -> pd.DataFrame: """Make observed and expected (pandas) histograms equal in shape Sometimes expected histogram shape need filling / pruning to make its shape equal to observed. Give expected the same number of columns and rows. Needed for proper histogram comparison. :param pd.DataFrame observed: The observed contingency table. The table contains the observed number of occurrences in each cell. :param pd.DataFrame expected: The expected contingency table. The table contains the expected number of occurrences in each cell. :return: expected frequencies, having the same shape as observed """ # columns o_cols = observed.columns.tolist() e_cols = expected.columns.tolist() o_cols_missing = list(set(e_cols) - set(o_cols)) e_cols_missing = list(set(o_cols) - set(e_cols)) # index o_idx = observed.index.tolist() e_idx = expected.index.tolist() o_idx_missing = list(set(e_idx) - set(o_idx)) e_idx_missing = list(set(o_idx) - set(e_idx)) # make expected columns equal to observed for c in o_cols_missing: observed[c] = 0.0 for c in e_cols_missing: expected[c] = 0.0 observed.columns = sorted(observed.columns) expected.columns = sorted(expected.columns) # this should always be a match now assert len(observed.columns) == len(expected.columns) # make expected index equal to observed for i in o_idx_missing: observed.loc[i] = np.zeros(len(observed.columns)) for i in e_idx_missing: expected.loc[i] = np.zeros(len(expected.columns)) # this should always be a match now assert len(observed.index) == len(expected.index) return expected ================================================ FILE: pyproject.toml ================================================ [build-system] requires = ["scikit-build-core>=0.3.3", "pybind11"] build-backend = "scikit_build_core.build" [project] name = "phik" version = "0.12.5" description = "Phi_K correlation analyzer library" readme = "README.rst" authors = [{ name = "KPMG N.V. The Netherlands", email = "kave@kpmg.com" }] requires-python = ">=3.9" classifiers = [ "Development Status :: 4 - Beta", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", ] dependencies = [ "numpy>=1.18.0", "scipy>=1.5.2", "pandas>=0.25.1", "matplotlib>=2.2.3", "joblib>=0.14.1", ] [project.optional-dependencies] test = ["pytest>=4.0.2", "pytest-pylint>=0.13.0"] [tool.scikit-build] wheel.expand-macos-universal-tags = true cmake.build-type = "Release" logging.level = "WARNING" sdist.include = ["phik/simcore", "CMakeLists.txt"] [tool.pytest.ini_options] minversion = "6.0" addopts = ["-ra"] xfail_strict = true log_cli_level = "INFO" filterwarnings = ["error"] testpaths = ["tests"] ================================================ FILE: tests/integration/test_phik_tutorial_advanced.py ================================================ # # Phi_K advanced tutorial # # This notebook guides you through the more advanced functionality of the phik package. This notebook will not cover all the underlying theory, but will just attempt to give an overview of all the options that are available. For a theoretical description the user is referred to our paper. # # The package offers functionality on three related topics: # # 1. Phik correlation matrix # 2. Significance matrix # 3. Outlier significance matrix # + # import standard packages import numpy as np import pandas as pd from phik import resources from phik.decorators import * # # Load data # # A simulated dataset is part of the phik-package. The dataset concerns car insurance data. Load the dataset here: def test_advanced_notebook(): data = pd.read_csv(resources.fixture("fake_insurance_data.csv.gz")) data.head() # ## Specify bin types # # The phik-package offers a way to calculate correlations between variables of mixed types. Variable types can be inferred automatically although we recommend to variable types to be specified by the user. # # Because interval type variables need to be binned in order to calculate phik and the significance, a list of interval variables is created. # + data_types = { "severity": "interval", "driver_age": "interval", "satisfaction": "ordinal", "mileage": "interval", "car_size": "ordinal", "car_use": "ordinal", "car_color": "categorical", "area": "categorical", } interval_cols = [ col for col, v in data_types.items() if v == "interval" and col in data.columns ] # interval_cols is used below # - # # Phik correlation matrix # # Now let's start calculating the correlation phik between pairs of variables. # # Note that the original dataset is used as input, the binning of interval variables is done automatically. phik_overview = data.phik_matrix(interval_cols=interval_cols) # ### Specify binning per interval variable # # Binning can be set per interval variable individually. One can set the number of bins, or specify a list of bin edges. Note that the measured phik correlation is dependent on the chosen binning. # The default binning is uniform between the min and max values of the interval variable. bins = {"mileage": 5, "driver_age": [18, 25, 35, 45, 55, 65, 125]} phik_overview = data.phik_matrix(interval_cols=interval_cols, bins=bins) # ### Do not apply noise correction # # For low statistics samples often a correlation larger than zero is measured when no correlation is actually present in the true underlying distribution. This is not only the case for phik, but also for the pearson correlation and Cramer's phi (see figure 4 in XX ). In the phik calculation a noise correction is applied by default, to take into account erroneous correlation values as a result of low statistics. To switch off this noise cancellation (not recommended), do: phik_overview = data.phik_matrix( interval_cols=interval_cols, noise_correction=False ) # ### Using a different expectation histogram # # By default phik compares the 2d distribution of two (binned) variables with the distribution that assumes no dependency between them. One can also change the expected distribution though. Phi_K is calculated in the same way, but using the other expectation distribution. from phik.binning import auto_bin_data from phik.phik import (phik_from_hist2d, phik_observed_vs_expected_from_rebinned_df) from phik.statistics import get_dependent_frequency_estimates # get observed 2d histogram of two variables cols = ["mileage", "car_size"] icols = ["mileage"] observed = data[cols].hist2d(interval_cols=icols).values # default phik evaluation from observed distribution phik_value = phik_from_hist2d(observed) print(phik_value) # phik evaluation from an observed and expected distribution expected = get_dependent_frequency_estimates(observed) phik_value = phik_from_hist2d(observed=observed, expected=expected) print(phik_value) # one can also compare two datasets against each other, and get a full phik matrix that way. # this needs binned datasets though. # (the user needs to make sure the binnings of both datasets are identical.) data_binned, _ = auto_bin_data(data, interval_cols=interval_cols) # here we are comparing data_binned against itself phik_matrix = phik_observed_vs_expected_from_rebinned_df(data_binned, data_binned) # all off-diagonal entries are zero, meaning the all 2d distributions of both datasets are identical. # (by construction the diagonal is one.) # # Statistical significance of the correlation # # When assessing correlations it is good practise to evaluate both the correlation and the significance of the correlation: a large correlation may be statistically insignificant, and vice versa a small correlation may be very significant. For instance, scipy.stats.pearsonr returns both the pearson correlation and the p-value. Similarly, the phik package offers functionality the calculate a significance matrix. Significance is defined as: # # $$Z = \Phi^{-1}(1-p)\ ;\quad \Phi(z)=\frac{1}{\sqrt{2\pi}} \int_{-\infty}^{z} e^{-t^{2}/2}\,{\rm d}t $$ # # Several corrections to the 'standard' p-value calculation are taken into account, making the method more robust for low statistics and sparse data cases. The user is referred to our paper for more details. # # Due to the corrections, the significance calculation can take a few seconds. significance_overview = data.significance_matrix(interval_cols=interval_cols) # ### Specify binning per interval variable # Binning can be set per interval variable individually. One can set the number of bins, or specify a list of bin edges. Note that the measure phik correlation is dependent on the chosen binning. bins = {"mileage": 5, "driver_age": [18, 25, 35, 45, 55, 65, 125]} significance_overview = data.significance_matrix( interval_cols=interval_cols, bins=bins ) # ### Specify significance method # # The recommended method to calculate the significance of the correlation is a hybrid approach, which uses the G-test statistic. The number of degrees of freedom and an analytical, empirical description of the $\chi^2$ distribution are sed, based on Monte Carlo simulations. This method works well for both high as low statistics samples. # # Other approaches to calculate the significance are implemented: # - asymptotic: fast, but over-estimates the number of degrees of freedom for low statistics samples, leading to erroneous values of the significance # - MC: Many simulated samples are needed to accurately measure significances larger than 3, making this method computationally expensive. # significance_overview = data.significance_matrix( interval_cols=interval_cols, significance_method="asymptotic" ) # ### Simulation method # # The chi2 of a contingency table is measured using a comparison of the expected frequencies with the true frequencies in a contingency table. The expected frequencies can be simulated in a variety of ways. The following methods are implemented: # # - multinominal: Only the total number of records is fixed. (default) # - row_product_multinominal: The row totals fixed in the sampling. # - col_product_multinominal: The column totals fixed in the sampling. # - hypergeometric: Both the row or column totals are fixed in the sampling. (Note that this type of sampling is only available when row and column totals are integers, which is usually the case.) # + # --- Warning, can be slow # turned off here by default for unit testing purposes # significance_overview = data.significance_matrix(interval_cols=interval_cols, simulation_method='hypergeometric') # significance_overview # - # ### Expected frequencies from phik.simulation import (sim_2d_data, sim_2d_data_patefield, sim_2d_product_multinominal) inputdata = data[["driver_age", "area"]].hist2d(interval_cols=["driver_age"]) # #### Multinominal simdata = sim_2d_data(inputdata.values) print("data total:", inputdata.sum().sum()) print("sim total:", simdata.sum().sum()) print("data row totals:", inputdata.sum(axis=0).values) print("sim row totals:", simdata.sum(axis=0)) print("data column totals:", inputdata.sum(axis=1).values) print("sim column totals:", simdata.sum(axis=1)) # #### product multinominal simdata = sim_2d_product_multinominal(inputdata.values, axis=0) print("data total:", inputdata.sum().sum()) print("sim total:", simdata.sum().sum()) print("data row totals:", inputdata.sum(axis=0).astype(int).values) print("sim row totals:", simdata.sum(axis=0).astype(int)) print("data column totals:", inputdata.sum(axis=1).astype(int).values) print("sim column totals:", simdata.sum(axis=1).astype(int)) # #### hypergeometric ("patefield") # + # patefield simulation needs compiled c++ code. # only run this if the python binding to the (compiled) patefiled simulation function is found. from phik.simcore import CPP_SUPPORT if CPP_SUPPORT: simdata = sim_2d_data_patefield(inputdata.values) print("data total:", inputdata.sum().sum()) print("sim total:", simdata.sum().sum()) print("data row totals:", inputdata.sum(axis=0).astype(int).values) print("sim row totals:", simdata.sum(axis=0)) print("data column totals:", inputdata.sum(axis=1).astype(int).values) print("sim column totals:", simdata.sum(axis=1)) # - # # Outlier significance # # The normal pearson correlation between two interval variables is easy to interpret. However, the phik correlation between two variables of mixed type is not always easy to interpret, especially when it concerns categorical variables. Therefore, functionality is provided to detect "outliers": excesses and deficits over the expected frequencies in the contingency table of two variables. # # ### Example 1: mileage versus car_size # For the categorical variable pair mileage - car_size we measured: # # $$\phi_k = 0.77 \, ,\quad\quad \mathrm{significance} = 46.3$$ # # Let's use the outlier significance functionality to gain a better understanding of this significance correlation between mileage and car size. # # + c0 = "mileage" c1 = "car_size" tmp_interval_cols = ["mileage"] # - outlier_signifs, binning_dict = data[[c0, c1]].outlier_significance_matrix( interval_cols=tmp_interval_cols, retbins=True ) # ### Specify binning per interval variable # Binning can be set per interval variable individually. One can set the number of bins, or specify a list of bin edges. # # Note: in case a bin is created without any records this bin will be automatically dropped in the phik and (outlier) significance calculations. However, in the outlier significance calculation this will currently lead to an error as the number of provided bin edges does not match the number of bins anymore. bins = [0, 1e2, 1e3, 1e4, 1e5, 1e6] outlier_signifs, binning_dict = data[[c0, c1]].outlier_significance_matrix( interval_cols=tmp_interval_cols, bins=bins, retbins=True ) # ### Specify binning per interval variable -- dealing with underflow and overflow # # When specifying custom bins as situation can occur when the minimal (maximum) value in the data is smaller (larger) than the minimum (maximum) bin edge. Data points outside the specified range will be collected in the underflow (UF) and overflow (OF) bins. One can choose how to deal with these under/overflow bins, by setting the drop_underflow and drop_overflow variables. # # Note that the drop_underflow and drop_overflow options are also available for the calculation of the phik matrix and the significance matrix. bins = [1e2, 1e3, 1e4, 1e5] outlier_signifs, binning_dict = data[[c0, c1]].outlier_significance_matrix( interval_cols=tmp_interval_cols, bins=bins, retbins=True, drop_underflow=False, drop_overflow=False, ) # ### Dealing with NaN's in the data # Let's add some missing values to our data data.loc[np.random.choice(range(len(data)), size=10), "car_size"] = np.nan data.loc[np.random.choice(range(len(data)), size=10), "mileage"] = np.nan # Sometimes there can be information in the missing values and in which case you might want to consider the NaN values as a separate category. This can be achieved by setting the dropna argument to False. bins = [1e2, 1e3, 1e4, 1e5] outlier_signifs, binning_dict = data[[c0, c1]].outlier_significance_matrix( interval_cols=tmp_interval_cols, bins=bins, retbins=True, drop_underflow=False, drop_overflow=False, dropna=False, ) # Here OF and UF are the underflow and overflow bin of car_size, respectively. # # To just ignore records with missing values set dropna to True (default). bins = [1e2, 1e3, 1e4, 1e5] outlier_signifs, binning_dict = data[[c0, c1]].outlier_significance_matrix( interval_cols=tmp_interval_cols, bins=bins, retbins=True, drop_underflow=False, drop_overflow=False, dropna=True, ) # Note that the dropna option is also available for the calculation of the phik matrix and the significance matrix. ================================================ FILE: tests/integration/test_phik_tutorial_basic.py ================================================ # # Phi_K basic tutorial # # This notebook guides you through the basic functionality of the phik package. The package offers functionality on three related topics: # # 1. Phik correlation matrix # 2. Significance matrix # 3. Outlier significance matrix # # For more information on the underlying theory, the user is referred to our paper. import itertools import matplotlib.pyplot as plt # + # import standard packages import numpy as np import pandas as pd import phik from phik import resources from phik.binning import bin_data from phik.report import plot_correlation_matrix # # Load data # # A simulated dataset is part of the phik-package. The dataset concerns fake car insurance data. Load the dataset here: def test_basic_notebook(): data = pd.read_csv(resources.fixture("fake_insurance_data.csv.gz")) # # Take a first look at the data # Let's use a simple data.head() to get an idea of what the data looks like and inspect the different types of variables. data.head() # # Specify bin types # # The phik-package offers a way to calculate correlations between variables of mixed types. Variable types can be inferred automatically although we recommend variable types to be specified by the user. # # Because interval type variables need to be binned in order to calculate phik and the significance, a list of interval variables is created. # + data_types = { "severity": "interval", "driver_age": "interval", "satisfaction": "ordinal", "mileage": "interval", "car_size": "ordinal", "car_use": "ordinal", "car_color": "categorical", "area": "categorical", } interval_cols = [ col for col, v in data_types.items() if v == "interval" and col in data.columns ] # - # # Visually inspect pairwise correlations # ## Bin the interval variables # # To get a feeling for the data, let's bin the interval variables and create 2d histograms to inspect the correlations between variables. By binning the interval variables we can treat all variable types in the same way. # # bin the interval variables data_binned, binning_dict = bin_data(data, cols=interval_cols, retbins=True) # + # plot each variable pair plt.rc("text", usetex=False) n = 0 for i in range(len(data.columns)): n = n + i ncols = 3 nrows = int(np.ceil(n / ncols)) fig, axes = plt.subplots(nrows, ncols, figsize=(15, 4 * nrows)) ndecimals = 0 for i, comb in enumerate(itertools.combinations(data_binned.columns.values, 2)): c = int(i % ncols) r = int((i - c) / ncols) # get data c0, c1 = comb datahist = ( data_binned.groupby([c0, c1])[c0].count().to_frame().unstack().fillna(0) ) datahist.columns = datahist.columns.droplevel() # plot data img = axes[r][c].pcolormesh(datahist.values, edgecolor="w", linewidth=1) # axis ticks and tick labels if c0 in binning_dict.keys(): ylabels = [ "{1:.{0}f}_{2:.{0}f}".format( ndecimals, binning_dict[c0][i][0], binning_dict[c0][i][1] ) for i in range(len(binning_dict[c0])) ] else: ylabels = datahist.index if c1 in binning_dict.keys(): xlabels = [ "{1:.{0}f}_{2:.{0}f}".format( ndecimals, binning_dict[c1][i][0], binning_dict[c1][i][1] ) for i in range(len(binning_dict[c1])) ] else: xlabels = datahist.columns # axis labels axes[r][c].set_yticks(np.arange(len(ylabels)) + 0.5) axes[r][c].set_xticks(np.arange(len(xlabels)) + 0.5) axes[r][c].set_xticklabels(xlabels, rotation="vertical") axes[r][c].set_yticklabels(ylabels, rotation="horizontal") axes[r][c].set_xlabel(datahist.columns.name) axes[r][c].set_ylabel(datahist.index.name) axes[r][c].set_title("data") plt.tight_layout() # - # # Correlation: mileage vs car_size # # From the above plots it seems like there might be an interesting a correlation between mileage and car_size. Let's see what phik correlation is measured for this data. # + x, y = data[["mileage", "car_size"]].T.values print("phik = %.2f" % phik.phik_from_array(x, y, num_vars=["x"])) print("significance = %.2f" % phik.significance_from_array(x, y, num_vars=["x"])[1]) # - # Indeed there is a correlation between these variables and the correlation is also significant. To better understand the correlation, we can have a look at the significance of excesses and deficits in the 2-dimensional contingency table, so-called "outlier significances". phik.outlier_significance_from_array(x, y, num_vars=["x"]) # The values displayed in the matrix are the significances of the outlier frequencies, i.e. a large value means that the measured frequency for that bin is significantly different from the expected frequency in that bin. # # Let's visualise for easier interpretation. # + outlier_signifs = phik.outlier_significance_from_array(x, y, num_vars=["x"]) zvalues = outlier_signifs.values xlabels = outlier_signifs.columns ylabels = outlier_signifs.index xlabel = "x" ylabel = "y" plot_correlation_matrix( zvalues, x_labels=xlabels, y_labels=ylabels, x_label=xlabel, y_label=ylabel, vmin=-5, vmax=5, title="outlier significance", identity_layout=False, fontsize_factor=1.2, ) # - # # $\phi_k$ functions for dataframes # # In our data we have 5 different columns, meaning we have to evaluate 4+3+2+1=10 pairs of variables for possible correlations. In a large dataset, with many different variables, this can easily become a cumbersome task. Can we do this more efficient? yes! We have provided functions that work on dataframes, to allow you to calculate the phik correlation, significance and outlier significance for all different variable combinations at once. # # The functions are by default available after import of the phik package. # # $\phi_k$ correlation matrix # # Now let's start calculating the phik correlation coefficient between pairs of variables. # # Note that the original dataset is used as input, the binning of interval variables is done automatically. phik_overview = data.phik_matrix(interval_cols=interval_cols) phik_overview # When no interval columns are provided, the code makes an educated guess data.phik_matrix() plot_correlation_matrix( phik_overview.values, x_labels=phik_overview.columns, y_labels=phik_overview.index, vmin=0, vmax=1, color_map="Blues", title=r"correlation $\phi_K$", fontsize_factor=1.5, figsize=(7, 5.5), ) plt.tight_layout() # # Global correlation: $g_k$ # # The global correlation coefficient is a measure of the total correlation of one variable to all other variables in the dataset. They give an indication of how well on variable can be modelled in terms of the other variables. A calculation of the global correlation coefficient is provided within the phik package. global_correlation, global_labels = data.global_phik(interval_cols=interval_cols) for c, l in zip(global_correlation, global_labels): print(l, c[0]) plot_correlation_matrix( global_correlation, x_labels=[""], y_labels=global_labels, vmin=0, vmax=1, figsize=(3.5, 4), color_map="Blues", title=r"$g_k$", fontsize_factor=1.5, ) plt.tight_layout() # # Statistical significance of the correlation: $Z$-score # # When assessing correlations it is good practise to evaluate both the correlation and the significance of the correlation: a large correlation may be statistically insignificant, and vice versa a small correlation may be very significant. For instance, scipy.stats.pearsonr returns both the pearson correlation and the p-value. Similarly, the phik package offers functionality the calculate a significance matrix. Significance is defined as: # # $$Z = \Phi^{-1}(1-p)\ ;\quad \Phi(z)=\frac{1}{\sqrt{2\pi}} \int_{-\infty}^{z} e^{-t^{2}/2}\,{\rm d}t $$ # # Several corrections to the 'standard' p-value calculation are taken into account, making the method more robust for low statistics and sparse data cases. The user is referred to our paper for more details. # # As a result, the calculation may take a few seconds. significance_overview = data.significance_matrix(interval_cols=interval_cols) significance_overview plot_correlation_matrix( significance_overview.fillna(0).values, x_labels=significance_overview.columns, y_labels=significance_overview.index, vmin=-5, vmax=5, title="significance", usetex=False, fontsize_factor=1.5, figsize=(7, 5.5), ) plt.tight_layout() # # Outlier significance # # The normal pearson correlation between two interval variables is easy to interpret. However, the phik correlation between two variables of mixed type is not always easy to interpret, especially when it concerns categorical variables. Therefore, functionality is provided to detect "outliers": excesses and deficits over the expected frequencies in the contingency table of two variables. # # ### Example 1: car_color versus area # # For the categorical variable pair car_color - area we measured: # # $$\phi_k = 0.59 \, ,\quad\quad \mathrm{significance} = 37.6$$ # # Let's use the outlier significance functionality to gain a better understanding of the significance correlation between car color and area. # c1 = "car_color" c0 = "area" outlier_signifs, binning_dict = data[[c0, c1]].outlier_significance_matrix( retbins=True ) outlier_signifs # + zvalues = outlier_signifs.values xlabels = binning_dict[c1] if c1 in binning_dict.keys() else outlier_signifs.columns ylabels = binning_dict[c0] if c0 in binning_dict.keys() else outlier_signifs.index xlabel = c1 ylabel = c0 plot_correlation_matrix( zvalues, x_labels=xlabels, y_labels=ylabels, x_label=xlabel, y_label=ylabel, vmin=-5, vmax=5, title="outlier significance", identity_layout=False, fontsize_factor=1.2, ) # - # The significance of each cell is expressed in terms of Z (one-sided). # # Interesting, owners of a green car are more likely to live in the country side, and black cars are more likely to travel on unpaved roads! # ### Example 2: mileage versus car_size # For the categorical variable pair mileage - car_size we measured: # # $$\phi_k = 0.77 \, ,\quad\quad \mathrm{significance} = 46.3$$ # # Let's use the outlier significance functionality to gain a better understanding of this significance correlation between mileage and car size. # # + c0 = "mileage" c1 = "car_size" tmp_interval_cols = ["mileage"] # - outlier_signifs, binning_dict = data[[c0, c1]].outlier_significance_matrix( interval_cols=tmp_interval_cols, retbins=True ) outlier_signifs # Note that the interval variable mileage is binned automatically in 10 uniformly spaced bins! # + zvalues = outlier_signifs.values xlabels = outlier_signifs.columns ylabels = outlier_signifs.index xlabel = c1 ylabel = c0 plot_correlation_matrix( zvalues, x_labels=xlabels, y_labels=ylabels, x_label=xlabel, y_label=ylabel, vmin=-5, vmax=5, title="outlier significance", identity_layout=False, fontsize_factor=1.2, ) # - # # Correlation report # A full correlation report can be created automatically for a dataset by pairwise evaluation of all correlations, significances and outlier significances. # # Note that for a dataset with many different columns the number of outlier significances plots can grow large very rapidly. Therefore, the feature is implemented to only evaluate outlier significances for those variable pairs with a significance and correlation larger than the given thresholds. from phik import report rep = report.correlation_report( data, significance_threshold=3, correlation_threshold=0.5 ) # # Recap # To summarize, the main functions in the phik correlation package working on a dataframe are: # # - `df[twocols].hist2d()` or `series.hist2d(other_series)` # - `df.phik_matrix()` # - `df.global_phik()` # - `df.significance_matrix()` # - `df[twocols].outlier_significance_matrix()` or `series.hist2d(other_series)` # - `df.outlier_significance_matrices()` data[["driver_age", "mileage"]].hist2d() # Alternatively: data['driver_age'].hist2d(data['mileage']) data.phik_matrix() data.global_phik() data.significance_matrix() data[["area", "mileage"]].outlier_significance_matrix() os_matrices = data.outlier_significance_matrices() os_matrices.keys() os_matrices["car_color:mileage"] ================================================ FILE: tests/test_phik.py ================================================ """Project: Phi_K - correlation coefficient package Created: 2018/11/13 Description: Collection of helper functions to get fixtures, i.e. for test data. These are mostly used by the (integration) tests and example notebooks. Authors: KPMG Advanced Analytics & Big Data team, Amstelveen, The Netherlands Redistribution and use in source and binary forms, with or without modification, are permitted according to the terms listed in the file LICENSE. """ import unittest import pytest import pandas as pd import numpy as np from phik import resources, bivariate from phik.simulation import sim_2d_data_patefield, CPP_SUPPORT from phik.binning import auto_bin_data, bin_data from phik.phik import phik_observed_vs_expected_from_rebinned_df, phik_from_hist2d from phik.statistics import get_dependent_frequency_estimates @pytest.mark.filterwarnings("ignore:Using or importing the ABCs from") class PhiKTest(unittest.TestCase): """Tests for calculation of Phi_K""" def test_phik_calculation(self): """Test the calculation of Phi_K""" chi2 = bivariate.chi2_from_phik(0.5, 1000, nx=10, ny=10) self.assertTrue(np.isclose(chi2, 271.16068979654125, 1e-6)) phik = bivariate.phik_from_chi2(chi2, 1000, 10, 10) self.assertTrue(np.isclose(phik, 0.5, 1e-6)) def test_phik_from_hist2d(self): """Test the calculation of Phi_K value from hist2d""" # open fake car insurance data df = pd.read_csv(resources.fixture("fake_insurance_data.csv.gz")) # create contingency matrix cols = ["mileage", "car_size"] interval_cols = ["mileage"] observed = df[cols].hist2d(interval_cols=interval_cols) phik_value = phik_from_hist2d(observed) self.assertAlmostEqual(phik_value, 0.7685888294891855, places=3) def test_phik_observed_vs_expected_from_hist2d(self): """Test the calculation of Phi_K value from hist2d""" # open fake car insurance data df = pd.read_csv(resources.fixture("fake_insurance_data.csv.gz")) # create contingency matrix cols = ["mileage", "car_size"] interval_cols = ["mileage"] observed = df[cols].hist2d(interval_cols=interval_cols).values expected = get_dependent_frequency_estimates(observed) phik_value = phik_from_hist2d(observed=observed, expected=expected) self.assertAlmostEqual(phik_value, 0.7685888294891855, places=3) def test_phik_matrix(self): """Test the calculation of Phi_K""" # open fake car insurance data df = pd.read_csv(resources.fixture("fake_insurance_data.csv.gz")) cols = list(df.columns) # get the phi_k correlation matrix between all variables interval_cols = ["driver_age", "mileage"] phik_corr = df.phik_matrix(interval_cols=interval_cols) self.assertAlmostEqual( phik_corr.values[cols.index("car_color"), cols.index("area")], 0.5904561614620166, places=3, ) self.assertAlmostEqual( phik_corr.values[cols.index("area"), cols.index("car_color")], 0.5904561614620166, places=3, ) self.assertAlmostEqual( phik_corr.values[cols.index("mileage"), cols.index("car_size")], 0.768588987856336, places=3, ) self.assertAlmostEqual( phik_corr.values[cols.index("car_size"), cols.index("mileage")], 0.768588987856336, places=3, ) def test_phik_matrix_observed_vs_expected(self): """Test the calculation of Phi_K""" # open fake car insurance data df = pd.read_csv(resources.fixture("fake_insurance_data.csv.gz")) cols = list(df.columns) # get the phi_k correlation matrix between all variables binned_df, _ = auto_bin_data(df) phik_corr = phik_observed_vs_expected_from_rebinned_df(binned_df, binned_df) self.assertTrue( np.isclose( phik_corr.values[cols.index("car_color"), cols.index("area")], 0.0 ) ) self.assertTrue( np.isclose( phik_corr.values[cols.index("area"), cols.index("car_color")], 0.0 ) ) self.assertTrue( np.isclose( phik_corr.values[cols.index("mileage"), cols.index("car_size")], 0.0 ) ) self.assertTrue( np.isclose( phik_corr.values[cols.index("car_size"), cols.index("mileage")], 0.0 ) ) self.assertTrue( np.isclose( phik_corr.values[cols.index("car_size"), cols.index("car_size")], 1.0 ) ) def test_global_phik(self): """Test the calculation of global Phi_K values""" # open fake car insurance data df = pd.read_csv(resources.fixture("fake_insurance_data.csv.gz")) # get the global phi_k values interval_cols = ["driver_age", "mileage"] gk = df.global_phik(interval_cols=interval_cols) area = (np.where(gk[1] == "area"))[0][0] car_size = (np.where(gk[1] == "car_size"))[0][0] mileage = (np.where(gk[1] == "mileage"))[0][0] self.assertAlmostEqual(gk[0][area][0], 0.6057528003711345, places=3) self.assertAlmostEqual(gk[0][car_size][0], 0.76858883, places=3) self.assertAlmostEqual(gk[0][mileage][0], 0.768588987856336, places=3) def test_significance_matrix_asymptotic(self): """Test significance calculation""" # open fake car insurance data df = pd.read_csv(resources.fixture("fake_insurance_data.csv.gz")) cols = list(df.columns) # get significances interval_cols = ["driver_age", "mileage"] sm = df.significance_matrix( interval_cols=interval_cols, significance_method="asymptotic" ) self.assertTrue( np.isclose( sm.values[cols.index("car_color"), cols.index("area")], 37.66184429195198, ) ) self.assertTrue( np.isclose( sm.values[cols.index("area"), cols.index("car_color")], 37.66184429195198, ) ) self.assertTrue( np.isclose( sm.values[cols.index("mileage"), cols.index("car_size")], 49.3323049685695, ) ) self.assertTrue( np.isclose( sm.values[cols.index("car_size"), cols.index("mileage")], 49.3323049685695, ) ) def test_significance_matrix_hybrid(self): """Test significance calculation""" # open fake car insurance data df = pd.read_csv(resources.fixture("fake_insurance_data.csv.gz")) cols = list(df.columns) # get significances interval_cols = ["driver_age", "mileage"] sm = df.significance_matrix( interval_cols=interval_cols, significance_method="hybrid" ) self.assertTrue( np.isclose( sm.values[cols.index("car_color"), cols.index("area")], 37.63086023595297, atol=10e-2, ) ) self.assertTrue( np.isclose( sm.values[cols.index("area"), cols.index("car_color")], 37.63086023595297, atol=10e-2, ) ) self.assertTrue( np.isclose( sm.values[cols.index("mileage"), cols.index("car_size")], 49.28345609465683, atol=10e-2, ) ) self.assertTrue( np.isclose( sm.values[cols.index("car_size"), cols.index("mileage")], 49.28345609465683, atol=10e-2, ) ) def test_significance_matrix_mc(self): """Test significance calculation""" # open fake car insurance data df = pd.read_csv(resources.fixture("fake_insurance_data.csv.gz")) cols = list(df.columns) # get significances interval_cols = ["driver_age", "mileage"] sm = df.significance_matrix( interval_cols=interval_cols, significance_method="MC" ) self.assertTrue( np.isclose(sm.values[cols.index("car_color"), cols.index("area")], np.inf) ) self.assertTrue( np.isclose(sm.values[cols.index("area"), cols.index("car_color")], np.inf) ) self.assertTrue( np.isclose(sm.values[cols.index("mileage"), cols.index("car_size")], np.inf) ) self.assertTrue( np.isclose(sm.values[cols.index("car_size"), cols.index("mileage")], np.inf) ) def test_hist2d(self): """Test the calculation of global Phi_K values""" # open fake car insurance data df = pd.read_csv(resources.fixture("fake_insurance_data.csv.gz")) # create contingency matrix cols = ["mileage", "car_size"] interval_cols = ["mileage"] h2d = df[cols].hist2d(interval_cols=interval_cols) self.assertEqual(h2d.values[1, 1], 10) self.assertEqual(h2d.values[5, 5], 217) def test_hist2d_array(self): """Test the calculation of global Phi_K values""" # open fake car insurance data df = pd.read_csv(resources.fixture("fake_insurance_data.csv.gz")) # create contingency matrix interval_cols = ["mileage"] h2d = df["mileage"].hist2d(df["car_size"], interval_cols=interval_cols) self.assertEqual(h2d.values[1, 1], 10) self.assertEqual(h2d.values[5, 5], 217) def test_outlier_significance_matrix(self): """Test the calculation of outlier significances""" # open fake car insurance data df = pd.read_csv(resources.fixture("fake_insurance_data.csv.gz")) # calculate outlier significances cols = ["mileage", "car_size"] interval_cols = ["mileage"] om = df[cols].outlier_significance_matrix(interval_cols=interval_cols) self.assertTrue(np.isclose(om.values[0, 1], 21.483476494343552)) self.assertTrue(np.isclose(om.values[2, 4], -1.246784034214704)) def test_outlier_significance_matrices(self): """Test the calculation of outlier significances""" # open fake car insurance data df = pd.read_csv(resources.fixture("fake_insurance_data.csv.gz")) # calculate outlier significances interval_cols = ["mileage", "driver_age"] om = df.outlier_significance_matrices(interval_cols=interval_cols) self.assertTrue(isinstance(om, dict)) @pytest.mark.skipif(not CPP_SUPPORT, reason="cpp not supported") def test_simulation_2d_patefield(self): """Test simulation code using patefield algorithm.""" og_state = np.random.get_state() np.random.seed(42) sample = np.random.randint(1, 200, (50, 2)) # call test function res = sim_2d_data_patefield(sample, seed=42).T np.random.set_state(og_state) mean0, mean1 = res.mean(1) self.assertTrue(np.isclose(mean0, 105.46)) self.assertTrue(np.isclose(mean1, 91.18)) def test_binning_bin_data_bins_tyes(self): # Non regression test # https://github.com/KaveIO/PhiK/issues/28 df = pd.DataFrame({"x": np.random.randn(10)}) bins_int = np.arange(5, 11, 1) bins_float = np.arange(5, 11, 1.0) bins_dict_int = {"x": np.uint8(10)} bins_dict_float = {"x": np.float32(10.3)} for bins in bins_int: bin_data(df, cols=["x"], bins=bins) for bins in bins_float: bin_data(df, cols=["x"], bins=bins) bin_data(df, cols=["x"], bins=bins_dict_int) bin_data(df, cols=["x"], bins=bins_dict_float)