Skip to content

Instantly share code, notes, and snippets.

@knaaptime
Created July 21, 2018 19:05
Show Gist options
  • Save knaaptime/4eadbc4304c3870f0e32a93e654e9b59 to your computer and use it in GitHub Desktop.
Save knaaptime/4eadbc4304c3870f0e32a93e654e9b59 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import geopandas as gpd\n",
"import numpy as np\n",
"import pandas as pd\n",
"import giddy.api as ga\n",
"from libpysal.api import Queen\n",
"%load_ext autoreload\n",
"%autoreload 2\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"msa_data = pd.HDFStore('/Users/knaaptime/projects/gentrification_markov_old/chicago/data/chicago_msa_data.h5', 'r')"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/knaaptime/anaconda/lib/python3.6/site-packages/pandas/core/reshape/merge.py:544: UserWarning: merging between different levels can give an unintended result (1 levels on the left, 2 on the right)\n",
" warnings.warn(msg, UserWarning)\n"
]
}
],
"source": [
"tracts = msa_data.study_tracts\n",
"\n",
"m = msa_data.study_clusters\n",
"m = m[['geoid', 'year', 'ap']]\n",
"m = m.groupby(['geoid', 'year']).first().unstack()\n",
"m = m.dropna()\n",
"\n",
"tracts = tracts.merge(m.reset_index(), left_on='GEOID', right_on='geoid', how='right')\n",
"tracts = gpd.GeoDataFrame(tracts)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"('WARNING: ', 820, ' is an island (no neighbors)')\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/knaaptime/anaconda/lib/python3.6/site-packages/libpysal/weights/Contiguity.py:181: UserWarning: There is one disconnected observation (no neighbors).\n",
"Island id: 820\n",
" W.__init__(self, neighbors, ids=ids, **kw)\n",
"/Users/knaaptime/anaconda/lib/python3.6/site-packages/libpysal/weights/weights.py:204: UserWarning: The weights matrix is not fully connected. There are 4 components\n",
" warnings.warn(\"The weights matrix is not fully connected. There are %d components\" % self.n_components )\n"
]
}
],
"source": [
"W = Queen.from_dataframe(tracts)\n",
"W.transform = 'r'"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x1a270e7f60>"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"tracts.plot()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/knaaptime/anaconda/lib/python3.6/site-packages/numpy/core/fromnumeric.py:2957: RuntimeWarning: Mean of empty slice.\n",
" out=out, **kwargs)\n",
"/Users/knaaptime/anaconda/lib/python3.6/site-packages/numpy/core/_methods.py:80: RuntimeWarning: invalid value encountered in double_scalars\n",
" ret = ret.dtype.type(ret / rcount)\n"
]
}
],
"source": [
"markov = ga.Spatial_Markov(m.values, W, lag='discrete')"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<giddy.markov.Spatial_Markov at 0x1a2953df60>"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"markov"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"from libpysal.api import lag_categorical"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"calculate lags manually (some errors because of disconnected graph)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/knaaptime/anaconda/lib/python3.6/site-packages/numpy/core/fromnumeric.py:2957: RuntimeWarning: Mean of empty slice.\n",
" out=out, **kwargs)\n",
"/Users/knaaptime/anaconda/lib/python3.6/site-packages/numpy/core/_methods.py:80: RuntimeWarning: invalid value encountered in double_scalars\n",
" ret = ret.dtype.type(ret / rcount)\n"
]
}
],
"source": [
"lag = lag_categorical(W,m.values)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/knaaptime/python_packages/giddy/giddy/markov.py:632: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison\n",
" if self.lag=='discrete':\n",
"/Users/knaaptime/python_packages/giddy/giddy/markov.py:533: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison\n",
" if self.lag =='discrete':\n",
"/Users/knaaptime/python_packages/giddy/giddy/markov.py:535: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison\n",
" elif self.lag=='continuous':\n"
]
}
],
"source": [
"markov = ga.Spatial_Markov(m.values, W, lag=lag) # pass in manual lags"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"pass lag of incorrect shape"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"lag = 4 "
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"ename": "AssertionError",
"evalue": "`lag` parameter must be either `continuous`, `discrete`, or an N*T array of values",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mAssertionError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-12-09f683e2bcef>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mmarkov\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mga\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mSpatial_Markov\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalues\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mW\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlag\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mlag\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# pass in manual lags\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;32m~/python_packages/giddy/giddy/markov.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, y, w, k, permutations, fixed, lag, variable_name)\u001b[0m\n\u001b[1;32m 425\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mclassic\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mp\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 426\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtransitions\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mclassic\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtransitions\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 427\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mT\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mP\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_calc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mw\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 428\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 429\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mpermutations\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/python_packages/giddy/giddy/markov.py\u001b[0m in \u001b[0;36m_calc\u001b[0;34m(self, y, w)\u001b[0m\n\u001b[1;32m 536\u001b[0m \u001b[0mly\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mps\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlag_spatial\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mw\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 537\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 538\u001b[0;31m \u001b[0;32massert\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlag\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mndarray\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"`lag` parameter must be either `continuous`, `discrete`, or an N*T array of values\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 539\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlag\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"`lag` parameter must be either `continuous`, `discrete`, or an N*T array of values\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 540\u001b[0m \u001b[0mly\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlag\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mAssertionError\u001b[0m: `lag` parameter must be either `continuous`, `discrete`, or an N*T array of values"
]
}
],
"source": [
"markov = ga.Spatial_Markov(m.values, W, lag=lag) # pass in manual lags"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python [default]",
"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.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment