|
| 1 | +{ |
| 2 | + "cells": [ |
| 3 | + { |
| 4 | + "cell_type": "markdown", |
| 5 | + "metadata": {}, |
| 6 | + "source": [ |
| 7 | + "# Finding significant difference with persistent entropy" |
| 8 | + ] |
| 9 | + }, |
| 10 | + { |
| 11 | + "cell_type": "code", |
| 12 | + "execution_count": 27, |
| 13 | + "metadata": {}, |
| 14 | + "outputs": [], |
| 15 | + "source": [ |
| 16 | + "import numpy as np\n", |
| 17 | + "import ripser\n", |
| 18 | + "import matplotlib.pyplot as plt\n", |
| 19 | + "import random\n", |
| 20 | + "from persim.persistent_entropy import *\n", |
| 21 | + "from scipy import stats" |
| 22 | + ] |
| 23 | + }, |
| 24 | + { |
| 25 | + "cell_type": "code", |
| 26 | + "execution_count": 1, |
| 27 | + "metadata": {}, |
| 28 | + "outputs": [ |
| 29 | + { |
| 30 | + "ename": "ModuleNotFoundError", |
| 31 | + "evalue": "No module named 'cechmate'", |
| 32 | + "output_type": "error", |
| 33 | + "traceback": [ |
| 34 | + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", |
| 35 | + "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", |
| 36 | + "\u001b[0;32m<ipython-input-1-fa4902125d99>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mimport\u001b[0m \u001b[0mcechmate\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", |
| 37 | + "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'cechmate'" |
| 38 | + ] |
| 39 | + } |
| 40 | + ], |
| 41 | + "source": [ |
| 42 | + "import cechmate" |
| 43 | + ] |
| 44 | + }, |
| 45 | + { |
| 46 | + "cell_type": "markdown", |
| 47 | + "metadata": {}, |
| 48 | + "source": [ |
| 49 | + "This notebook shows how persistent entropy can be used to find significant difference in the geometrical distribution of the data. We will distinguish point clouds following a normal distribution from point clouds following a uniform distribution. Persistent entropy allow to use a one dimensional non-parametric statistical test instead of a multivariative test." |
| 50 | + ] |
| 51 | + }, |
| 52 | + { |
| 53 | + "cell_type": "markdown", |
| 54 | + "metadata": {}, |
| 55 | + "source": [ |
| 56 | + "## Construct the data\n", |
| 57 | + "We will generate a sample of 20 point clouds, 10 following a normal distribution and 10 following the uniform one. Each point cloud is 2D and have 50 points." |
| 58 | + ] |
| 59 | + }, |
| 60 | + { |
| 61 | + "cell_type": "code", |
| 62 | + "execution_count": 28, |
| 63 | + "metadata": { |
| 64 | + "scrolled": true |
| 65 | + }, |
| 66 | + "outputs": [], |
| 67 | + "source": [ |
| 68 | + "# Normal point clouds\n", |
| 69 | + "mu = 0.5\n", |
| 70 | + "sigma = 0.25\n", |
| 71 | + "l1 = []\n", |
| 72 | + "for i in range(10):\n", |
| 73 | + " d1 = np.random.normal(mu, sigma, (50,2))\n", |
| 74 | + " l1.append(d1)\n", |
| 75 | + "# Uniform point clouds\n", |
| 76 | + "l2 = []\n", |
| 77 | + "for i in range(10):\n", |
| 78 | + " d2 = np.random.random((50,2))\n", |
| 79 | + " l2.append(d2)" |
| 80 | + ] |
| 81 | + }, |
| 82 | + { |
| 83 | + "cell_type": "code", |
| 84 | + "execution_count": 29, |
| 85 | + "metadata": {}, |
| 86 | + "outputs": [ |
| 87 | + { |
| 88 | + "data": { |
| 89 | + "image/png": "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l3Pttdeyf/9+lixZwsKFC6moqOD1118/rWVx/IIdL7/8Mpdccgn9+/ePth2I3+fKK69k48aNVFVV0djYSEVFBdOnTwdC7X0h1Gtmzpw5DBo0iLKysuiZzcaNGxk7dixTp07lvPPOY/r06WnbH2fKSrXMdWkeN8As20aklNOO1WW2HXcmLJ0myzOOtmpububtt9/mhRde4L777uPll1+OPnbmmWeydOlSHnroIZ5//nmOHz/O2LFjWb9+Pf379+fGG2/k17/+NbfffjsARUVF0V4xS5YsoUOHDrz22ms8/PDDTJo0ia1bt9KlSxe+8pWvMHv2bLp27Rp9rw8++IB7772XrVu30rlzZ8aNG8eQIUNOG291dTXvv/8+HTt2pKGhgZKSEmbOnEmnTp340Y9+BMCjjz4abVlcUFDA8uXLW73G/v37efXVV9m7dy/jxo1jz549ST+f6upqfvWrXyU8c1m9ejW1tbVs376dI0eOcOGFFzJ69GggdMaza9cuevbsyciRI9m0aVObevfE094yKv907pXZdjwyYSmLM450knVdjN0+ZcoUwFqb2t27d9O3b1/69+8PwE033RRteQtwzTXXtNo/kgopKyvjq1/9Kj169KBjx46ce+65HDhwoNW+b731VrSdbocOHU57rYjy8nKmT5/Ob3/726Ttf+H0lsWxpk2bRrt27ejXrx/nnntu0k6T6bzxxhtcd911FBQUcNZZZzFmzBi2bNkCwLBhw+jVqxft2rWjoqLC9hbAGtxV/hl/DxTGTTQqLA5tT8ITE5ayOONIp2vXrnz88cettn300Ud069Ytej/SytdKm9p0qYVUbYIjtyP3E72XlRbA69atY9asWWzdupULLrgg6ZjdbgEc+/M60QJYg7vKP+XT4KpF0PkcQEJ/X7UoZWrDrR7urWRxxpFOp06d6NGjB+vXrwdCgf2Pf/xj1umB8847j/3790fTGE8++aRtLW+HDx/Oxo0bOXr0KE1NTaxcufK0fU6ePMmBAwcYN24cCxYsoKGhgU8++STjFsArV67k5MmT7N27l3379jFgwAD69OlDbW1t9D3efvvt6P6FhYXRpQRjjR49mmeffZaWlhYOHz7Ma6+9xrBhw7L7ADKkjcNUfiqfllGe2hMTlsbf0zrnDmnPOKx44oknmDVrFnfeeScA9957L1/5yleyeq2ioiKWLVvG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\n", |
| 90 | + "text/plain": [ |
| 91 | + "<Figure size 432x288 with 1 Axes>" |
| 92 | + ] |
| 93 | + }, |
| 94 | + "metadata": { |
| 95 | + "needs_background": "light" |
| 96 | + }, |
| 97 | + "output_type": "display_data" |
| 98 | + } |
| 99 | + ], |
| 100 | + "source": [ |
| 101 | + "# Example of normal and uniform point clouds\n", |
| 102 | + "plt.scatter(d1[:,0], d1[:,1], label=\"Normal distribution\")\n", |
| 103 | + "plt.scatter(d2[:,0], d2[:,1], label=\"Uniform distribution\")\n", |
| 104 | + "plt.axis('equal')\n", |
| 105 | + "plt.legend()\n", |
| 106 | + "plt.show()\n" |
| 107 | + ] |
| 108 | + }, |
| 109 | + { |
| 110 | + "cell_type": "markdown", |
| 111 | + "metadata": {}, |
| 112 | + "source": [ |
| 113 | + "## Calculate persistent entropy \n", |
| 114 | + "In order to calculate persistent entropy, is necessary to generate the persistent diagrams previously. Note that we do not consider the infinity bar in the computation of persistent entropy since it does not give information about the point cloud. " |
| 115 | + ] |
| 116 | + }, |
| 117 | + { |
| 118 | + "cell_type": "code", |
| 119 | + "execution_count": 30, |
| 120 | + "metadata": {}, |
| 121 | + "outputs": [], |
| 122 | + "source": [ |
| 123 | + "# Generate the persistent diagrams using ripser\n", |
| 124 | + "p = 0\n", |
| 125 | + "dgm_d1 = []\n", |
| 126 | + "dgm_d2 = []\n", |
| 127 | + "for i in range(len(l1)):\n", |
| 128 | + " dgm_d1.append(ripser.ripser(l1[i])['dgms'][p])\n", |
| 129 | + " dgm_d2.append(ripser.ripser(l2[i])['dgms'][p])\n", |
| 130 | + "# Calculate their persistent entropy.\n", |
| 131 | + "e1 = persistent_entropy(dgm_d1)\n", |
| 132 | + "e2 = persistent_entropy(dgm_d2)" |
| 133 | + ] |
| 134 | + }, |
| 135 | + { |
| 136 | + "cell_type": "markdown", |
| 137 | + "metadata": {}, |
| 138 | + "source": [ |
| 139 | + "## Statistical test\n", |
| 140 | + "Finally, perform the statistical test which suits better for your aim. In our case, we perform the Mann–Whitney U test. You can claim there are differences in the geometry of both point clouds if the pvalue is smaller than the significance level α (usually α is 0.05)." |
| 141 | + ] |
| 142 | + }, |
| 143 | + { |
| 144 | + "cell_type": "code", |
| 145 | + "execution_count": 31, |
| 146 | + "metadata": {}, |
| 147 | + "outputs": [ |
| 148 | + { |
| 149 | + "data": { |
| 150 | + "text/plain": [ |
| 151 | + "MannwhitneyuResult(statistic=3.0, pvalue=0.00021981937631328227)" |
| 152 | + ] |
| 153 | + }, |
| 154 | + "execution_count": 31, |
| 155 | + "metadata": {}, |
| 156 | + "output_type": "execute_result" |
| 157 | + } |
| 158 | + ], |
| 159 | + "source": [ |
| 160 | + "stats.mannwhitneyu(e1, e2)" |
| 161 | + ] |
| 162 | + } |
| 163 | + ], |
| 164 | + "metadata": { |
| 165 | + "kernelspec": { |
| 166 | + "display_name": "Python 3", |
| 167 | + "language": "python", |
| 168 | + "name": "python3" |
| 169 | + }, |
| 170 | + "language_info": { |
| 171 | + "codemirror_mode": { |
| 172 | + "name": "ipython", |
| 173 | + "version": 3 |
| 174 | + }, |
| 175 | + "file_extension": ".py", |
| 176 | + "mimetype": "text/x-python", |
| 177 | + "name": "python", |
| 178 | + "nbconvert_exporter": "python", |
| 179 | + "pygments_lexer": "ipython3", |
| 180 | + "version": "3.6.4" |
| 181 | + } |
| 182 | + }, |
| 183 | + "nbformat": 4, |
| 184 | + "nbformat_minor": 2 |
| 185 | +} |
0 commit comments