Skip to content

Instantly share code, notes, and snippets.

@mikk-c
Last active September 20, 2018 12:21
Show Gist options
  • Save mikk-c/25b568c6744ad264b59e84fe5b580ffc to your computer and use it in GitHub Desktop.
Save mikk-c/25b568c6744ad264b59e84fe5b580ffc to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import networkx as nx\n",
"from collections import Counter\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"from scipy.stats import linregress\n",
"import powerlaw \n",
"\n",
"plt.rcParams['figure.figsize']=[15,7]"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"#Reading the data \n",
"dataset = \"slashdot\" #Try with other datasets\n",
"g = nx.read_edgelist(\"data/%s.txt\" %(dataset), delimiter=\"\\t\")\n",
"\n",
"#Some datasets have a different format than the \"edgelist\" format (have a look at read_gml(), read_pajek())"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" k count p(k) log_k log_p(k)\n",
"443 1 1803 0.021943 0.000000 -1.658707\n",
"340 2 675 0.008215 0.301030 -2.085399\n",
"30 3 27074 0.329496 0.477121 -0.482150\n",
"27 4 12149 0.147856 0.602060 -0.830162\n",
"101 5 7020 0.085435 0.698970 -1.068366\n"
]
}
],
"source": [
"#Calculate the probability distribution function (PDF) for the degree\n",
"\n",
"#count the number of nodes for each degree\n",
"degree = nx.degree(g)\n",
"degree_count = Counter(degree.values())\n",
"\n",
"#stopre the count infromation in a dataframe and sort withe respect to the degree \n",
"degree_df = pd.DataFrame(list(degree_count.items()), columns = ('k', 'count'))\n",
"degree_df = degree_df.sort_values(by='k')\n",
"\n",
"#noramlize the count \n",
"degree_df['p(k)'] = degree_df['count']/degree_df['count'].sum()\n",
"\n",
"\n",
"#calculate the logs\n",
"degree_df['log_k']= np.log10(degree_df['k'])\n",
"degree_df['log_p(k)']= np.log10(degree_df['p(k)'])\n",
"\n",
"print(degree_df.head())"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nM7NM/QsgyaXu1dZlTAAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1212d2e48>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#Plot the PDF on a linear and a logarithmic scale\n",
"plt.clf()\n",
"plt.subplot(1,2,1)\n",
"plt.title('Linear Scale')\n",
"plt.scatter(degree_df['k'], degree_df['p(k)'])\n",
"\n",
"\n",
"plt.subplot(1,2,2)\n",
"plt.title('Logarithmic Scale')\n",
"plt.scatter(degree_df['log_k'], degree_df['log_p(k)']) #Have a thoughtfull look at the x labels (these are powers [2 means 10^2, 3 means 10^3])\n",
"#another way to plot in the log_log scale without calculating the logs is to do the following\n",
"#plt.loglog(degree_df['k'], degree_df['p(k)'])\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" k count p(k) log_k log_p(k) comsum_p(k) log_comsum_p(k)\n",
"241 2554 1 0.000012 3.407221 -4.914703 0.000012 -4.914703\n",
"193 2360 1 0.000012 3.372912 -4.914703 0.000024 -4.613673\n",
"157 2295 1 0.000012 3.360783 -4.914703 0.000037 -4.437581\n",
"209 1863 1 0.000012 3.270213 -4.914703 0.000049 -4.312643\n",
"125 1730 1 0.000012 3.238046 -4.914703 0.000061 -4.215733\n"
]
}
],
"source": [
"#Calculate the cumulative distribution function (CDF)\n",
"\n",
"#Plot the cumulative dist\n",
"degree_df = degree_df.sort_values(by='k', ascending=False)\n",
"degree_df['comsum_p(k)'] = degree_df['p(k)'].cumsum()\n",
"degree_df['log_comsum_p(k)'] = np.log10(degree_df['comsum_p(k)'])\n",
"\n",
"print(degree_df.head())"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1146d02e8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#Plot the CDF on a linear and a logarithmic scale\n",
"\n",
"plt.clf()\n",
"plt.subplot(1,2,1)\n",
"plt.title(\"Linear Scale\")\n",
"plt.scatter(degree_df['k'], degree_df['comsum_p(k)'])\n",
"\n",
"plt.subplot(1,2,2)\n",
"plt.title(\"Logarithmic Scale\")\n",
"plt.scatter(degree_df['log_k'],degree_df['log_comsum_p(k)'])\n",
"#try also\n",
"#plt.loglog(degree_df['k'], degree_df['comsum_p(k)'])\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"-0.962602027046 2.48984708585e-261\n"
]
}
],
"source": [
"#Using the linear regression to check if our distribtuin can be apporoximated to a straight line\n",
"\n",
"slope,intercept,r_value,p_value,std_error = linregress(np.log10(degree_df['k']),np.log10(degree_df['comsum_p(k)']))\n",
"print(r_value,p_value)\n"
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA2wAAAGfCAYAAAAj9VHPAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xucj3X+//HHZQwGYUsHBpskEWYco0mpVkolOSTpXNTa\nTlvZjttWq2928yvbuaTUkg7YkWrTaTvpsMigQqUUw4akHAZjXL8/rhybMafPzGcOj/vtNjc+1/Hd\n5Fbz9Hq/X+8gDEMkSZIkSWVPlXgPQJIkSZKUOwObJEmSJJVRBjZJkiRJKqMMbJIkSZJURhnYJEmS\nJKmMMrBJkiRJUhllYJMkSZKkMsrAJkmSJElllIFNkiRJksqoqvF4af369cODDz44Hq+WJEmSpLib\nPXv26jAM98/vurgEtoMPPphZs2bF49WSJEmSFHdBEHxbkOucEilJkiRJZZSBTZIkSZLKKAObJEmS\nJJVRcVnDJkmSJFVE2dnZLFu2jE2bNsV7KCojatSoQaNGjUhMTCzS/QY2SZIkKUaWLVvGPvvsw8EH\nH0wQBPEejuIsDEN++OEHli1bRtOmTYv0DKdESpIkSTGyadMm9ttvP8OaAAiCgP32269YFVcDmyRJ\nkhRDhjXtqrh/HgxskiRJklRGGdgkSZKkCqR27doALF++nP79+8d5NGXDUUcdFZPnLFy4kNTUVNq1\na8fixYt3PHfJkiU888wzMXnHngxskiRJUgXUsGFDJk2aVKLv2Lp1a5HOFVROTk6xnwHwwQcfxOQ5\n6enp9O/fnzlz5tCsWbMdzzWwSZIkSSqUJUuW0Lp1awDGjRtH3759Oemkk2jevDl/+tOfdlz32muv\n0bVrV9q3b8+AAQNYv349AHfccQedOnWidevWDB06lDAMAejevTtXX301HTt25B//+Mdu77zttts4\n99xzSUtL49xzzyUnJ4fhw4fTqVMn2rZty6OPPgrAtm3bGDZsGIcffjg9evSgV69eO8LlwQcfzPXX\nX0/79u154YUXWLx4MSeddBIdOnSgW7duLFy4EIAXXniB1q1bk5KSwjHHHAPAZ599RufOnUlNTaVt\n27Z8+eWXwM6qYxiGDB8+nNatW9OmTRuee+45AN5++226d+9O//79Ofzwwxk8ePCOf97tXnnlFUaP\nHs3DDz/Mcccdt9tzb7jhBt577z1SU1O59957i/3vble29ZckSZJKSvfuvz525pkwbBhs3Ai9ev36\n/AUXRF+rV8OeUxrffrvIQ8nIyGDOnDlUr16dFi1acMUVV5CUlMSIESN44403qFWrFn/729+45557\nuPXWW7n88su59dZbATj33HN56aWXOO200wDYsmULs2bNyvU9n3/+Oe+//z5JSUk89thj1K1bl5kz\nZ7J582bS0tI48cQTmT17NkuWLOHzzz9n5cqVtGzZkosuumjHM/bbbz8++eQTAE444QQeeeQRmjdv\nzscff8ywYcN46623uOOOO5g+fTrJycmsXbsWgEceeYSrrrqKwYMHs2XLll9V6KZMmUJGRgZz585l\n9erVdOrUaUfYmzNnDp999hkNGzYkLS2NGTNmcPTRR++4t1evXlx22WXUrl2b6667brfnjhw5klGj\nRvHSSy8V+d9PXgxskiRJUiVwwgknULduXQBatWrFt99+y9q1a/n8889JS0sDoiDWtWtXAP7zn//w\n97//nY0bN7JmzRqOOOKIHYFt4MCBeb6nd+/eJCUlAVH1bt68eTuqZz/99BNffvkl77//PgMGDKBK\nlSocdNBBOypW221//vr16/nggw8YMGDAjnObN28GIC0tjQsuuIAzzzyTvn37AtC1a1fuvPNOli1b\nRt++fWnevPluz33//fcZNGgQCQkJHHjggRx77LHMnDmTOnXq0LlzZxo1agRAamoqS5Ys2S2wxYuB\nTZIkSSope6uI1ay59/P16xeroran6tWr7/h9QkICW7duJQxDevTowcSJE3e7dtOmTQwbNoxZs2bR\nuHFjbrvttt32EqtVq1ae79n1XBiG3H///fTs2XO3a1555ZW9jnX7M7Zt20a9evXIyMj41TWPPPII\nH3/8MS+//DIdOnRg9uzZnH322Rx55JG8/PLL9OrVi0cffZTjjz9+r+/aLrfvT1ngGjZJkiSpkurS\npQszZszgq6++AmDDhg188cUXO8JZ/fr1Wb9+fZGbl/Ts2ZOHH36Y7OxsAL744gs2bNhAWloakydP\nZtu2bXz//fe8nUcwrVOnDk2bNuWFF14AogA4d+5cABYvXsyRRx7JHXfcwf7778/SpUv5+uuvOeSQ\nQ7jyyis5/fTTmTdv3m7P69atG8899xw5OTmsWrWKd999l86dOxfpn21X++yzD+vWrSv2c3JjYNvT\n2WfDNdfAggXxHokkSZJUovbff3/GjRvHoEGDaNu2LV27dmXhwoXUq1ePIUOG0Lp1a3r27EmnTp2K\n9PxLLrmEVq1a0b59e1q3bs2ll17K1q1b6devH40aNaJVq1acc845tG/ffsd0zT1NmDCBsWPHkpKS\nwhFHHMHUqVMBGD58OG3atKF169YcddRRpKSk8Pzzz9O6dWtSU1P59NNPOe+883Z71hlnnEHbtm1J\nSUnh+OOP5+9//zsHHXRQkf7ZdtW2bVsSEhJISUmJedORYM/uJ6WhY8eOYV6LFONq61Y45xyYMgWy\ns+Hoo2HIEBgwAH6ZhytJkiTlZcGCBbRs2TLewygX1q9fT+3atfnhhx/o3LkzM2bMiEl4Koty+3MR\nBMHsMAw75neva9h2VbUqPPssrFwJTz0FY8bA+efDqlVw7bUQhhAE8R6lJEmSVO6deuqprF27li1b\ntvDnP/+5woa14jKw5eaAA2D4cLjuOnjnHfhl/wrGj4cHH4ShQ2HgQNjLYktJkiRJectr3Zp25xq2\nvQmCaO+M+vWjzzVrws8/w8UXQ4MG8Pvfwy/7Q0iSJElSrBnYCqNfP/jsM3j/fTjjDBg3Di68MJoq\nCdEaOEmSJEmKEQNbYQUBpKVFa9yWL4d//jM6tm4dNG4cNSmZOXNniJMkSZKkIjKwFcdvfgNt20a/\nX78eevWCZ56Bzp2hXTt46KFoCqUkSZIkFYGBLVYaNICxY6Oq28MPR1W3P/wBvvkmOr9hg1U3SZIk\nlarbbruNUaNGxXsYv7JkyRJa/9LYb9asWVx55ZV7vfaZZ57J8/zy5cvp378/AOPGjePyyy8v1FjG\njRvH8uXLd3y+5JJL+Pzzzwv1jJJkYIu1unXhssuiZiTz50NKSnT8ssugTRv4xz9gzZr4jlGSJEkq\nhK0l2KuhY8eO3HfffXme31tg27p1Kw0bNmTSpElFfv+ege3xxx+nVatWRX5erBnYSkoQ7NwOAODE\nE6NtAK6+Gho2jDbo/vDD+I1PkiRJcZc+J5O0kW/R9IaXSRv5FulzMov9zDvvvJPDDjuMo48+mkWL\nFu04vnjxYk466SQ6dOhAt27dWLhw4Y7jXbp0oU2bNtxyyy3Url0biNrud+vWjd69e+8IMOPHj6dz\n586kpqZy6aWXkpOTA8Brr71G165dad++PQMGDGD9+vW/Gtfs2bNJSUkhJSWFBx98cMfxt99+m1NP\nPRWAd955h9TUVFJTU2nXrh3r1q3jhhtu4L333iM1NZV7772XcePG0bt3b44//nhOOOGE3ap1AEuX\nLqV79+40b96c22+/HeBX14waNYrbbruNSZMmMWvWLAYPHkxqaipZWVl0796dWbNmATBx4kTatGlD\n69atuf7663fcX7t2bW6++WZSUlLo0qUL33//fTH+je2dga20nHsufPwxZGTAJZfAtGkwZUp0bts2\nWL06vuOTJElSqUqfk8mNU+aTuTaLEMhcm8WNU+YXK7TNnj2bZ599loyMDF555RVmzpy549zQoUO5\n//77mT17NqNGjWLYsGEAXHXVVVx11VXMnz+fRo0a7fa8Tz75hH/84x988cUXLFiwgOeee44ZM2aQ\nkZFBQkICEyZMYPXq1YwYMYI33niDTz75hI4dO3LPPff8amwXXngh999/P3Pnzs1z/KNGjeLBBx8k\nIyOD9957j6SkJEaOHEm3bt3IyMjgj3/8445xTZo0iXfeeedXz/jvf//L5MmTmTdvHi+88MKO8JWb\n/v3707FjRyZMmEBGRgZJSUk7zi1fvpzrr7+et956i4yMDGbOnEl6ejoAGzZsoEuXLsydO5djjjmG\nMWPG5PmO4jKwlbaUFHjgAVixAm68MTr2xhuQnAyDBsFbb0UBTpIkSRXa3dMXkZWds9uxrOwc7p6+\nKI878vfee+9xxhlnULNmTerUqUPv3r0BWL9+PR988AEDBgzYUR1bsWIFAB9++CEDBgwA4Oyzz97t\neZ07d6Zp06YAvPnmm8yePZtOnTqRmprKm2++yddff81HH33E559/TlpaGqmpqTz11FN8++23uz1n\n7dq1rF27lmOOOQaAc889N9fxp6Wlcc0113Dfffexdu1aqlatmut1PXr0YN99983z3H777UdSUhJ9\n+/bl/fffL8i37ldmzpxJ9+7d2X///alatSqDBw/m3XffBaBatWo7qoIdOnRgyZIlRXpHQeT+HVDJ\nq1kz+gJo1izahPvpp+HZZ+HQQ6Mq3JVXwi4pX5IkSRXH8rVZhTpeHNu2baNevXpkZGQU6r5atWrt\n+H0Yhpx//vncddddu10zbdo0evTowcSJE4s9zhtuuIFTTjmFV155hbS0NKZPn57vuPYUBMGvPlet\nWpVtuxRFNm3aVKxxJiYm7nhPQkJCia7xs8JWFjRrBqNHQ2YmjB8frXG7/35ITIzOL15s1U2SJKmC\naVgv97+Yz+t4QRxzzDGkp6eTlZXFunXrmDZtGgB16tShadOmvPDCC0AUvrZPTezSpQuTJ08G4Nln\n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\nO7vsASKXH0u6XdJPMlxn7vnrx8o+dhLzzle7Jc13zq0zs8Mk/dXMfsf/9yIjn/GTmH8+ek/STOfc\nO2ZWJ+m/zOwp59yze93D3PNXPuMnlWHuVeMK2/GSXnTOveSce1/SQ5JmDblnlqSfuMCzkurNbHy5\nA8Ww8hk/eMo592dJb2a5hbnnqTzGDp5yzr3unFuX+v5/JW2WFB9yG3PPU3mOHzyUmk/vpH6sSz2G\nNo9g7nkqz/Eri2pM2OKStuz181bt/x++fO5BOPIdm5NSpQVPmdnk8oSGImDuRRvzznNmdqSkJknP\nDbnE3IuALOMnMf+8ZGa1ZrZe0jZJv3POMfciJI/xk8ow96oxYUPlWyfpCOfcpyTdJqkj5HiAasC8\n85yZ/YOkRyRd45zbGXY8KEyO8WP+eco5N+Cca5Q0QdLxZnZc2DEhf3mMX1nmXjUmbAlJh+/184TU\nc4Xeg3DkHBvn3M70ErZz7klJdWY2tnwhYgSYexHFvPNbav/FI5J+5pxrH+YW5p7Hco0f889/zrk+\nSX+QdMaQS8y9CMg0fuWae9WYsK2RdIyZTTSzD0m6UNLKIfeslHRJqnPPiZLeds69Xu5AMayc42dm\nHzMzS31/vIJ/52+UPVIcCOZeRDHv/JUal3slbXbO3ZLhNuaep/IZP+afn8xsnJnVp76PKWiY9j9D\nbmPueSqf8SvX3Ku6LpHOud1mdqWkTkm1ku5zzr1gZpenrt8l6UlJn5f0oqR3JV0aVrzYV57jd56k\nK8xst6SkpAsdJ8R7wcwelPQ5SWPNbKukGxVs4mXueS6PsWPe+WuGpNmSulN7MSTpeklHSMy9CMhn\n/Jh/fhov6YFUh+saSb9wzj3O35yRkc/4lWXuGfMZAAAAAPxUjSWRAAAAABAJJGwAAAAA4CkSNgAA\nAADwFAkbAAAAAHiKhA0AAAAAPEXCBgAAAACeImEDAAAAAE+RsAEAAACAp/4fTOOnQIZhoeUAAAAA\nSUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x11968c400>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#Let us plot both our distribtuion and the straight line returned by the linear regression\n",
"plt.clf()\n",
"plt.scatter(degree_df['log_k'],degree_df['log_comsum_p(k)'], label=\"degree distribution\")\n",
"\n",
"plt.plot(degree_df['log_k'],intercept+slope*degree_df['log_k'], 'r--', label=\"linear regression fit\")\n",
"plt.legend()\n",
"plt.show()\n"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Calculating best minimal value for power law fit\n",
"/Users/obha/anaconda/lib/python3.6/site-packages/powerlaw.py:700: RuntimeWarning: invalid value encountered in true_divide\n",
" (Theoretical_CDF * (1 - Theoretical_CDF))\n",
"/Users/obha/anaconda/lib/python3.6/site-packages/powerlaw.py:700: RuntimeWarning: divide by zero encountered in true_divide\n",
" (Theoretical_CDF * (1 - Theoretical_CDF))\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"-102.688586482 4.29669891742e-29\n",
"Lognormal hypothesis preferred (p = 0.0000, mu = -11.1622, sigma = 3.8751)\n"
]
}
],
"source": [
"#Fitting a powelaw using function comparision\n",
"degrees= sorted(g.degree().values())\n",
"\n",
"results = powerlaw.Fit(degrees, discrete=True)\n",
"\n",
"R, p = results.distribution_compare('power_law', 'exponential') #Here we are checking which of those two functions can be a better fit to our distribtuin ('exponential' vs 'power law')\n",
"if (R > 0) and (p < .05): #[This means that the power law assumption is preffered over the exponential, but still we have to do another test to have our final claim]\n",
" R, p = results.distribution_compare('power_law', 'lognormal') #Here we are checking which of those two functions can be a better fit to our distribtuin ('lognormal' vs 'power law')\n",
" print(R, p)\n",
" if p < .05: #This means that result we get is significant (statistically) and we can trust it.\n",
" if R > 0:\n",
" print(\"Powerlaw hypothesis preferred (p = %1.4f, CDF exponent = %1.4f)\" % (p, results.power_law.alpha - 1)) # The CDF's alpha is the PMF's alpha minus one. The powerlaw package gives us the PMF's alpha.\n",
" else:\n",
" print(\"Lognormal hypothesis preferred (p = %1.4f, mu = %1.4f, sigma = %1.4f)\" % (p, results.lognormal.mu, results.lognormal.sigma))\n",
" else: #We can not trust the result, and we are not able to differenciate even if R > 0 \n",
" print(\"Powerlaw and Lognormal are indistinguishable hypotesis.\")\n",
"else:\n",
" print(\"We cannot rule out an exponential fit. Definitely not a power law.\")\n",
"\n",
" \n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"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.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment