├── .gitignore ├── Power.ipynb ├── Randomization inference in networks.ipynb ├── Randomization inference.ipynb ├── Using covariates.ipynb ├── cai_data ├── cai.adjacency.RData └── cai.main.tsv ├── prep_data.R └── pseudo_facebook_small.tsv /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | 5 | # C extensions 6 | *.so 7 | 8 | # Distribution / packaging 9 | .Python 10 | env/ 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | *.egg-info/ 23 | .installed.cfg 24 | *.egg 25 | 26 | # PyInstaller 27 | # Usually these files are written by a python script from a template 28 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 29 | *.manifest 30 | *.spec 31 | 32 | # Installer logs 33 | pip-log.txt 34 | pip-delete-this-directory.txt 35 | 36 | # Unit test / coverage reports 37 | htmlcov/ 38 | .tox/ 39 | .coverage 40 | .coverage.* 41 | .cache 42 | nosetests.xml 43 | coverage.xml 44 | *,cover 45 | 46 | # Translations 47 | *.mo 48 | *.pot 49 | 50 | # Django stuff: 51 | *.log 52 | 53 | # Sphinx documentation 54 | docs/_build/ 55 | 56 | # PyBuilder 57 | target/ 58 | 59 | # iPython 60 | .ipynb_checkpoints 61 | 62 | pseudo_facebook.tsv 63 | -------------------------------------------------------------------------------- /Power.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Consequences of low power" 8 | ] 9 | }, 10 | { 11 | "cell_type": "code", 12 | "execution_count": 1, 13 | "metadata": { 14 | "collapsed": false 15 | }, 16 | "outputs": [ 17 | { 18 | "name": "stderr", 19 | "output_type": "stream", 20 | "text": [ 21 | "Loading required package: iterators\n", 22 | "Loading required package: parallel\n" 23 | ] 24 | } 25 | ], 26 | "source": [ 27 | "library(foreach)\n", 28 | "library(doMC)\n", 29 | "registerDoMC(4)\n", 30 | "library(ggplot2)\n", 31 | "theme_set(theme_bw())\n", 32 | "library(repr)\n", 33 | "options(repr.plot.width=6, repr.plot.height=4)" 34 | ] 35 | }, 36 | { 37 | "cell_type": "code", 38 | "execution_count": 2, 39 | "metadata": { 40 | "collapsed": false 41 | }, 42 | "outputs": [ 43 | { 44 | "data": { 45 | "text/plain": [ 46 | "\n", 47 | " Two-sample t test power calculation \n", 48 | "\n", 49 | " n = 50\n", 50 | " delta = 0.1\n", 51 | " sd = 1\n", 52 | " sig.level = 0.05\n", 53 | " power = 0.0715\n", 54 | " alternative = two.sided\n", 55 | "\n", 56 | "NOTE: n is number in *each* group\n" 57 | ] 58 | }, 59 | "execution_count": 2, 60 | "metadata": {}, 61 | "output_type": "execute_result" 62 | } 63 | ], 64 | "source": [ 65 | "\n", 66 | "power.t.test(n = 50, delta = .1, sig.level = .05)" 67 | ] 68 | }, 69 | { 70 | "cell_type": "code", 71 | "execution_count": 3, 72 | "metadata": { 73 | "collapsed": false 74 | }, 75 | "outputs": [ 76 | { 77 | "data": { 78 | "text/html": [ 79 | "\n", 80 | "\n", 81 | "\n", 82 | "\t\n", 83 | "\n", 84 | "
estp
1-0.0002160.999
\n" 85 | ], 86 | "text/latex": [ 87 | "\\begin{tabular}{r|ll}\n", 88 | " & est & p\\\\\n", 89 | "\\hline\n", 90 | "\t1 & -0.000216 & 0.999\\\\\n", 91 | "\\end{tabular}\n" 92 | ], 93 | "text/plain": [ 94 | " est p\n", 95 | "1 -0.000216 0.999" 96 | ] 97 | }, 98 | "execution_count": 3, 99 | "metadata": {}, 100 | "output_type": "execute_result" 101 | } 102 | ], 103 | "source": [ 104 | "do.sim <- function(n, delta) {\n", 105 | " z <- rep(0:1, each = n)\n", 106 | " y <- z * delta + rnorm(n * 2)\n", 107 | " \n", 108 | " r <- t.test(y ~ z)\n", 109 | " data.frame(est = unname(r$estimate[2] - r$estimate[1]), p = r$p.value)\n", 110 | "}\n", 111 | "do.sim(50, .1)" 112 | ] 113 | }, 114 | { 115 | "cell_type": "code", 116 | "execution_count": 4, 117 | "metadata": { 118 | "collapsed": false 119 | }, 120 | "outputs": [], 121 | "source": [ 122 | "results <- foreach(i = 1:1e4, .combine = rbind) %dopar% do.sim(50, .1)" 123 | ] 124 | }, 125 | { 126 | "cell_type": "code", 127 | "execution_count": 5, 128 | "metadata": { 129 | "collapsed": false 130 | }, 131 | "outputs": [ 132 | { 133 | "data": { 134 | "text/plain": [ 135 | " est p \n", 136 | " Min. :-0.694 Min. :0.000 \n", 137 | " 1st Qu.:-0.036 1st Qu.:0.199 \n", 138 | " Median : 0.100 Median :0.447 \n", 139 | " Mean : 0.099 Mean :0.461 \n", 140 | " 3rd Qu.: 0.231 3rd Qu.:0.711 \n", 141 | " Max. : 0.980 Max. :1.000 " 142 | ] 143 | }, 144 | "execution_count": 5, 145 | "metadata": {}, 146 | "output_type": "execute_result" 147 | } 148 | ], 149 | "source": [ 150 | "summary(results)" 151 | ] 152 | }, 153 | { 154 | "cell_type": "code", 155 | "execution_count": 6, 156 | "metadata": { 157 | "collapsed": false 158 | }, 159 | "outputs": [ 160 | { 161 | "name": "stderr", 162 | "output_type": "stream", 163 | "text": [ 164 | "stat_bin: binwidth defaulted to range/30. Use 'binwidth = x' to adjust this.\n" 165 | ] 166 | }, 167 | { 168 | "data": { 169 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtAAAAHgCAYAAACMxVqsAAAEDWlDQ1BJQ0MgUHJvZmlsZQAAOI2NVV1oHFUUPrtzZyMkzlNsNIV0qD8NJQ2TVjShtLp/3d02bpZJNtoi6GT27s6Yyc44M7v9oU9FUHwx6psUxL+3gCAo9Q/bPrQvlQol2tQgKD60+INQ6Ium65k7M5lpurHeZe58853vnnvuuWfvBei5qliWkRQBFpquLRcy4nOHj4g9K5CEh6AXBqFXUR0rXalMAjZPC3e1W99Dwntf2dXd/p+tt0YdFSBxH2Kz5qgLiI8B8KdVy3YBevqRHz/qWh72Yui3MUDEL3q44WPXw3M+fo1pZuQs4tOIBVVTaoiXEI/MxfhGDPsxsNZfoE1q66ro5aJim3XdoLFw72H+n23BaIXzbcOnz5mfPoTvYVz7KzUl5+FRxEuqkp9G/Ajia219thzg25abkRE/BpDc3pqvphHvRFys2weqvp+krbWKIX7nhDbzLOItiM8358pTwdirqpPFnMF2xLc1WvLyOwTAibpbmvHHcvttU57y5+XqNZrLe3lE/Pq8eUj2fXKfOe3pfOjzhJYtB/yll5SDFcSDiH+hRkH25+L+sdxKEAMZahrlSX8ukqMOWy/jXW2m6M9LDBc31B9LFuv6gVKg/0Szi3KAr1kGq1GMjU/aLbnq6/lRxc4XfJ98hTargX++DbMJBSiYMIe9Ck1YAxFkKEAG3xbYaKmDDgYyFK0UGYpfoWYXG+fAPPI6tJnNwb7ClP7IyF+D+bjOtCpkhz6CFrIa/I6sFtNl8auFXGMTP34sNwI/JhkgEtmDz14ySfaRcTIBInmKPE32kxyyE2Tv+thKbEVePDfW/byMM1Kmm0XdObS7oGD/MypMXFPXrCwOtoYjyyn7BV29/MZfsVzpLDdRtuIZnbpXzvlf+ev8MvYr/Gqk4H/kV/G3csdazLuyTMPsbFhzd1UabQbjFvDRmcWJxR3zcfHkVw9GfpbJmeev9F08WW8uDkaslwX6avlWGU6NRKz0g/SHtCy9J30o/ca9zX3Kfc19zn3BXQKRO8ud477hLnAfc1/G9mrzGlrfexZ5GLdn6ZZrrEohI2wVHhZywjbhUWEy8icMCGNCUdiBlq3r+xafL549HQ5jH+an+1y+LlYBifuxAvRN/lVVVOlwlCkdVm9NOL5BE4wkQ2SMlDZU97hX86EilU/lUmkQUztTE6mx1EEPh7OmdqBtAvv8HdWpbrJS6tJj3n0CWdM6busNzRV3S9KTYhqvNiqWmuroiKgYhshMjmhTh9ptWhsF7970j/SbMrsPE1suR5z7DMC+P/Hs+y7ijrQAlhyAgccjbhjPygfeBTjzhNqy28EdkUh8C+DU9+z2v/oyeH791OncxHOs5y2AtTc7nb/f73TWPkD/qwBnjX8BoJ98VVBg/m8AAEAASURBVHgB7d0JnBNF2vjxZ5gZbkQBAUEuUUFQUVBAAfFAPDjUV0GR9RblxeuPJ+uxqLv6gicK7gqK4iIKXqjgMoirqCgICopyiAgiKqfIMZxz5J+n1s4mmcxMMnZ3Ot2/+nwySXequ6u+lWSeVKqrs0LhJCQEEEAAAQQQQAABBBBISqBSUrnIhAACCCCAAAIIIIAAAkaAAJoXAgIIIIAAAggggAACKQgQQKeARVYEEEAAAQQQQAABBAigeQ0ggAACCCCAAAIIIJCCAAF0ClhkRQABBBBAAAEEEECAAJrXAAIIIIAAAggggAACKQgQQKeARVYEEEAAAQQQQAABBAigeQ0ggAACCCCAAAIIIJCCAAF0ClhkRQABBBBAAAEEEECAAJrXAAIIIIAAAggggAACKQgQQKeARVYEEEAAAQQQQAABBAigeQ0ggAACCCCAAAIIIJCCAAF0ClhkRQABBBBAAAEEEECAAJrXAAIIIIAAAggggAACKQgQQKeARVYEEEAAAQQQQAABBAigeQ0ggAACCCCAAAIIIJCCAAF0ClhkRQABBBBAAAEEEECAAJrXAAIIIIAAAggggAACKQgQQKeARVYEEEAAAQQQQAABBAigeQ0ggAACCCCAAAIIIJCCAAF0ClhkRQABBBBAAAEEEEAgJ1MIfv31Vxk7dqzceeedJYq8ZcsW+de//iW//PKLNGvWTHr16iU1a9YskW/BggUyd+5cadeunXTr1k0qVSr5/SGZPCV2zAoEEEAAAQQQQACBwAhkhcLJ67UtLCyUnj17yrx582TXrl0xxf3www/lvPPOk71790qHDh1MngYNGkheXp60bdvW5N29e7d07txZNm3aJEceeaR8+umncvbZZ8ukSZMkNzc36TwxB2YBAQQQQAABBBBAIJACnu+BXrFihVx11VUyZ84cqVatWkwjaex/ySWXmKB4+vTpst9++4n2VLdv314GDx4sH3/8sck/fPhw0SB62bJlUrt2bVmyZIl07NhRJkyYIIMGDUo6T8zBy1jQ4zz77LNSvXr1MnLxVEUFrO98WVlZFd0F23lQQNtVb4l+GfJgcSlSCgLFxcW0awpemZLVS+26b98+Oemkk8wv0JniRzkzW8DTPdCLFy+WTp06ydFHHy3HH3+8PPfcczE90GvWrJGuXbvKyJEj5eKLL460xN133y0PP/ywCZo1yNJA9r777pPbb789kmfAgAGycuVK0SEb+k+7vDyRDZN4oAH0okWLYsqUxGYVzqLlLygoEK2r1aNe4Z1lwIbbt2+XnJycQHxB0X8KmipXrpwBLfPHiqi/IukX3f333/+P7SgDttZf1TT40PdrEL4IbtiwQfSXQb+noqIi0Vt2dra5+b2+XmrXzz77TDZv3kwA7fcXnYfq5+keaO2JeuaZZ0SD3SeffLLEPxod77x27doSnDrUo3HjxqbHY926dbJnzx7T4xydUXugp02bZlatX7++3DzR2+pjDbwnTpwYv9osawDQqlUr8w8yYQabV2oArf+M9R+x3vs9aX2tOvu9rlZ7Wvd+rq/WMUjtqvXVWxAC6KC1q7Yp7erup5X1+eHuUTlakAU8HUDreGW9pZI++ugjef/99+XRRx81m61evdrc16tXL2Y3derUkZ07d8qOHTskmTy1atWK2X758uUyevTomHXWQpcuXaR58+bm27C1zul76x9xED60tbddv1xp+/k9abtqCsKwBu250/pq+/o9WV8Cg9Cu2pb6S4r2Dvo9We0alADaS+2an58fiA4kv7+HMql+ng6gU4XUGTb69u0rZ555ptx0001mc+tDO35Wjho1apjn9U2XTJ74AFpn+vjiiy8SFnHjxo2iM4PUr18/4fN2r9QPbYZw2K3qjf0xhMMb7WB3KYI4hMOtz0O72yqV/QVxCIdX2lXPgbI+L1NpM/IiUFEB3wTQU6dOlYEDB5rZOiZPnhzpsbPe3Fu3bo0x0mUdf6jj8pLJE7NxeEF7sPWWKOkYaA2gSQgggAACCCCAAAL+Eyg5EXIG1lFn0+jXr5+ZreP111+XqlWrRmqhY6E16RR20Ul7iZs2bWoC7WTyRG/LYwQQQAABBBBAAIHgCmR8AP3CCy/IlVdeaWbi0DHJevZzdNLgWMcjz5gxI3p1zDzRyeSJ2ZgFBBBAAAEEEEAAgcAKZPQQDp1CR8c667zPBx10kLz00ksxDdm/f38z3dnQoUNFp7bTi7F0795dxo8fL/Pnz5eFCxea/HoiT3l5YnbMAgIIIIAAAggggEBgBTI6gJ4yZYps27bNnMyn45/jU+/evc3FVYYMGSKrVq2SPn36mDk6W7dubS4L3qZNm8gmyeSJZOYBAggggAACCCCAQGAFPH0hFbtbReeDtsY+l7bvZPKUtq21ngupWBLO3HMhFWdc071XLqSS7hZw7vheuuCGc7UU00HDhVScFC5931xIpXQbnnFGIOPHQKfCoicX6omDZaVk8pS1Pc8hgAACCCCAAAII+FsgUAG0v5uS2iGAAAIIIIAAAgi4IUAA7YYyx0AAAQQQQAABBBDwjQABtG+akooggAACCCCAAAIIuCFAAO2GMsdAAAEEEEAAAQQQ8I0AAbRvmpKKIIAAAggggAACCLghQADthjLHQAABBBBAAAEEEPCNQEZfSMU3rUBFEECgwgL5l5W8iFKFd1bOhjVfmFRODp5GAAEEEAiCAD3QQWhl6ogAAggggAACCCBgmwABtG2U7AgBBBBAAAEEEEAgCAIE0EFoZeqIAAIIIIAAAgggYJsAAbRtlOwIAQQQQAABBBBAIAgCBNBBaGXqiAACCCCAAAIIIGCbAAG0bZTsCAEEEEAAAQQQQCAIAgTQQWhl6ogAAggggAACCCBgmwABtG2U7AgBBBBAAAEEEEAgCAIE0EFoZeqIAAIIIIAAAgggYJsAAbRtlOwIAQQQQAABBBBAIAgCBNBBaGXqiAACCCCAAAIIIGCbAAG0bZTsCAEEEEAAAQQQQCAIAgTQQWhl6ogAAggggAACCCBgmwABtG2U7AgBBBBAAAEEEEAgCAIE0EFoZeqIAAIIIIAAAgggYJsAAbRtlOwIAQQQQAABBBBAIAgCBNBBaGXqiAACCCCAAAIIIGCbAAG0bZTsCAEEEEAAAQQQQCAIAgTQQWhl6ogAAggggAACCCBgmwABtG2U7AgBBBBAAAEEEEAgCAIE0EFoZeqIAAIIIIAAAgggYJsAAbRtlOwIAQQQQAABBBBAIAgCBNBBaGXqiAACCCCAAAIIIGCbAAG0bZTsCAEEEEAAAQQQQCAIAgTQQWhl6ogAAggggAACCCBgmwABtG2U7AgBBBBAAAEEEEAgCAIE0EFoZeqIAAIIIIAAAgggYJsAAbRtlOwIAQQQQAABBBBAIAgCBNBBaGXqiAACCCCAAAIIIGCbAAG0bZTsCAEEEEAAAQQQQCAIAjlBqKTbdQyFQlJcXCz79u1z9dB6XLeP6WoFfz9YUVGReRSEulq+QahrQUGBaNt6ua52l03rHISUjs/DdLrq69j6nEpnOZw+tpfatbCwUPR/IAkBtwTogXZLmuMggAACCCCAAAII+EKAHmgHmjErK0sqVaoklStXdmDvJXep37q1J0uPm5ubWzKDz9bs2bNHcnJyXPNNJ5/V4+nWaymdddXXsfYipVpXN3/nSbVspXlqPbX3Tt+v+r71e3Lz8zCdllbPc3Z2tujN78lL7ar/E4LwXvL7ayqT6kcPdCa1FmVFAAEEEEAAAQQQSLsAAXTam4ACIIAAAggggAACCGSSAAF0JrUWZUUAAQQQQAABBBBIuwABdNqbgAIggAACCCCAAAIIZJIAAXQmtRZlRQABBBBAAAEEEEi7ALNwpL0JKAACCFgCOTddJ/nWAvcIIIAAAgh4VIAeaI82DMVCAAEEEEAAAQQQ8KYAAbQ324VSIYAAAggggAACCHhUgADaow1DsRBAAAEEEEAAAQS8KUAA7c12oVQIIIAAAggggAACHhUggPZow1AsBBBAAAEEEEAAAW8KEEB7s10oFQIIIIAAAggggIBHBQigPdowFAsBBBBAAAEEEEDAmwIE0N5sF0qFAAIIIIAAAggg4FEBAmiPNgzFQgABBBBAAAEEEPCmAAG0N9uFUiGAAAIIIIAAAgh4VIBLeXu0YSgWAgh4TyD/soEpF6rmC5NS3oYNEEAAAQS8LUAPtLfbh9IhgAACCCCAAAIIeEyAANpjDUJxEEAAAQQQQAABBLwtQADt7fahdAgggAACCCCAAAIeEyCA9liDUBwEEEAAAQQQQAABbwsQQHu7fSgdAggggAACCCCAgMcECKA91iAUBwEEEEAAAQQQQMDbAgTQ3m4fSocAAggggAACCCDgMQECaI81CMVBAAEEEEAAAQQQ8LYAAbS324fSIYAAAggggAACCHhMgADaYw1CcRBAAAEEEEAAAQS8LUAA7e32oXQIIIAAAggggAACHhMggPZYg1AcBBBAAAEEEEAAAW8LEEB7u30oHQIIIIAAAggggIDHBAigPdYgFAcBBBBAAAEEEEDA2wIE0N5uH0qHAAIIIIAAAggg4DEBAmiPNQjFQQABBBBAAAEEEPC2AAG0t9uH0iGAAAIIIIAAAgh4TIAA2mMNQnEQQAABBBBAAAEEvC1AAO3t9qF0CCCAAAIIIIAAAh4TIID2WINQHAQQQAABBBBAAAFvCxBAe7t9KB0CCCCAAAIIIICAxwQIoD3WIBQHAQQQQAABBBBAwNsCOd4uXnKl+/XXXyUvL0+2b98uPXv2lJYtWybccMGCBTJ37lxp166ddOvWTSpVKvn9IZk8CXfOSgQQQAABBBBAAIFACJSMIDOs2p9++qm0adNGLr/8cnnhhRfksMMOkyuuuCKmFrt37zZB8znnnCPTp0+XXr16yUUXXSQFBQWRfMnkiWTmAQIIIIAAAggggEBgBTI6gN63b59ceuml0qBBA1m5cqXMmzdPli5dKm+88YY89thjkUYdPny4aIC8bNkyeffdd+Wzzz6Td955RyZMmJBSnkhmHiCAAAIIIIAAAggEViCjA+glS5bI999/L4MGDZJmzZqZRmzdurVoT7MVQIdCIRk9erRcffXVUrt2bZOnbdu20rdvXxk3bpxZTiZPYF8hVBwBBBBAAAEEEEAgRiCjx0CvW7fOVObEE0+MqdSRRx4pEydOlA0bNkhxcbHs2bNHOnbsGJNHl6dNm2bWrV+/vtw8MRuHF/TYixcvjl9tlnfs2JFwPSsRQAABBBBAAAEEMl8gowPoQw891LTAm2++KR06dIi0xttvv20eb9myRX777TfzuF69epHn9UGdOnVk586dosHu6tWry81Tq1atmO3fe+89M3wkZuXvC126dDHjsDWAdyNpD7reNCU6MdKNMrh5jMLCQsnKyjJt5+Zx03Es/QKoKQjtqnWNfZelQ9z+Yyb6HLDes/o61pvf0969e02Hht/rSbumr4W3bdsmRUVF6SsARw6cQEYH0IcffricddZZZohGdna29OjRQ1588UX57rvvTEPqh9nmzZvN45o1a8Y0bo0aNcxyfn5+UnniA+hjjjlG7rvvvph9WgvVqlUTvenYbDeS1lNPiNR/xLm5uW4cMq3H0NlWcnJypHr16mkthxsH13H+mipXruzG4dJ6DA2y/ntab1qLYuvBE30O6JdA/cKg79cgBND6JSKRg63QHtiZBnB60/9HevN78lK76hDN6IkB/G5P/dIvkNEBtPLpUI3BgwfLgw8+KCNHjpQzzjhDnnjiCRkwYIAZ81y/fn2jvHXr1hhtXdZ/XvqhnkyemI3DC0cddZS5xa/XZT1ZcdGiRYmeYh0CCCCAAAIIIIBAhgtkfABdt25defXVV0V7r7QntmrVqvLUU0+J9hg3bNjQ9PJoG23atCmmqTZu3ChNmzY1P403btzYPFdWnpiNWUAAAQQQQAABBBAIrEBGz8KhP4P269dPdAx0lSpVTPCsLTl58mRzQRX9CU2D4+bNm8uMGTNiGlkvvKKzcWhKJk/MxiwggAACCCCAAAIIBFYgo3ugdRysBr933nmnufrgwQcfLI8++qgZQjFlyhTTqHry1dChQ+Xuu+82QXX37t1l/PjxMn/+fFm4cGHSeQL7CqHiCCCAAAIIIIAAAjECGR1Aa02GDRtmzu4+4YQTzDCOzp07iwbPjRo1ilR0yJAhsmrVKunTp485wUPnih47dqy5gqGVKZk8Vl7uEUAAAQQQQAABBIIrkPEBtI5zfvnll2XXrl3mFj9dnTat9lSPGjVKRowYIdbY5/gmTyZP/DYsI4AAAggggAACCARPIOMDaKvJdEqz8qY10xMM9cTBslIyecranucQQAABBBBAAAEE/C2Q0ScR+rtpqB0CCCCAAAIIIICAFwUIoL3YKpQJAQQQQAABBBBAwLMCBNCebRoKhgACCCCAAAIIIOBFAd+MgfYiLmVCIMgC+ZcNDHL1qTsCCCCAgI8F6IH2ceNSNQQQQAABBBBAAAH7BQig7TdljwgggAACCCCAAAI+FiCA9nHjUjUEEEAAAQQQQAAB+wUIoO03ZY8IIIAAAggggAACPhYggPZx41I1BBBAAAEEEEAAAfsFCKDtN2WPCCCAAAIIIIAAAj4WIID2ceNSNQQQQAABBBBAAAH7BQig7TdljwgggAACCCCAAAI+FiCA9nHjUjUEEEAAAQQQQAAB+wUIoO03ZY8IIIAAAggggAACPhYggPZx41I1BBBAAAEEEEAAAfsFCKDtN2WPCCCAAAIIIIAAAj4WIID2ceNSNQQQQAABBBBAAAH7BQig7TdljwgggAACCCCAAAI+FiCA9nHjUjUEEEAAAQQQQAAB+wUIoO03ZY8IIIAAAggggAACPhYggPZx41I1BBBAAAEEEEAAAfsFCKDtN2WPCCCAAAIIIIAAAj4WIID2ceNSNQQQQAABBBBAAAH7BQig7TdljwgggAACCCCAAAI+FiCA9nHjUjUEEEAAAQQQQAAB+wUIoO03ZY8IIIAAAggggAACPhYggPZx41I1BBBAAAEEEEAAAfsFCKDtN2WPCCCAAAIIIIAAAj4WIID2ceNSNQQQQAABBBBAAAH7BXLs3yV7RAABBBCwBPIvG2g9LHG/r8Sa/6yo+cKkUp5hNQIIIICAFwTogfZCK1AGBBBAAAEEEEAAgYwRIIDOmKaioAgggAACCCCAAAJeECCA9kIrUAYEEEAAAQQQQACBjBEggM6YpqKgCCCAAAIIIIAAAl4QIID2QitQBgQQQAABBBBAAIGMESCAzpimoqAIIIAAAggggAACXhAggPZCK1AGBBBAAAEEEEAAgYwRYB5oB5oqFAqJ3goLCx3Ye8ld6rE0uXnMkqVwb01xcbEUFRW55utezUo/kluvpdJLwDNuCvitvYPy2WR9FutnlPXYzdeN28fyUrvq/4QgmLvdxhyvdAEC6NJt/tAz+kbWD1G3UzqO6XYd1TZdvm7X1TpeENrVqiv3kpbPDifdg/Z+tT6jnDT1wr691K5aFhICbgoQQDukXalSJcnNzXVo77G71Q8O7bHKysqSnBz/N6naaj3d8o3VdnepoKDAHDAT61raVfbcFczMo2Vie5cl7ebnYVnlcPo57QXVL7vZ2dmidfZ70v85XnmtqjkJATcF/B9tuan5+7H0Q0WTdf/7alfu0nFMVyoWdRCrjtZ91FO+fRikuvq2EVOomB/b2491im/S6DpGP47P55dlraNX6umlsvilfalH2QL+/4pcdv15FgEEEEAAAQQQQACBlAQIoFPiIjMCCCCAAAIIIIBA0AUIoIP+CqD+CCCAAAIIIIAAAikJEECnxEVmBBBAAAEEEEAAgaALEEAH/RVA/RFAAAEEEEAAAQRSEiCATomLzAgggAACCCCAAAJBFyCADvorgPojgAACCCCAAAIIpCRAAJ0SF5kRQAABBBBAAAEEgi5AAB30VwD1RwABBBBAAAEEEEhJgAA6JS4yI4AAAggggAACCARdgAA66K8A6o8AAggggAACCCCQkgABdEpcZEYAAQQQQAABBBAIugABdNBfAdQfAQQQQAABBBBAICWBnJRykxkBBBBAAAEEEEDANYGdO3fKzJkz5YcffpCjjjpKevToIVlZWeUef/Xq1fL+++/Lvn37pHv37tKmTZuYbb7++mtZs2ZNzDpdOPHEE6VOnTol1rMiVoAAOtaDJQQQQAABBBBAwBMCP//8s/Ts2VOWLl0aKU+fPn3k9ddfl9zc3Mi6+AdvvvmmXHzxxbJ7927zVE5Ojjz11FNyzTXXRLLefvvtkpeXF1m2Hnz00UfSrVs3a5H7UgQIoEuBYTUCCPxXIP+ygf9d4BECCCCAwB8W2LNnj0yaNElefPFF+eCDDxLub8SIESZ4Pu644+SKK66Q++67T6ZNmyavvPKKDByY+HO5oKBAbrjhBhM8X3vttaY3+f/+7//k5ptvln79+skBBxxgjvXll1+a+xNOOEE0wLZS7dq1rYfclyHwX7EyMvEUAggggAACCCAQdIFZs2bJ3r175dRTT5Uff/xRZs+eLQ0aNJAzzzxTqlWrlhTPTz/9JH//+99l3Lhx8uuvv5Y6XEID7Oeff97s8/HHH5euXbtKfn6+3HHHHWb70gJoDbD1GI0bNza9ztnZ2fLuu+/KF198If/85z/lpptukg0bNsj69eulevXqMmfOHKlUiVPikmq8qEwE0FEYPEQAAQQQQAABBEoT+NOf/iQbN240vbka1IZCIZNVxybPmDHDBK2lbTt37lx54oknzPCLwsJCk02D4uhhFdHbahCs4581tWvXzty3b9/e3H/77bfmPtGf5cuXm9VHHnmkaPCsqUOHDiaAtp5btGiRWX/ggQeK9nLrWOjOnTvLZZddRjBtZMr/QwBdvhE5EEAAAQQQQACBiMDTTz8tt956qzRq1EhGjhwpekKejinWIRmJ0imnnGJ6q/U53ebSSy81QzIOP/zwRNnNul9++cXc6wmDtWrVMo/3228/c68919oTXqVKFbMc/WfdunVmMXoohrWd9Zw1fEMD57vuusvk1x7xyZMnmy8C9EhHiyZ+TJ99YhfWIoAAAggggAACCQX0BL2HHnpI/t//+3/yl7/8xeTRcclWz3L8Rhpga2ratKmMHz9eHnzwQSkreNa827Zt07uY8cnRY5V37Nhhno//Y20XfZKhtV30c0cccYTp/V6yZIk888wzJhjXoR4TJkyI3yXLCQQIoBOgsAoBBBBAAAEEEChNQKeSs9Jpp51mHmrwvHbtWmt1zP2dd94pTZo0MeOmzzrrLGnZsqUJoq0e4ZjMvy/o8ApNelKgNVREe501aUBc2lRz1nZWXs2v46k11a9f39zfcsst5uTEsWPHmuntrr76atFeck2lndBonuRPRIAAOkLBAwQQQAABBBBAoHwBnWPZSjqcwko1a9a0Hsbc6wwYq1atMrNn6DzLur0OndAe6dJOBtSTE620efNm83DTpk3mXp8rbZiFtZ2VVzewHuvwEU3FxcXmJEJrjLWuO/jgg/VOSuvZNk/yJyJAAB2h4AECCCCAAAIIIFC+wDvvvBMZrmHNpVyvXj2xen8T7UF7jXUauU8++UQWLFggekKijm+2to/fRoNrnUlDk56gqElnAdGkQbiVdI7ohQsXym+//WZW6bR0mj7//HPRwFsvpKJzO2vq0qWLuT/++OPloIMOkuHDh5vloqIiM1OHLlgnKpon+FOqAAF0qTQ8gQACCCCAAAIIlBTQqd9atWplLnJy//33mwx6EmGySed1njhxopn9YtiwYQk30xk0hgwZYp678cYbRYd+6MmLmrRH20rnnXeemWVDxy9r0ougHHPMMWYGD32swbYOLWnevLloXk2DBg0y9zqTiO5X66LT8ukQj+uuu848x5+yBQigy/bhWQQQQAABBBBAIEZAL0yivcfaI6wn6+mMHEOHDo3Jk8yC9gLfdtttpWbVOZ/1REW9oqD2VOusGxpE65RzZSWdC1p7onXaOp3/WQPkt956KzKt3eDBg0XroPNA6351eEmnTp1k3rx5Urdu3bJ2zXO/CzCNHS8FBBBAAAEEEEAgBYFjjz1WVq5caXqQtdc22YuopHAIk1V7obWXWOdq1l7kFi1aRIJga1+J5oTW8cyffvqpGcKhJxNaQ0GsbfRee7418P/hhx9Mz7M11V10Hh6XLkAAXboNzyCAAAIIIIAAAqUKNGvWrNTn7HxCe54PPfTQlHep47LLSjouuyL7LWufQXnOkSEc27dvl0TfiKJR9ZvUa6+9Fr2KxwgggAACCCCAAAIIeF7AkQD6zTfflNatW5dZ+TFjxpizUfWSmCQEEEAAAQQQQMDrAjqDho4r1ktwk4ItYNsQjilTpkh+fr7R1HE3mvRqO4mSzjs4depUMxG4dXnKRPlYhwACCCCAAAIIeEWA4Q5eaYn0l8O2AFqnP4mfwkWvbFNWuvDCCx0beF/WcXkOAQQQQAABBBBAAIGKCtgWQOs0K3qFG73cpM6PqJeH1DkO45NO+6JTvuhZq/wEEq/DMgIIIIAAAgh4TUCv5KdTvVmX1HarfDVq1JCjjjrKrcNxnBQEbAugNSi2LkepZ6XqpSD1KjskBBBAAAEEEEAgkwW2bdsmbf/+pOtVWHjVtSZo185HkrcEbAugo6ulV77RGwkBBBBAAAEEEEAAAb8JOBJAK9KWLVtk3LhxMn/+fNFp7fQ664nSBx98kGg16xBAAAEEEEAAAQQQ8KSAIwG0XvWmR48esmjRIk9WmkIhgAACCCCAAAIIIFBRAUfmgX7jjTdM8NyrVy9ZsmSJ6LR1hYWFCW8VLTjbIYAAAggggAACCCCQDgFHeqC//PJLU5dnn31WGjZsmI56cUwEEEAAAQQQQAABBBwRcCSAbtCggblIil673Y2k08p8+OGH8tVXX8nxxx8vJ5xwgiQ6Y3XBggUyd+5cadeunTnJsVKlkh3wyeRxo04cAwEEEEAAAQQQQMCbAiUjSBvKefLJJ5uTBvXqhE4nnS6vd+/ectZZZ4leQlzHXrdo0UKiLxG+e/duEzSfc845Mn36dNGhJRdddJEUFBREipdMnkhmHiCAAAIIIIAAAggEVsCRHuj27dvLI488In/5y19MT/CJJ55ohnIk6vGtW7fuH8J//PHH5aOPPjK9z4cffrj89ttv0qlTJ3P8hx56yOx7+PDhogHysmXLpHbt2mZcdseOHWXChAkyaNCgpPP8oYKyMQIIIIAAAggggIAvBBwJoF999VUTwG7evFkGDx5cJtQfuarPnj175Mknn5T77rtPNHjWdMABB8j48ePll19+Mcu6/9GjR5s8Gjxratu2rfTt29dMs6cBdDJ5zIb8QQABBBBAAAEE0iRQXFwsjz32WKlHb9mypZx33nkxz+tkDjNmzJBTTz1VtIMzPmlnosZO+it9WUl/tddf+vU8t61bt5orJOqIg9atW0c201nYNOYqK+lF9vxwfpwjAfSBBx4onTt3LsvPlue+//57+fXXX824559++kk+/vhj2X///UUbtFq1auYY69evFw20tcc5OunytGnTks4TvS2PEUAAAQQQQAABtwX0mhq33Xab1KpVy9zij3/aaaeVCKD/+te/is6O1r17d5k1a1b8JvLoo4/KoYceWmYAvWHDBjn//PPlk08+Eb3adKNGjUwnZHZ2tjz99NNy+eWXm/3u2rXLlG+//faTmjVrljiWrtAyEkAnpBETwGoQ63T6+eefzSH0xMBTTjlF6tSpI3q9+iOOOELeeecdMxZ69erVJk+9evViiqN5dXo9HUOdTB59sUanSZMmRV4w0ev1sZ7EeOWVV4pe+tOtZF2oRl/Mfk/6hUjrGT2G3a919kq7+v9V5a1XkJufHW7UXKcx9VudErlp76D+oqknsScasphom0xep5/BXmlXDdzUPyjp1ltvNcNky6uvXtROe41vvvlm0WGt3333nRx22GHlbVbiee31/vzzz2Xx4sWm51kzaPx01VVXmXjnjDPOkIMOOiiynQ6d1WP6OTnSA+0WmPYuaxozZozMnj1bunbtanqh+/XrZ4aOzJw5U3QYiab4b0I1atQw6/Pz85PKEx9AawCe6KcQ3WnTpk1NgFe5cmVzDDf+6D8o/dAOQgCtddV6uunrRhsmOobWVVNOTnrfqomvI5qoxKyzQ2D2tu0p76bngbGdBCnvwMEN9LMpCO9XDeD0psFzEAJoraNX2jXdn5EOvn3+0K61s0/b6Z577pF//vOfMnbsWDPENtWdzpkzx8RYRx11VGRTjYu0d1uD6oULF5oJGiJPBuCBI/+V9fLcTzzxRFJ8+s2ookmHa2i6PPzTgQbPmrp16yYXXnihGYOj30jr169v1ut4neiky7m5uaJT7iWTJ3pbfayzfugtUdKTFfUqjNYwkkR57FynPR7aE6D/pLROfk9aV/2wdMs3nZ779u0zh0/3P6n8dCIE8Nin3TMs5VpXe2FSytu4tcH27dsD8X7VX4z0pl/wg9CZ4aV21c/IIHxpSfU9+9xzz0mfPn1EOw119rHnn39e/va3v0nVqlVT2pUOe9XOyhdffFEuuOCCyPatWrWS5cuXp7Qvv2R2JIBeu3atvPXWW2Ua6TcXKwAuM2MZTx588MHm2fjx1joXtAaV+tNS48aNTR4d2hGddJo77SnWN1wyeaK35TECCCCAAAIIIJAugby8PHMiX/TxdVazu+66K7JKO/L0hL8HH3zQrNPORp257JVXXpFLL700ki+ZBzpZwzfffCOXXHKJXHPNNaazUofO6omHOmw2Pr322muyYsWK+NVmaO0dd9xRYn0mrqjkRKH1W46Ou4m//fjjj/L+++/LZZddZr4NaU/1H0l65qe+YHRQe3TSs001ONbxOBocN2/e3JyBGp1HX3w6G4emZPJEb8tjBBBAAAEEEEAgXQJr1qwxQ1Z18gTrNn/+/JjiaO+zxkE9e/Y0648++mgz9PQf//hHTL5kFvSkQB0Wq7GTnuOl8dyf//xnadOmjdx+++3ml5fo/Wgn5bffflvipuX2S3KkB1p/Skn0k7NOk9KkSRNzwt+5554rOlZZx81UNFWvXl2GDh1qpqjTF4YOqXj55ZdN7/edd95pdqs9zJrn7rvvNi8iPQtVp7nTF5p17GTyVLSMbIcAAggggAACCNgpcO2115Z5EqFOJ6fjn3WoRvT0dHqtDJ04Qa/crFdlTiVprKQnC+pNk85+NmLECDOmWofC6omNVhoyZAgnEVoYdt9rAK3fYvQkv/gZMlI5ln4D0nGiV1xxhZmuTud61oazAmjdly6vWrXKjAPS8Wnac60D6fWbk5WSyWPl5R4BBBBAAAEEEPCqwNSpU82F5a6//nrzi79VziOPPFJGjRol2gut088lk7TXWId/PPDAA6IXxrOSDqPVcdF6EqH+8h8dQFt5/HzvSA90MmA6BZ2OU9axyX8kgNZvRDo2R696+MMPP5jhGvEnb+gJZ/qC0W9K1tjn+DImkyd+G5YRQAABBBBAAAGvCejwDQ2WE13URHugtXf64YcfTjiXdHxddOTA0qVLzb50ml6dsMBKGsfpcN34c9Gs5/1870gArb281uwB0XgKrXP46jhovYKgnkioZ3DakTRo1ivwlJX0pwwdG11WSiZPWdvzHAIIIIAAAgggkC4B7TF+7733TKdhojLo3M16IuHEiRPNL/SaRyd/eOmll0pk15nNNIAeNmyYGZKhwbJeSVB/yddx0Pprvv7CP27cuJhtdYhsov1pJh06Yp2DFrNRhi04EkDrNxs9UbC8pEG09iCTEEAAAQQQQAABBP64gF6aW3uJL7744oQ769Gjh+lM1CEcOnxV0xdffCEDBw4skV9n09AAWs8l0wkX7r//fnPxFJ1OVqfN1fPPPvroIznuuONittU4UG+Jkg4FIYBOJBNep5d4tAaZx2fRHl4dsqEnEJaWJ34blhFAwD6B/MtKfkjat3f2hAACCCDglIAGrfprfllJrwKot9KSdlxGz4bx9ddfl5Y1Zn3//v1FbzrCQLfXwFpjuuikk0WUV77o/Jn82JEeaP12ozcSAggggAACCCCAgH8EdJa1ilwO3D8C/6mJIwF0NNLOnTvNVWpWrlxpvqk0a9bMjH+JHoQenZ/HCCCAAAIIIIAAAgh4WcCxALqwsNBczvvee++V/PzYCwG3aNFCdIqVVOcg9DIkZUMAAQQQQAABBBAIhoBjAbRemUYvGdmwYUNz6Ufted6xY4eZCuXtt9+WU089VWbNmmWuihMMamqJAAIIIIAAAggg4AcBRwJovfa6zrvcp08fc2XAGjVqxFjp9dT1ioAaZOtUKyQEEEAAAQQQQAABBDJFwJEAWqc00aQTeccHz7peJ/fWM0R1XkE9mzPRZb81HwkBBBBAAAEEEPCCQIGZceK/FxHxQpkoQ/oEHAmg9So3OnSjrCsM6hyAu3fvNicY6jyCJAQQQAABBBBAwIsCOiHCLwPLv76FF8tOmZwRcCSA1vHO69evlw0bNkiDBg0SllyHeWhq3ry5uecPAggggAACCCDgRQGdf7n/9l2uF+2V/aq7fkwOmJyAI5cBPP30080VBvVqhNu2bStRks8//9xczaZDhw6y3377lXieFQgggAACCCCAgFcEGGrqlZbwTjkc6YHW4Rk33nijmYXjkEMOkV69eon2SutPIEuXLpV3331XcnJy5JlnnvGOBCVBAAEEEEAAAQQQQCAJAUcCaD3uY489Zk4WvOWWW2TixIkxRencubOMGTNGjj322Jj1LCCAAAIIIIAAAggg4HUBxwJorfiVV14pV1xxhblm+rfffmtm5NDLP5Y2LtrrWJQPAQQQQAABBBBAAAFHA2gd/5yXlycXXnhh5GTBhx9+WPQqhYMHD5YDDjiAFkAAAQQQQAABBBBAIKMEHDmJUAWef/55OfTQQ+Wee+6JAZk5c6bceeedctxxx8n3338f8xwLCCCAAAIIIIAAAgh4XcCRAHrZsmVy9dVXm3mgdSx0dHr55Zfl3nvvNVPc/e///m/0UzxGAAEEEEAAAQQQQMDzAo4M4Xj77beluLhYXn/9dWnTpk0MwoEHHmiuQqhzRP/jH/+QLVu2SJ06dWLysIAAAggggAACCCAQK/DEE09IQUFB7Mq4pWuvvVZWrVols2bNinmmUqVK0rhxY9HZ0dq3by/Z2dmR51955RUpKiqSAQMGRNZZD9auXStTpkyR/v37S9OmTWXx4sVmNjXr+fh7nZ74mmuuiV/tu2VHAmgNjvVKhPHBc7Re3759TQD9448/EkBHw/AYAQQQQAABBBBIIDB69GhzFWd9SgPpTZs2mfPJqlWrFsmtQfDcuXPltttuM3GYNYe1BsjLly832/Xu3VsmT55sJnfQDceOHSt79uxJGEBrMK770pnTNICeN2+eWdYJIaKDcKsAGqQTQFsaKd4ff/zxMmrUKHM1Qg2kEyWdlUOTfhMiIYAAAggggAACCJQtsHLlykiGr776So455hgZN26cXHDBBZH10Q/0uhsa0FopPz/fdF7efvvt5ly166+/3noq5fsFCxZIkyZNUt7OLxs4Mgb6lFNOkVAoJAMHDjRBdDzWJ598YsZBd+zYkSsRxuOwjAACCCCAAAIIOCBQs2ZNufnmm0WH03788ccOHCE4u3RkCIf2Ous3Ij1JUHuYTzjhBPMtZdeuXWbmjYULF0rVqlXlueeeC440NUUAAQQQQAABBNIs8PPPP5vzz7p27ZrmkmT24R0JoJVk0KBBZhz0iBEj5LPPPpP333/fSOlYnHPOOUd0Pmi9qAoJAQQQQAABBBBAwH6BSZMmyf777292vG/fPvnhhx/kxRdfNL/+6yiBP5J0SuIaNWqU2IUOJ+nRo0eJ9X5b4VgArVB9+vQxN52RQ+d8zs3NNQPQ9UxQEgIIIIAAAggggIBzAg899JBozLVz507RUQA6QkCvEH3DDTf84QkcdDy2jiaITzq7WhCSowG0BaiNR2+zpcE9AggggAACCCDgvICeaKgnEWpH5tNPPy033nij6EiARo0axRy8Vq1asnnz5ph11sLu3bvNQx0/HZ106rsgn0ToSgAdDc5jBBBAAAEEEEAAAfcEtCNzyJAhZmKH+++/X1q0aCGXX355pACtWrWSDz74ILIc/WDdunVmUa8uTfqvAGMp/mvBIwQQQAABBBBAwLcC99xzj7mIynXXXSerV6+O1FMD6O3bt5v5oyMrf3+gF8fTC97VrVs3/qlAL9MDHejmp/IIIIAAAgggEBQBPRft2WefFZ1GePDgwTJz5kxT9fPPP1/0Koc6yYOeHKjPa0CtV5R+6623ZMKECSWI3nzzzVKDaj0HToeF+DkRQPu5dakbAggggAACCCAQJaBXFBw6dKiZDW3ixIlyySWXSO3atSUvL89cQfCBBx4w46FzcnJMb7Ve/fDSSy+N2sN/Hup46tLSihUrCKBLw2E9AggggAACCCCAQHoE2rVrZy5al+jo2rust9KSzs6ht+h00EEHybRp08yqNWvWSL169RJOU6eX6Q7CpbqjbRI9pgc6kQrrEEAAAQQQQACBgAo0a9YsoDVPvtqcRJi8FTkRQAABBBBAAAEEEBB6oHkRIIAAAj4QaDg9L+VarO99ZsrbsAECCCCAgAg90LwKEEAAAQQQQAABBBBIQYAAOgUssiKAAAIIIIAAAgggQADNawABBBBAAAEEEEAAgRQECKBTwCIrAggggAACCCCAAAKcROjAayAUCpm5GYuKihzYe8ld6vE06b1bxyxZCvfWFBcXi96CUFdLNUh1terMvfMCbr2ugvTZpK2mn09BSF5qVzW3/hc6YV+pEv2NTrhm8j4JoB1qvXR9sLj1D9EhtqR2q7YE0ElRkQmBMgXc+rxI1+dhmZV38Mmg1NdL9XT6S0ujRo1kQfgy2FpnN1P16tUlKyvLzUNyrCQFCKCThEo1m77gs7OzU92sQvn1DW19eLh1zAoV1KaN1FZ7A4JQVyvACUJdbXp5sJsUBNx6Xbn5eZhC9W3PavWCWp9Rth/AYzv0Urs63UNctWpVadKkicdagOKkU4AA2gF9/VBx84PFCqDdPKYDbEnvUj8oCaCT5iIjAqUKEECXSlPhJ/RLb1A+n7z0P0fNtTwkBNwSYFCPW9IcBwEEEEAAAQQQQMAXAgTQvmhGKoEAAggggAACCCDglgABtFvSHAcBBBBAAAEEEEDAFwIE0L5oRiqBAAIIIIAAAggg4JYAAbRb0hwHAQQQQAABBBBAwBcCBNC+aEYqgQACCCCAAAIIIOCWAAG0W9IcBwEEEEAAAQQQQMAXAgTQvmhGKoEAAggggAACCCDglgABtFvSHAcBBBBAAAEEEEDAFwIE0L5oRiqBAAIIIIAAAggg4JYAAbRb0hwHAQQQQAABBBBAwBcCBNC+aEYqgQACCCCAAAIIIOCWQI5bB+I4CCCAAALOCax8dWLqO+99ZurbsAUCCCCAgNADzYsAAQQQQAABBBBAAIEUBOiBTgGLrAh4SSD/soFeKg5lQQABBBBAIDAC9EAHpqmpKAIIIIAAAggggIAdAgTQdiiyDwQQQAABBBBAAIHACBBAB6apqSgCCCCAAAIIIICAHQIE0HYosg8EEEAAAQQQQACBwAgQQAemqakoAggggAACCCCAgB0CBNB2KLIPBBBAAAEEEEAAgcAIEEAHpqmpKAIIIIAAAggggIAdAgTQdiiyDwQQQAABBBBAAIHACBBAB6apqSgCCCCAAAIIIICAHQIE0HYosg8EEEAAAQQQQACBwAgQQAemqakoAggggAACCCCAgB0CBNB2KLIPBBBAAAEEEEAAgcAIEEAHpqmpKAIIIIAAAggggIAdAgTQdiiyDwQQQAABBBBAAIHACBBAB6apqSgCCCCAAAIIIICAHQIE0HYosg8EEEAAAQQQQACBwAgQQAemqakoAggggAACCCCAgB0CBNB2KLIPBBBAAAEEEEAAgcAIEEAHpqmpKAIIIIAAAggggIAdAgTQdiiyDwQQQAABBBBAAIHACBBAB6apqSgCCCCAAAIIIICAHQI5duyEfSCAAAIIZJ5Aw+l5FSr0+t5nVmg7NkIAAQT8IkAPtF9aknoggAACCCCAAAIIuCLgix7oUCgkc+bMka+++ko6deokxx13nGRlZZUAXLBggcydO1fatWsn3bp1k0qVSn5/SCZPiR2zAgEEEEAAAQQQQCAwAiUjyAyr+ooVK6RJkyZy7rnnyuTJk00AfeWVV0phYWGkJrt37zZB8znnnCPTp0+XXr16yUUXXSQFBQUp5Ylk5gECCCCAAAIIIIBAYAUyPoC+6667TAC9bt060wv9/vvvy4QJE2Tq1KmRRh0+fLhoEL1s2TJ599135bPPPpN33nnH5LMyJZPHyss9AggggAACCCCAQHAFMjqA1qD4wAMPlPvvv18qV65sWlGHZtSuXVs+//xzs6zDO0aPHi1XX321Wa8r27ZtK3379pVx48Ylncdk5A8CCCCAAAIIIIBA4AUyOoCuVq2a/P3vf5fTTz890pATJ06Ubdu2yUknnWTWrV+/Xvbs2SMdO3aM5NEHuqw90pqSyWMy8gcBBBBAAAEEEEAg8AK+OIlQW3HGjBly6623ytKlS+WRRx4x45x1/erVq/VO6tWrZ+6tP3Xq1JGdO3fKjh07kspTq1Yta1NzP3v2bBk1alTMOmvh4IMPls6dO8u+ffusVY7f63huPXFSe9z9noqKikwV3fRNl2n0OP10lYHjIhAvkOp7r7i42NXPw/jyurWs9dTPJ+vereOm6zhealc97ykI///S1dYct6SAbwLo7Oxs6d+/v0yZMkXGjBkjxxxzjJx22mmyefNmU+uaNWvG1L5GjRpmOT8/P6k88QH02rVr5a233orZp7XQpUsX6dChg+i+3Uj6oaEfZBpAJ5pZxI0yuHkM/eetdY0+UdTN47t5LOvLgr6+49N/Bi3Fr2UZAecFUv1s09dxqts4Xwv7j2B9FuvncKKZoOw/Ynr36KV21V+a9f8gCQG3BHwTQPfs2VP0picDnnjiiXLTTTfJN998I/Xr1zeWW7dujTHV5dzcXGnQoEFSeWI2Di9osH7mmYkvJqC93itXrhTt5XYj6Ye21QOtdfJ72r59u+Tk5Ej16tX9XtVIr501xj+6wu58PYs+Io8R+I9Aqp9t+vmU6jaZaK0Bpd70C2+iL72ZWKeyyuyldtVOMg2iSQi4JZDRAbR+UK1Zs0Z0yER0gDFgwAC58cYbRWfmaNy4sbHctGlTjOnGjRuladOmpsc2mTwxG4cXqlSpYk5gjF+vy1avd6LnWIcAAggggAACCCCQ2QIZfRKh9jC3bNlSnnnmmZhW0IuqaEBdt25dE0A3b97cjJGOzpSXl2dm49B1GkCXlyd6Wx4jgAACCCCAAAIIBFcgo3ugjz76aHOy3siRI6VVq1Zm3LPOwqFzQOsQDqtXeujQoXL33XebIR7du3eX8ePHy/z582XhwoWm5XW8Wnl5gvsSoeYIIIAAAggggAAC0QIZHUDrSRqvv/66XHXVVWYqO13WMcA6G8e9994bqeeQIUNk1apV0qdPHzM+rXXr1jJ27Fhp06ZNSnkimXmAAAIIIIAAAgggEFiBjA6gtdUaNWpkhmds2bJFdJzzIYccYoLo6BbVE850yrkRI0aINfY5+nl9nEye+G1YRgABBBBAAAEEEAieQMYH0FaT6Rne5Z3lXbVqVXPioLVNovtk8iTajnUIIIAAAggggAACwRDI6JMIg9FE1BIBBBBAAAEEEEDASwIE0F5qDcqCAAIIIIAAAggg4HkBAmjPNxEFRAABBBBAAAEEEPCSAAG0l1qDsiCAAAIIIIAAAgh4XoAA2vNNRAERQAABBBBAAAEEvCRAAO2l1qAsCCCAAAIIIIAAAp4XIID2fBNRQAQQQAABBBBAAAEvCRBAe6k1KAsCCCCAAAIIIICA5wUIoD3fRBQQAQQQQAABBBBAwEsCvrkSoZdQKQsCqQrkXzawzE32lfksTyKAAAIIIICAmwL0QLupzbEQQAABBBBAAAEEMl6AADrjm5AKIIAAAggggAACCLgpQADtpjbHQgABBBBAAAEEEMh4AQLojG9CKoAAAggggAACCCDgpgABtJvaHAsBBBBAAAEEEEAg4wUIoDO+CakAAggggAACCCCAgJsCBNBuanMsBBBAAAEEEEAAgYwXIIDO+CakAggggAACCCCAAAJuChBAu6nNsRBAAAEEEEAAAQQyXoAAOuObkAoggAACCCCAAAIIuClAAO2mNsdCAAEEEEAAAQQQyHgBAuiMb0IqgAACCCCAAAIIIOCmQI6bB+NYCCCAAAKZL9Bwel7KlVjf+8yUt2EDBBBAwKsC9EB7tWUoFwIIIIAAAggggIAnBQigPdksFAoBBBBAAAEEEEDAqwIE0F5tGcqFAAIIIIAAAggg4EkBAmhPNguFQgABBBBAAAEEEPCqAAG0V1uGciGAAAIIIIAAAgh4UoAA2pPNQqEQQAABBBBAAAEEvCpAAO3VlqFcCCCAAAIIIIAAAp4UIID2ZLNQKAQQQAABBBBAAAGvChBAe7VlKBcCCCCAAAIIIICAJwUIoD3ZLBQKAQQQQAABBBBAwKsCBNBebRnKhQACCCCAAAIIIOBJAQJoTzYLhUIAAQQQQAABBBDwqgABtFdbhnIhgAACCCCAAAIIeFKAANqTzUKhEEAAAQQQQAABBLwqkOPVgvmhXKFQyJVqRB8n+rErB0/DQaw6WvdpKAKHRACBFAWC8H6NrmP04xSpMia71tEr9fRSWTKmASnoHxIggP5DfIk31jdycXGxFBQUJM7g0Fo9rtvHdKgqZe5WbQsLCwNR1zIheBKBDBIIwmeT1RxFRUWiN78nL/3PCYK3319PmVY/AmgHWywrK8vBvf931/ohZiW3jmkdL133Wk+v1nXv1Zeni4XjIuBZAa++X+0EC+pnsZ2GFd1XEF5fFbVhO2cECKAdcNU3cqVKlSQ3N9eBvZfcpdULoMd165glS+HemuzsbNGbV+u61z0KjoRAxgh49f1qJ6DV82x9Rtm5by/uy83/c+XVX80JostT4nk7BTiJ0E5N9oUAAggggAACCCDgewECaN83MRVEAAEEEEAAAQQQsFOAANpOTfaFAAIIIIAAAggg4HsBAmjfNzEVRAABBBBAAAEEELBTgADaTk32hQACCCCAAAIIIOB7AQJo3zcxFUQAAQQQQAABBBCwU4AA2k5N9oUAAggggAACCCDgewECaN83MRVEAAEEEEAAAQQQsFOAANpOTfaFAAIIIIAAAggg4HsBAmjfNzEVRAABBBBAAAEEELBTgADaTk32hQACCCCAAAIIIOB7AQJo3zcxFUQAAQQQQAABBBCwU4AA2k5N9oUAAggggAACCCDge4Ec39eQCiKAAAIIpF2g4fS8lMuwvveZKW/DBggggIAbAvRAu6HMMRBAAAEEEEAAAQR8I0AA7ZumpCIIIIAAAggggAACbggQQLuhzDEQQAABBBBAAAEEfCNAAO2bpqQiCCCAAAIIIIAAAm4IEEC7ocwxEEAAAQQQQAABBHwjQADtm6akIggggAACCCCAAAJuCDCNnRvKHAMBBBDwoMDKVydWqFSH9rukQtuxEQIIIOAXAQJov7Qk9XBEoCJz1650pCTsFAEEEEAAAQS8IsAQDq+0BOVAAAEEEEAAAQQQyAgBeqAzopkoZLoEKvoTd7rKy3ERQAABBBBAwHkBAmjnjTkCAggggEAFBCoyhIrLf1cAmk0QQCBlAYZwpEzGBggggAACCCCAAAJBFiCADnLrU3cEEEAAAQQQQACBlAUIoFMmYwMEEEAAAQQQQACBIAsQQAe59ak7AggggAACCCCAQMoCBNAJtHwAAAAU20lEQVQpk7EBAggggAACCCCAQJAFmIUjyK0fsLpX5Ix+LooSsBcJ1UUAAQQQQCAJAXqgk0AiCwIIIIAAAggggAAClgABtCXBPQIIIIAAAggggAACSQgQQCeBRBYEEEAAAQQQQAABBCwBxkBbEtwjgAACCGS8QEXOdeDqhRnf7FQAAdcF6IF2nZwDIoAAAggggAACCGSyAAF0JrceZUcAAQQQQAABBBBwXYAA2nVyDogAAggggAACCCCQyQIE0JncepQdAQQQQAABBBBAwHUBTiKMI1+wYIHMnTtX2rVrJ926dZNKlfiOEUeU9sXDP/o07WWgAAgggAACCCAQXAGiw9/bfvfu3SZoPuecc2T69OnSq1cvueiii6SgoCC4rw5qjgACCCCAAAIIIFBCgB7o30mGDx8uGkQvW7ZMateuLUuWLJGOHTvKhAkTZNCgQSXgWIEAAggg4A+Bikx9pzVn+jt/tD+1QKAiAgTQYbVQKCSjR4+W++67zwTPCtm2bVvp27evjBs3jgC6Iq8sD26z8tWJHiwVRUIAgUwVqEjgTdCdqa1NuRGIFSCADnusX79e9uzZY3qco3m0B3ratGnRqyKPV65cKbNnz44sRz8oLi6WmjVrRq9K6+O89RtSPv6ZDRukvM1NX36d8jZTfvo55W3YAAEEEMhUgYp8Hnu1rlu3bpX9QyIV+X/h1TpRLgSSFSCADkutXr3aeNWrVy/GrU6dOrJz507ZsWOH1KpVK+Y5PdGwtKEdXbp0kSuuuEI2bEg9cI05SJIL2oOuN02JTno8NivJHUVlq0jZ7zyoftQekntYkW0KCwslKytLsrOzkzvI77l2Hn9sSvm9kFm/jGlK1K5eKJ+dZdC6FhUVSW5urp279eS+rPesvo71lmnpqxQLvHfvXqlSpUqKW2Ve9kxv11TF91avJlXCL9+K/L9I9Vjl5d+2bZv5/CgvH88jYJcAAXRYcvPmzcYzvte4Ro0aZn1+fn6JAPrEE0+U559/PmE7aBBQrVo1adAg9V7chDssZ6V+aOvJjvqPOAjBx/bt2yUnJ0eqV69ejkzmP71v3z5TicqVK2d+ZcqpgQZZeh7C/vvvX07OzH9avwTqFwZ9v2ZiAJ1qC2iA5dbnYaplszO/fvbrTb/cp/oF385yuLUvL7WrnrvESf9utTzHUQEC6DBC/fr/6TnVn6Oiky7rP7hEH/wtW7YUvSVKeiLiokWLEj3FOgQQQAABBBBAAIEMF2Aau3ADNm7c2DTjpk2bYppz48aN0rRp00D8fB5TcRYQQAABBBBAAAEEShUggA7TaADdvHlzmTFjRgxUXl6emY0jZiULCCCAAAIIIIAAAoEWYAhHuPn1BK2hQ4fK3XffLT179pTu3bvL+PHjZf78+bJw4cJAv0CoPAIIIIAAAggggECsAAH07x5DhgyRVatWSZ8+fcxJIK1bt5axY8dKmzZtYsVYQgABBBBAAAEEEAi0AAH0782vszqMGjVKRowYIdbY50C/Mqg8AggggAACCCCAQEIBxkDHsVStWtWcOBi3mkUEEEAAAQQQQAABBIwAATQvBAQQQAABBBBAAAEEUhAggE4Bi6wIIIAAAggggAACCBBA8xpAAAEEEEAAAQQQQCAFAQLoFLDIigACCCCAAAIIIIAAATSvAQQQQAABBBBAAAEEUhAggE4Bi6wIIIAAAggggAACCBBA8xpAAAEEEEAAAQQQQCAFAQLoFLDIigACCCCAAAIIIIAAVyJ06DXw888/y6xZsxzae+xuQ6GQFBcXm5XZ2dmxT/pwac+ePaL1zM3N9WHtYqtUVFRkVgShXQsLC6WgoECqVasWi+DDJX2/6vu2UqVKkpWV5cMaxlYpPz9fatasGbvSh0tWu2qbatv6PXmpXdeuXSsNGjTwOzn185BAVvhDPOSh8viiKL/99pt8/fXXrtZFmzEI/4gVdcyYMVK7dm255JJLXDXmYM4KvPbaa6L/BG+44QbJyfH/d/ugvGfnzJkjCxYskAsvvFAaNWrk7IvIA3sPSrt+9913Mn36dOnevbu0b9/eA/JiriLcvHlzT5SFQvhfgADa/23suxrWqlVLDjnkEPnqq698V7cgV+jUU0+VDz74QPQXhipVqgSZwld1HzZsmIwcOVI+/vhj6dq1q6/qFuTKvP7663LBBRfIo48+KjfffHOQKah7QAX8/xtTQBuWaiOAAAIIIIAAAgg4I0AA7Ywre0UAAQQQQAABBBDwqQABtE8blmohgAACCCCAAAIIOCNAAO2MK3tFAAEEEEAAAQQQ8KkAAbRPG5ZqIYAAAggggAACCDgjkH1vODmza/aKgHMC3bp1k+OPP965A7Bn1wV0+q927drJKaecEog5dF0HTuMBW7RoYdpVp58k+UNAp02tW7euadcmTZr4o1LUAoEUBJjGLgUssiKAAAIIIIAAAgggwBAOXgMIIIAAAggggAACCKQgQACdAhZZEUAAAQQQQAABBBAggOY1gAACCCCAAAIIIIBACgI5KeQlKwKuC/z8888yffp0OfDAA83JKgcccECZZVi3bp188cUXJfLoyWmc6FKCxfUVCxYskLlz55qTBfVE0EqVyv8On+prwPVKcUBJtV31Parv1fh01llnSXZ2dvxqltMs8PTTT8tpp50mhx12WLkl2b17t+Tl5cmmTZvk5JNPlsMPP7zcbciAQEYKhM98JyHgSYE///nPoWrVqoXCH9yhpk2bhpo1axZasWJFmWV96KGHQuE3Yonb+PHjy9yOJ50V2LVrV+joo48OHXTQQaHTTz89VKNGjVC/fv1C+/btK/PAFXkNlLlDnrRVoKLtetxxx5V4j+r7dvv27baWj539cYEnn3zStFW4I6Pcnc2ZM8e8t9u3bx/q1KlTKCcnJzRhwoRytyMDApkoIJlYaMrsf4F58+aFwr2TodmzZ5vKhns1Ql27dg316NGjzMoPGDDA5NmxY0co+lZQUFDmdjzprMBtt90WCvdehbZu3WoO9M0334SqV68eGjduXKkHruhroNQd8oTtAhVpV30vVq1aNfTUU0/FvEf1/UryjsDOnTtDN998s/kc1i835QXQe/bsCbVu3To0ZMiQSCVGjhwZqly5cmjDhg2RdTxAwC8CBNB+aUmf1eOSSy4JdejQIaZWb7zxRig892ho1apVMeujF4444oiQ9lqSvCNQXFxsAib9ZxqdLrroopD2RJaWKvoaKG1/rLdXoKLtql+eNCBbtGiRvQVib7YK6C9G4SFzoVGjRiXVA/3222+bfN9//32kHPoLRa1atUL6yyAJAb8JlD8AMfxJR0LAbYFwkCzhnwBjDtuxY0f9wifLli2LWW8t6Ni78BAPOfLIIyX8YS7Dhg2TiRMnSmFhoZWF+zQIrF+/XsK9U6LtF510ubS21HwVeQ1E75/HzgpUtF3DgbNUqVLFXIQj3Astw4cPl/BP/84Wlr2nLBD+Nc98np5//vlJbbt69WpzrsohhxwSyR8egmc+j5cuXRpZxwME/CJAAO2XlvRZPX744QepV69eTK2sEwj1H3ei9PXXX0tRUZEMGjRIwr2d8uabb8qll14qnTt3lvz8/ESbsM4FAf3Hqim+PevUqSPhn4kl/NN9wlJU5DWQcEesdESgou365Zdfmi+1xx57rPmi+8QTT4ieUHr33Xc7Uk52WjEB7YCIf8+WtSd9PeiVCeOTvs9L+8yOz8syApkkQACdSa0VoLLqGdzhE81iaqy9GXr52NKCYQ2ee/fuLTNnzpRPPvlEli9fLlOnTjWzcnDF+hhKVxc2b95sjlezZs2Y41rtW1p7VuQ1EHMAFhwVqGi7Nm7cWPr37y/fffedea/+8ssvctVVV8mDDz4o4XHvjpaZnTsnoK+H+Pe4Hi18rkOpX5KdKw17RsB5AQJo5405QhkC+hOuTnNk3TQA1tSgQQPZtm1bzJbhM/TNEI7SpqM74YQTZNq0aRI+2TCy3bnnnitt2rSRWbNmRdbxwF2B+vXrmwOGTyCMObAu5+bmmraOeeL3hYq8BhLth3XOCFS0XYcOHSovvfSSWL8oaYAVPlnNvLf//e9/O1NY9uq4gL4e4t/jelBdV9pntuOF4gAIOCjAPNAO4rLr8gV0XtFevXpFMjZs2NA8btSokWzcuDGyXh9oj6Sm5s2bm/v4PzrWWYPu+J8Rw2eGy1dffRWfnWWXBLTHUZPVftZhtX3D0xOWOhd0RV4D1r65d16gou0aPrHMDLUKn1wWKWSLFi3MuOjSfo2IZOSBZwX0/Wr9KhFdSH3fh08Wjl7FYwR8IUAPtC+aMXMr0bNnT3n88ccjtzvuuMNURnuRdSiGnjRopRkzZkh4+itp2bKltSrmXsdQagD+448/RtbrGFud1F/HW5LSI6CBln7p0faLTtoubdu2jV4V87gir4GYHbDgqEBF21VP8tULpkQn/eVo7969vE+jUTLssb5ftbdZL5RkJR2es3jx4jLf51Ze7hHIOAG/TStCffwhsGbNGjMJf/hEllC4Vyr02WefmYtwhMdJRioYPmklFD5hMKST92sKn0QYCp/dH+rbt28oPP45FO51Dl1wwQWh8DCB0MKFCyPb8cB9gfCJYmY6q3AQHdKprUaPHm3aasmSJZHCaFvrlFlWSuY1YOXlPj0CybTrq6++at6nOpe7pgceeMBMd/bII4+Ewj2Woddeey3UqlWr0FFHHRUK/4qUnopw1FIF1q5da9orfh7o+M9f3UGXLl1C4dl1QvreDfc8h/r06WOmqqRdS+XliQwW0B4+EgKeFHjrrbdC4eEYZu7n8JncoWuuuSYUfUEUDarD31hDzz77bKT8+iEfHm9n1utz4Z+GQx999FHkeR6kR0Db7aabbjJfinQub52vO/4KZXq1yTPOOCOmgOW9BmIys+C6QDLteuutt5r3o3WVwfDJvqHwL03mAhv6Hg1fujt09tlnm2Da9QpwwHIFSgugE33+auAcnvXItLd2XOhVR6O/JJd7MDIgkEECWVrWjOs2p8CBEdCXp05npiehhC8Lm1S9dZuffvrJnKBmjalOakMyOS6g80FbY5+TPVhFXgPJ7pt89ghUpF3Dl3E37+2DDz7YzNRgT0nYixcEdNxz+IuR6BR2JAT8KkAA7deWpV4IIIAAAggggAACjghwEqEjrOwUAQQQQAABBBBAwK8CBNB+bVnqhQACCCCAAAIIIOCIAAG0I6zsFAEEEEAAAQQQQMCvAgTQfm1Z6oUAAggggAACCCDgiAABtCOs7BQBBPws8M0338jAgQP9XEXqhgACCCBQhgCzcJSBw1MIIIBAIgG9BL1O3RaeIzfR06xDAAEEEPC5AD3QPm9gqocAAggggAACCCBgr0ByV6aw95jsDQEEEHBVIHwpYXnnnXfkyy+/lL1798oxxxwj4csMS7Vq1WLKoRdtycvLk3nz5kn4EvLSunVr6d69uxx++OEmX/hqejJ16lTR+/BV+OSFF16Q8NUu5aSTTorZDwsIIIAAAv4WYAiHv9uX2iEQeIFVq1bJgAEDZP78+bLffvuZK1T++uuvEr6cuEyePFmOPvpoY6QBcd++fU0ArVdRC19G3lw1sXLlyvLoo4/K9ddfL9999520atVKNNDWFL4suVx44YXy8ssvm2X+IIAAAggEQ4AhHMFoZ2qJQCAFNNDVAPfzzz+XiRMnytatW2Xz5s3y7rvvyoYNG6Rfv36il5TWpEGw9j7fdttt8ttvv5nnlyxZYgJpXafb6tjn4uJiOfTQQ0UvQa2PCZ4D+dKi0gggEHABAuiAvwCoPgJ+FpgyZYoJns8++2z505/+ZHqMtb6nn366XHfddbJixQp5/vnnDcG3335r7s866yypVauWedymTRuZMGGCPPLII2boh1nJHwQQQACBwAsQQAf+JQAAAv4V0LHMmk499VRZvHhxzE2DY03aO63ptNNOM/c6jGPIkCEybdo02blzp/Ts2dME2w0aNDDP8wcBBBBAAAHGQPMaQAAB3wr06tVL/vWvf5VZv5NPPlk++OADk2f8+PFyyy23yLZt28xylSpVpEePHnLPPfdIp06dIvthGrsIBQ8QQACBQAowC0cgm51KIxAMgapVq5qKTpo0SUrrQdYTC6101VVXmQukvPfeezJz5kyZMWOGmb1j1qxZZlmDbRICCCCAAAIE0LwGEEDAtwLW9HMaJFtDNKzK6kmBOnyjYcOGZtXKlSvNmGgdL927d29z0ydGjhwpw4YNMycLEkBbetwjgAACwRZgDHSw25/aI+BrAR3PrFPNPfjgg1JUVBRTV52WTk8mnDt3rlmvM23okA+dLzo6tW/f3ixWr149sjo3N9eMj46s4AECCCCAQKAEsu8Np0DVmMoigEBgBJo0aSJr1qwxJwT++9//lho1api5nEeMGCEvvviimff5b3/7m/HQIR461d3s2bNF54nWeaFfffVV+etf/yq7du2Sxx9/XBo3bmzy6vrly5ebfW/ZskWOPfbYwJhSUQQQQACB8HUAwvOk/ueKAGgggAACPhTQuZr1QigPPPBA5ORA7ZX+n//5HxkzZkxkCIdWXae9u+OOO0xgrMuaTy+48txzz8WcRPjhhx9K//79zYVW2rZtK998841mJyGAAAIIBESAADogDU01EUBA5McffzQXSdHLb0efPBhtowH3L7/8YoJjvWBKafl0G70YS+3atcU6WTF6PzxGAAEEEPCvAAG0f9uWmiGAAAIIIIAAAgg4IMBJhA6gsksEEEAAAQQQQAAB/woQQPu3bakZAggggAACCCCAgAMCBNAOoLJLBBBAAAEEEEAAAf8KEED7t22pGQIIIIAAAggggIADAgTQDqCySwQQQAABBBBAAAH/ChBA+7dtqRkCCCCAAAIIIICAAwIE0A6gsksEEEAAAQQQQAAB/woQQPu3bakZAggggAACCCCAgAMCBNAOoLJLBBBAAAEEEEAAAf8KEED7t22pGQIIIIAAAggggIADAgTQDqCySwQQQAABBBBAAAH/ChBA+7dtqRkCCCCAAAIIIICAAwIE0A6gsksEEEAAAQQQQAAB/woQQPu3bakZAggggAACCCCAgAMCBNAOoLJLBBBAAAEEEEAAAf8KEED7t22pGQIIIIAAAggggIADAv8fQualiRQ90MUAAAAASUVORK5CYII=", 170 | "image/svg+xml": [ 171 | "\n", 172 | "\n", 173 | "\n", 174 | "\n", 175 | "\n", 176 | "\n", 177 | "\n", 178 | "\n", 179 | "\n", 180 | "\n", 181 | "\n", 182 | "\n", 183 | "\n", 184 | "\n", 185 | "\n", 186 | "\n", 187 | "\n", 188 | "\n", 189 | "\n", 190 | "\n", 191 | "\n", 192 | "\n", 193 | "\n", 194 | "\n", 195 | "\n", 196 | "\n", 197 | "\n", 198 | "\n", 199 | "\n", 200 | "\n", 201 | "\n", 202 | "\n", 203 | "\n", 204 | "\n", 205 | "\n", 206 | "\n", 207 | "\n", 208 | "\n", 209 | "\n", 210 | "\n", 211 | "\n", 212 | "\n", 213 | "\n", 214 | "\n", 215 | "\n", 216 | "\n", 217 | "\n", 218 | "\n", 219 | "\n", 220 | "\n", 221 | "\n", 222 | "\n", 223 | "\n", 224 | "\n", 225 | "\n", 226 | "\n", 227 | "\n", 228 | "\n", 229 | "\n", 230 | "\n", 231 | "\n", 232 | "\n", 233 | "\n", 234 | "\n", 235 | "\n", 236 | "\n", 237 | "\n", 238 | "\n", 239 | "\n", 240 | "\n", 241 | "\n", 242 | "\n", 243 | "\n", 244 | "\n", 245 | "\n", 246 | "\n", 247 | "\n", 248 | "\n", 249 | "\n", 250 | "\n", 251 | "\n", 252 | "\n", 253 | "\n", 254 | "\n", 255 | "\n", 256 | "\n", 257 | "\n", 258 | "\n", 259 | "\n", 260 | "\n", 261 | "\n", 262 | "\n", 263 | "\n", 264 | "\n", 265 | "\n", 266 | "\n", 267 | "\n", 268 | "\n", 269 | "\n", 270 | "\n", 271 | "\n", 272 | "\n", 273 | "\n", 274 | "\n", 275 | "\n", 276 | "\n", 277 | "\n", 278 | "\n", 279 | "\n", 280 | "\n", 281 | "\n", 282 | " \n", 283 | "\n", 284 | "\n", 285 | " \n", 286 | "\n", 287 | "\n", 288 | " \n", 289 | "\n", 290 | "\n", 291 | " \n", 292 | "\n", 293 | "\n", 294 | " \n", 295 | "\n", 296 | "\n", 297 | " \n", 298 | "\n", 299 | "\n", 300 | " \n", 301 | "\n", 302 | "\n", 303 | " \n", 304 | "\n", 305 | "\n", 306 | " \n", 307 | "\n", 308 | "\n", 309 | " \n", 310 | "\n", 311 | "\n", 312 | " \n", 313 | "\n", 314 | "\n", 315 | " \n", 316 | "\n", 317 | "\n", 318 | " \n", 319 | "\n", 320 | "\n", 321 | " \n", 322 | "\n", 323 | "\n", 324 | " \n", 325 | "\n", 326 | "\n", 327 | " \n", 328 | "\n", 329 | "\n", 330 | " \n", 331 | "\n", 332 | "\n", 333 | " \n", 334 | "\n", 335 | "\n", 336 | " \n", 337 | "\n", 338 | "\n", 339 | "\n", 340 | "\n", 341 | "\n", 342 | "\n", 343 | "\n", 344 | "\n", 345 | "\n", 346 | "\n", 347 | "\n", 348 | "\n", 349 | "\n", 350 | "\n", 351 | "\n", 352 | "\n", 353 | "\n", 354 | "\n", 355 | "\n", 356 | "\n", 357 | "\n", 358 | "\n", 359 | "\n", 360 | "\n", 361 | "\n", 362 | "\n", 363 | "\n", 364 | "\n", 365 | "\n", 366 | "\n", 367 | "\n", 368 | "\n", 369 | "\n", 370 | "\n", 371 | "\n", 372 | "\n", 373 | "\n", 374 | "\n", 375 | "\n", 376 | "\n", 377 | "\n", 378 | "\n", 379 | "\n", 380 | "\n", 381 | "\n", 382 | "\n", 383 | "\n", 384 | "\n", 385 | "\n", 386 | "\n", 387 | "\n", 388 | "\n", 389 | "\n", 390 | "\n", 391 | "\n", 392 | "\n", 393 | "\n", 394 | "\n", 395 | "\n", 396 | "\n", 397 | "\n", 398 | "\n", 399 | "\n", 400 | "\n", 401 | "\n", 402 | "\n", 403 | "\n", 404 | "\n", 405 | "\n", 406 | "\n", 407 | "\n", 408 | "\n", 409 | "\n", 410 | "\n", 411 | "\n", 412 | "\n", 413 | "\n", 414 | "\n", 415 | "\n", 416 | "\n", 417 | "\n", 418 | "\n", 419 | "\n", 420 | "\n", 421 | "\n", 422 | "\n", 423 | "\n", 424 | "\n", 425 | "\n", 426 | "\n", 427 | "\n", 428 | "\n", 429 | "\n", 430 | "\n", 431 | "\n", 432 | "\n", 433 | "\n", 434 | "\n", 435 | "\n", 436 | "\n", 437 | " \n", 438 | "\n", 439 | "\n", 440 | " \n", 441 | " \n", 442 | " \n", 443 | "\n", 444 | "\n", 445 | " \n", 446 | " \n", 447 | " \n", 448 | "\n", 449 | "\n", 450 | " \n", 451 | " \n", 452 | " \n", 453 | "\n", 454 | "\n", 455 | " \n", 456 | " \n", 457 | " \n", 458 | " \n", 459 | "\n", 460 | "\n", 461 | "\n", 462 | "\n", 463 | "\n", 464 | "\n", 465 | "\n", 466 | "\n", 467 | "\n", 468 | "\n", 469 | "\n", 470 | " \n", 471 | " \n", 472 | " \n", 473 | " \n", 474 | "\n", 475 | "\n", 476 | " \n", 477 | " \n", 478 | " \n", 479 | "\n", 480 | "\n", 481 | " \n", 482 | " \n", 483 | " \n", 484 | "\n", 485 | "\n", 486 | " \n", 487 | " \n", 488 | " \n", 489 | "\n", 490 | "\n", 491 | " \n", 492 | " \n", 493 | " \n", 494 | "\n", 495 | "\n", 496 | " \n", 497 | " \n", 498 | " \n", 499 | " \n", 500 | " \n", 501 | "\n", 502 | "\n", 503 | "\n", 504 | " \n", 505 | " \n", 506 | " \n", 507 | " \n", 508 | " \n", 509 | " \n", 510 | " \n", 511 | " \n", 512 | "\n", 513 | "\n", 514 | "\n", 515 | "\n", 516 | "\n", 517 | "\n", 518 | " \n", 519 | " \n", 520 | " \n", 521 | " \n", 522 | " \n", 523 | "\n", 524 | "\n", 525 | " \n", 526 | " \n", 527 | " \n", 528 | " \n", 529 | "\n", 530 | "\n", 531 | "\n" 532 | ], 533 | "text/plain": [ 534 | "plot without title" 535 | ] 536 | }, 537 | "metadata": { 538 | "image/svg+xml": { 539 | "isolated": true 540 | } 541 | }, 542 | "output_type": "display_data" 543 | } 544 | ], 545 | "source": [ 546 | "ggplot(\n", 547 | " aes(x = est, fill = p < 0.05),\n", 548 | " data = results\n", 549 | ") +\n", 550 | "geom_histogram()" 551 | ] 552 | }, 553 | { 554 | "cell_type": "markdown", 555 | "metadata": {}, 556 | "source": [ 557 | "## Overestimating effects" 558 | ] 559 | }, 560 | { 561 | "cell_type": "code", 562 | "execution_count": 7, 563 | "metadata": { 564 | "collapsed": false 565 | }, 566 | "outputs": [ 567 | { 568 | "data": { 569 | "text/plain": [ 570 | " Min. 1st Qu. Median Mean 3rd Qu. Max. \n", 571 | " -0.694 -0.036 0.100 0.099 0.231 0.980 " 572 | ] 573 | }, 574 | "execution_count": 7, 575 | "metadata": {}, 576 | "output_type": "execute_result" 577 | } 578 | ], 579 | "source": [ 580 | "summary(results$est)" 581 | ] 582 | }, 583 | { 584 | "cell_type": "code", 585 | "execution_count": 8, 586 | "metadata": { 587 | "collapsed": false 588 | }, 589 | "outputs": [ 590 | { 591 | "data": { 592 | "text/plain": [ 593 | " Min. 1st Qu. Median Mean 3rd Qu. Max. \n", 594 | " -0.694 0.407 0.452 0.395 0.514 0.980 " 595 | ] 596 | }, 597 | "execution_count": 8, 598 | "metadata": {}, 599 | "output_type": "execute_result" 600 | } 601 | ], 602 | "source": [ 603 | "summary(results$est[results$p < 0.05])" 604 | ] 605 | }, 606 | { 607 | "cell_type": "markdown", 608 | "metadata": {}, 609 | "source": [ 610 | "Gelman and Carlin call the \"exaggeration factor: the expected (absolute) value of the estimate divided by the effect size, if it is statistically significantly different from zero.\"" 611 | ] 612 | }, 613 | { 614 | "cell_type": "code", 615 | "execution_count": 9, 616 | "metadata": { 617 | "collapsed": false 618 | }, 619 | "outputs": [ 620 | { 621 | "data": { 622 | "text/html": [ 623 | "0.476724715735216" 624 | ], 625 | "text/latex": [ 626 | "0.476724715735216" 627 | ], 628 | "text/markdown": [ 629 | "0.476724715735216" 630 | ], 631 | "text/plain": [ 632 | "[1] 0.477" 633 | ] 634 | }, 635 | "execution_count": 9, 636 | "metadata": {}, 637 | "output_type": "execute_result" 638 | } 639 | ], 640 | "source": [ 641 | "mean(abs(results$est[results$p < 0.05]))" 642 | ] 643 | }, 644 | { 645 | "cell_type": "code", 646 | "execution_count": 10, 647 | "metadata": { 648 | "collapsed": false 649 | }, 650 | "outputs": [ 651 | { 652 | "data": { 653 | "text/html": [ 654 | "4.76724715735216" 655 | ], 656 | "text/latex": [ 657 | "4.76724715735216" 658 | ], 659 | "text/markdown": [ 660 | "4.76724715735216" 661 | ], 662 | "text/plain": [ 663 | "[1] 4.77" 664 | ] 665 | }, 666 | "execution_count": 10, 667 | "metadata": {}, 668 | "output_type": "execute_result" 669 | } 670 | ], 671 | "source": [ 672 | "mean(abs(results$est[results$p < 0.05])) / .1" 673 | ] 674 | }, 675 | { 676 | "cell_type": "markdown", 677 | "metadata": {}, 678 | "source": [ 679 | "That is, we get estimates that are almost 5 times too large.\n", 680 | "\n", 681 | "We also get estimates with the wrong sign." 682 | ] 683 | }, 684 | { 685 | "cell_type": "code", 686 | "execution_count": 11, 687 | "metadata": { 688 | "collapsed": false 689 | }, 690 | "outputs": [ 691 | { 692 | "data": { 693 | "text/plain": [ 694 | "\n", 695 | " -1 1 \n", 696 | " 75 740 " 697 | ] 698 | }, 699 | "execution_count": 11, 700 | "metadata": {}, 701 | "output_type": "execute_result" 702 | } 703 | ], 704 | "source": [ 705 | "table(sign(results$est[results$p < 0.05]))" 706 | ] 707 | }, 708 | { 709 | "cell_type": "code", 710 | "execution_count": 12, 711 | "metadata": { 712 | "collapsed": false 713 | }, 714 | "outputs": [ 715 | { 716 | "data": { 717 | "text/html": [ 718 | "0.0920245398773006" 719 | ], 720 | "text/latex": [ 721 | "0.0920245398773006" 722 | ], 723 | "text/markdown": [ 724 | "0.0920245398773006" 725 | ], 726 | "text/plain": [ 727 | "[1] 0.092" 728 | ] 729 | }, 730 | "execution_count": 12, 731 | "metadata": {}, 732 | "output_type": "execute_result" 733 | } 734 | ], 735 | "source": [ 736 | "mean(results$est[results$p < 0.05] < 0)" 737 | ] 738 | }, 739 | { 740 | "cell_type": "markdown", 741 | "metadata": {}, 742 | "source": [ 743 | "This isn't the worst possible case. Many experiments have even lower power.\n", 744 | "\n", 745 | "### In combination with bad stopping rules\n", 746 | "\n", 747 | "Low power also makes the use of stopping rules more problematic.\n", 748 | "\n", 749 | "Here we do a simulation where we start with some n in each of treatment and control. Then check whether we have a significant result. If not, add some incremental n to each condition. Repeat until there is a significant result or we hit a maximum n." 750 | ] 751 | }, 752 | { 753 | "cell_type": "code", 754 | "execution_count": 13, 755 | "metadata": { 756 | "collapsed": true 757 | }, 758 | "outputs": [], 759 | "source": [ 760 | "add.data <- function(n, d, z = c(), y = c()) {\n", 761 | " z.new <- rep(0:1, each = n)\n", 762 | " y.new <- z.new * d + rnorm(n * 2)\n", 763 | " z <- c(z, z.new)\n", 764 | " y <- c(y, y.new)\n", 765 | " t <- t.test(y ~ z)\n", 766 | " list(z = z, y = y, t = t)\n", 767 | "}\n", 768 | "\n", 769 | "do.stopping.rule.sim <- function(n, d, n.inc, n.max) {\n", 770 | " r <- list(z = c(), y = c())\n", 771 | " while (TRUE) {\n", 772 | " nc <- length(r$z) / 2\n", 773 | " if (nc + n.inc >= n.max)\n", 774 | " break;\n", 775 | " ni <- if(nc == 0) n else n.inc\n", 776 | " r <- add.data(ni, d, r$z, r$y)\n", 777 | " if (r$t$p.value < 0.05)\n", 778 | " break;\n", 779 | " }\n", 780 | " r\n", 781 | "}" 782 | ] 783 | }, 784 | { 785 | "cell_type": "code", 786 | "execution_count": 14, 787 | "metadata": { 788 | "collapsed": false 789 | }, 790 | "outputs": [ 791 | { 792 | "data": { 793 | "text/plain": [ 794 | "\n", 795 | "\tWelch Two Sample t-test\n", 796 | "\n", 797 | "data: y by z\n", 798 | "t = -0.7, df = 200, p-value = 0.5\n", 799 | "alternative hypothesis: true difference in means is not equal to 0\n", 800 | "95 percent confidence interval:\n", 801 | " -0.361 0.172\n", 802 | "sample estimates:\n", 803 | "mean in group 0 mean in group 1 \n", 804 | " -0.0166 0.0780 \n" 805 | ] 806 | }, 807 | "execution_count": 14, 808 | "metadata": {}, 809 | "output_type": "execute_result" 810 | } 811 | ], 812 | "source": [ 813 | "# one run, with no true effect\n", 814 | "do.stopping.rule.sim(n = 20, d = 0, n.inc = 2, n.max = 120)$t" 815 | ] 816 | }, 817 | { 818 | "cell_type": "markdown", 819 | "metadata": {}, 820 | "source": [ 821 | "Run many simulations of experiments run with this stopping rule:" 822 | ] 823 | }, 824 | { 825 | "cell_type": "code", 826 | "execution_count": 18, 827 | "metadata": { 828 | "collapsed": true 829 | }, 830 | "outputs": [], 831 | "source": [ 832 | "set.seed(8001)\n", 833 | "sr <- foreach(i = 1:1e3, .combine = rbind) %dopar% {\n", 834 | " r <- do.stopping.rule.sim(20, 0, 5, 50)\n", 835 | " data.frame(est = r$t$estimate[2] - r$t$estimate[1],\n", 836 | " p = r$t$p.value,\n", 837 | " n = length(r$z)\n", 838 | " )\n", 839 | " }" 840 | ] 841 | }, 842 | { 843 | "cell_type": "code", 844 | "execution_count": 19, 845 | "metadata": { 846 | "collapsed": false 847 | }, 848 | "outputs": [ 849 | { 850 | "data": { 851 | "text/plain": [ 852 | " est p n \n", 853 | " Min. :-1.073 Min. :0.000 Min. :40.0 \n", 854 | " 1st Qu.:-0.154 1st Qu.:0.216 1st Qu.:90.0 \n", 855 | " Median :-0.022 Median :0.506 Median :90.0 \n", 856 | " Mean :-0.015 Mean :0.486 Mean :85.7 \n", 857 | " 3rd Qu.: 0.128 3rd Qu.:0.751 3rd Qu.:90.0 \n", 858 | " Max. : 1.003 Max. :0.998 Max. :90.0 " 859 | ] 860 | }, 861 | "execution_count": 19, 862 | "metadata": {}, 863 | "output_type": "execute_result" 864 | } 865 | ], 866 | "source": [ 867 | "summary(sr)" 868 | ] 869 | }, 870 | { 871 | "cell_type": "code", 872 | "execution_count": 20, 873 | "metadata": { 874 | "collapsed": false 875 | }, 876 | "outputs": [ 877 | { 878 | "data": { 879 | "text/html": [ 880 | "0.13" 881 | ], 882 | "text/latex": [ 883 | "0.13" 884 | ], 885 | "text/markdown": [ 886 | "0.13" 887 | ], 888 | "text/plain": [ 889 | "[1] 0.13" 890 | ] 891 | }, 892 | "execution_count": 20, 893 | "metadata": {}, 894 | "output_type": "execute_result" 895 | } 896 | ], 897 | "source": [ 898 | "mean(sr$p < 0.05)" 899 | ] 900 | }, 901 | { 902 | "cell_type": "markdown", 903 | "metadata": {}, 904 | "source": [ 905 | "That is, rather than Type I error rate of 5%, we have 13%." 906 | ] 907 | }, 908 | { 909 | "cell_type": "code", 910 | "execution_count": null, 911 | "metadata": { 912 | "collapsed": true 913 | }, 914 | "outputs": [], 915 | "source": [] 916 | } 917 | ], 918 | "metadata": { 919 | "kernelspec": { 920 | "display_name": "R", 921 | "language": "R", 922 | "name": "ir" 923 | }, 924 | "language_info": { 925 | "codemirror_mode": "r", 926 | "file_extension": ".r", 927 | "mimetype": "text/x-r-source", 928 | "name": "R", 929 | "pygments_lexer": "r", 930 | "version": "3.2.2" 931 | } 932 | }, 933 | "nbformat": 4, 934 | "nbformat_minor": 0 935 | } 936 | -------------------------------------------------------------------------------- /Randomization inference in networks.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Randomization inference for spillovers in networks\n", 8 | "\n", 9 | "This uses data from:\n", 10 | "Cai, Jing, Alain De Janvry, and Elisabeth Sadoulet. 2015. \"Social Networks and the Decision to Insure.\" American Economic Journal: Applied Economics, 7(2): 81-108.\n", 11 | "https://www.aeaweb.org/articles.php?doi=10.1257/app.20130442\n", 12 | "\n", 13 | "That paper examines spillover effects in rural Chinese farmers being encouraged to sign up for insurance. Households were randomly assigned to different periods in which to be encouraged to get insurance and whether that encouragement was 'intensive'.\n", 14 | "\n", 15 | "\"The social network survey asked household heads to list five close friends, either within or outside the village, with whom they most frequently discuss rice production or financial issues. Respondents were asked to rank these friends based on which one would be consulted first, second, etc.\"\n", 16 | "\n", 17 | "We are essentially re-doing Table 2 column 2 (there are some minor differences because of how we have simplified things a bit).\n" 18 | ] 19 | }, 20 | { 21 | "cell_type": "code", 22 | "execution_count": 8, 23 | "metadata": { 24 | "collapsed": true 25 | }, 26 | "outputs": [], 27 | "source": [ 28 | "options(digits = 3)\n", 29 | "library(ggplot2)\n", 30 | "theme_set(theme_bw())\n", 31 | "options(repr.plot.width = 6)\n", 32 | "options(repr.plot.height = 4)\n", 33 | "\n", 34 | "library(icsw)\n", 35 | "library(foreach)\n", 36 | "library(Matrix)\n", 37 | "library(lfe)" 38 | ] 39 | }, 40 | { 41 | "cell_type": "code", 42 | "execution_count": 9, 43 | "metadata": { 44 | "collapsed": false 45 | }, 46 | "outputs": [], 47 | "source": [ 48 | "cai <- read.table(\"cai_data/cai.main.tsv\", sep = \"\\t\")" 49 | ] 50 | }, 51 | { 52 | "cell_type": "code", 53 | "execution_count": 10, 54 | "metadata": { 55 | "collapsed": false 56 | }, 57 | "outputs": [ 58 | { 59 | "data": { 60 | "text/html": [ 61 | "\n", 62 | "\n", 63 | "\n", 64 | "\t\n", 65 | "\t\n", 66 | "\t\n", 67 | "\t\n", 68 | "\t\n", 69 | "\t\n", 70 | "\n", 71 | "
idaddressregionvillagetakeup_surveyagemaledelayintensiveinfo_noneintensive.nondelay.peersn.peers
11111385fusheng671fusheng137101104
21111035fusheng211fusheng160101100
31111363fusheng51fusheng056100103
41111042fusheng211fusheng157100111
51111045fusheng211fusheng145110124
61111038fusheng211fusheng161111104
\n" 72 | ], 73 | "text/latex": [ 74 | "\\begin{tabular}{r|llllllllllll}\n", 75 | " & id & address & region & village & takeup_survey & age & male & delay & intensive & info_none & intensive.nondelay.peers & n.peers\\\\\n", 76 | "\\hline\n", 77 | "\t1 & 1111385 & fusheng67 & 1 & fusheng & 1 & 37 & 1 & 0 & 1 & 1 & 0 & 4\\\\\n", 78 | "\t2 & 1111035 & fusheng21 & 1 & fusheng & 1 & 60 & 1 & 0 & 1 & 1 & 0 & 0\\\\\n", 79 | "\t3 & 1111363 & fusheng5 & 1 & fusheng & 0 & 56 & 1 & 0 & 0 & 1 & 0 & 3\\\\\n", 80 | "\t4 & 1111042 & fusheng21 & 1 & fusheng & 1 & 57 & 1 & 0 & 0 & 1 & 1 & 1\\\\\n", 81 | "\t5 & 1111045 & fusheng21 & 1 & fusheng & 1 & 45 & 1 & 1 & 0 & 1 & 2 & 4\\\\\n", 82 | "\t6 & 1111038 & fusheng21 & 1 & fusheng & 1 & 61 & 1 & 1 & 1 & 1 & 0 & 4\\\\\n", 83 | "\\end{tabular}\n" 84 | ], 85 | "text/plain": [ 86 | " id address region village takeup_survey age male delay intensive info_none intensive.nondelay.peers n.peers\n", 87 | "1 1111385 fusheng67 1 fusheng 1 37 1 0 1 1 0 4\n", 88 | "2 1111035 fusheng21 1 fusheng 1 60 1 0 1 1 0 0\n", 89 | "3 1111363 fusheng5 1 fusheng 0 56 1 0 0 1 0 3\n", 90 | "4 1111042 fusheng21 1 fusheng 1 57 1 0 0 1 1 1\n", 91 | "5 1111045 fusheng21 1 fusheng 1 45 1 1 0 1 2 4\n", 92 | "6 1111038 fusheng21 1 fusheng 1 61 1 1 1 1 0 4" 93 | ] 94 | }, 95 | "execution_count": 10, 96 | "metadata": {}, 97 | "output_type": "execute_result" 98 | } 99 | ], 100 | "source": [ 101 | "head(cai)" 102 | ] 103 | }, 104 | { 105 | "cell_type": "markdown", 106 | "metadata": {}, 107 | "source": [ 108 | "The main outcome is whether they sign for insurance `takeup_survey`." 109 | ] 110 | }, 111 | { 112 | "cell_type": "code", 113 | "execution_count": 11, 114 | "metadata": { 115 | "collapsed": false, 116 | "scrolled": true 117 | }, 118 | "outputs": [ 119 | { 120 | "name": "stderr", 121 | "output_type": "stream", 122 | "text": [ 123 | " [[ suppressing 10 column names ‘1111385’, ‘1111035’, ‘1111363’ ... ]]\n", 124 | " [[ suppressing 10 column names ‘1111385’, ‘1111035’, ‘1111363’ ... ]]\n" 125 | ] 126 | }, 127 | { 128 | "data": { 129 | "text/plain": [ 130 | "10 x 10 sparse Matrix of class \"dgCMatrix\"\n", 131 | " \n", 132 | "1111385 . . . . . . . . . .\n", 133 | "1111035 . . . . . . . . . .\n", 134 | "1111363 . . . . . . . . . .\n", 135 | "1111042 . . . . . . . . . .\n", 136 | "1111045 . . . . . . . 1 . .\n", 137 | "1111038 . . . . . . . 1 1 .\n", 138 | "1111034 . . . . . . . . . 1\n", 139 | "1111055 . . . . 1 . . . . .\n", 140 | "1111050 . . . . 1 1 . 1 . 1\n", 141 | "1111031 . . . . 1 . . 1 . ." 142 | ] 143 | }, 144 | "execution_count": 11, 145 | "metadata": {}, 146 | "output_type": "execute_result" 147 | } 148 | ], 149 | "source": [ 150 | "load(\"cai_data/cai.adjacency.RData\")\n", 151 | "A[1:10,1:10]" 152 | ] 153 | }, 154 | { 155 | "cell_type": "markdown", 156 | "metadata": {}, 157 | "source": [ 158 | "Now let's estimate the relationship between how many peers were given the strong encouragement to sign up for insurance in the prior period, `intensive.nondelay.peers` and the outcome `takeup_survey`. We will only do this for egos who didn't get the treatment in the prior period and who didn't receive information, as part of their treatment, about the adoption rates in their area. (This is also what the paper does.)" 159 | ] 160 | }, 161 | { 162 | "cell_type": "markdown", 163 | "metadata": {}, 164 | "source": [ 165 | "Now we can get a point estimate for the effects of peer treatments:" 166 | ] 167 | }, 168 | { 169 | "cell_type": "code", 170 | "execution_count": 12, 171 | "metadata": { 172 | "collapsed": false 173 | }, 174 | "outputs": [ 175 | { 176 | "data": { 177 | "text/plain": [ 178 | "\n", 179 | "Call:\n", 180 | "lm(formula = takeup_survey ~ intensive + I(intensive.nondelay.peers/n.peers) + \n", 181 | " factor(n.peers), data = cai)\n", 182 | "\n", 183 | "Residuals:\n", 184 | " Min 1Q Median 3Q Max \n", 185 | "-0.576 -0.451 -0.373 0.533 0.688 \n", 186 | "\n", 187 | "Coefficients:\n", 188 | " Estimate Std. Error t value Pr(>|t|) \n", 189 | "(Intercept) 0.3116 0.0340 9.16 < 2e-16 ***\n", 190 | "intensive 0.0779 0.0148 5.26 1.5e-07 ***\n", 191 | "I(intensive.nondelay.peers/n.peers) 0.0508 0.0295 1.72 0.08469 . \n", 192 | "factor(n.peers)2 0.0563 0.0389 1.45 0.14796 \n", 193 | "factor(n.peers)3 0.0610 0.0361 1.69 0.09071 . \n", 194 | "factor(n.peers)4 0.0833 0.0350 2.38 0.01746 * \n", 195 | "factor(n.peers)5 0.1356 0.0354 3.83 0.00013 ***\n", 196 | "---\n", 197 | "Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1\n", 198 | "\n", 199 | "Residual standard error: 0.494 on 4514 degrees of freedom\n", 200 | " (256 observations deleted due to missingness)\n", 201 | "Multiple R-squared: 0.0124,\tAdjusted R-squared: 0.0111 \n", 202 | "F-statistic: 9.42 on 6 and 4514 DF, p-value: 2.62e-10\n" 203 | ] 204 | }, 205 | "execution_count": 12, 206 | "metadata": {}, 207 | "output_type": "execute_result" 208 | } 209 | ], 210 | "source": [ 211 | "lm.1 <- lm(\n", 212 | " takeup_survey ~ intensive + I(intensive.nondelay.peers/n.peers) + factor(n.peers),\n", 213 | " data = cai\n", 214 | ")\n", 215 | "summary(lm.1)" 216 | ] 217 | }, 218 | { 219 | "cell_type": "markdown", 220 | "metadata": {}, 221 | "source": [ 222 | "There could be something here. We see both an effect of one's own treatment, and an effect of the fraction of peers treated in the early period.\n", 223 | "\n", 224 | "Note that depending on your number of peers, the fraction of treated peers can only take on some values. This violates the 'positivity' support assumption for causal inference. Even if this worked with the number of treated peers, and considered only 0 or more than 0 treated peers, the propensity scores would be heterogeneous. The author attempt to deal with this by adding the indicators for each number of friends.\n", 225 | "\n", 226 | "Make a function that, given the data (or permuted data) computes our test statistic -- the regression coefficient from above. We can see that it gives the same results as before:" 227 | ] 228 | }, 229 | { 230 | "cell_type": "code", 231 | "execution_count": 13, 232 | "metadata": { 233 | "collapsed": false 234 | }, 235 | "outputs": [ 236 | { 237 | "name": "stdout", 238 | "output_type": "stream", 239 | "text": [ 240 | "I(z.peers/n.peers) \n", 241 | " 0.0508 \n" 242 | ] 243 | } 244 | ], 245 | "source": [ 246 | "peer.regression.coef <- function(z, z.peers, n.peers, y) {\n", 247 | " coef(lm(y ~ z + I(z.peers / n.peers) + factor(n.peers)))[3]\n", 248 | "}\n", 249 | "\n", 250 | "obs.coef <- with(\n", 251 | " cai,\n", 252 | " peer.regression.coef(intensive, intensive.nondelay.peers, n.peers, takeup_survey)\n", 253 | ")\n", 254 | "print(obs.coef)" 255 | ] 256 | }, 257 | { 258 | "cell_type": "markdown", 259 | "metadata": {}, 260 | "source": [ 261 | "Now we write a function to do the focal-auxillary permuation and compute the test statistic for each permutation." 262 | ] 263 | }, 264 | { 265 | "cell_type": "code", 266 | "execution_count": 14, 267 | "metadata": { 268 | "collapsed": true 269 | }, 270 | "outputs": [], 271 | "source": [ 272 | "do.focal.aux.permutation <- function(adj.mat, z, n.peers, y,\n", 273 | " is.focal, R = 1e3,\n", 274 | " fnc = peer.regression.coef) {\n", 275 | " foreach(i = 1:R, .combine = 'c') %do% {\n", 276 | " zp <- z\n", 277 | " zp[!is.focal] <- sample(z[!is.focal]) # permute treatments for auxillary vertices only\n", 278 | " zp.peers <- as.vector(adj.mat %*% zp) # re-compute number of peers treated\n", 279 | " fnc(z[is.focal], zp.peers[is.focal], n.peers[is.focal], y[is.focal])\n", 280 | " }\n", 281 | "}\n" 282 | ] 283 | }, 284 | { 285 | "cell_type": "markdown", 286 | "metadata": {}, 287 | "source": [ 288 | "We can now call this function to draw from the distribution of the test statistic under the null of no spillovers (but possible direct effects).\n", 289 | "\n", 290 | "Just for illustration, let's start by just selecting a random 2000 units as focal units." 291 | ] 292 | }, 293 | { 294 | "cell_type": "markdown", 295 | "metadata": {}, 296 | "source": [ 297 | "Actually in the paper, they mainly don't focus on contemporaneous influence. Rather the authors look for effects of the assignment of peers treated in period 1 on egos only assigned in round 2." 298 | ] 299 | }, 300 | { 301 | "cell_type": "code", 302 | "execution_count": 15, 303 | "metadata": { 304 | "collapsed": false 305 | }, 306 | "outputs": [ 307 | { 308 | "data": { 309 | "text/plain": [ 310 | " Min. 1st Qu. Median Mean 3rd Qu. Max. \n", 311 | "-0.0371 0.0434 0.0661 0.0650 0.0883 0.1760 " 312 | ] 313 | }, 314 | "execution_count": 15, 315 | "metadata": {}, 316 | "output_type": "execute_result" 317 | } 318 | ], 319 | "source": [ 320 | "\n", 321 | "cai$is.focal <- sample(c(rep(TRUE, 2000), rep(FALSE, nrow(cai) - 2000)))\n", 322 | "\n", 323 | "null.coefs <- do.focal.aux.permutation(\n", 324 | " A,\n", 325 | " cai$intensive,\n", 326 | " cai$n.peers, cai$takeup_survey,\n", 327 | " cai$is.focal,\n", 328 | " R = 1e3\n", 329 | ")\n", 330 | "\n", 331 | "summary(null.coefs)" 332 | ] 333 | }, 334 | { 335 | "cell_type": "code", 336 | "execution_count": 16, 337 | "metadata": { 338 | "collapsed": false 339 | }, 340 | "outputs": [ 341 | { 342 | "name": "stdout", 343 | "output_type": "stream", 344 | "text": [ 345 | "I(z.peers/n.peers) \n", 346 | " 0.0449 \n" 347 | ] 348 | } 349 | ], 350 | "source": [ 351 | "obs.coef <- with(\n", 352 | " subset(cai, is.focal),\n", 353 | " peer.regression.coef(intensive, intensive.nondelay.peers, n.peers, takeup_survey)\n", 354 | ")\n", 355 | "print(obs.coef)" 356 | ] 357 | }, 358 | { 359 | "cell_type": "code", 360 | "execution_count": 17, 361 | "metadata": { 362 | "collapsed": false 363 | }, 364 | "outputs": [ 365 | { 366 | "data": { 367 | "text/html": [ 368 | "0.526" 369 | ], 370 | "text/latex": [ 371 | "0.526" 372 | ], 373 | "text/markdown": [ 374 | "0.526" 375 | ], 376 | "text/plain": [ 377 | "[1] 0.526" 378 | ] 379 | }, 380 | "execution_count": 17, 381 | "metadata": {}, 382 | "output_type": "execute_result" 383 | } 384 | ], 385 | "source": [ 386 | "two.sided.p.value.perm <- function(obs, null.draws) {\n", 387 | " lower.p <- mean(obs > null.draws)\n", 388 | " upper.p <- mean(obs < null.draws)\n", 389 | " 2 * min(lower.p, upper.p)\n", 390 | "}\n", 391 | "\n", 392 | "two.sided.p.value.perm(obs.coef, null.coefs)" 393 | ] 394 | }, 395 | { 396 | "cell_type": "markdown", 397 | "metadata": {}, 398 | "source": [ 399 | "So actually this doesn't look statistically significant...\n", 400 | "\n", 401 | "But, in fact, in the paper they focus their analysis a bit more in a couple ways. They can restrict attention to households treated in the second period.\n", 402 | "\n", 403 | "Another way is to restrict attention to households that were not, as part of the treatment, randomly assigned to get information about insurance adoption in their area. Perhaps that social information would reduce the impact of other social info. These are identified with `info_none == 1` if you want to try that." 404 | ] 405 | }, 406 | { 407 | "cell_type": "code", 408 | "execution_count": 18, 409 | "metadata": { 410 | "collapsed": false 411 | }, 412 | "outputs": [ 413 | { 414 | "name": "stdout", 415 | "output_type": "stream", 416 | "text": [ 417 | "I(z.peers/n.peers) \n", 418 | " 0.0508 \n" 419 | ] 420 | } 421 | ], 422 | "source": [ 423 | "# a relevant subset\n", 424 | "cai$relevant.case <- with(cai, delay == 1 )\n", 425 | "\n", 426 | "obs.coef <- with(\n", 427 | " cai,\n", 428 | " peer.regression.coef(intensive, intensive.nondelay.peers, n.peers, takeup_survey)\n", 429 | ")\n", 430 | "print(obs.coef)" 431 | ] 432 | }, 433 | { 434 | "cell_type": "markdown", 435 | "metadata": {}, 436 | "source": [ 437 | "Since only some units have relevant outcomes now, we can make all of them the focal units." 438 | ] 439 | }, 440 | { 441 | "cell_type": "code", 442 | "execution_count": 19, 443 | "metadata": { 444 | "collapsed": false 445 | }, 446 | "outputs": [ 447 | { 448 | "data": { 449 | "text/plain": [ 450 | " Min. 1st Qu. Median Mean 3rd Qu. Max. \n", 451 | "-0.0155 0.0467 0.0632 0.0630 0.0787 0.1340 " 452 | ] 453 | }, 454 | "execution_count": 19, 455 | "metadata": {}, 456 | "output_type": "execute_result" 457 | } 458 | ], 459 | "source": [ 460 | "cai$is.focal <- cai$relevant.case\n", 461 | "\n", 462 | "null.coefs <- do.focal.aux.permutation(\n", 463 | " A,\n", 464 | " cai$intensive,\n", 465 | " cai$n.peers, cai$takeup_survey,\n", 466 | " cai$is.focal,\n", 467 | " R = 1e3\n", 468 | ")\n", 469 | "\n", 470 | "summary(null.coefs)" 471 | ] 472 | }, 473 | { 474 | "cell_type": "code", 475 | "execution_count": 20, 476 | "metadata": { 477 | "collapsed": false 478 | }, 479 | "outputs": [ 480 | { 481 | "name": "stdout", 482 | "output_type": "stream", 483 | "text": [ 484 | "I(z.peers/n.peers) \n", 485 | " 0.169 \n" 486 | ] 487 | } 488 | ], 489 | "source": [ 490 | "obs.coef <- with(\n", 491 | " subset(cai, is.focal),\n", 492 | " peer.regression.coef(intensive, intensive.nondelay.peers, n.peers, takeup_survey)\n", 493 | ")\n", 494 | "print(obs.coef)" 495 | ] 496 | }, 497 | { 498 | "cell_type": "code", 499 | "execution_count": 21, 500 | "metadata": { 501 | "collapsed": false 502 | }, 503 | "outputs": [ 504 | { 505 | "data": { 506 | "text/html": [ 507 | "0" 508 | ], 509 | "text/latex": [ 510 | "0" 511 | ], 512 | "text/markdown": [ 513 | "0" 514 | ], 515 | "text/plain": [ 516 | "[1] 0" 517 | ] 518 | }, 519 | "execution_count": 21, 520 | "metadata": {}, 521 | "output_type": "execute_result" 522 | } 523 | ], 524 | "source": [ 525 | "two.sided.p.value.perm(obs.coef, null.coefs)" 526 | ] 527 | }, 528 | { 529 | "cell_type": "markdown", 530 | "metadata": {}, 531 | "source": [ 532 | "So the p-value is very close to 0. For this subpopulation, there is strong evidence of a spillover effect." 533 | ] 534 | }, 535 | { 536 | "cell_type": "code", 537 | "execution_count": null, 538 | "metadata": { 539 | "collapsed": true 540 | }, 541 | "outputs": [], 542 | "source": [] 543 | } 544 | ], 545 | "metadata": { 546 | "kernelspec": { 547 | "display_name": "R", 548 | "language": "R", 549 | "name": "ir" 550 | }, 551 | "language_info": { 552 | "codemirror_mode": "r", 553 | "file_extension": ".r", 554 | "mimetype": "text/x-r-source", 555 | "name": "R", 556 | "pygments_lexer": "r", 557 | "version": "3.2.2" 558 | } 559 | }, 560 | "nbformat": 4, 561 | "nbformat_minor": 0 562 | } 563 | -------------------------------------------------------------------------------- /Using covariates.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Using covariates to increase precision" 8 | ] 9 | }, 10 | { 11 | "cell_type": "code", 12 | "execution_count": 67, 13 | "metadata": { 14 | "collapsed": false 15 | }, 16 | "outputs": [], 17 | "source": [ 18 | "options(digits = 2)\n", 19 | "library(foreach)\n", 20 | "library(doMC)\n", 21 | "registerDoMC(cores = 4)\n", 22 | "library(ggplot2)\n", 23 | "theme_set(theme_bw())\n", 24 | "library(repr)\n", 25 | "options(repr.plot.width=6, repr.plot.height=4)" 26 | ] 27 | }, 28 | { 29 | "cell_type": "markdown", 30 | "metadata": {}, 31 | "source": [ 32 | "Synthetic Facebook data set from https://www.udacity.com/wiki/ud651#!#data-sets.\n", 33 | "We are working with a subset of this to make the simulations fast." 34 | ] 35 | }, 36 | { 37 | "cell_type": "code", 38 | "execution_count": 42, 39 | "metadata": { 40 | "collapsed": false 41 | }, 42 | "outputs": [], 43 | "source": [ 44 | "ps <- read.table(\"pseudo_facebook_small.tsv\", header = TRUE)" 45 | ] 46 | }, 47 | { 48 | "cell_type": "code", 49 | "execution_count": 72, 50 | "metadata": { 51 | "collapsed": false 52 | }, 53 | "outputs": [ 54 | { 55 | "data": { 56 | "text/html": [ 57 | "
    \n", 58 | "\t
  1. 10000
  2. \n", 59 | "\t
  3. 15
  4. \n", 60 | "
\n" 61 | ], 62 | "text/latex": [ 63 | "\\begin{enumerate*}\n", 64 | "\\item 10000\n", 65 | "\\item 15\n", 66 | "\\end{enumerate*}\n" 67 | ], 68 | "text/markdown": [ 69 | "1. 10000\n", 70 | "2. 15\n", 71 | "\n", 72 | "\n" 73 | ], 74 | "text/plain": [ 75 | "[1] 10000 15" 76 | ] 77 | }, 78 | "execution_count": 72, 79 | "metadata": {}, 80 | "output_type": "execute_result" 81 | }, 82 | { 83 | "data": { 84 | "text/plain": [ 85 | " Min. 1st Qu. Median Mean 3rd Qu. Max. \n", 86 | " 0 1 10 149 76 13600 " 87 | ] 88 | }, 89 | "execution_count": 72, 90 | "metadata": {}, 91 | "output_type": "execute_result" 92 | }, 93 | { 94 | "data": { 95 | "text/plain": [ 96 | " Min. 1st Qu. Median Mean 3rd Qu. Max. \n", 97 | " 0 229 411 539 672 2820 " 98 | ] 99 | }, 100 | "execution_count": 72, 101 | "metadata": {}, 102 | "output_type": "execute_result" 103 | } 104 | ], 105 | "source": [ 106 | "dim(ps)\n", 107 | "summary(ps$likes)\n", 108 | "summary(ps$tenure)" 109 | ] 110 | }, 111 | { 112 | "cell_type": "markdown", 113 | "metadata": {}, 114 | "source": [ 115 | "# Simulate estimates under the sharp null\n", 116 | "Simulation that computes simple difference in means and regression adjustment estimators. We use two regression adjustments: one with a single linear term and one with an interaction term with the covariate centered. See Lin (2013) in Annals of Applied Statistics." 117 | ] 118 | }, 119 | { 120 | "cell_type": "code", 121 | "execution_count": 73, 122 | "metadata": { 123 | "collapsed": false 124 | }, 125 | "outputs": [], 126 | "source": [ 127 | "do.sim <- function(x, y, nt = round(n / 2)) {\n", 128 | " n <- length(x)\n", 129 | " \n", 130 | " z.c <- rep(0, n)\n", 131 | " z.c[sample.int(n, nt)] <- 1\n", 132 | " \n", 133 | " tau.sd <- unname(coef(lm(y ~ z.c))[2]) # unadjusted\n", 134 | " tau.adj <- unname(coef(lm(y ~ z.c + x))[2]) # regression adjustment\n", 135 | " \n", 136 | " # interaction w centered covariate:\n", 137 | " x0 <- x - mean(x)\n", 138 | " tau.adj.int <- unname(coef(lm(y ~ z.c * x0))[2])\n", 139 | " \n", 140 | " c(th.sd = tau.sd, th.adj = tau.adj, th.adj.int = tau.adj.int)\n", 141 | "}" 142 | ] 143 | }, 144 | { 145 | "cell_type": "markdown", 146 | "metadata": {}, 147 | "source": [ 148 | "Do a single simulation:" 149 | ] 150 | }, 151 | { 152 | "cell_type": "code", 153 | "execution_count": 66, 154 | "metadata": { 155 | "collapsed": false, 156 | "scrolled": true 157 | }, 158 | "outputs": [ 159 | { 160 | "data": { 161 | "text/html": [ 162 | "
\n", 163 | "\t
th.sd
\n", 164 | "\t\t
0.0513337038631001
\n", 165 | "\t
th.adj
\n", 166 | "\t\t
0.0596912108653627
\n", 167 | "\t
th.adj.int
\n", 168 | "\t\t
0.058737335222844
\n", 169 | "
\n" 170 | ], 171 | "text/latex": [ 172 | "\\begin{description*}\n", 173 | "\\item[th.sd] 0.0513337038631001\n", 174 | "\\item[th.adj] 0.0596912108653627\n", 175 | "\\item[th.adj.int] 0.058737335222844\n", 176 | "\\end{description*}\n" 177 | ], 178 | "text/markdown": [ 179 | "th.sd\n", 180 | ": 0.0513337038631001th.adj\n", 181 | ": 0.0596912108653627th.adj.int\n", 182 | ": 0.058737335222844\n", 183 | "\n" 184 | ], 185 | "text/plain": [ 186 | " th.sd th.adj th.adj.int \n", 187 | " 0.051 0.060 0.059 " 188 | ] 189 | }, 190 | "execution_count": 66, 191 | "metadata": {}, 192 | "output_type": "execute_result" 193 | } 194 | ], 195 | "source": [ 196 | "with(ps, do.sim(tenure, log1p(likes), nt = 2000))" 197 | ] 198 | }, 199 | { 200 | "cell_type": "markdown", 201 | "metadata": {}, 202 | "source": [ 203 | "The estimates, as we should expect, are quite similar. But we really want to compare their variance and error across many possible randomizations.\n", 204 | "\n", 205 | "Do many simulations:" 206 | ] 207 | }, 208 | { 209 | "cell_type": "code", 210 | "execution_count": 59, 211 | "metadata": { 212 | "collapsed": false 213 | }, 214 | "outputs": [], 215 | "source": [ 216 | "sr <- foreach(i = 1:1e3, .combine = rbind) %dopar%\n", 217 | " with(ps, do.sim(tenure, log1p(likes), nt = 2000))" 218 | ] 219 | }, 220 | { 221 | "cell_type": "code", 222 | "execution_count": 60, 223 | "metadata": { 224 | "collapsed": false 225 | }, 226 | "outputs": [ 227 | { 228 | "data": { 229 | "text/plain": [ 230 | " th.sd th.adj th.adj.int \n", 231 | " Min. :-0.182 Min. :-0.182 Min. :-0.184 \n", 232 | " 1st Qu.:-0.039 1st Qu.:-0.038 1st Qu.:-0.038 \n", 233 | " Median : 0.000 Median : 0.000 Median : 0.000 \n", 234 | " Mean : 0.000 Mean : 0.000 Mean : 0.000 \n", 235 | " 3rd Qu.: 0.038 3rd Qu.: 0.036 3rd Qu.: 0.036 \n", 236 | " Max. : 0.191 Max. : 0.190 Max. : 0.190 " 237 | ] 238 | }, 239 | "execution_count": 60, 240 | "metadata": {}, 241 | "output_type": "execute_result" 242 | } 243 | ], 244 | "source": [ 245 | "summary(sr)" 246 | ] 247 | }, 248 | { 249 | "cell_type": "code", 250 | "execution_count": 61, 251 | "metadata": { 252 | "collapsed": false 253 | }, 254 | "outputs": [ 255 | { 256 | "data": { 257 | "text/html": [ 258 | "
\n", 259 | "\t
th.sd
\n", 260 | "\t\t
0.0580209274316362
\n", 261 | "\t
th.adj
\n", 262 | "\t\t
0.0573698971473993
\n", 263 | "\t
th.adj.int
\n", 264 | "\t\t
0.0574078054448429
\n", 265 | "
\n" 266 | ], 267 | "text/latex": [ 268 | "\\begin{description*}\n", 269 | "\\item[th.sd] 0.0580209274316362\n", 270 | "\\item[th.adj] 0.0573698971473993\n", 271 | "\\item[th.adj.int] 0.0574078054448429\n", 272 | "\\end{description*}\n" 273 | ], 274 | "text/markdown": [ 275 | "th.sd\n", 276 | ": 0.0580209274316362th.adj\n", 277 | ": 0.0573698971473993th.adj.int\n", 278 | ": 0.0574078054448429\n", 279 | "\n" 280 | ], 281 | "text/plain": [ 282 | " th.sd th.adj th.adj.int \n", 283 | " 0.058 0.057 0.057 " 284 | ] 285 | }, 286 | "execution_count": 61, 287 | "metadata": {}, 288 | "output_type": "execute_result" 289 | } 290 | ], 291 | "source": [ 292 | "apply(sr, 2, sd)" 293 | ] 294 | }, 295 | { 296 | "cell_type": "code", 297 | "execution_count": 62, 298 | "metadata": { 299 | "collapsed": false 300 | }, 301 | "outputs": [ 302 | { 303 | "data": { 304 | "text/html": [ 305 | "
\n", 306 | "\t
th.sd
\n", 307 | "\t\t
0.000182805467572636
\n", 308 | "\t
th.adj
\n", 309 | "\t\t
0.000250078723388885
\n", 310 | "\t
th.adj.int
\n", 311 | "\t\t
0.000304896568073275
\n", 312 | "
\n" 313 | ], 314 | "text/latex": [ 315 | "\\begin{description*}\n", 316 | "\\item[th.sd] 0.000182805467572636\n", 317 | "\\item[th.adj] 0.000250078723388885\n", 318 | "\\item[th.adj.int] 0.000304896568073275\n", 319 | "\\end{description*}\n" 320 | ], 321 | "text/markdown": [ 322 | "th.sd\n", 323 | ": 0.000182805467572636th.adj\n", 324 | ": 0.000250078723388885th.adj.int\n", 325 | ": 0.000304896568073275\n", 326 | "\n" 327 | ], 328 | "text/plain": [ 329 | " th.sd th.adj th.adj.int \n", 330 | " 0.00018 0.00025 0.00030 " 331 | ] 332 | }, 333 | "execution_count": 62, 334 | "metadata": {}, 335 | "output_type": "execute_result" 336 | } 337 | ], 338 | "source": [ 339 | "apply(sr, 2, mean)" 340 | ] 341 | }, 342 | { 343 | "cell_type": "code", 344 | "execution_count": 63, 345 | "metadata": { 346 | "collapsed": false 347 | }, 348 | "outputs": [ 349 | { 350 | "data": { 351 | "text/html": [ 352 | "
\n", 353 | "\t
th.sd
\n", 354 | "\t\t
0.0579921978359688
\n", 355 | "\t
th.adj
\n", 356 | "\t\t
0.0573417503480001
\n", 357 | "\t
th.adj.int
\n", 358 | "\t\t
0.0573799044246692
\n", 359 | "
\n" 360 | ], 361 | "text/latex": [ 362 | "\\begin{description*}\n", 363 | "\\item[th.sd] 0.0579921978359688\n", 364 | "\\item[th.adj] 0.0573417503480001\n", 365 | "\\item[th.adj.int] 0.0573799044246692\n", 366 | "\\end{description*}\n" 367 | ], 368 | "text/markdown": [ 369 | "th.sd\n", 370 | ": 0.0579921978359688th.adj\n", 371 | ": 0.0573417503480001th.adj.int\n", 372 | ": 0.0573799044246692\n", 373 | "\n" 374 | ], 375 | "text/plain": [ 376 | " th.sd th.adj th.adj.int \n", 377 | " 0.058 0.057 0.057 " 378 | ] 379 | }, 380 | "execution_count": 63, 381 | "metadata": {}, 382 | "output_type": "execute_result" 383 | } 384 | ], 385 | "source": [ 386 | "rmses <- sqrt(apply(sr, 2, function(x) mean(x^2)))\n", 387 | "rmses" 388 | ] 389 | }, 390 | { 391 | "cell_type": "markdown", 392 | "metadata": {}, 393 | "source": [ 394 | "Reduction in root mean squared error for tau:" 395 | ] 396 | }, 397 | { 398 | "cell_type": "code", 399 | "execution_count": 64, 400 | "metadata": { 401 | "collapsed": false 402 | }, 403 | "outputs": [ 404 | { 405 | "data": { 406 | "text/html": [ 407 | "
\n", 408 | "\t
th.sd
\n", 409 | "\t\t
0
\n", 410 | "\t
th.adj
\n", 411 | "\t\t
0.0112161206548594
\n", 412 | "\t
th.adj.int
\n", 413 | "\t\t
0.0105582032436756
\n", 414 | "
\n" 415 | ], 416 | "text/latex": [ 417 | "\\begin{description*}\n", 418 | "\\item[th.sd] 0\n", 419 | "\\item[th.adj] 0.0112161206548594\n", 420 | "\\item[th.adj.int] 0.0105582032436756\n", 421 | "\\end{description*}\n" 422 | ], 423 | "text/markdown": [ 424 | "th.sd\n", 425 | ": 0th.adj\n", 426 | ": 0.0112161206548594th.adj.int\n", 427 | ": 0.0105582032436756\n", 428 | "\n" 429 | ], 430 | "text/plain": [ 431 | " th.sd th.adj th.adj.int \n", 432 | " 0.000 0.011 0.011 " 433 | ] 434 | }, 435 | "execution_count": 64, 436 | "metadata": {}, 437 | "output_type": "execute_result" 438 | } 439 | ], 440 | "source": [ 441 | "1 - rmses / rmses[1]" 442 | ] 443 | }, 444 | { 445 | "cell_type": "markdown", 446 | "metadata": {}, 447 | "source": [ 448 | "This isn't much reduction. That doesn't mean there isn't clear evidence of tenure being related to likes; we can clearly detect a relationships, but mainly because we have a large N, not because there is a strong association:" 449 | ] 450 | }, 451 | { 452 | "cell_type": "code", 453 | "execution_count": 65, 454 | "metadata": { 455 | "collapsed": false 456 | }, 457 | "outputs": [ 458 | { 459 | "data": { 460 | "text/plain": [ 461 | "\n", 462 | "Call:\n", 463 | "lm(formula = log1p(likes) ~ tenure, data = ps)\n", 464 | "\n", 465 | "Residuals:\n", 466 | " Min 1Q Median 3Q Max \n", 467 | "-3.925 -2.120 -0.217 1.659 6.745 \n", 468 | "\n", 469 | "Coefficients:\n", 470 | " Estimate Std. Error t value Pr(>|t|) \n", 471 | "(Intercept) 2.233249 0.033869 65.9 <2e-16 ***\n", 472 | "tenure 0.000795 0.000048 16.6 <2e-16 ***\n", 473 | "---\n", 474 | "Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1\n", 475 | "\n", 476 | "Residual standard error: 2.2 on 9998 degrees of freedom\n", 477 | "Multiple R-squared: 0.0268,\tAdjusted R-squared: 0.0267 \n", 478 | "F-statistic: 275 on 1 and 9998 DF, p-value: <2e-16\n" 479 | ] 480 | }, 481 | "execution_count": 65, 482 | "metadata": {}, 483 | "output_type": "execute_result" 484 | } 485 | ], 486 | "source": [ 487 | "summary(lm(log1p(likes) ~ tenure, data = ps))" 488 | ] 489 | }, 490 | { 491 | "cell_type": "code", 492 | "execution_count": 68, 493 | "metadata": { 494 | "collapsed": false 495 | }, 496 | "outputs": [ 497 | { 498 | "name": "stderr", 499 | "output_type": "stream", 500 | "text": [ 501 | "geom_smooth: method=\"auto\" and size of largest group is >=1000, so using gam with formula: y ~ s(x, bs = \"cs\"). Use 'method = x' to change the smoothing method.\n" 502 | ] 503 | }, 504 | { 505 | "data": { 506 | "image/png": "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CugggTE7CZAACZAACZAACZCAdwKw/66rq/N+MoyOUkCHUWOyKiRAAiRAAiRAAiQwlQQaGhokEiZRUkBPZS/js0mABEiABEiABEggTAhgLgFsnyMhUUBHQiuzjiRAAiRAAiRAAiRgMgGYbhieSEx+1JTfngJ6ypuABSABEiABEiABEiABZxMYGBiQ5uZmZ1ciiNJTQAcBi1lJgARIgARIgARIgAQ8CWD0Ge7pIiVRQEdKS7OeJEACJEACJEACJGACgd7eXkHglEhKFNCR1NqsKwmQAAmQAAmQAAmEmEBtbW2I72j/21FA27+NWEISIAESIAESIAESsCWBrq4u6ejosGXZzCwUBbSZdHlvEiABEiABEiABEghjAtXV1WFcO99Vo4D2zYZnSIAESIAESIAESIAEfBCA3TPsnyMxUUBHYquzziRAAiRAAiRAAiQwCQLw9xyJts8GMgpogwTXJEACJEACJEACJEACARFoamqSwcHBgPKGYyYK6HBsVdaJBEiABEiABEiABEwigJDd8PscyYkCOpJbn3UnARIgARIgARIggSAJRFLIbl9oKKB9keFxEiABEiABEiABEiABNwL9/f0C841ITxTQkd4DWH8SIAESIAESIAESCJBAJE8cdEVEAe1Kg9skQAIkQAIkQAIkQAJeCfT09EhbW5vXc5F2kAI60lqc9SUBEiABEiABEiCBAyAQqUFTvKGigPZGhcdIgARIgARIgARIgATGCWDkubu7e3w/0I0PtqUFmtVR+WIdVVoWlgRIgARIgARIgARIwFICo6OjUlNTE/Qz//Vavjz8fLEMyIh85aKgL7f1BRyBtnXzsHAkQAIkQAIkQAIkMLUEGhoaZGBgIKhCbNyeKo+8UCQZqYNy9rKgLnVEZgpoRzQTC0kCJEACJEACJEAC1hNAtMH6+vqgHtzQGi93PlIh0VEi37l0t+RlB3W5IzJTQDuimVhIEiABEiABEiABErCeANzWjYyMBPzggcEoue1vFdLVGytXnLlPZlcEbzcd8MOmMCMF9BTC56NJgARIgARIgARIwK4EMGmwpaUlqOL98YlSqapNliULm+W0o5uDutZJmSmgndRaLCsJkAAJkAAJkAAJWEQgWLd1z7yRK29syJbp03rkqrP3WVTKqXkMBfTUcOdTSYAESIAESIAESMC2BDDyjMApgaYtO1Pkb89Ok7SU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IIDewxWwp0+vIep69eq1p7PB+RFAAAEEEEAAgdAIEECHpqoKm9Hq6mo/q2Dnzp0Le2COhgACCCCAAAIIRFyAADriFZyueJqKW0PU1dTUpFvNMgQQQAABBBBAAIFmBAigm8GJ4qpu3bpZv379GKIuipVLmRBAAAEEEECgJAIE0CVh3vMn0RB1++yzj3Xv3n3PZ4YcIIAAAggggAACIRYggA5x5eWadc0mqC4bml2QhAACCCCAAAIIINA6AQLo1vmV/d66SXDAgAHWti1VXfaVRQYRQAABBBBAIBQCRFWhqKb8Mqnh6RoaGujvnB8feyGAAAIIIIAAAmkFCKDTsoR7oYao042CdXV14S4IuUcAAQQQQAABBMpQgAC6DCulNVnSlNzq71xbW9uaw7AvAggggAACCCCAQAYBAugMMGFczJTcYaw18owAAggggAACYRMggA5bjWXIL1NyZ4BhMQIIIIAAAgggUGABAugCg5b6cBpdo3///talS5dSn5rzIYAAAggggAACFSlAAB3iamdK7hBXHllHAAEEEEAAgdAKhCKAfuqpp+zxxx+3/fff30aPHm1t2rQJLXihMq4puTWzIBaFEuU4CCCAAAIIIIBAbgJlHYlu3brVB80TJ060hQsX2rhx4+yUU06xnTt35la6iG7Vt29f322D4DmiFUyxEEAAAQQQQKCsBco6gJ4+fbopiF65cqU98MADtmzZMrvvvvts3rx5ZY1arMypv/OQIUOsvr6+WKfguAgggAACCCCAAAJZBMo2gI7FYjZz5kw788wzTcOzKY0YMcImTJhgs2bNylKs6K3u0KGDDRs2zDp16hS9wlEiBBBAAAEEEEAgRAJl2wd67dq1tm3bNjv44IOTOPX63nvvTVoWvNixY4fNmTMneNnkUUF5GFP37t19f+eqqqowZp88I4AAAggggAACkRIo2wD61Vdf9dA9evRIAtfNc1u2bLFNmzZZ586dk9apu8eUKVOSliW+mDp1qr399tuJi4r6XH21laft27fndR71ce7Zs6fV1NTYunXr8jpGOe+kLzTBlxr6c2euKX0x/PDDD40vUOmNgutIPhilN9JSvQ+V8v0vc07Kcw3XUfZ6kZE+17iOMlvt3r3br+T9KLORPs+UFMsVKwX1UKzj67hlG0C/8847vtypXRY6duzol2/evLlJAK1uDgsWLPDr0/2z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F17wM669/vrr1tjYaEcccUTG6YrVwvvYY4/ZI488Yv3797cvfOELpkmUHn30UTv22GOtb9++PlOLFi3yraXdu3e3e+65xy677DJbvXp1kwyrhVozmR566KG2995728KFC/12Y8aMsaOOOsrat2+ftM+LL75o9957r59aOVihLiIK1vW4c+dOu/nmm+PlCLbRuR9++GHT/gMHDvTTe48cOTJY7R9VhvXr19tJJ51ky5cv92XSjHSaulktv3vttVd8+z/96U/2xhtv2KRJk5JagtU3W1M+y0b5V3r33Xd9uUaNGmWbN2+2O++80zRVtGa169ixo98ml/xpQ81gpq4cmib45JNP9vvyDwIIIFASAfdmT0IAAQQqTuCzn/1szL3Jxv7zn//Ey37hhRfGXDeIWFVVVax3797+sU2bNjEtd8FofDs9cd0wYnV1df4YPXr0iLVr1y7WtWvX2Nlnn+2XuaA5vv0DDzwQmzZtWswFj36ZCxhjnTp1iq8Pnvz973/3+06ZMiXWp0+fWOfOnWPDhw/3+XABtT9nsK0ev/e97/ntV61aFV/80ksv+e1VNv2pLKecckp8vQs2Y64F3C93M8r58qqMF198ccxNtxvfznUB8QY///nP/bZuRlV/PB1T+Q/Koh3SWWr5e++95/c54YQT9NIn12Lsl+l8KlOQz6VLl/r1uebv/4fzrjrGs88+GyziEQEEECi6gFpLSAgggEDFCaQGfbNnz/bBnJavXbvWe7gW2Nj48eP9cgV2Qfrggw9iruUz5lqUYw899JBfrED8W9/6VjwgdDf1BZs3ecwWQCsgdK25se3bt/t9n3rqqVh9fb0/p84dpOOOO84HucHrxMchQ4bEFCAnJte67fPnWtVjrsXYr3It1THXL9svnzdvXnxzBdAKvnXeG2+80QfDb731Vsx1FfHb/uhHP4pvm2oZrGgugFZA/qUvfSl23333xQLbluQvOIdrSff5mTt3brCIRwQQQKDoAgTQRSfmBAggUI4CiUGfWl7VmtytW7fYhg0bkrLruhnEGhoafIuxniv96le/8kGbAsvE5IbEi7l+zn5dawJotX5v3bo18dCxmTNn+uPOmjUrvlzbHXLIIfHXiU/SBdAK+hWcqxU4MalcrnuID8aDVmgF0Nr2pptuStw05rq4+OVaH6REy2CZHpsLoF33lpjrApO4uf+CkGv+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", 507 | "image/svg+xml": [ 508 | "\n", 509 | "\n", 510 | "\n", 511 | "\n", 512 | "\n", 513 | "\n", 514 | "\n", 515 | "\n", 516 | "\n", 517 | "\n", 518 | "\n", 519 | "\n", 520 | "\n", 521 | "\n", 522 | "\n", 523 | "\n", 524 | "\n", 525 | "\n", 526 | "\n", 527 | "\n", 528 | "\n", 529 | "\n", 530 | "\n", 531 | "\n", 532 | "\n", 533 | "\n", 534 | "\n", 535 | "\n", 536 | "\n", 537 | "\n", 538 | "\n", 539 | "\n", 540 | "\n", 541 | "\n", 542 | "\n", 543 | "\n", 544 | "\n", 545 | "\n", 546 | "\n", 547 | "\n", 548 | "\n", 549 | "\n", 550 | "\n", 551 | "\n", 552 | "\n", 553 | "\n", 554 | "\n", 555 | "\n", 556 | "\n", 557 | "\n", 558 | "\n", 559 | "\n", 560 | "\n", 561 | "\n", 562 | "\n", 563 | "\n", 564 | "\n", 565 | "\n", 566 | "\n", 567 | "\n", 568 | "\n", 569 | "\n", 570 | "\n", 571 | "\n", 572 | "\n", 573 | "\n", 574 | "\n", 575 | "\n", 576 | "\n", 577 | "\n", 578 | "\n", 579 | "\n", 580 | "\n", 581 | "\n", 582 | "\n", 583 | "\n", 584 | "\n", 585 | "\n", 586 | "\n", 587 | "\n", 588 | "\n", 589 | "\n", 590 | "\n", 591 | "\n", 592 | "\n", 593 | "\n", 594 | "\n", 595 | "\n", 596 | "\n", 597 | "\n", 598 | "\n", 599 | "\n", 600 | "\n", 601 | "\n", 602 | "\n", 603 | "\n", 604 | "\n", 605 | "\n", 606 | "\n", 607 | "\n", 608 | "\n", 609 | "\n", 610 | "\n", 611 | "\n", 612 | "\n", 613 | " \n", 614 | "\n", 615 | "\n", 616 | " \n", 617 | "\n", 618 | "\n", 619 | " \n", 620 | "\n", 621 | "\n", 622 | " \n", 623 | "\n", 624 | "\n", 625 | " \n", 626 | "\n", 627 | "\n", 628 | " \n", 629 | "\n", 630 | "\n", 631 | " \n", 632 | "\n", 633 | "\n", 634 | " \n", 635 | "\n", 636 | "\n", 637 | " \n", 638 | "\n", 639 | "\n", 640 | " \n", 641 | "\n", 642 | "\n", 643 | " \n", 644 | "\n", 645 | "\n", 646 | " \n", 647 | "\n", 648 | "\n", 649 | " \n", 650 | "\n", 651 | "\n", 652 | " \n", 653 | "\n", 654 | "\n", 655 | " \n", 656 | "\n", 657 | "\n", 658 | " \n", 659 | "\n", 660 | "\n", 661 | " \n", 662 | "\n", 663 | "\n", 664 | " \n", 665 | "\n", 666 | "\n", 667 | " \n", 668 | "\n", 669 | "\n", 670 | " \n", 671 | "\n", 672 | "\n", 673 | " \n", 674 | "\n", 675 | "\n", 676 | "\n", 677 | "\n", 678 | "\n", 679 | "\n", 680 | "\n", 681 | "\n", 682 | "\n", 683 | "\n", 684 | "\n", 685 | "\n", 686 | "\n", 687 | "\n", 688 | "\n", 689 | "\n", 690 | "\n", 691 | "\n", 692 | "\n", 693 | "\n", 694 | "\n", 695 | "\n", 696 | "\n", 697 | "\n", 698 | "\n", 699 | "\n", 700 | "\n", 701 | "\n", 702 | "\n", 703 | "\n", 704 | "\n", 705 | "\n", 706 | "\n", 707 | "\n", 708 | "\n", 709 | "\n", 710 | "\n", 711 | "\n", 712 | "\n", 713 | "\n", 714 | "\n", 715 | "\n", 716 | "\n", 717 | "\n", 718 | "\n", 719 | "\n", 720 | "\n", 721 | "\n", 722 | "\n", 723 | "\n", 724 | "\n", 725 | "\n", 726 | "\n", 727 | "\n", 728 | "\n", 729 | "\n", 730 | "\n", 731 | "\n", 732 | "\n", 733 | "\n", 734 | "\n", 735 | "\n", 736 | "\n", 737 | "\n", 738 | "\n", 739 | "\n", 740 | "\n", 741 | "\n", 742 | "\n", 743 | "\n", 744 | "\n", 745 | "\n", 746 | " \n", 747 | "\n", 748 | "\n", 749 | " \n", 750 | "\n", 751 | "\n", 752 | " \n", 753 | "\n", 754 | "\n", 755 | " \n", 756 | "\n", 757 | "\n", 758 | " \n", 759 | "\n", 760 | "\n", 761 | "\n", 762 | "\n", 763 | "\n", 764 | "\n", 765 | "\n", 766 | "\n", 767 | "\n", 768 | "\n", 769 | "\n", 770 | "\n", 771 | " \n", 772 | "\n", 773 | "\n", 774 | " \n", 775 | "\n", 776 | "\n", 777 | " \n", 778 | "\n", 779 | "\n", 780 | " \n", 781 | "\n", 782 | "\n", 783 | " \n", 784 | "\n", 785 | "\n", 786 | " \n", 787 | " \n", 788 | " \n", 789 | " \n", 790 | " \n", 791 | " \n", 792 | " \n", 793 | " \n", 794 | " \n", 795 | " \n", 796 | " \n", 797 | " \n", 798 | " \n", 799 | "\n", 800 | "\n", 801 | " \n", 802 | " \n", 803 | " \n", 804 | " \n", 805 | " \n", 806 | " \n", 807 | " \n", 808 | " \n", 809 | " \n", 810 | " \n", 811 | " \n", 812 | " \n", 813 | "\n", 814 | "\n", 815 | "\n" 816 | ], 817 | "text/plain": [ 818 | "plot without title" 819 | ] 820 | }, 821 | "metadata": { 822 | "image/svg+xml": { 823 | "isolated": true 824 | } 825 | }, 826 | "output_type": "display_data" 827 | } 828 | ], 829 | "source": [ 830 | "ggplot(\n", 831 | " aes(x = log1p(tenure), y = log1p(likes)),\n", 832 | " data = ps\n", 833 | ") + \n", 834 | "geom_smooth()" 835 | ] 836 | }, 837 | { 838 | "cell_type": "markdown", 839 | "metadata": {}, 840 | "source": [ 841 | "## Exercises\n", 842 | "Compare regression adjustment with post-stratification and blocking (ie pre-stratification).\n", 843 | "\n", 844 | "Conduct similar analysis of another data set." 845 | ] 846 | }, 847 | { 848 | "cell_type": "code", 849 | "execution_count": null, 850 | "metadata": { 851 | "collapsed": true 852 | }, 853 | "outputs": [], 854 | "source": [] 855 | } 856 | ], 857 | "metadata": { 858 | "kernelspec": { 859 | "display_name": "R", 860 | "language": "R", 861 | "name": "ir" 862 | }, 863 | "language_info": { 864 | "codemirror_mode": "r", 865 | "file_extension": ".r", 866 | "mimetype": "text/x-r-source", 867 | "name": "R", 868 | "pygments_lexer": "r", 869 | "version": "3.2.2" 870 | } 871 | }, 872 | "nbformat": 4, 873 | "nbformat_minor": 0 874 | } 875 | -------------------------------------------------------------------------------- /cai_data/cai.adjacency.RData: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deaneckles/randomization_inference/97b851c079853b1d546acc68db7c5fd45cc82e3e/cai_data/cai.adjacency.RData -------------------------------------------------------------------------------- /prep_data.R: -------------------------------------------------------------------------------- 1 | library(igraph) 2 | library(foreign) 3 | library(Matrix) 4 | library(lfe) 5 | library(dplyr) 6 | library(foreach) 7 | 8 | cain.all <- read.dta("cai_data/0422allinforawnet.dta") 9 | cais.all <- read.dta("cai_data/0422survey.dta") 10 | 11 | cai.all <- read.csv("cai_data/0422analysis.csv") 12 | cai.all$id <- as.character(cai.all$id) 13 | 14 | cain.all <- subset(cain.all, !is.na(network_id) & network_id != 99) 15 | 16 | cain <- cain.all 17 | 18 | cain.el <- apply(as.matrix(cain[, c("id", "network_id")]), 2, as.character) 19 | cain.el <- cain.el[!is.na(cain.el[, 2]), ] 20 | 21 | ids.in.net <- unique(c(cain.el[, 1], cain.el[, 2])) 22 | egos.in.net <- unique(cain.el[, 1]) 23 | ids.in.survey <- unique(cai.all$id) 24 | ids.in.net.only <- ids.in.net[!ids.in.net %in% ids.in.survey] 25 | egos.in.net.only <- egos.in.net[!egos.in.net %in% ids.in.survey] 26 | ids.in.survey.only <- ids.in.survey[!ids.in.survey %in% ids.in.net] 27 | 28 | cai <- subset(cai.all, id %in% egos.in.net) 29 | 30 | g <- graph_from_edgelist(cain.el, directed = TRUE) 31 | 32 | cain.peer.summary <- cain[!duplicated(cain$network_id),] %>% 33 | select( 34 | id = network_id, 35 | village = network_village, 36 | address = network_address, 37 | takeup_survey, delay, intensive, understanding 38 | ) %>% 39 | mutate(id = as.character(id)) %>% 40 | filter(!is.na(intensive)) 41 | 42 | peers.in.net <- unique(cain.peer.summary$id) 43 | ids.in.survey <- unique(cai.all$id) 44 | peers.in.net.only <- peers.in.net[!peers.in.net %in% ids.in.survey] 45 | 46 | caic <- bind_rows( 47 | cai, 48 | cain.peer.summary[cain.peer.summary$id %in% peers.in.net.only,] 49 | ) 50 | 51 | head(vertex_attr(g, 'name')) 52 | tmp.name <- vertex_attr(g, 'name') 53 | caic$name <- caic$id 54 | vertex_attr(g, index = as.character(caic$id)) <- as.list(caic) 55 | vertex_attr(g, 'name') <- tmp.name 56 | head(vertex_attr(g, 'id')) 57 | head(vertex_attr(g, 'name')) 58 | head(vertex_attr(g, 'village')) 59 | 60 | g1 <- induced_subgraph(g, V(g)[which(!is.na(V(g)$intensive))]) 61 | 62 | # make adjacency matrix 63 | A <- as_adj(g1, sparse = TRUE, names = T) 64 | A.df <- as.data.frame(vertex_attr(g1)) 65 | 66 | A.df$intensive.0 <- ifelse(is.na(A.df$intensive), 0, A.df$intensive) 67 | A.df$delay.0 <- ifelse(is.na(A.df$delay), 0, A.df$delay) 68 | A.df$intensive.peers <- as.vector(A %*% A.df$intensive.0) 69 | A.df$intensive.nond.peers <- as.vector(A %*% (A.df$intensive.0 * (1-A.df$delay.0))) 70 | A.df$default.peers <- as.vector(A %*% A.df$default) 71 | A.df$n.peers <- rowSums(A) 72 | A.df$n.elig.peers <- as.vector(A %*% !is.na(A.df$intensive)) 73 | 74 | # compare my counts with the data 75 | with(A.df, table( 76 | round(network_obs * network_rate_preintensive), 77 | intensive.nond.peers, 78 | useNA = "ifany" 79 | )) 80 | 81 | with(A.df, table( 82 | network_obs, 83 | n.peers, 84 | useNA = "ifany" 85 | )) 86 | 87 | with(A.df, table( 88 | n.peers, 89 | n.elig.peers 90 | )) 91 | 92 | tmp <- merge( 93 | cain.s, A.df %>% select(id, intensive.nond.peers, network_obs, network_rate_preintensive)) 94 | 95 | with(tmp, table( 96 | round(network_obs * network_rate_preintensive), 97 | n.intensive.pre, 98 | useNA = "ifany" 99 | )) 100 | 101 | ### 102 | # write simplified data 103 | A.df.to.write <- A.df %>% 104 | select( 105 | id, address, region, village, takeup_survey, age, male, 106 | delay, intensive, info_none, intensive.nondelay.peers = intensive.nond.peers, n.peers 107 | ) 108 | 109 | write.table( 110 | A.df.to.write, 111 | file = "cai_data/cai.main.tsv", 112 | row.names = TRUE, 113 | sep = "\t" 114 | ) 115 | 116 | save(A, file = "cai_data/cai.adjacency.RData") 117 | --------------------------------------------------------------------------------