Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save sevamoo/e3d143d0858666f135bee7d6be733f8c to your computer and use it in GitHub Desktop.
Save sevamoo/e3d143d0858666f135bee7d6be733f8c to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Comparing the fitness-complexity model of Pietroneros' work on economy-product export matrix with the steady state probabilites in a Markov chain model, developed based on Input-Outout matrix\n",
"### Here, we just use a random Markov chains and seemingly, the fitness values correlates almost 100% with the Pi values.\n",
"### Further, it can be seen that the complexity values are almost independent as fitness values"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$ H_{c\\tilde{c}} = \\sum_p W_{cp} W_{\\tilde{c}p}$$\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"from matplotlib import pyplot as plt\n",
"import time\n",
"from scipy.linalg import norm\n",
"import pandas as pd\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# Ref: http://www.nature.com/articles/srep00723\n",
"def calculate_pietronero_fitness(W,iteration_n):\n",
" Fn_ = np.ones((W.shape[0],1))\n",
" Qn_ = np.ones((W.shape[1],1))\n",
" ind = np.random.randint(0,high=W.shape[0])\n",
" for i in range(iteration_n):\n",
" Fn = W.dot(Qn_)\n",
" Qn = 1/(W.T.dot(1/Fn_))\n",
" Fn_ = Fn/Fn.sum()\n",
" Qn_ = Qn/Qn.sum()\n",
"# print Fn[ind:ind+1],Fn_[ind:ind+1],Qn[ind:ind+1],Qn_[ind:ind+1]\n",
" return Fn_,Qn_\n",
"\n",
"\n",
"\n",
"# power iteration to calculate the steady state probabilites of a row normalized Markov Chain\n",
"def simulate_markov(TM,verbose='on'):\n",
" e1 = time.time()\n",
" states_n = TM.shape[0]\n",
" pi = np.ones(states_n); pi1 = np.zeros(states_n);\n",
" pi = np.random.rand(states_n)\n",
" # pi[np.random.randint(1,high=size-1, size=1000)] = 1;\n",
" \n",
"\n",
"# pi[np.random.randint(1,high=states_n, size=int(.1*states_n))] = np.random.rand(int(.1*states_n));\n",
" pi = pi/pi.sum()\n",
"# print pi.shape\n",
"# print pi.sum()\n",
" # pi[range(int(.1*size))] = 1;\n",
"\n",
" n = norm(pi - pi1); i = 0;\n",
" diff = []\n",
" while n > 1e-9 and i <1*1e4 :\n",
" pi1 = TM.T.dot(pi).copy()\n",
" n = norm(pi - pi1); i += 1\n",
" diff.append(n)\n",
" pi = pi1.copy()\n",
" if verbose=='on':\n",
" print \"Iterating {} times in {}\".format(i, time.time() - e1)\n",
" \n",
" mixing_ = i\n",
"\n",
" return pi1,mixing_"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.200601\n"
]
}
],
"source": [
"#Toy examples: We initiate random matrices and then by normalizing over columns we get row stochastic Markov Chains\n",
"# Here, each row indicates the amount of money goes from a industry in an economy to another industry. \n",
"# If we want to see this as a an economy-product export model, then the each column shows how much money each node receives.\n",
"# Therefore, by transposing the transition matrix of the constructed markov chain, we can assume that we have the same \n",
"# column normalized matrix as Pietronero's work, where each element shows the export share of each node (in their case, each economy)\n",
"# in each product\n",
"\n",
"# size of the nodes\n",
"sz= 1000\n",
"sample_TM = np.random.rand(sz,sz)\n",
"sample_TM[sample_TM<.8]=0\n",
"print (sample_TM>0).sum()/float(sz*sz)\n",
"for i in range(sample_TM.shape[0]):\n",
" s= sum(sample_TM[i])\n",
" eps = .001\n",
" if s==0:\n",
" sample_TM[i]=eps\n",
" sample_TM[i,i]=1.\n",
" s= sum(sample_TM[i])\n",
" sample_TM[i]=np.divide(sample_TM[i],s)\n",
" else:\n",
" sample_TM[i]=np.divide(sample_TM[i],s) \n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iterating 8 times in 0.00715279579163\n"
]
},
{
"data": {
"image/png": "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\nQAAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x108e82810>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"\n",
"# We use power iteration to get the steady state Pis\n",
"sample_pi,sample_mixing_ = simulate_markov(sample_TM)\n",
"\n",
"# In this case, considering \n",
"W = sample_TM.T.copy()\n",
"pi = sample_pi[:,np.newaxis]\n",
"iteration_n = 10\n",
"sample_Fn_,sample_Qn_ = calculate_pietronero_fitness(W,iteration_n) \n",
"\n",
"# print sample_Fn_.shape,sample_Qn_.shape,pi.shape, W.shape\n",
"\n",
"\n",
"fig = plt.figure(figsize=(7,7))\n",
"plt.subplot(2,2,1)\n",
"p = plt.plot(sample_Fn_,sample_Qn_,'.')\n",
"plt.xlabel('Fitness')\n",
"plt.ylabel('Complexity')\n",
"plt.subplot(2,2,2)\n",
"p = plt.plot(sample_Fn_,sample_pi,'.')\n",
"plt.xlabel('Fitness')\n",
"plt.ylabel('Pi')\n",
"plt.subplot(2,2,3)\n",
"p = plt.plot(sample_Qn_,sample_pi,'.')\n",
"plt.xlabel('Complexity')\n",
"plt.ylabel('Pi')\n",
"plt.tight_layout()\n",
"# print np.corrcoef(np.concatenate((np.log(sample_Fn_),np.log(pi)),axis=1).T)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Pearson product-moment correlation coefficients: 0.997973605111\n",
"Spearman rank-order correlation coefficient: 0.997744333744\n"
]
}
],
"source": [
"print \"Pearson product-moment correlation coefficients: {}\".format(np.corrcoef(np.concatenate((sample_Fn_,pi),axis=1).T)[0,1])\n",
"import scipy.stats as statmodel\n",
"print \"Spearman rank-order correlation coefficient: {}\".format(statmodel.stats.spearmanr(np.concatenate((sample_Fn_,pi),axis=1)).correlation)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"#### Comparisons based on the results from \n",
"Vahid Moosavi, Giulio Isacchini \"A Markovian Model of the Evolving World Input-Output Network.\" PLOS ONE, 2017\n",
"http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0186746"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [],
"source": [
"def aggregate_economy_int_consumptions(WIOT,VA_y):\n",
" economy_n = 41\n",
" industry_n = 35\n",
" economy_int_consumptions_n =1 \n",
" economy_produsction_costs_n=1\n",
" states_n = economy_n*industry_n+economy_n*1+industry_n*1\n",
" \n",
" economy_income = np.zeros((economy_n*industry_n,economy_n))\n",
" economy_int_consumptions = np.zeros((economy_n*industry_n,economy_n))\n",
" ind = economy_n*industry_n\n",
" for i in range(economy_n):\n",
" col = i*5+ind\n",
" economy_int_consumptions[:,i]=WIOT[:,col:col+5].sum(axis=1)\n",
" \n",
" #I don't know why but sometimes it gets a bit negative?!!! due to change in inventory (5th column of economy consum)\n",
" economy_int_consumptions[economy_int_consumptions<0]=0\n",
" \n",
" industry_produsction_costs = np.around(WIOT[:].sum(axis=1)-WIOT[:,:economy_n*industry_n].sum(axis=0)-VA_y,decimals=3)\n",
"\n",
" \n",
" return economy_int_consumptions,industry_produsction_costs\n",
" \n",
"def build_markov_chain_Dense(Q,WIOT,economy_n,industry_n,economy_int_consumptions,industry_produsction_costs):\n",
" e0 = time.time()\n",
" eps = .001\n",
" \n",
" for i in range(0,economy_n*industry_n):\n",
" \n",
" #For industry interactions\n",
" for j in range(0,economy_n*industry_n):\n",
" Q[i,j]=WIOT[j,i]\n",
" \n",
" #For payments of industry to its economy: This is the source of income for the economy\n",
" economy_ind_industry = i/industry_n\n",
" Q[i,economy_n*industry_n+economy_ind_industry]=industry_produsction_costs[i]\n",
" \n",
" #For economy's costs (i.e. consumptions)\n",
" ind_economy_inTM = economy_n*industry_n\n",
" \n",
" for j in range(economy_n):\n",
" Q[j+ind_economy_inTM,i]=economy_int_consumptions[i,j]\n",
"\n",
" singular_industries = [] \n",
" for i in range(Q.shape[0]):\n",
" s= sum(Q[i])\n",
" if s==0:\n",
" singular_industries.append(i%economy_n)\n",
" Q[i]=eps\n",
" Q[i,i]=1.\n",
" s= sum(Q[i])\n",
" Q[i]=np.divide(Q[i],s)\n",
" else:\n",
" Q[i]=np.divide(Q[i],s) \n",
" print \"Making the TM in {} second\".format(time.time() - e0)\n",
"# print np.unique(singular_industries)\n",
"# print \"Transition Matrix is ready!\"\n",
" return np.around(Q,decimals=10),list(np.unique(singular_industries))\n",
"def simulate_markov(TM,verbose='on'):\n",
" e1 = time.time()\n",
" states_n = TM.shape[0]\n",
" pi = np.ones(states_n); pi1 = np.zeros(states_n);\n",
" pi = np.random.rand(states_n)\n",
" # pi[np.random.randint(1,high=size-1, size=1000)] = 1;\n",
" \n",
"\n",
"# pi[np.random.randint(1,high=states_n, size=int(.1*states_n))] = np.random.rand(int(.1*states_n));\n",
" pi = pi/pi.sum()\n",
"# print pi.shape\n",
"# print pi.sum()\n",
" # pi[range(int(.1*size))] = 1;\n",
"\n",
" n = norm(pi - pi1); i = 0;\n",
" diff = []\n",
" while n > 1e-6 and i <1*1e4 :\n",
" pi1 = TM.T.dot(pi).copy()\n",
" n = norm(pi - pi1); i += 1\n",
" diff.append(n)\n",
" pi = pi1.copy()\n",
" if verbose=='on':\n",
" print \"Iterating {} times in {}\".format(i, time.time() - e1)\n",
" \n",
" mixing_ = i\n",
"\n",
" return pi1,mixing_\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1995 (1435, 1640)\n",
"1996 (1435, 1640)\n",
"1997 (1435, 1640)\n",
"1998 (1435, 1640)\n",
"1999 (1435, 1640)\n",
"2000 (1435, 1640)\n",
"2001 (1435, 1640)\n",
"2002 (1435, 1640)\n",
"2003 (1435, 1640)\n",
"2004 (1435, 1640)\n",
"2005 (1435, 1640)\n",
"2006 (1435, 1640)\n",
"2007 (1435, 1640)\n",
"2008 (1435, 1640)\n",
"2009 (1435, 1640)\n",
"2010 (1435, 1640)\n",
"2011 (1435, 1640)\n"
]
}
],
"source": [
"\n",
"WIO = list()\n",
"for i in range(1995,2012):\n",
" d = pd.read_csv('/All_Files/Files/Postdoc research 2015/Applications/Economy/Data/WIOD/wiot'+str(i)+'_row_apr12.csv',header=[0,1,2])\n",
" WIO.append(d.values[:])\n",
" print i, d.shape"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(17, 1435)"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"VA = pd.read_csv('/All_Files/Files/Postdoc research 2015/Applications/Economy/Data/WIOD/VAs.csv',index_col=[0])\n",
"VA.shape"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Making the TM in 0.6106300354 second\n",
"Iterating 157 times in 0.0944938659668\n",
"Making the TM in 0.615885972977 second\n",
"Iterating 141 times in 0.0783729553223\n",
"Making the TM in 0.609199047089 second\n",
"Iterating 138 times in 0.0774688720703\n",
"Making the TM in 0.591631889343 second\n",
"Iterating 139 times in 0.0779459476471\n",
"Making the TM in 0.603655099869 second\n",
"Iterating 139 times in 0.081817150116\n",
"Making the TM in 0.609370946884 second\n",
"Iterating 127 times in 0.0698919296265\n",
"Making the TM in 0.613965034485 second\n",
"Iterating 124 times in 0.0720388889313\n",
"Making the TM in 0.627006053925 second\n",
"Iterating 125 times in 0.0796999931335\n",
"Making the TM in 0.624054908752 second\n",
"Iterating 124 times in 0.0706520080566\n",
"Making the TM in 0.70018696785 second\n",
"Iterating 116 times in 0.0678470134735\n",
"Making the TM in 0.638143062592 second\n",
"Iterating 112 times in 0.0643458366394\n",
"Making the TM in 0.652940988541 second\n",
"Iterating 108 times in 0.0611710548401\n",
"Making the TM in 0.597891807556 second\n",
"Iterating 107 times in 0.0593972206116\n",
"Making the TM in 0.616593122482 second\n",
"Iterating 98 times in 0.0557708740234\n",
"Making the TM in 0.649264097214 second\n",
"Iterating 117 times in 0.0658869743347\n",
"Making the TM in 0.635890007019 second\n",
"Iterating 101 times in 0.0617570877075\n",
"Making the TM in 0.668773889542 second\n",
"Iterating 93 times in 0.0566828250885\n"
]
},
{
"data": {
"text/plain": [
"<matplotlib.figure.Figure at 0x10c971a50>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"Pi =[]\n",
"TMs = []\n",
"Mixing_times =[]\n",
"singular_ids = []\n",
"fig3 = plt.figure(figsize=(15,7))\n",
"for i,WIOT in enumerate(WIO):\n",
" VA_y = VA.values[i]\n",
"# VA_y = np.zeros(VA.values[0].shape[0])\n",
" economy_int_consumptions,industry_produsction_costs = aggregate_economy_int_consumptions(WIOT,VA_y)\n",
"# economy_int_consumptions,industry_produsction_costs = aggregate_economy_int_consumptions(WIOT)\n",
" economy_n = 41\n",
" industry_n = 35\n",
" states_n = economy_n*industry_n+economy_n\n",
" # Q = pysparse.spmatrix.ll_mat(states_n,states_n)\n",
" TM = np.zeros((states_n,states_n))\n",
" TM, singular_id = build_markov_chain_Dense(TM,WIOT,economy_n,industry_n,economy_int_consumptions,industry_produsction_costs)\n",
" TMs.append(TM)\n",
" singular_ids.extend(singular_id)\n",
" t,mixing_ = simulate_markov(TM)\n",
" Pi.append(t)\n",
" Mixing_times.append(mixing_)\n",
"\n",
"singular_ids = np.unique(singular_ids)\n"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"econ_ind=True\n",
"All_F_economy = []\n",
"All_F_economy = []\n",
"year = 1\n",
"if econ_ind==True:\n",
" W = TMs[year].T.copy()\n",
" Data_all = np.asarray(Pi[year]).T\n",
" W_economy = np.zeros((economy_n,W.shape[1]))\n",
" pi_economy = np.zeros((economy_n,1))\n",
" F_economy = np.zeros((economy_n,1))\n",
" for i in range(economy_n):\n",
" ind_indusrty = range(i*industry_n,(i+1)*industry_n)+ [industry_n*economy_n+i]\n",
" W_economy[i]=W[ind_indusrty].sum(axis=0)\n",
" pi_economy[i] = Data_all[ind_indusrty].sum()\n",
" pi = pi_economy\n",
" W= W_economy\n",
"# Labels = economy_names\n",
"else:\n",
" W = TMs[year].T.copy()\n",
" pi = Pi[year][:,np.newaxis]\n",
"iteration_n = 100\n",
"Fn_,Qn_ = calculate_pietronero_fitness(W,iteration_n) \n",
"\n",
"if econ_ind==False:\n",
" for i in range(economy_n):\n",
" ind_indusrty =range(i*industry_n,(i+1)*industry_n)+ [industry_n*economy_n+i]\n",
" F_economy[i] = Fn_[ind_indusrty].sum()\n",
"else:\n",
" F_economy = Fn_"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(41, 1) (1476, 1) (41, 1) (41, 1476)\n"
]
}
],
"source": [
"print Fn_.shape,Qn_.shape,pi.shape, W.shape"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[ 1. 0.98824652]\n",
" [ 0.98824652 1. ]]\n",
"Pearson product-moment correlation coefficients: 0.988246523986\n",
"Spearman rank-order correlation coefficient: 0.983101045296\n"
]
},
{
"data": {
"image/png": "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\nQM7dei0mAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x104a28d90>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"p = plt.loglog(Fn_,pi,'.')\n",
"# print np.corrcoef(np.concatenate((np.log(Fn_),np.log(Qn_)),axis=1).T)\n",
"print np.corrcoef(np.concatenate((np.log(Fn_),np.log(pi)),axis=1).T)\n",
"print \"Pearson product-moment correlation coefficients: {}\".format(np.corrcoef(np.concatenate((np.log(Fn_),np.log(pi)),axis=1).T)[0,1])\n",
"import scipy.stats as statmodel\n",
"print \"Spearman rank-order correlation coefficient: {}\".format(statmodel.stats.spearmanr(np.concatenate((Fn_,pi),axis=1)).correlation)"
]
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python [default]",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.13"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment