Skip to content

Instantly share code, notes, and snippets.

@jburroni
Created February 21, 2015 18:58
Show Gist options
  • Save jburroni/0e6b2fb1200306463bde to your computer and use it in GitHub Desktop.
Save jburroni/0e6b2fb1200306463bde to your computer and use it in GitHub Desktop.
test with neighbor 2
{
"metadata": {
"name": "pruebas con neighbor-Copy0"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "code",
"collapsed": false,
"input": [
"from statsmodels import iolib\n",
"import pandas\n",
"import statsmodels.api as sm\n",
"from stats import pscore_match as ps\n",
"from stats.weightstats import CompareMeans, DescrStatsW"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 6
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"nsw = pandas.DataFrame(iolib.genfromdta('datasets/dehejiawahha/DW2002.dta'))"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 7
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"nsw['re742'] = nsw.re74*nsw.re74\n",
"nsw['re752'] = nsw.re75*nsw.re75\n",
"nsw['u74'] = nsw.re74==0\n",
"nsw['blacku74'] = nsw.black*nsw.u74"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 8
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"reload(ps)\n",
"psm = ps.PropensityScoreMatch(nsw.t, nsw.ix[:, ['age', 'black', 'blacku74', 'educ', 'hispanic', 'married', 'nodegree', 're74', 're742', 're75', 're752']] , nsw.re78)\n",
"psm.result = ps.PScoreMatchResult()\n",
"#psm.compute_pscore()\n",
"#psm.common_support()\n"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 17
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"psm.fit()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Optimization terminated successfully.\n",
" Current function value: 217.609815\n",
" Iterations 12\n",
" Logit Regression Results \n",
"==============================================================================\n",
"Dep. Variable: t No. Observations: 2675\n",
"Model: Logit Df Residuals: 2664\n",
"Method: MLE Df Model: 10\n",
"Date: Wed, 05 Jun 2013 Pseudo R-squ.: 0.6765\n",
"Time: 15:25:10 Log-Likelihood: -217.61\n",
"converged: True LL-Null: -672.65\n",
" LLR p-value: 4.311e-189\n",
"==============================================================================\n",
" coef std err z P>|z| [95.0% Conf. Int.]\n",
"------------------------------------------------------------------------------\n",
"age -0.0894 0.013 -6.731 0.000 -0.115 -0.063\n",
"black 1.5186 0.339 4.480 0.000 0.854 2.183\n",
"blacku74 1.9179 0.403 4.764 0.000 1.129 2.707\n",
"educ 0.0815 0.030 2.698 0.007 0.022 0.141\n",
"hispanic 2.0341 0.535 3.804 0.000 0.986 3.082\n",
"married -1.6463 0.280 -5.888 0.000 -2.194 -1.098\n",
"nodegree 0.9632 0.282 3.413 0.001 0.410 1.516\n",
"re74 -8.77e-05 3.75e-05 -2.340 0.019 -0.000 -1.42e-05\n",
"re742 1.648e-09 7.62e-10 2.163 0.031 1.54e-10 3.14e-09\n",
"re75 -0.0002 4.2e-05 -5.039 0.000 -0.000 -0.000\n",
"re752 5.797e-10 7.4e-10 0.784 0.433 -8.7e-10 2.03e-09\n",
"=============================================================================="
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"Using common support: [0.0008182669657569011, 0.9622989067110661]\n",
"propensity scores description\n",
"count 1344.000000\n",
"mean 0.118778\n",
"std 0.243619\n",
"min 0.000818\n",
"25% 0.002992\n",
"50% 0.012158\n",
"75% 0.068259\n",
"max 0.962299\n",
"dtype: float64\n"
]
}
],
"prompt_number": 18
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"psm.treatment_effect()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"ename": "AttributeError",
"evalue": "'CaliperMatchingAlgorithm' object has no attribute 'matched'",
"output_type": "pyerr",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-14-e3c9b9c7c12e>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mpsm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtreatment_effect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;32m/Users/jb/Documents/code/pscore/statsmodels/statsmodels/stats/pscore_match.py\u001b[0m in \u001b[0;36mtreatment_effect\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 44\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 45\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mtreatment_effect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 46\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmatching_algo\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtreatment_effect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 47\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 48\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mtreated\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Users/jb/Documents/code/pscore/statsmodels/statsmodels/stats/pscore_match.py\u001b[0m in \u001b[0;36mtreatment_effect\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 159\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 160\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mtreatment_effect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 161\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmean\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtreat_effect_per_treat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mkey\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalue\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmatched\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 162\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 163\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mAttributeError\u001b[0m: 'CaliperMatchingAlgorithm' object has no attribute 'matched'"
]
}
],
"prompt_number": 14
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"plt.scatter(psm.scores[common & psm.control()], psm.treatment_objective_variable[common & psm.control()], color='red')\n",
"plt.scatter(psm.scores[common & psm.treated()], psm.treatment_objective_variable[common & psm.treated()])\n"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 92,
"text": [
"<matplotlib.collections.PathCollection at 0x1090b13d0>"
]
},
{
"output_type": "display_data",
"png": "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\nWsrrr7+eH3/8MUnSz8+vwXJ/f3+S5GOPPcYPPvjAUT59+nSuW7eOe/bs4e233+4o37ZtG++8806S\nZJ8+fZiXl+dYFh4ezqLzqlNa6TTa1u7dLXviAMgxY5R93HEHaTQqZV5eZFAQOW+e8nP9uno9mZLS\n9udXV0euW0fOnk0uXUqWl7d9DE2pqSHfeou8917yjjs4rEc0ddqHCFQS+J4mk5Xp6emejtJjysrK\nGBhoJZBMoJrAh/TxCWZxcXGzts/IyKDRGExgJ4ET1OuncPToya0e56pVq3nnnZM5bdpDzMzMvOT6\nlZWV7NYtil5eCwj8QLV6MTt37smysrJWj629cOe66fYVt6qqiomJiXzllVccZb169WJBQQFJ5dG3\nvqoqKSmJSUlJjvXqq6EKCgoaVFWtWrWKDz/8sGOdnTt3krzKqqrWrGl54gDIu+46V6cfGKj8PmtW\n42osrZb86KPGx6+sJLdsUdo/Tp1q/fP7wx9Is1mJwWgkb7iBrKpq/eO4oq6OvPNOJZnavx8LDAQK\nHF+XWv17PvPMM56N80KOHyc//5w8cOCyHmb//v0MC+tNlUrNzp1tjqri5li0aBG9vH7r9Cd4jCZT\nQKvGt3Tp6zSZbASSqVYvpK9vMLOzsy+6zXfffUeLJYJAndN/jUjeemsCly17kzU1NXzmmSR27dqH\nNtsNXL3aAzdbbcxjiaOuro5TpkzhE0880aB87ty5jraMpKSkRo3jlZWV/Omnn9ijRw9HvXJMTAx3\n7drFurq6Ro3j9Ulk9erVV0/j+J49jotXLcBigHWuJA7npwqTiXz2WaWBu6l1g4OV5cnJZHU1efo0\n2aeP0ibi46MsP3Kk9c6toqJxLBYLaf839Zhvv22UWLvBQuBT+691NJmG8a9//at7xykpITMyyJyc\n1ombJLdvV75DX18lEc+cednbpWpqalze5i9/+QtNppFOF+h0durUs1XjCg4OJ7DX8c+o0TzK5557\n/qLb/PTTTzQag3iuY0M5gWACi2ky9eettw6hyXQDgd0ENtNkCuWmTZtaNe4rjccSx/bt26lSqdi3\nb19ed911vO666/jZZ5+xqKiI8fHxtNlsTEhIaPCY+/zzzzM8PJy9evViqlPPmT179rBPnz4MDw/n\nrFmzHOUVFRWcMGECe/bsyZtuuolZWVmNT6I9Jo5PPiEBbgLoDT210DMIRu5p6RPIgAEXThzKrbTy\n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\nAABJRU5ErkJggg==\n"
}
],
"prompt_number": 92
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"max(psm.scores[common & psm.treated()])"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 96,
"text": [
"0.9622989067110661"
]
}
],
"prompt_number": 96
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"algo = psm.matching_algo\n",
"for radius in [0.2, 0.1, 0.01, 0.001, 0.0001, 0.00001, 0.000001, 0.0000001]:\n",
" algo.caliper = radius\n",
" algo.fit()\n",
" print len(algo.matched.items()), algo.treatment_effect()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"160 1203.56103516\n",
"160"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 1763.29257813\n",
"126"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 1025.63585069\n",
"55"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" -130.843767756\n",
"21"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 412.362769717\n",
"17"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" -410.94318704\n",
"13"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 1093.55679087\n",
"12"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 2721.52213542\n"
]
}
],
"prompt_number": 119
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment