diff --git a/paul/did.html b/paul/did.html new file mode 100644 index 0000000..17a2bc1 --- /dev/null +++ b/paul/did.html @@ -0,0 +1,1172 @@ + + + + + + + + + + + + + + ECON 526 - Difference in Differences + + + + + + + + + + + + + + + + + + + + +
+
+ +
+

Difference in Differences

+

ECON526

+ +
+
+
+Paul Schrimpf +
+

+ University of British Columbia +

+
+
+ +
+ +
+
+
+

Introduction

+ +
+
+

Introduction

+
    +
  • Have some policy applied to some observations but not others, and observe outcome before and after policy

  • +
  • Idea: compare outcome before and after policy in treated and untreated group

  • +
  • Change in outcome in treated group reflects both effect of policy and time trend, change in untreated group captures time trend

  • +
+
+
+

Example: Impact of Billboards

+
    +
  • From Facure (2022) chapter 13
  • +
  • Bank placed billboards advertising savings accounts in Porto Alegre in July
  • +
  • Data on deposits in May and July in Porto Alegre and Florianopolis
  • +
+
+
+

Example: Impact of Billboards

+
+
+Code +
import warnings
+warnings.filterwarnings('ignore')
+
+import pandas as pd
+import numpy as np
+from matplotlib import style
+from matplotlib import pyplot as plt
+import seaborn as sns
+import statsmodels.formula.api as smf
+
+datadir="./data"
+
+
+
+
data = pd.read_csv(datadir + "/billboard_impact.csv")
+data.head()
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
depositspoajul
04210
1010
25210
311910
42110
+ +
+
+
+
+
+

Means and Differences

+
+
tbl = data.groupby(['jul','poa']).mean().unstack()
+tbl
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
deposits
poa01
jul
0171.64230846.01600
1206.16550087.06375
+ +
+
+
+
+
tbl.diff(axis=0).iloc[1,:]
+
+
          poa
+deposits  0      34.523192
+          1      41.047750
+Name: 1, dtype: float64
+
+
+
+
tbl.diff(axis=1).iloc[:,1]
+
+
jul
+0   -125.626308
+1   -119.101750
+Name: (deposits, 1), dtype: float64
+
+
+
+
tbl.diff(axis=0).diff(axis=1).iloc[1,1]
+
+
6.524557692307688
+
+
+
+
+
+

Difference in Differences

+

\[ +\def\Er{{\mathrm{E}}} +\def\En{{\mathbb{E}_n}} +\def\cov{{\mathrm{Cov}}} +\def\var{{\mathrm{Var}}} +\def\R{{\mathbb{R}}} +\newcommand\norm[1]{\left\lVert#1\right\rVert} +\def\rank{{\mathrm{rank}}} +\newcommand{\inpr}{ \overset{p^*_{\scriptscriptstyle n}}{\longrightarrow}} +\def\inprob{{\,{\buildrel p \over \rightarrow}\,}} +\def\indist{\,{\buildrel d \over \rightarrow}\,} +\DeclareMathOperator*{\plim}{plim} +\]

+
+
+

Setup

+
    +
  • Two periods, binary treatment in second period
  • +
  • Potential outcomes \(\{y_{it}(0),y_{it}(1)\}_{t=0}^1\) for \(i=1,...,N\)
  • +
  • Treatment \(D_{it} \in \{0,1\}\), +
      +
    • \(D_{i0} = 0\) \(\forall i\)
    • +
    • \(D_{i1} = 1\) for some, \(0\) for others
    • +
  • +
  • Observe \(y_{it} = y_{it}(0)(1-D_{it}) + D_{it} y_{it}(1)\)
  • +
+
+
+

Identification

+
    +
  • Average treatment effect on the treated: \[ +\begin{align*} +ATT & = \Er[y_{i1}(1) - \color{red}{y_{i1}(0)} | D_{i1} = 1] \\ +& = \Er[y_{i1}(1) - y_{i0}(0) | D_{i1} = 1] - \Er[\color{red}{y_{i1}(0)} - y_{i0}(0) | D_{i1}=1] \\ +& \text{ assume } \Er[\color{red}{y_{i1}(0)} - y_{i0}(0) | D_{i1}=1] = \Er[y_{i1}(0) - y_{i0}(0) | D_{i1}=0] \\ +& = \Er[y_{i1}(1) - y_{i0}(0) | D_{i1} = 1] - \Er[y_{i1}(0) - y_{i0}(0) | D_{i1}=0] \\ +& = \Er[y_{i1} - y_{i0} | D_{i1}=1, D_{i0}=0] - \Er[y_{i1} - y_{i0} | D_{i1}=0, D_{i0}=0] +\end{align*} +\]
  • +
+
+
+

Important Assumptions

+
    +
  • No anticipation: \(D_{i1}=1\) does not affect \(y_{i0}\) +
      +
    • built into the potential outcomes notation we used, relax by allowing potential outcomes given sequence of \(D\), i.e. \(y_{it}(D_{i0},D_{i1})\)
    • +
  • +
  • Parallel trends: \(\Er[\color{red}{y_{i1}(0)} - y_{i0}(0) |D_{i1}=1,D_{i0}=0] = \Er[y_{i1}(0) - y_{i0}(0) | D_{i1}=0], D_{i0}=0]\) +
      +
    • not invariant to tranformations of \(y\)
    • +
  • +
+
+
+

Estimation

+
+
    +
  • Plugin: \[ +\widehat{ATT} = \frac{ \sum_{i=1}^n (y_{i1} - y_{i0})D_{i1}(1-D_{i0})}{\sum_{i=1}^n D_{i1}(1-D_{i0})} - \frac{ \sum_{i=1}^n (y_{i1} - y_{i0})(1-D_{i1})(1-D_{i0})}{\sum_{i=1}^n (1-D_{i1})(1-D_{i0})} +\]

  • +
  • Regression: \[ +y_{it} = \delta_t + \alpha 1\{D_{i1}=1\} + \beta D_{it} + \epsilon_{it} +\] then \(\hat{\beta} = \widehat{ATT}\)

  • +
+
+
+
+
+

Billboard Application Revisited

+ +
+
+

Visualizing Difference in Differences

+
+
poa_before = data.query("poa==1 & jul==0")["deposits"].mean()
+poa_after = data.query("poa==1 & jul==1")["deposits"].mean()
+fl_before = data.query("poa==0 & jul==0")["deposits"].mean()
+fl_after = data.query("poa==0 & jul==1")["deposits"].mean()
+plt.figure(figsize=(10,5))
+plt.plot(["May", "Jul"], [fl_before, fl_after], label="FL", lw=2)
+plt.plot(["May", "Jul"], [poa_before, poa_after], label="POA", lw=2)
+
+plt.plot(["May", "Jul"], [poa_before, poa_before+(fl_after-fl_before)],
+         label="Counterfactual", lw=2, color="C2", ls="-.")
+
+plt.legend();
+
+

+
+
+
+
+

Estimation via Regression

+
+
smf.ols('deposits ~ poa*jul', data=data).fit().summary().tables[1]
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
coefstd errtP>|t|[0.0250.975]
Intercept171.64232.36372.6250.000167.009176.276
poa-125.62634.484-28.0150.000-134.418-116.835
jul34.52323.03611.3720.00028.57140.475
poa:jul6.52465.7291.1390.255-4.70617.755
+
+
+
+
+

Further Topics

+
    +
  • More periods, more groups
  • +
  • Covariates
  • +
  • Pre-trends
  • +
+
+
+

Reading

+ +
+
+

References

+ + +
+
+Facure, Matheus. 2022. Causal Inference for the Brave and True. https://matheusfacure.github.io/python-causality-handbook/landing-page.html. +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/paul/did.ipynb b/paul/did.ipynb new file mode 100644 index 0000000..6f614e4 --- /dev/null +++ b/paul/did.ipynb @@ -0,0 +1,328 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Difference in Differences\n", + "\n", + "ECON526\n", + "\n", + "Paul Schrimpf (University of British Columbia)\n", + "\n", + "# Introduction\n", + "\n", + "## Introduction\n", + "\n", + "- Have some policy applied to some observations but not others, and\n", + " observe outcome before and after policy\n", + "\n", + "- Idea: compare outcome before and after policy in treated and\n", + " untreated group\n", + "\n", + "- Change in outcome in treated group reflects both effect of policy\n", + " and time trend, change in untreated group captures time trend\n", + "\n", + "## Example: Impact of Billboards\n", + "\n", + "- From Facure (2022) chapter 13\n", + "- Bank placed billboards advertising savings accounts in Porto Alegre\n", + " in July\n", + "- Data on deposits in May and July in Porto Alegre and Florianopolis\n", + "\n", + "## Example: Impact of Billboards" + ], + "id": "94116228-a0eb-4c4b-99c5-7c682ada876f" + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import warnings\n", + "warnings.filterwarnings('ignore')\n", + "\n", + "import pandas as pd\n", + "import numpy as np\n", + "from matplotlib import style\n", + "from matplotlib import pyplot as plt\n", + "import seaborn as sns\n", + "import statsmodels.formula.api as smf\n", + "\n", + "datadir=\"./data\"" + ], + "id": "2e0ba730" + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "output_type": "display_data", + "metadata": {}, + "data": { + "text/html": [ + "\n", + "" + ] + } + } + ], + "source": [ + "data = pd.read_csv(datadir + \"/billboard_impact.csv\")\n", + "data.head()" + ], + "id": "8f71de33" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Means and Differences" + ], + "id": "6f289dfb-893c-426c-b4f3-4a105a20dd28" + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "output_type": "display_data", + "metadata": {}, + "data": { + "text/html": [ + "\n", + "" + ] + } + } + ], + "source": [ + "tbl = data.groupby(['jul','poa']).mean().unstack()\n", + "tbl" + ], + "id": "13fac2b6" + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "output_type": "display_data", + "metadata": {}, + "data": { + "text/plain": [ + " poa\n", + "deposits 0 34.523192\n", + " 1 41.047750\n", + "Name: 1, dtype: float64" + ] + } + } + ], + "source": [ + "tbl.diff(axis=0).iloc[1,:]" + ], + "id": "547145fd" + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "output_type": "display_data", + "metadata": {}, + "data": { + "text/plain": [ + "jul\n", + "0 -125.626308\n", + "1 -119.101750\n", + "Name: (deposits, 1), dtype: float64" + ] + } + } + ], + "source": [ + "tbl.diff(axis=1).iloc[:,1]" + ], + "id": "32f1c5cc" + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "output_type": "display_data", + "metadata": {}, + "data": { + "text/plain": [ + "6.524557692307688" + ] + } + } + ], + "source": [ + "tbl.diff(axis=0).diff(axis=1).iloc[1,1]" + ], + "id": "91872c1e" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Difference in Differences\n", + "\n", + "$$\n", + "\\def\\Er{{\\mathrm{E}}}\n", + "\\def\\En{{\\mathbb{E}_n}}\n", + "\\def\\cov{{\\mathrm{Cov}}}\n", + "\\def\\var{{\\mathrm{Var}}}\n", + "\\def\\R{{\\mathbb{R}}}\n", + "\\newcommand\\norm[1]{\\left\\lVert#1\\right\\rVert}\n", + "\\def\\rank{{\\mathrm{rank}}}\n", + "\\newcommand{\\inpr}{ \\overset{p^*_{\\scriptscriptstyle n}}{\\longrightarrow}}\n", + "\\def\\inprob{{\\,{\\buildrel p \\over \\rightarrow}\\,}}\n", + "\\def\\indist{\\,{\\buildrel d \\over \\rightarrow}\\,}\n", + "\\DeclareMathOperator*{\\plim}{plim}\n", + "$$\n", + "\n", + "## Setup\n", + "\n", + "- Two periods, binary treatment in second period\n", + "- Potential outcomes $\\{y_{it}(0),y_{it}(1)\\}_{t=0}^1$ for $i=1,...,N$\n", + "- Treatment $D_{it} \\in \\{0,1\\}$,\n", + " - $D_{i0} = 0$ $\\forall i$\n", + " - $D_{i1} = 1$ for some, $0$ for others\n", + "- Observe $y_{it} = y_{it}(0)(1-D_{it}) + D_{it} y_{it}(1)$\n", + "\n", + "## Identification\n", + "\n", + "- Average treatment effect on the treated: $$\n", + " \\begin{align*}\n", + " ATT & = \\Er[y_{i1}(1) - \\color{red}{y_{i1}(0)} | D_{i1} = 1] \\\\\n", + " & = \\Er[y_{i1}(1) - y_{i0}(0) | D_{i1} = 1] - \\Er[\\color{red}{y_{i1}(0)} - y_{i0}(0) | D_{i1}=1] \\\\\n", + " & \\text{ assume } \\Er[\\color{red}{y_{i1}(0)} - y_{i0}(0) | D_{i1}=1] = \\Er[y_{i1}(0) - y_{i0}(0) | D_{i1}=0] \\\\\n", + " & = \\Er[y_{i1}(1) - y_{i0}(0) | D_{i1} = 1] - \\Er[y_{i1}(0) - y_{i0}(0) | D_{i1}=0] \\\\\n", + " & = \\Er[y_{i1} - y_{i0} | D_{i1}=1, D_{i0}=0] - \\Er[y_{i1} - y_{i0} | D_{i1}=0, D_{i0}=0]\n", + " \\end{align*}\n", + " $$\n", + "\n", + "## Important Assumptions\n", + "\n", + "- No anticipation: $D_{i1}=1$ does not affect $y_{i0}$\n", + " - built into the potential outcomes notation we used, relax by\n", + " allowing potential outcomes given sequence of $D$,\n", + " i.e. $y_{it}(D_{i0},D_{i1})$\n", + "- Parallel trends:\n", + " $\\Er[\\color{red}{y_{i1}(0)} - y_{i0}(0) |D_{i1}=1,D_{i0}=0] = \\Er[y_{i1}(0) - y_{i0}(0) | D_{i1}=0], D_{i0}=0]$\n", + " - not invariant to tranformations of $y$\n", + "\n", + "## Estimation\n", + "\n", + "- Plugin: $$\n", + " \\widehat{ATT} = \\frac{ \\sum_{i=1}^n (y_{i1} - y_{i0})D_{i1}(1-D_{i0})}{\\sum_{i=1}^n D_{i1}(1-D_{i0})} - \\frac{ \\sum_{i=1}^n (y_{i1} - y_{i0})(1-D_{i1})(1-D_{i0})}{\\sum_{i=1}^n (1-D_{i1})(1-D_{i0})}\n", + " $$\n", + "\n", + "- Regression: $$\n", + " y_{it} = \\delta_t + \\alpha 1\\{D_{i1}=1\\} + \\beta D_{it} + \\epsilon_{it}\n", + " $$ then $\\hat{\\beta} = \\widehat{ATT}$\n", + "\n", + "# Billboard Application Revisited\n", + "\n", + "## Visualizing Difference in Differences" + ], + "id": "7a1922b9-d146-4b26-b4b5-0b68b20cd1a3" + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "output_type": "display_data", + "metadata": {}, + "data": { + "image/png": "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\n6G7p04DsjLgraEdO0ran8984APQ0/ibuBf71r39p0aJFWrVqlerq6lRUVKQJEybo+uuv11FHHZXy\n82/ZskUjRozQ119/rYMPPrjbx3vssce0e/duOZ1OZWRkdPt4zz77rG655ZZeG2CAA1Fk6VP7FbTD\nz7+r72bpkyWtJTzEW5ei9TmlTwDQdxA8etjKlSt10kkn6fLLL9fHH3+ssrIy1dbW6k9/+pNefvnl\n/RI8kqWpqUnp6enatGmTxowZk5TQAWD/CoVCqvX6W7s++eTsYCXt7pY+OTItrQEizgraDptKczMp\nfQKAfsYUCoW6/s9RPcDr9cput8vj8chmsxnbGxsbtXnzZo0cObJPfeE99NBDNX78eC1durTD9zz7\n7LNavHixtm3bpmHDhun666/XxRdfLCl+uVD7EYKZM2fK5/OpqKhIy5Ytk8Vi0eWXX64777xTkpSV\nlSWPxyO73S6TyaQLL7xQjz32mHw+n+644w699NJL2rNnj8aOHasHHnhAFRUVkqRf/OIXevvttzV1\n6lT97ne/U15enkpLS/X+++9LkjIyMoxjXX755frb3/6myspKDRgwQD/96U+1cOFCpaW1/Eul1+vV\nokWL9Ic//EG7du3SgAEDtHDhQo0cOVInnniimpqaZLfbJUmPP/64Jk6cGDNK0/7PYuXKlbr55pu1\nYcMGBYNBVVRU6L777lN5eXmHf3ZhffX3CdibeKVPu9wt4cJYryJJpU9Gt6c4K2hT+gQA/UtH38/b\nOyD+5l/21TK99NVL3TrGqQedqtljZxuvt7m36Wd//5kk6ZzDztF5h52X8DG//vprbdy4UQ899FCH\n7/njH/+on/3sZ3rllVc0ZcoUvfvuuzrjjDOUm5urM844o9PneuWVV7RkyRI98MAD+sc//qHJkyfr\nuOOO09SpU/Xll19qxIgR+uyzz6JKra688krt2LFDq1atUmlpqR577DFNmzZNGzduVF5eniTpk08+\n0Y9+9CNt3rxZwWBQdrtdM2fOVHNzs55//nnjWOPHj9edd96p4uJirV69WqeccooGDRqkK664QpJ0\n2WWXaePGjXrttdd02GGHadeuXdq9e7eOOuooPfbYYzGlVlu2bNnnPVutVi1evFjf+9731NjYqOuu\nu06nn366vv76a6Wnp3f6zw7oC8KlT/FW0A6HC1edT92ofGorfYpcm4LSJwBAJx0QwaPaV61NtZu6\n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\n" + } + } + ], + "source": [ + "poa_before = data.query(\"poa==1 & jul==0\")[\"deposits\"].mean()\n", + "poa_after = data.query(\"poa==1 & jul==1\")[\"deposits\"].mean()\n", + "fl_before = data.query(\"poa==0 & jul==0\")[\"deposits\"].mean()\n", + "fl_after = data.query(\"poa==0 & jul==1\")[\"deposits\"].mean()\n", + "plt.figure(figsize=(10,5))\n", + "plt.plot([\"May\", \"Jul\"], [fl_before, fl_after], label=\"FL\", lw=2)\n", + "plt.plot([\"May\", \"Jul\"], [poa_before, poa_after], label=\"POA\", lw=2)\n", + "\n", + "plt.plot([\"May\", \"Jul\"], [poa_before, poa_before+(fl_after-fl_before)],\n", + " label=\"Counterfactual\", lw=2, color=\"C2\", ls=\"-.\")\n", + "\n", + "plt.legend();" + ], + "id": "4bcdb7c3" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Estimation via Regression" + ], + "id": "dce73ae3-666e-4ee8-a48c-a5401cf5ded8" + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "output_type": "display_data", + "metadata": {}, + "data": {} + } + ], + "source": [ + "smf.ols('deposits ~ poa*jul', data=data).fit().summary().tables[1]" + ], + "id": "4dd50c15" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Further Topics\n", + "\n", + "- More periods, more groups\n", + "- Covariates\n", + "- Pre-trends\n", + "\n", + "## Reading\n", + "\n", + "- [Chapter\n", + " 13](https://matheusfacure.github.io/python-causality-handbook/13-Difference-in-Differences.html)\n", + " of Facure (2022)\n", + "\n", + "## References\n", + "\n", + "Facure, Matheus. 2022. *Causal Inference for the Brave and True*.\n", + "." + ], + "id": "09934c57-d1b6-4050-844c-45b8c6f4cb5c" + } + ], + "nbformat": 4, + "nbformat_minor": 5, + "metadata": { + "kernelspec": { + "name": "python3", + "display_name": "Python 3 (ipykernel)", + "language": "python" + } + } +} \ No newline at end of file diff --git a/paul/did_files/figure-revealjs/cell-8-output-1.png b/paul/did_files/figure-revealjs/cell-8-output-1.png new file mode 100644 index 0000000..e14c342 Binary files /dev/null and b/paul/did_files/figure-revealjs/cell-8-output-1.png differ diff --git a/paul/matching_files/figure-revealjs/cell-15-output-1.png b/paul/matching_files/figure-revealjs/cell-15-output-1.png new file mode 100644 index 0000000..26cf13a Binary files /dev/null and b/paul/matching_files/figure-revealjs/cell-15-output-1.png differ diff --git a/paul/matching_files/figure-revealjs/cell-18-output-1.png b/paul/matching_files/figure-revealjs/cell-18-output-1.png new file mode 100644 index 0000000..2655159 Binary files /dev/null and b/paul/matching_files/figure-revealjs/cell-18-output-1.png differ diff --git a/paul/matching_files/figure-revealjs/cell-21-output-1.png b/paul/matching_files/figure-revealjs/cell-21-output-1.png new file mode 100644 index 0000000..e38a30c Binary files /dev/null and b/paul/matching_files/figure-revealjs/cell-21-output-1.png differ diff --git a/paul/paulus.jpg b/paul/paulus.jpg new file mode 100644 index 0000000..1bf5991 Binary files /dev/null and b/paul/paulus.jpg differ diff --git a/paul/tak.jpg b/paul/tak.jpg new file mode 100644 index 0000000..23ddc00 Binary files /dev/null and b/paul/tak.jpg differ