{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Flexible Covariate Adjustment in Regression Discontinuity Designs (RDD)\n", "\n", "This notebook demonstrates how to use RDD within ``DoubleML``. Our implementation, ``RDFlex``, is based on the paper _\"Flexible Covariate Adjustments in Regression Discontinuity Designs\"_ by [Noack, Olma and Rothe (2024)](https://arxiv.org/abs/2107.07942). \n", "\n", "In regression discontinuity designs (RDD), treatment assignment is determined by a continuous running variable $S$ (or \"score\") crossing a known threshold $c$ (or \"cutoff\"). We aim to estimate the average treatment effect locally at the cutoff,\n", "\n", "$$\\tau_{0} = \\mathbb{E}[Y_i(1)-Y_i(0)\\mid S_i = c]$$\n", "\n", "with $Y_i(1)$ and $Y_i(0)$ denoting the potential outcomes of an individual with and without treatment, respectively." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Note:** The dependencies for the module ``doubleml.rdd`` can be installed seperately via ``pip install rdrobust``, if necessary." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "\n", "import plotly.express as px\n", "import plotly.graph_objs as go\n", "from statsmodels.nonparametric.kernel_regression import KernelReg\n", "\n", "from lightgbm import LGBMRegressor, LGBMClassifier\n", "\n", "from rdrobust import rdrobust\n", "\n", "import doubleml as dml\n", "from doubleml.rdd import RDFlex\n", "from doubleml.rdd.datasets import make_simple_rdd_data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Sharp RDD\n", "\n", "In the sharp design, the treatment assignment is deterministic given the score. Namely, all the individuals with a score higher than the cutoff, receive the treatment $$D_i = \\mathbb{I}[S_i \\geq c].$$\n", "\n", "Without loss of generality, for the whole example we consider the cutoff to be normalized to $c=0$ and formulas are given accordingly.\n", "\n", "In sharp RDD, the treatment effect defined above is identified by\n", "\n", "$$\\tau_0 = \\lim_{s \\to c^+} \\mathbb{E}[Y_i \\mid S_i = s] - \\lim_{s \\to c^-} \\mathbb{E}[Y_i \\mid S_i = s].$$\n", "\n", "A key assumption for this identification is the **continuity** of the conditional expectations of the potential outcomes $\\mathbb{E}[Y_i(d)\\mid S_i=c]$ for $d \\in \\{0, 1\\}$.\n", " \n", "This implies that units cannot perfectly manipulate their score to either receive or avoid treatment exactly at the cutoff.\n", "\n", "### Generate Sharp Data\n", "\n", "The function ``make_simple_rdd_data()`` can be used to generate data of a rather standard RDD setting. If we set ``fuzzy = False``, the generated data follows a sharp RDD. We also generate covariates $X$ that can be used to adjust the estimation at a later stage.\n", "By default, the cutoff is normalized to ``c = 0``. The true RDD effect can be controlled by ``tau`` and is set to a value of $2.0$ in this example." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ydscorex0x1x2
01.5630671.00.471435-0.198503-0.193849-0.493426
11.3486220.0-1.1909760.013677-0.630880-0.885832
22.2659291.01.432707-0.2661470.439675-0.051651
37.4773570.0-0.3126520.845241-0.6597550.436764
413.1851300.0-0.7205890.739595-0.7413800.948112
\n", "
" ], "text/plain": [ " y d score x0 x1 x2\n", "0 1.563067 1.0 0.471435 -0.198503 -0.193849 -0.493426\n", "1 1.348622 0.0 -1.190976 0.013677 -0.630880 -0.885832\n", "2 2.265929 1.0 1.432707 -0.266147 0.439675 -0.051651\n", "3 7.477357 0.0 -0.312652 0.845241 -0.659755 0.436764\n", "4 13.185130 0.0 -0.720589 0.739595 -0.741380 0.948112" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.random.seed(1234)\n", "\n", "true_tau = 2.0\n", "data_dict = make_simple_rdd_data(n_obs=1000, fuzzy=False, tau=true_tau)\n", "\n", "cov_names = ['x' + str(i) for i in range(data_dict['X'].shape[1])]\n", "df = pd.DataFrame(\n", " np.column_stack((data_dict['Y'], data_dict['D'], data_dict['score'], data_dict['X'])),\n", " columns=['y', 'd', 'score'] + cov_names,\n", ")\n", "df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Comparing the observed outcomes, we can clearly see a discontinuity at the cutoff value of $c = 0$." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ " \n", " " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "hovertemplate": "Treatment=True
Score=%{x}
Outcome=%{y}", "legendgroup": "True", "marker": { "color": "#636efa", "symbol": "circle" }, "mode": "markers", "name": "True", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ 0.47143516373249306, 1.4327069684260973, 0.8871629403077386, 0.8595884137174165, 0.015696372114428918, 1.150035724719818, 0.9919460223426778, 0.9533241281124304, 0.002118364683486495, 0.405453411570191, 0.2890919409800353, 1.3211581921293856, 0.19342137647035826, 0.5534389109567419, 1.3181515541801367, 0.6755540851223808, 1.0589691875711504, 0.3374376536139724, 1.0475785728927218, 1.0459382556276653, 0.8637172916848387, 0.12471295376821585, 0.8416747129961416, 2.390960515463033, 0.07619958783723642, 0.036141936684072715, 0.24779219974854666, 0.018289191349219306, 0.7554139823981354, 0.2152685809694434, 0.841008794931391, 0.3540203321992379, 0.5657383060625951, 1.5456588046255575, 0.30796885521603423, 1.0338007325554992, 2.0306036208387996, 0.21188338677770105, 0.7047206243171088, 0.4620597371620487, 0.7042282254621743, 0.5235079678938094, 2.0078429507780005, 0.2269625418708953, 0.6319794458091295, 0.0395126866933667, 0.46439232505089606, 1.3211056154702059, 0.15263055220453448, 0.16452954293239852, 0.7673687357524115, 0.9849198419098969, 0.270835848826804, 1.3919861934464073, 0.07984231300862901, 0.8165939265478418, 0.5282881452973941, 0.2912053597430635, 0.5665336963535724, 0.503591759111203, 0.2852956847818571, 0.48428811274975, 1.3634815124261457, 1.2245743551261743, 0.8754755042743244, 0.7491638059190651, 0.6806560043814565, 0.047071635325711084, 0.3948442093272043, 0.4362576043409168, 0.3937105991386652, 0.6941032876787643, 0.6786296737098565, 0.2395559950038969, 0.15122662929444983, 0.8161272333600409, 1.8935344675962007, 0.6396327631937027, 1.9302467674655757, 1.2103837049045143, 0.7974354194278735, 0.7025622240016004, 1.1768124501049289, 0.7009077309156047, 0.9841880707224154, 2.365768628840039, 0.4961429262475947, 0.7965948666649523, 1.3577972581070583, 0.33419793089900884, 0.5367838249027502, 0.22598548673375538, 0.6287758265382943, 0.18649434877307466, 0.9524783451091219, 0.9881375825933089, 0.13968327403129469, 2.123691888593553, 0.12227343425882888, 1.4229859527722433, 0.3635645568066484, 1.2723950785462097, 0.2093947875359238, 1.1043515698603126, 0.8891574940728737, 0.2883768477152654, 0.156998376446689, 1.0576331832046142, 0.07187803937036874, 1.9107594272771828, 0.7879646831376144, 0.5130821444669919, 1.0439446554953231, 2.10778515279337, 1.4599274815852936, 1.0154054578125205, 0.7491846009241975, 0.4402663916687296, 0.6889718563269422, 1.92453332001529, 0.4112040207072239, 0.8907649561731171, 0.22636322725170696, 1.126385822137273, 0.2471117161577363, 0.1211718053315409, 0.2989839355420466, 0.24945521515244942, 0.5810733206206065, 2.7638440798495663, 0.3993254369795763, 0.6684881692058056, 0.5004829001543722, 0.8630648605906245, 1.1539222406122254, 1.181944105999232, 0.39137144842193117, 0.2950799597862399, 1.8638010621325043, 0.12678118632697175, 0.0037598477954959237, 0.5539212514397202, 1.5294006744839312, 0.20545485392597962, 0.3130131289808603, 0.8665207121682993, 0.2990705295943764, 1.076540643846122, 0.3631773475444523, 1.8936798255518426, 0.3876744557775985, 0.023557610392553562, 0.17738671938459905, 0.9835127293431644, 0.0235045858853947, 0.553776977863366, 0.3537692939966397, 1.5410299832779386, 0.06308453895730506, 1.7879796324557498, 0.3862536891890525, 0.8227753737653734, 1.0572033312141293, 0.03187997356903155, 1.3431824575289413, 0.5270464509549642, 0.7111123993648228, 2.6377912107038637, 1.4311837522545638, 0.5927584465506688, 0.170296895326288, 0.2885813223432078, 0.17160238198599498, 0.9828178292431048, 0.9244428673433661, 0.9959929702457525, 0.955557932627455, 0.7138407711950433, 0.13337096219412198, 1.9087796580911864, 0.15592326145312668, 0.7596525320929627, 0.18167274532368163, 0.27449257074640343, 0.06791235738075722, 0.26697323153986774, 1.3829972488529256, 0.13139536722591508, 0.4344371851022324, 0.2645340683169988, 0.5656583442738247, 0.5850842795017246, 0.4151005583815808, 0.4255305913978583, 1.498569955138537, 0.8210479561079149, 2.0978007807716916, 1.2829332468745234, 0.2703379257393719, 1.0031403620449315, 1.0786735513204067, 0.34075268512976414, 2.4814584228756535, 1.3852548761892063, 0.6078621862094797, 0.10203511229233127, 0.21071705250565526, 1.7923391966469424, 0.555877426385625, 1.5727427457558043, 1.850397801609901, 0.1934642338198724, 1.0327232157358608, 0.3938922629126754, 0.33250662216224913, 0.5289444088560467, 0.04826420692565666, 0.06198845052177757, 1.9321781695813465, 0.35583899747282033, 0.9894148472858507, 1.388647381631717, 1.0877137365241412, 0.43880126303439065, 1.2456099371478462, 0.5029255176706321, 0.5855993109298576, 0.35280056010840655, 0.27477883705216777, 0.23734976450942513, 0.44850974251240683, 0.3495667716276656, 1.4061761394942678, 1.5573976506490226, 1.6726268084547062, 0.599962085981993, 0.3315265183521529, 0.26623740682783636, 0.2794280245327373, 0.27166078437402447, 0.09911201694909029, 0.025941713524132055, 1.1055869627971613, 2.0751854067317823, 0.4190598246739658, 0.4134052764244962, 0.7175769325882829, 0.26172483967990484, 1.384580160839074, 0.5000695850282261, 1.951103236540061, 0.03678625863071046, 0.44585250626100126, 0.4500013006954749, 0.5154795307938983, 0.09988207650262723, 0.7257141531219552, 0.9169762830692352, 0.11911398259834126, 0.523546018063799, 0.8215173089989222, 1.7303155195063402, 0.22892725550405343, 1.0927410572908394, 1.7114259970115762, 1.4353870862526215, 0.040843424766001724, 0.36201819567044535, 0.5725921910432455, 1.1044602367331493, 0.75568884284869, 0.010281457155327522, 0.22458577076489658, 0.028944498401123394, 2.1040773666293053, 1.5675141434637165, 0.16495455703336395, 1.2073482032456735, 1.7119870129859922, 0.6575858924331783, 0.20007988155239426, 1.091259859221752, 1.368220262225958, 0.8916251175268084, 0.8375662124501372, 0.5141447133892467, 0.7439528461648938, 0.0899015732727284, 0.3227395618852, 1.0501136937792215, 0.7978764964211627, 0.5525243131579977, 1.6415521890288047, 2.0277395138175196, 0.07214886239228502, 0.6131516784246442, 1.4891664262942452, 0.22129657503462105, 0.801888214216484, 1.118854972135864, 1.569548064582847, 1.4277317710676356, 0.7792145652142417, 0.24025265459504974, 0.1911699128232047, 1.470996579505006, 0.7189049215428981, 0.7646112966882201, 1.0213556589900556, 1.7096560949798731, 0.029561951937617355, 0.12384201643823771, 0.28943005670297534, 0.4144350112798109, 0.9498579011377821, 0.5218485421095229, 0.502810027757784, 1.0557521639658634, 0.5397352373427955, 0.3469912503733692, 0.8741928933305493, 1.699458930621629, 1.2828372246866984, 0.3938001271158281, 0.4257406105857961, 0.17196425471545257, 0.8649983085249567, 0.7978708863196312, 0.6769776126657561, 0.4872101346078452, 0.765665358162811, 0.4756748381165133, 1.5528072078665365, 0.18853062859763994, 0.9889637830869817, 0.21112708032840474, 1.6117222924558978, 0.5667304418132302, 1.5387739411600052, 0.3096639858949537, 1.769100570312561, 0.2682004879637708, 1.850810168972202, 1.700769505670963, 0.3533910559483136, 0.3364890211021921, 1.0571054344422781, 1.1986787224676672, 0.8043460416389878, 1.1916553458718568, 1.4482691251839777, 0.20145146638225445, 0.5017557989907293, 1.6133349220114617, 1.2990825737762788, 0.5531844259723022, 0.5456699950930499, 0.26228661897316985, 0.21907020968038537, 0.9323529322684813, 1.7430524278808484, 0.9540316671351478, 0.7120509492248905, 1.6615021287437646, 2.547691702457717, 2.6519991181342113, 0.10374933997096626, 0.11543222568465579, 0.2586704644560386, 1.4877433319614572, 1.4543434763906329, 0.7043082981680985, 1.4663513758566715, 0.3536221825367628, 0.36320976100296887, 0.4328745920492785, 0.29563065498089497, 2.0798442368337016, 1.0627364666653065, 0.01805510965628009, 0.02279839968937127, 0.8124230006825046, 0.615135458353951, 0.3246098059252541, 0.6705693906174532, 0.1491613231433755, 0.3270638038828972, 1.6761854255764614, 0.6809960077267706, 0.1020797487098907, 1.1950561396844794, 0.353683601249814, 1.0540450911893136, 0.35207889140437837, 0.6659818403106037, 1.0655015019548215, 0.3644839042458271, 2.1158507289245674, 0.6855615854791441, 1.3812877674130073, 0.06842655874188228, 0.31253629248338644, 0.45425318515036217, 0.6931185215037656, 2.337598482195056, 0.0800997455382507, 0.4134509638251659, 0.20445196734865428, 0.47845329452970037, 0.02958097097523698, 0.01746667513481011, 2.054289530002812, 0.4238146840382535, 1.2499025106911574, 0.5711487534631029, 0.2970484291574556, 0.8718652175016266, 0.6895231987879346, 1.9845899031898866, 0.9551299189232728, 1.4704739392964385, 0.7108614710694785, 0.6708259593192185, 0.06338342659156378, 0.20024796080692478, 2.6429226847057117, 0.8933687076816909, 1.288554738453981, 0.33119818801148354, 1.8560568664485682, 2.1225899596034625, 0.020305520730884315, 1.591464114097166, 0.0005873380366202194, 0.15487036534807186, 0.010685782511001917, 0.6754553436625048, 0.8183481023464054, 1.0389554757038926, 0.981271848028589, 0.6166208035641588, 0.020856736754465456, 0.5993399050363709, 1.983488054493826, 0.07788802802787388, 0.4045844144487453, 1.1069498460085399, 0.2685148227050607, 0.488360812855723, 0.5868386021149908, 0.043672011407345696, 0.23058049991323532, 0.3285638932885436, 0.8380485839532836, 0.10816425581928157, 2.039686037158919, 0.866452901845807, 0.7084741210544878, 1.0771702093251387, 0.06543853933530658, 1.3120365067494253, 0.21537592656166116, 0.2597174736789681, 0.46954942686078716, 0.4922331098465613, 0.51217052768379, 1.265974917971162, 0.19091532051019103, 1.001555629245316, 1.122267866057918, 2.0118420191461803, 0.30201074703431263, 2.2035145562945293, 1.3460983256762604, 0.626820481067724, 0.10997254269648227, 2.0065611269776644, 1.0159978401232488, 0.2923665381528412, 1.3370321440963355, 0.3186160154286117, 1.3970387291415345, 0.11182047780156927, 0.4315681264740078, 1.6137850971757342, 1.638962314523427, 0.13409659216509714, 0.17203736635766856, 0.8806401486464327, 0.7577097291811645, 0.8896634154552829, 1.1341571652425653, 1.7316301950572073, 0.7007847957258879, 0.8811405230322151, 0.16270221119589887, 0.6697599912207146, 0.7436871197925536, 0.6167126196705511, 0.9718668340412515, 0.45913770322630687, 0.6562382063047018, 0.7515034769028561, 0.2721639657384405, 0.9315457527732457, 0.32753233118239405, 0.7408138005017622 ], "xaxis": "x", "y": [ 1.5630670750871647, 2.265929471529643, 10.748742710522935, 4.464563054300227, 5.720577430325107, 1.590658838647819, 2.0944572743407113, 3.8561356439738455, 3.6652752947892124, 4.258380402564378, 3.4246531645049862, 12.32396548183264, 8.460567186562127, 9.617960664434255, 8.104539653403087, 8.484138990719682, 11.263973781556944, 8.462833084556626, 10.939603495455666, 7.399661064524305, 2.620400631064451, 4.010865464260581, 3.381320486974768, 1.8308852277275207, 4.55686741680098, 2.948719095440292, 9.600952713627429, 3.1942833111391407, 4.894615192702758, 5.635183887917489, 13.036012082261806, 6.637853691092357, 13.221400040211847, 2.7991157129239728, 5.835865097197437, 15.518747141216663, 0.9412421119534005, 7.3429859357301615, 7.044358420828881, 4.279050919030776, 4.661836726142834, 7.027239323766707, 6.2983880594659505, 3.020013027089809, 5.057610475845288, 1.9338547248594324, 4.132263189536221, 2.5448605324559037, 3.8272043421838253, 3.6461745154987355, 3.943333161825477, 1.2567470937311578, 1.9564278707373952, 1.5677485344907052, 16.513337028875252, 10.184765679426906, 3.8731537783093266, 13.740174353522601, 1.6039867353606896, 6.255971423541705, 10.861840580482127, 3.482434591178435, 4.160683319935916, 11.758696194494975, 5.0114814973324, 2.3060695154765902, 17.628049600932172, 1.5396465065237206, 2.987991789023849, 12.819285172419374, 1.910701078233155, 6.44432760117919, 2.7231523458302638, 13.654564132534047, 2.6867551361260875, 1.4447510137167534, 4.184193644033716, 2.3123531867413947, 5.907226338887424, 2.207973811762361, 2.297649078380153, 4.0875966628748115, 1.7662042158113374, 4.390268193041852, 2.4763266658009067, 2.677127307459024, 4.521164016793937, 3.9790615945018963, 3.8699549823091317, 5.007461426415795, 3.338940416336114, 9.869888400801477, 6.307738209931988, 3.903746274695888, 3.0856592384183767, 3.670106787790936, 8.294504633413677, 2.928135017125198, 17.485468447411897, 18.184456808988877, 2.1441758155970394, 19.011448878519992, 3.544852768481243, 14.147775772480772, 7.308070628222553, 6.950585492608079, 3.7891548279849387, 2.2020926001030663, 10.16406881190855, 8.976670952867433, 2.4702041620939954, 5.134771415941695, 10.618572668452142, 12.154706893256707, 2.959084173607903, 2.5765816250505438, 3.2033905280772075, 3.500852809076819, 18.77166976434441, 4.433431324550289, 12.468809201993697, 11.611429868963665, 3.863768591178403, 7.001435101935673, 8.369174521358374, 15.217050945628085, 13.603820025465769, 4.348878276341836, 4.213142860639733, 14.91323011942871, 7.9492001745411365, 3.408500471687419, 3.528396784394658, 11.496296186991868, 7.899498460269936, 15.511067704191701, 2.560866588137461, 11.84023714538772, 0.30347550852825705, 4.877125463354467, 2.695630017314183, 10.231373497595118, 3.7324465944061935, 1.572300015216746, 2.731916387579277, 8.17374189569183, 9.72395855428605, 2.4875526365435787, 4.978081921739523, 2.2771763059744146, 8.140580358652747, 4.640616627035953, 4.263313964754971, 8.04651848454491, 6.8025687454395705, 4.3657037465282595, 3.6977943889433376, 11.208286605796419, 3.5840621161906934, 2.39730823672077, 10.141716452962367, 16.010875697096775, 10.716622199946908, 11.861472590823427, 1.8039268941832942, 3.0747743564141383, 13.012572481931103, -0.7598574267134771, 4.283313579755587, 4.8146064377234845, 1.4098298865217036, 1.9945304991518857, 6.487369383152597, 16.256389831013333, 9.199846271814256, 3.025112405354149, 1.6760337811953563, 9.270906507890658, 10.851786931249737, 10.658459208235294, 8.902449122129982, 10.958092102214838, 9.806679996607661, 8.301841904208958, 2.8959520678532464, 2.4492962315955906, 11.095742608750829, 2.512564357382991, 4.4968525225538745, 17.201070405665643, 11.655181721121407, 8.458668947695022, 7.182585257102322, 1.8381018734017056, 6.954448421794118, 10.874116064766108, 7.44274037363752, 8.225006373432192, 10.410356026338688, 8.092928912418811, 7.2279781627067194, 3.115857209972452, 4.282548417419812, 14.506884332057322, 4.224684124764206, 3.2777888910561184, 14.656807361191017, 0.7123243327064984, 7.476384536900452, 2.4078354924710546, 1.4229833078605425, 6.2566415961307165, 2.211029639410973, 4.23489477868798, 6.258356272014977, 3.379380966693951, 1.6472462881020162, 11.264043112573113, 2.042943303573523, 3.220181807764813, 14.4752145699751, 5.145156625312843, 2.654358669444195, 13.879051236600745, 7.45682004663257, 5.347351369089084, 2.139848712789145, 9.752660083201123, 5.02936560189911, 10.322939743368408, 3.8839303549256052, 4.652898997689499, 9.23135357094443, 8.509909377619739, 2.3943898694921013, 2.154134614445248, 3.568654362308105, 2.6317679540729095, 10.558916997021942, 12.347672582990297, 4.282706463206077, 9.290154652133618, 3.5201550487419118, 3.082022967226665, 14.394201595285786, 8.12396657748174, 10.788541878471024, 1.8422694533861999, 4.5510943644870325, 1.8698190374996018, 6.289082660734713, 3.6330481899665306, 6.677261752418803, 13.645123193561433, 5.4817511509321575, 10.73135266063922, 4.755103062805348, 3.148671470811746, 1.6236894726215128, 10.17983249026187, 6.4106108238588435, 12.186651231469241, 4.539902667427349, 3.856974473907083, 5.112886606965867, 9.704875635951035, 4.702400931420402, 6.127085315063862, 5.895177962193958, 3.805952128761161, 3.0980465678831446, 6.34465527074354, 4.492431190958236, 2.6299896045787308, 1.2657470922349159, 6.942637664055524, 3.348774115542101, 5.402157484675704, 10.116117235217182, 4.461354743256478, 7.531671178472615, 1.582390736608868, 1.9596143879565644, 15.489472594917014, 5.822830547230848, 7.499318869571259, 10.03270304973028, 8.190469660155882, 2.9821676416870058, 4.729218380691532, 1.1470163880823563, 3.593338126565563, 4.513639508012342, 0.5105259430515321, 12.05679949241901, 7.8535085774225974, 3.8655532959460177, 3.2977205841009107, 9.993921914076, 13.662304944150975, 3.730133386249415, 6.930689831586816, 7.843459588109377, 6.9954149907923355, 6.506224292866517, 1.6342150915008669, 4.3174584761957835, 2.2745894543814305, 4.156564963752937, 5.681035169088436, 1.868230527485405, 12.792242512055923, 2.9604221983391765, 2.0462505871181245, 6.711606376048099, 4.068431613494066, 3.8490213170428658, 4.4039593393058425, 3.264179673326793, 2.3879789571191288, 3.0930389945578867, 2.020899416110505, 10.207668213067246, 4.860619789530659, 2.6754162996313244, 6.374779432437629, 9.937184334004515, 4.587884587512182, 3.0462423536527674, 2.221756539602425, 6.228476809017635, 3.4441544833538806, 3.272093636010206, 7.872279730973945, 3.8243847518725254, 4.927058093891117, 5.30569605379481, 1.926392403294464, 2.982656548934253, 1.4127318427374114, 4.7461574093585215, 2.8483087547703185, 0.8933631641278355, 3.4880649403573276, 11.732943752874197, 6.9813129049237475, 3.2384593212065633, 1.9256466820771712, 8.418832968509168, 2.752751478600281, 6.284160109950633, 2.163444486136517, 1.9692343390160645, 0.7311217267201264, 10.787539601288069, 12.895746374184167, 10.965974552589072, 10.062736049997376, 4.195976793683249, 7.098242051931191, 0.8145235790787874, 4.005491424762978, 2.5337226893140006, 1.818136863872882, 7.744568721567811, 5.590598935913978, 17.320957993486164, 8.091359695868857, 3.056244034539619, 11.46875965833262, 1.0895965516554755, 2.409659052296855, 5.310917476297208, 5.0474420794264265, 8.399995484071185, 16.68462394752922, 7.319113255288522, -0.07188241454945812, 2.7809199910271896, 11.597484092134568, 6.473066959556584, 6.362604379349993, 1.9203431272301326, 3.294921420620403, 2.8302969183486257, 10.377576340374638, 12.695367528603342, 14.31462998390479, 6.229088516361773, 2.1612625683247133, 8.573328912072396, 14.068835777185974, 7.116304508486813, 4.478951681107789, 13.201334815401736, 2.2535400933557805, 10.917238694141234, 6.201274413655002, 4.620054753231987, 1.7236331316200588, 7.381441868078257, 3.0983349286181285, 4.8533996369185095, 11.3952442006207, 1.2327216484910748, 3.5448227286349776, 6.393261931006413, 3.7689547564428887, 8.039514583666621, 3.7843861480103103, 2.3747919230315953, 0.8808992404321346, 16.19267979954547, 6.800721179390649, 2.480441393050849, 10.909191504815636, 1.729538434904268, 1.8707473024376742, 0.6245858936561355, 3.3411429792009937, 11.066438850385445, 13.650547610477856, 8.896877285673233, 3.838830559941911, 1.7326646640660939, 1.5785057335161181, 5.465699169142491, 4.433684814922784, 3.8177536189397165, 10.325611392051856, 5.069830743631792, 7.058062632929908, 2.915932092366684, 3.3253092292052147, 4.67475873038095, 6.37197924529851, 16.56232837237978, 5.727536425813394, 2.4067812717509782, 3.7479395372103377, 4.357959643164212, 3.115714363474604, 4.554665308156477, 4.381187068919068, 2.0932624617665345, 5.842986192059503, 13.775377927488867, 10.52804827793297, 3.0287108774118243, 3.9188253218804037, 10.103443000619611, 4.2469082705562595, 3.1962885130444167, 5.631753203632753, 13.114802646740193, 5.088701749783405, 7.733015419190123, 2.0922488953952154, 4.301228811426256, 10.84119574001116, 9.642091012688123, 3.14344292302663, 9.285082770663648, 10.636217269201904, 1.9518078384347444, 3.6790083186093123, 5.481767881878449, 1.7560951420608684, 7.57750145845892, 2.348768957826344, 2.758855452517031, 3.6692564484876717, 17.34422736518518, 0.8589880967324383, 12.449212352595664, 4.8875616041211565, 8.846735256556087, 16.957494350302664, 4.805564824787897, 8.964989170975489, 2.1676659305603234, 0.9233793256699923, 6.9371029470728205, 6.768823511173058, 2.04085544817848, 0.3963597695790085, 3.6025896704276534, 9.584272616464322, 13.280705656341217, 9.155549718844648, 1.6382341393030238, 2.8484947110270165, 3.785737569930755, 1.3657386439237735, 5.057159291263697, 4.299912064495803, 3.412464976813795, 9.636493224325857, 11.415592200763612, 2.91287781057633, 8.420632293781814, 7.114443764932338, 3.6829951311847617, 2.3490980265992176, 8.965626018208413, 10.961085374384197, 7.950627443018606 ], "yaxis": "y" }, { "hovertemplate": "Treatment=False
Score=%{x}
Outcome=%{y}", "legendgroup": "False", "marker": { "color": "#EF553B", "symbol": "circle" }, "mode": "markers", "name": "False", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ -1.1909756947064645, -0.3126518960917129, -0.7205887333650116, -0.6365235044173491, -2.2426849541854055, -2.0212548201949705, -0.334077365808097, -1.5469055532292402, -0.2026463246291819, -0.6559693441389339, -0.4693052847058996, -1.8170272265901968, -0.1831085401789987, -0.3978402281999914, -0.12209157484767426, -0.32279480560829565, -0.5664459304649568, -2.0749776006900293, -0.8971567844396987, -0.1367948332613474, -1.4458100770443063, -1.4019732815008439, -0.10091819994891389, -0.5482424491868549, -0.14461950836938436, -0.0355130252781402, -0.9742363337673154, -0.07034487710410242, -0.20849876310587975, -2.4004536338122957, -1.1426312890227635, -0.785435211763197, -0.9262543135302259, -1.1526591092509524, -3.5635166606247353, -0.4300956908764876, -0.3999645806965225, -1.0278505586819058, -0.5847182112607883, -0.08194705182666534, -0.3447660142546443, -1.0689887834801322, -0.5118813091268151, -0.781105283625392, -0.4680176663374855, -1.2811082751440426, -1.710715324029529, -0.4507651031362744, -0.20393286610125122, -0.18217541166573417, -1.8184989903916142, -0.24843205438084665, -0.6177066479970167, -0.682883996449334, -1.703012774113238, -0.47932400357549726, -0.2990162929660804, -0.9620288319051914, -2.0852656421201097, -1.7353488744703927, -0.379810784047379, -0.850346271655115, -0.524336102632456, -0.12172840866682022, -0.4740208901256851, -0.05669571649092953, -0.8048337241667037, -2.12362024909293, -0.33350244043324745, -0.886719352485378, -0.7438303679362013, -0.3202038822408791, -0.9161988612665409, -0.8596682999817407, -0.07260831396267549, -0.5506029235634193, -0.9381526140931042, -1.2390715625947926, -0.22301898188247601, -1.4094317399227687, -2.14785503764361, -1.347532513457755, -0.014752111804594866, -1.4495666088633876, -1.1955237416669708, -0.591862973147249, -0.4145048435321895, -1.4257947334380214, -0.5928860038389254, -1.4731164134656474, -0.896580615301871, -0.43154951551604476, -0.16113690824405888, -1.0515389375700381, -0.31956139984023146, -0.6199930877212022, -0.5714553510797893, -0.7914888094778855, -0.5246273459284702, -0.5464162802735939, -0.6755214784366882, -0.2766461272769873, -2.0786178937021753, -0.387886231967176, -0.08710696996399898, -0.1570991368466517, -0.7404690227807179, -1.2476529230512328, -0.2757737286563052, -1.0516278594652122, -1.392054077493087, -0.8810470922015694, -1.7122739244712557, -1.4070845457432255, -1.2689942560733918, -0.8388429214202899, -0.5040427180819637, -0.7884401845178787, -0.48575274428280835, -0.6602295020442799, -0.31868492957801425, -0.7226621936743727, -0.27559363376768226, -0.4904835914786814, -0.37443660019278063, -2.397503976138816, -0.28444068392629274, -1.2656005376012107, -0.35450870806937423, -0.10476112306710425, -0.6837898224310078, -0.0505396895487724, -0.3640099563071088, -1.5533423394310608, -0.3192978018201611, -0.21754548049047615, -1.7421376305949654, -0.09443480774144415, -1.7517059477920245, -0.5425795169067793, -0.025348902062768783, -0.28755244928410806, -0.06124629986631457, -0.7310333425852061, -1.0227737046951428, -0.8070383084728134, -0.3420107818792151, -0.42300622841924834, -0.036982814875919444, -0.1708010306976224, -0.022460873511426515, -0.17429815275208735, -1.0713686714550896, -0.04846050255238326, -0.8452903895662435, -0.9807243575005858, -0.42782610997202053, -0.36015657086902797, -0.45824038933749284, -1.3379684019509706, -0.04138653961487197, -0.1980749596235683, -1.154600965389669, -1.2680690503770815, -1.080096483157591, -0.6112816747957622, -1.4365739367721186, -0.8969041706975123, -1.7243930789918331, -1.3127127065922315, -0.6818813054911307, -0.10465157484776595, -0.3333504267494006, -0.49674493786490903, -1.7398037975225593, -0.7558621756229088, -0.8811117326479355, -0.9500255347962833, -1.120520993992725, -1.0275156732178674, -0.23833536546732603, -0.22663229367683593, -0.923830720176923, -1.2700634783862885, -0.19547241269675866, -0.4634193992174632, -0.961602240881236, -0.6313987783785193, -0.70425204708826, -0.24048253675834233, -1.8155576924320858, -0.9101238456951419, -0.7485279533390595, -0.10812492648026306, -0.2598436943633885, -0.31244217715639994, -0.05953196470440051, -0.47001481339778667, -1.0274688471736129, -0.3066384838696108, -1.2496967727943529, -1.5601488888852328, -0.5933563949764882, -0.17028851232950049, -0.5407998076498752, -0.6841283287665846, -0.2171991251446381, -0.38336458015082797, -0.781816088073111, -1.21962569517377, -0.7239489167555044, -1.7347783075439347, -0.3630899064372582, -0.5882267282885189, -0.5723023507451587, -1.2080155928296474, -1.3397010399749156, -1.4894097013310104, -1.1509530656259641, -0.2427712711003623, -0.5012681327516669, -0.6981289789688551, -0.2864254139357557, -0.2783674615930086, -1.4103507576806693, -1.1540839403826029, -1.3801733950718382, -0.4958330052131627, -0.41327907241887124, -1.7193166679275491, -0.029560902753084674, -0.7660398835228289, -0.7130239566297442, -2.226117620977587, -0.5638902404112554, -1.5221795568231706, -0.014278788627562308, -0.24672080681888428, -0.1653294765172792, -2.0749804861700474, -1.002755217016917, -0.14874184933286258, -0.045370411959291965, -0.704492925529761, -0.35357152666142744, -0.03065886493678412, -0.2001718506206763, -0.48131023935727413, -1.167520333241006, -0.4256720265205931, -1.1347082265682895, -0.9515209412315562, -0.12713045607576656, -0.6242296327908734, -0.40064420205997625, -1.1370615382091245, -0.9031590369968799, -1.0972780624190317, -0.07130920963109931, -1.3193390866508534, -0.5600929458770713, -0.6315857879244524, -0.8670697795627686, -1.0025626707106647, -0.6245894793017125, -0.21214580398595856, -1.1935641822743448, -0.48902205827370954, -0.050049692409833806, -1.7240502035381267, -0.37714942561155657, -0.0002208983015993693, -0.1686991122175147, -1.153093261804181, -1.4389778344742428, -1.365317321173664, -1.530892108386614, -0.42446671286333926, -1.3718378731166938, -0.26641789264219634, -0.10281429468501402, -0.5864646217583874, -0.9980556587715391, -0.9528030215809088, -0.1665595772769085, -1.1894434708478612, -0.5348572637202641, -0.02159784664665048, -1.1051915914797859, -1.0559463385249355, -0.3014922439465465, -1.9692628740518392, -0.35442243933376033, -0.44699048181139484, -1.1169783859357703, -0.7882663825810968, -1.3045412108969867, -1.5751793626207562, -0.15998365617495094, -0.643333236166963, -0.7153708866312951, -0.45255766631820826, -0.13004743219159512, -0.3937331661815619, -0.6410597741081536, -0.8401490192933458, -0.2048613320814621, -0.1070733343325384, -0.24210668506471908, -0.9024827749371498, -0.289095787657148, -0.34318403393053737, -2.200564435744119, -2.5960623967791756, -1.594885645232233, -1.1100767316660405, -0.9984064955184256, -2.275806602546662, -1.149298768674316, -1.5861363032929552, -0.4723808755437636, -0.18884634787574245, -0.6411772534653856, -0.44884868035202796, -1.4622250619252337, -2.594654269661883, -0.7147453741565917, -0.12736538411633605, -1.0749752659886933, -0.27835427971563803, -1.0368186639409402, -1.8977106282505025, -0.20036229600666147, -0.12470367976984963, -0.5793366572156923, -0.7618194555160586, -0.038912324029113265, -0.356409207238252, -1.8625686534341959, -0.1362303703563351, -1.0855234635679416, -1.813277132405328, -0.19791075971583402, -0.5405657877076904, -1.8424329199610465, -0.5111660166205718, -0.58093512839474, -1.6797914849149362, -0.625888706466102, -1.2502708184687266, -0.12139461101379515, -1.2808952713375565, -0.35296169014182177, -0.9055276404436707, -0.7037176105934078, -0.2779593857816089, -0.052165291629840356, -0.40831076211055395, -1.8104296677951879, -0.9033080622801077, -0.9808768767289832, -0.22843361310270258, -1.514846657215433, -0.07526128723722576, -0.29705808175737614, -0.7274143817732619, -0.24587534038557923, -0.12794894211963254, -0.3693106199094617, -2.6230042844775308, -0.15744398471175033, -0.7884718753018505, -0.06584033431115952, -1.418479846109691, -0.1397533402109211, -0.5553548562130987, -0.5019177788520144, -0.2453604968501647, -1.2694318590858544, -0.2623238551840711, -0.7817174376760302, -1.3394111207653079, -0.1824419843989386, -2.5318833133900305, -0.955683515590636, -0.1336742103217792, -1.077403324709461, -0.16371119657423003, -0.11828188509401265, -1.1805528861977703, -0.021557883623027695, -0.8118350520747238, -2.251213065289845, -1.12610018599184, -0.3078667459168953, -0.9618845356398223, -0.6567958804642327, -0.2883631824527201, -0.21979349574451643, -0.8455002410306656, -0.3337447706635678, -0.14550836017250823, -0.07536789810631976, -0.061147655522904056, -0.7530412824561289, -0.34022586976460656, -0.5509960393063006, -0.6040373262522097, -0.866260054447336, -0.35588838632283426, -0.9543423107689742, -0.4640317318179717, -1.5237107863092993, -0.8406493439809086, -0.5437403904555086, -0.9733422132310651, -0.11601728545379246, -0.6908582143577912, -0.7874870323351537, -0.3781952626733465, -0.05546876687944298, -0.8490095099068151, -0.0780897990873757, -0.5273122406197597, -0.24268793363602895, -0.03552991507180546, -0.9599149837120845, -0.6289509748030468, -0.17539274109078976, -0.433426256842158, -2.368892931279029, -1.5927211354658712, -2.441670740242832, -0.2627338282699097, -0.822618318710863, -0.042268338331824626, -0.39127020083745107, -0.9078816127611445, -0.04174551326063229, -1.9943356434051311, -0.5892856890062176, -0.9849802336244897, -1.0361773997113255, -0.6587570839399224, -0.6079835611701924, -0.7414694894279271, -1.470561473204019, -0.12851239742110507, -0.16063982952151423, -0.6133974021549207, -0.711763631312299, -0.42147083331107177, -0.341216883674434, -1.8229324878347437, -0.6707133283158744, -1.1420202563413573, -0.11489386424404562, -0.9292300251800608, -0.09742149039769883, -2.119596982319414, -2.1969217399884924, -0.48966164024190245, -0.5135490947661565, -1.0739210599237325, -0.29882845731838414, -0.06581075463628752, -1.8438652086995353, -0.7578505995039082, -1.59249315299401, -0.24325392379441643, -0.23102356637828622, -0.3389292822418378, -0.8798130487131584, -0.2973845710076038, -1.3650171542843021, -0.4212656827400207, -1.47256655193283, -0.6366050127557136, -0.015838160674877966, -0.3878147409362679, -0.7055198448961673, -1.2858104335854346, -0.6382100575533082, -0.6532038099890327, -1.31996590252498, -0.8187126044465817, -0.5740804187646116, -0.7119035172923535, -0.7356927851492516, -0.9634637827705722, -1.8721836112668646, -0.5562800612192723, -0.8019050477600198 ], "xaxis": "x", "y": [ 1.3486218401039956, 7.477357302978893, 13.185130441195385, 3.213884670828087, 4.851025691238358, 13.709625572413577, 0.9095215968919781, 0.4585860711409128, 6.330611091218783, -0.3899856239234457, 15.159272440031835, 10.159416656466759, 1.1910906009059457, 1.2031646458756038, 3.7025147848367004, 4.5153386414094765, -0.5561128481502722, 7.565566495800468, 0.8914961577507419, 4.784164959023863, 4.477655236806118, -0.41651759242783837, 0.08806035597773143, 0.5297637724001851, 1.7908939267943453, 6.416756279757693, 3.3053798974431836, 1.9901027948435226, 1.9163785856840159, 2.01801601787926, 3.3679245111731215, -0.14581384197929406, 2.8463253251114113, 1.7735415229957858, 13.65848649643465, 1.3891269452447803, 9.120307212105697, 0.6460634901698075, 3.1896832136455227, 2.4476007802679893, 2.440691459852534, 8.340491663558723, 6.922115043013113, 7.022901571093229, 0.06724489894951725, 0.20282808173671818, 0.821493754710078, 8.041734745886036, -0.2992694879926443, 3.5192039335414838, 2.3208762968492294, 1.5946545977070559, 4.908132773248832, 1.2154220956546324, 2.508549845342969, 6.842041176943584, 13.919276932471254, 0.7130649555967261, 2.7789795394321213, 9.200972090131284, 7.472999443980326, 1.7287378459171878, 2.3855982259100093, 9.427352114241756, 1.3364200530683075, 1.3210536706273739, 4.707067484257473, 6.92580071128665, 2.36880536392164, 1.4228427608646224, 2.6813583321436183, 1.1048547692079531, -0.07502604670082638, 2.250307023533512, 4.018691995722657, 3.0817250359340385, 4.73533281061189, 5.262460946495654, -0.030953077101010695, 6.655120482443857, 10.887575486792901, 9.881541668780825, 0.3624775790859004, 7.771131601508578, 12.993615872678404, 4.46180962563332, 9.046233596815545, 0.6153874717064401, 0.06209084779627111, 9.02540580710607, 11.130776201020911, 0.7583313584682627, 4.167519345670676, 1.2958887040965574, 0.3231021368979874, 2.4968047294816027, 5.4849946541383945, 8.851689212669179, 0.22497260167637093, -0.679854495220918, 1.0178674945952164, 10.06259122175227, 7.49361519727407, 0.7039466740923791, 0.1923276664283496, 4.309096888839158, 0.9005263052843315, 10.7904567286213, 3.9516058179371756, 2.044976597218969, 4.291426997822883, 8.136593182364422, 0.21645849306063691, 2.2875031906526178, 1.0004089437269108, 0.36111171265387776, 0.44487698164791045, 5.727982001110966, 5.389075708870314, 0.2591187071686343, 4.349196807521143, 8.847499888688484, 17.086010675852076, 2.357682600073091, 0.11936442692347213, 2.6745891379239874, 9.510315808240478, 10.660321663718435, 12.513661621748446, 6.560471867036691, 3.9335568742082114, 8.082556021092136, 1.6394456261191244, 0.6787831612420692, 3.7778571560668484, 1.8008966196476315, 11.974289287917196, 0.6789358057649202, 3.479487236837873, 4.558638359694437, 1.4779720094871518, 2.8765581705606706, 1.618984651084493, -0.5967617898546517, 8.557701640861922, 15.273736946209622, 1.540555906600884, 17.37779663412622, 2.905320796685039, 1.6520725885832626, -0.4424743006174689, 4.802259517550979, 8.050338971448395, 5.927871152344614, 11.152073205328248, 1.3549755284738203, 5.554899749469977, 0.7331132023276788, 2.752146771893159, 1.0359179974705544, 4.345536900055321, 2.6233719765050934, 1.7590213928451695, 1.0450913975811487, 7.998289415441801, 0.1183953918038539, 4.708576775768007, 1.6006440834766547, 4.692783712058903, 1.0360663945550246, 4.549213238167896, 1.9233745949318444, 1.9797244398997378, 9.128279660356313, 3.269725036219773, 0.6211616233500779, 0.37517543140685394, 5.043483592849441, 1.1108138951977866, 0.34558384540343884, 1.109807387231308, 11.397328743843131, 2.311139343857397, 7.325764630305342, 5.864583657218799, -0.12756523321898525, 3.145222040875022, 7.651476911828151, 6.177626722731482, 3.3784508875812698, 4.338054049855501, 5.753557164164235, 0.5226603330804618, -0.060170859100088875, 2.2899617239460897, 3.0045118892692733, 6.894214243659627, 1.7029680839076393, 16.453126153055717, 2.5241162657869958, 5.086393411792524, 2.067446896541806, 0.2037421228824528, 3.788566728440795, 0.8433810912004589, 8.73398022259693, 6.164455561396544, 5.798025255516479, 15.633069587432637, 10.748226336308578, 1.3749827233735594, 4.621400375274052, 0.14514464126031956, 0.5142775354371905, -0.30679187046944933, 10.365028176603392, 4.229053755115862, 6.838719423247291, 1.6735109145218159, 0.09525147204741025, 5.633274169859272, 1.3874135513253338, 6.051750045442512, 3.0353469770448553, 0.973018917455266, 8.896447542504344, 1.1384522783195905, 2.6157789831409017, -0.618778332438777, 1.0481937278251565, 7.527241486465692, 0.8439946021650253, 5.68636813453995, 1.4273143209321062, 1.7294988055854636, 6.401381203699718, -0.432290068850227, 1.246765100289748, 3.8145575498127813, 14.981223733938906, 4.3547117742037145, 9.944575127516327, 1.0349323282462257, 2.250865405991169, 0.3433784534174193, 2.163676222610197, 0.14744314604060216, -0.40229619520916193, 9.63400358141513, 2.24932445591205, 4.057333469835328, 6.781982108778782, 10.759073146618778, 1.3471386356430683, 0.7646496195873962, 0.5658228293303318, 2.2951524342113, 7.356610396655633, 5.5637627509143, 2.9546347896691243, 8.408626718705081, 2.720189725548378, 10.322106818447857, 0.05575704045468888, 13.593412969522282, 9.987294315572047, 6.039899082718677, 8.181240813066784, 7.502746435960094, 4.064052627696925, 7.825621809088959, 7.644107124755398, 4.713550018087741, 0.31933532074385657, 9.292805500080178, 14.740556336698535, 3.6480216912856616, 1.1014840130123558, 0.8500635875769066, 2.021668269770731, 7.69610149606448, 1.904009068981885, 2.104071728640031, 1.4282422725463955, -0.1542287184063889, 0.14638362545597935, 5.600240737714463, 1.489300874371906, 1.4954795451515095, 4.362376402733272, 0.6213348206282769, 7.709307418869114, 2.4904908001412, 5.555281863940814, 9.422003092737722, 2.4254330580864294, 1.338207062398862, 17.309342449174437, 4.700038239212424, 4.707541074441268, 3.9882370260199664, 0.5659620963183319, 1.5533344686194606, 0.9200400636616757, 4.545408300690253, 9.932720415705845, 0.6306143094905791, 4.088178795937608, 6.679938991496159, 10.174251422781808, 11.050052132691514, 10.79419395285209, 1.0932824737816762, 1.1123793072914967, 10.634001853069048, 3.342639023519304, 2.1131210563570484, 2.4123423916134765, 3.2635831872750387, 9.865134367880087, 15.170521775956992, 0.9864638070484877, 5.952277871232277, -0.22429698968552159, 10.653426281895236, 7.078660084260667, 0.026152308571340682, 2.4163115686018695, 6.81506264593537, 1.753500032982672, 6.13418577972205, 7.027036730809288, 7.239424806847834, 2.67964625593345, -0.29242847000262817, 7.346906185677314, 7.08512293401148, 1.1187963156683463, 5.184519286167036, 11.681597391550724, 8.598933157024868, 6.0189098680206605, 9.089152432868591, 8.587613013227351, 3.6528693345703385, 1.7021195783648564, 12.4428409274409, 6.630439258776994, 4.7151269165494964, 0.7293393249272646, 1.2932899904926258, 3.9902807973338073, 5.949867349778937, 7.200662450178622, 2.319123516352471, 1.0725604118217094, 0.0826444359382778, 17.617140053944556, 2.587835772105568, 9.6534920237235, 10.266156167544603, 15.534887826327623, 4.585755041419343, 0.36043911405584644, 9.223885330219982, 0.2538609094114361, 5.513051565329957, 5.3767398542711105, 1.2188733275402446, 0.27227752465740784, 5.957509410035419, 7.980442801090926, 1.211856035154864, 5.842941177649649, 2.34455830212435, 1.1150603903826617, 0.5233138627951399, 0.014215309483299951, 4.540614289611321, 10.09604969691086, 7.567435602565755, 9.819981825729077, 5.1909970978463535, 1.4552681482097538, 4.321063824763318, 4.66780249434247, 6.498074761940801, -0.20374752217212186, 8.654007293669366, 0.2674051948706437, 3.6929968178840227, -0.30886086104336674, 1.2340808958358562, 1.4145487256673344, 2.2274011885945777, 9.744818442988178, 0.785235196851721, 5.865549775035278, 6.894842119981693, 7.54866454467063, 4.28335825443005, -0.09534686814461035, 0.34810649511538816, 2.9850848814314466, 6.100195736648981, 1.0072378541569067, 1.7853915517559302, 0.2346367486240703, -0.3610901011561299, 1.632631753231078, 3.324277613747201, 11.038362053887168, 0.623055074210312, 2.4529519164172675, 0.8928873362688777, 1.0205389396139006, 0.3147848495708494, 1.4150212059382248, 5.297619157667393, 3.2507613327370932, 0.3143949242786218, 19.04654958147302, 0.9358132860305264, 6.865095541781097, 2.0022066056655534, 3.550165232686205, 3.6148860820759716, 0.2893192391838322, 2.6870295469965573, 7.6771207410376086, 2.5997293556522543, 9.723843473476052, 19.89695246719818, 0.7525531876775715, 2.099322031098568, 3.640862762636694, 10.126588712300522, 1.8965559795552247, 0.4837995815931926, 0.38883834760001845, 3.128238530472426, 3.0287181157971594, 5.145528983088213, 2.9839938774044934, 5.251659075522024, 5.981752248331269, 9.905469616628542, 8.113039292587432, 2.389183056858123, 1.5281421008725755, 0.7251112401444999, 5.511232338873529, 2.5722549478657353, 2.7598012680987805, 3.7086949801888873, 5.028506415538427, 1.0273216027632337, 7.909008494881561, 15.239083103886744, 12.336183290192066, 2.6448770290342143, 2.2983019526159363, 4.26966015537506, 19.360679032521865, 7.620029935403366, 7.608947235750834, 0.4578952696239318, 2.5636303602200265, 1.2361366208392117, 2.522278900393948, -0.07875447360853444, -0.09820607356546696, 0.5192230455272994, 2.0760441107813534, 10.078478898125562, 4.026487709074533, 1.4687740141322216, 1.6736114150139414, 0.3284413774117222, 4.364665831733724, 8.057701278992917, 0.6144847987536664, 2.7175702943333575, 2.597155363410655, 0.9061489054095168, 12.503389183146409, 4.587884045549208, 2.149740301840303, 7.815182602979085, 10.466311998993257, 0.05084904692638065, 0.23193727300348288, 2.1533483673451492 ], "yaxis": "y" } ], "layout": { "legend": { "title": { "text": "Treatment" }, "tracegroupgap": 0 }, "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "text": "Scatter Plot of Outcome vs. Score by Treatment Status" }, "xaxis": { "anchor": "y", "domain": [ 0, 1 ], "title": { "text": "Score" } }, "yaxis": { "anchor": "x", "domain": [ 0, 1 ], "title": { "text": "Outcome" } } } }, "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = px.scatter(\n", " x=df['score'],\n", " y=df['y'],\n", " color=df['d'].astype(bool),\n", " labels={\n", " \"x\": \"Score\", \n", " \"y\": \"Outcome\",\n", " \"color\": \"Treatment\"\n", " },\n", " title=\"Scatter Plot of Outcome vs. Score by Treatment Status\"\n", ")\n", "\n", "fig.update_layout(\n", " xaxis_title=\"Score\",\n", " yaxis_title=\"Outcome\"\n", ")\n", "fig.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Sharp RDD Without Adjustment\n", "\n", "The standard RDD estimator for the sharp design takes the form \n", "\n", "$$\\hat{\\tau}_{\\text{base}}(h) = \\sum_{i=1}^n w_i(h)Y_i,$$\n", "\n", "where the $w_i(h)$ are local linear regression weights that depend on the data through the realizations of the running variable only and $h > 0$ is a bandwidth.\n", "\n", "The packages ``rdrobust`` implements this estimation." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Call: rdrobust\n", "Number of Observations: 1000\n", "Polynomial Order Est. (p): 1\n", "Polynomial Order Bias (q): 2\n", "Kernel: Triangular\n", "Bandwidth Selection: mserd\n", "Var-Cov Estimator: NN\n", "\n", " Left Right\n", "------------------------------------------------\n", "Number of Observations 493 507\n", "Number of Unique Obs. 493 507\n", "Number of Effective Obs. 291 299\n", "Bandwidth Estimation 0.78 0.78\n", "Bandwidth Bias 1.282 1.282\n", "rho (h/b) 0.608 0.608\n", "\n", "Method Coef. S.E. t-stat P>|t| 95% CI \n", "-------------------------------------------------------------------------\n", "Conventional 2.407 0.634 3.795 1.475e-04 [1.164, 3.65]\n", "Robust - - 3.122 1.796e-03 [0.869, 3.802]\n" ] }, { "data": { "text/plain": [] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rdrobust_sharp_noadj = rdrobust(y=df['y'], x=df['score'], fuzzy=df['d'], c=0.0)\n", "rdrobust_sharp_noadj" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Sharp RDD with Linear Adjustment\n", "\n", "The linearly adjusted RDD estimator for the sharp design takes the form \n", "\n", "$$\\hat{\\tau}_{lin}(h) = \\sum_{i=1}^n w_i(h)(Y_i-X_i^T\\hat{\\gamma}_h)$$\n", "\n", "where $w_i(h)$ are local linear regression weights that depend on the data through the realizations of the running variable $S_i$ only and $h>0$ is a bandwidth. $\\hat{\\gamma}_h$ is a minimizer from the regression\n", "\n", "$$\\underset{\\beta,\\gamma}{\\mathrm{arg\\,min}} \\, \\sum K_h(S_i) (Y_i - Q_i^\\top\\beta- X_i^{\\top}\\gamma )^2.$$\n", "\n", "with $Q_i =(D_i, S_i, D_i S_i,1)^T$ (for more details, see our [User Guide](https://docs.doubleml.org/stable/guide/models.html)), $K_h(v)=K(v/h)/h$ with $K(\\cdot)$ a kernel function.\n", "\n", "The packages ``rdrobust`` implements this estimation with a linear adjustment." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Call: rdrobust\n", "Number of Observations: 1000\n", "Polynomial Order Est. (p): 1\n", "Polynomial Order Bias (q): 2\n", "Kernel: Triangular\n", "Bandwidth Selection: mserd\n", "Var-Cov Estimator: NN\n", "\n", " Left Right\n", "------------------------------------------------\n", "Number of Observations 493 507\n", "Number of Unique Obs. 493 507\n", "Number of Effective Obs. 281 285\n", "Bandwidth Estimation 0.732 0.732\n", "Bandwidth Bias 1.22 1.22\n", "rho (h/b) 0.6 0.6\n", "\n", "Method Coef. S.E. t-stat P>|t| 95% CI \n", "-------------------------------------------------------------------------\n", "Conventional 2.207 0.433 5.099 3.416e-07 [1.359, 3.056]\n", "Robust - - 4.311 1.629e-05 [1.189, 3.172]\n" ] }, { "data": { "text/plain": [] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rdrobust_sharp = rdrobust(y=df['y'], x=df['score'], fuzzy=df['d'], covs=df[cov_names], c=0.0)\n", "rdrobust_sharp" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Sharp RDD with Flexible Adjustment\n", "\n", "[Noack, Olma and Rothe (2024)](https://arxiv.org/abs/2107.07942) propose an estimator that reduces the variance of the above esimator, using a flexible adjustment of the outcome by machine learning. For more details, see our [User Guide](https://docs.doubleml.org/stable/guide/models.html). The estimator here takes the form \n", "\n", "$$\\hat{\\tau}_{\\text{RDFlex}}(h;\\eta) = \\sum_{i=1}^n w_i(h)M_i(\\eta),\\quad M_i(\\eta) = Y_i - \\eta(X_i),$$\n", "\n", "with $\\eta(\\cdot)$ being potentially nonlinear adjustment functions.\n", "\n", "We initialize a `DoubleMLData` object using the usual package syntax:\n", "\n", " - `y_col` refers to the observed outcome, on which we want to estimate the effect at the cutoff\n", " - `s_col` refers to the score\n", " - `x_cols` refers to the covariates to be adjusted for\n", " - `d_cols` is an indicator whether an observation is treated or not. In the sharp design, this should be identical to an indicator whether an observation is left or right of the cutoff ($D_i = \\mathbb{I}[S_i \\geq c]$)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "dml_data_sharp = dml.DoubleMLRDDData(df, y_col='y', d_cols='d', x_cols=cov_names, score_col='score')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The ``RDFlex`` object is intialized with only one learner, that adjusts the outcome based on the covariates." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMRegressor was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMRegressor was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMRegressor was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMRegressor was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMRegressor was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMRegressor was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMRegressor was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMRegressor was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMRegressor was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMRegressor was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMRegressor was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMRegressor was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMRegressor was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMRegressor was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMRegressor was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMRegressor was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMRegressor was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMRegressor was fitted with feature names\n", "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Method Coef. S.E. t-stat P>|t| 95% CI\n", "-------------------------------------------------------------------------\n", "Conventional 2.014 0.103 19.494 1.231e-84 [1.812, 2.217]\n", "Robust - - 16.872 7.173e-64 [1.779, 2.247]\n", "Design Type: Sharp\n", "Cutoff: 0\n", "First Stage Kernel: triangular\n", "Final Bandwidth: [0.6607402]\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMRegressor was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMRegressor was fitted with feature names\n", "\n" ] } ], "source": [ "ml_g = LGBMRegressor(n_estimators=500, learning_rate=0.01, verbose=-1)\n", "\n", "rdflex_sharp = RDFlex(dml_data_sharp,\n", " ml_g,\n", " cutoff=0,\n", " fuzzy=False,\n", " n_folds=5,\n", " n_rep=1)\n", "rdflex_sharp.fit(n_iterations=2)\n", "\n", "print(rdflex_sharp)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It is visible that the flexible adjustment decreases the standard error in the estimation and therefore provides tighter confidence intervals. For coverage simulations, see the [DoubleML Coverage Repository](https://docs.doubleml.org/doubleml-coverage/rdd/rdd.html).\n", "\n", "`RDFlex` uses an iterative fitting approach to determine a preliminary bandwidth selections for the local adjustments. The default number of iterations is `n_iterations=2`, according to [Noack, Olma and Rothe (2024)](https://arxiv.org/abs/2107.07942)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Fuzzy RDD\n", "\n", "In the fuzzy RDDs, the treatment assignment is still deterministic given the score $\\left(T_i = \\mathbb{I}[S_i \\geq c]\\right)$.\n", "However, in the neighborhood of the cutoff, there is a probability of non-compliance. Thus, the treatment received might differ from the assigned one $(D_i \\neq T_i)$ for some units. These observations cause the jump in the probability of treatment at the cutoff to be smaller than 1 but larger than 0. In other words, around the cutoff there can be treatment randomization on both sides.\n", "\n", "The parameter of interest in the Fuzzy RDD is the average treatment effect at the cutoff, for all individuals that comply with the assignment\n", "\n", "$$\\theta_{0} = \\mathbb{E}[Y_i(1)-Y_i(0)\\mid S_i = c, \\{i\\in \\text{compliers}\\}].$$\n", "\n", "This effect can be identified by\n", "\n", "$$\\theta_{0} = \\frac{\\lim_{s \\to c^+} \\mathbb{E}[Y_i \\mid S_i = s] - \\lim_{s \\to c^-} \\mathbb{E}[Y_i \\mid S_i = s]}{\\lim_{s \\to c^+} \\mathbb{E}[D_i \\mid S_i = s] - \\lim_{s \\to c^-} \\mathbb{E}[D_i \\mid S_i = s]}.$$\n", "\n", "### Generate Fuzzy Data\n", "\n", "The function ``make_simple_rdd_data()`` with ``fuzzy = True`` generates basic data for the fuzzy case. The cutoff is still set to $c = 0$ and we set the true effect to be ``tau = 2.0`` again." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ydscorex0x1x2
0-0.1835530.00.471435-0.198503-0.193849-0.493426
11.3486220.0-1.1909760.013677-0.630880-0.885832
22.2659291.01.432707-0.2661470.439675-0.051651
39.6945611.0-0.3126520.845241-0.6597550.436764
415.0014031.0-0.7205890.739595-0.7413800.948112
\n", "
" ], "text/plain": [ " y d score x0 x1 x2\n", "0 -0.183553 0.0 0.471435 -0.198503 -0.193849 -0.493426\n", "1 1.348622 0.0 -1.190976 0.013677 -0.630880 -0.885832\n", "2 2.265929 1.0 1.432707 -0.266147 0.439675 -0.051651\n", "3 9.694561 1.0 -0.312652 0.845241 -0.659755 0.436764\n", "4 15.001403 1.0 -0.720589 0.739595 -0.741380 0.948112" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.random.seed(1234)\n", "\n", "data_dict = make_simple_rdd_data(n_obs=1000, fuzzy=True, tau=true_tau)\n", "\n", "cov_names = ['x' + str(i) for i in range(data_dict['X'].shape[1])]\n", "df = pd.DataFrame(\n", " np.column_stack((data_dict['Y'], data_dict['D'], data_dict['score'], data_dict['X'])),\n", " columns=['y', 'd', 'score'] + cov_names,\n", ")\n", "df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Comparing the observed outcomes, the discontinuity is less pronounced than in the sharp case. We see some degree of randomization left and right of the cutoff." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "hovertemplate": "Treatment=False
Score=%{x}
Outcome=%{y}", "legendgroup": "False", "marker": { "color": "#636efa", "symbol": "circle" }, "mode": "markers", "name": "False", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ 0.47143516373249306, -1.1909756947064645, 0.9919460223426778, -1.5469055532292402, -0.6559693441389339, -0.8971567844396987, -1.4019732815008439, -0.10091819994891389, -0.14461950836938436, -0.785435211763197, 0.9849198419098969, 0.270835848826804, -0.3447660142546443, 0.5665336963535724, -1.2811082751440426, -1.710715324029529, -0.20393286610125122, 0.3937105991386652, -0.4740208901256851, -0.05669571649092953, -0.9161988612665409, -0.8596682999817407, -0.22301898188247601, -0.014752111804594866, -1.4257947334380214, -0.5928860038389254, -0.31956139984023146, -0.5246273459284702, 0.7879646831376144, -0.387886231967176, -0.08710696996399898, 1.8638010621325043, -1.7122739244712557, -1.2689942560733918, -0.5040427180819637, -0.37443660019278063, -1.5533423394310608, -0.09443480774144415, -0.06124629986631457, -0.7310333425852061, -0.1708010306976224, 0.26697323153986774, -0.36015657086902797, -1.3379684019509706, -1.154600965389669, -1.2680690503770815, -0.6112816747957622, -1.3127127065922315, 1.5727427457558043, -0.10465157484776595, -0.7558621756229088, -0.8811117326479355, -0.4634193992174632, -0.7485279533390595, -0.2598436943633885, -0.47001481339778667, -1.5601488888852328, -0.5407998076498752, -0.5882267282885189, 0.26172483967990484, -0.41327907241887124, -1.7193166679275491, -0.5638902404112554, -0.24672080681888428, -0.045370411959291965, -0.704492925529761, -0.2001718506206763, -0.48131023935727413, -0.4256720265205931, -0.40064420205997625, -0.42446671286333926, -1.3718378731166938, 1.470996579505006, -0.1665595772769085, -1.1051915914797859, 0.029561951937617355, -0.3014922439465465, -0.45255766631820826, -0.3937331661815619, -0.2048613320814621, -2.200564435744119, -0.9984064955184256, 0.3096639858949537, 1.850810168972202, -0.7147453741565917, 0.20145146638225445, 1.7430524278808484, -0.356409207238252, -0.12139461101379515, 0.1020797487098907, -0.2779593857816089, -0.052165291629840356, -0.7274143817732619, -0.5553548562130987, -0.5019177788520144, -0.2453604968501647, -2.5318833133900305, -0.16371119657423003, -1.1805528861977703, -0.8118350520747238, -2.251213065289845, -0.14550836017250823, -0.061147655522904056, -0.866260054447336, -1.5237107863092993, -0.5437403904555086, -0.11601728545379246, -0.6908582143577912, -0.05546876687944298, -0.24268793363602895, -0.6289509748030468, -0.2627338282699097, -1.9943356434051311, -0.6587570839399224, 0.7084741210544878, 0.4922331098465613, -0.11489386424404562, 0.19091532051019103, -1.8438652086995353, -0.7578505995039082, -1.59249315299401, -0.23102356637828622, -1.47256655193283, -0.015838160674877966, -1.2858104335854346, 0.7007847957258879, 0.6697599912207146, -0.7119035172923535, -1.8721836112668646, -0.5562800612192723, 0.2721639657384405 ], "xaxis": "x", "y": [ -0.1835525489058031, 1.3486218401039956, 0.4411676938396249, 0.4585860711409128, -0.3899856239234457, 0.8914961577507419, -0.41651759242783837, 0.08806035597773143, 1.7908939267943453, -0.14581384197929406, -0.5136153229766942, -0.14978357398012626, 2.440691459852534, 0.13616926531694526, 0.20282808173671818, 0.821493754710078, -0.2992694879926443, -0.3409880513396322, 1.3364200530683075, 1.3210536706273739, -0.07502604670082638, 2.250307023533512, -0.030953077101010695, 0.3624775790859004, 0.6153874717064401, 0.06209084779627111, 0.3231021368979874, 0.22497260167637093, 0.4916082218068387, 0.7039466740923791, 0.1923276664283496, 0.27940335629258184, 0.21645849306063691, 1.0004089437269108, 0.44487698164791045, 0.11936442692347213, 0.6787831612420692, 0.6789358057649202, 1.618984651084493, -0.5967617898546517, 1.6520725885832626, 0.6200601403132633, 0.7331132023276788, 1.0359179974705544, 1.7590213928451695, 1.0450913975811487, 0.1183953918038539, 1.0360663945550246, 1.2510063032700756, 1.9233745949318444, 0.6211616233500779, 0.37517543140685394, -0.12756523321898525, 0.5226603330804618, 2.2899617239460897, 1.7029680839076393, 2.067446896541806, 0.8433810912004589, 0.5142775354371905, -0.17912038210257414, -0.618778332438777, 1.0481937278251565, 1.7294988055854636, 1.246765100289748, 1.0349323282462257, 2.250865405991169, 0.14744314604060216, -0.40229619520916193, 2.24932445591205, 0.7646496195873962, 1.1014840130123558, 0.8500635875769066, 0.6782697328395315, -0.1542287184063889, 1.4954795451515095, 0.008527384457970084, 0.6213348206282769, 0.5659620963183319, 0.9200400636616757, 0.6306143094905791, 1.0932824737816762, 2.1131210563570484, -0.49198150408242947, 0.6459814131494103, 0.026152308571340682, 0.5245791129371666, 0.16988689972629495, 1.1187963156683463, 1.2932899904926258, 0.5085681260628232, 1.0725604118217094, 0.0826444359382778, 0.2538609094114361, 1.1150603903826617, 0.5233138627951399, 0.014215309483299951, 1.4552681482097538, -0.20374752217212186, 0.2674051948706437, -0.30886086104336674, 1.2340808958358562, -0.09534686814461035, 2.9850848814314466, -0.3610901011561299, 0.623055074210312, 0.8928873362688777, 0.3147848495708494, 1.4150212059382248, 0.3143949242786218, 2.0022066056655534, 0.2893192391838322, 0.7525531876775715, 0.38883834760001845, 2.9839938774044934, 0.1486403718262942, 0.4219006710464874, 1.0273216027632337, -0.14896148702487677, 0.4578952696239318, 2.5636303602200265, 1.2361366208392117, -0.07875447360853444, 1.4687740141322216, 0.3284413774117222, 0.6144847987536664, -0.12478320649983757, 1.0844978616963237, 2.149740301840303, 0.05084904692638065, 0.23193727300348288, 0.2787166720903948 ], "yaxis": "y" }, { "hovertemplate": "Treatment=True
Score=%{x}
Outcome=%{y}", "legendgroup": "True", "marker": { "color": "#EF553B", "symbol": "circle" }, "mode": "markers", "name": "True", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ 1.4327069684260973, -0.3126518960917129, -0.7205887333650116, 0.8871629403077386, 0.8595884137174165, -0.6365235044173491, 0.015696372114428918, -2.2426849541854055, 1.150035724719818, 0.9533241281124304, -2.0212548201949705, -0.334077365808097, 0.002118364683486495, 0.405453411570191, 0.2890919409800353, 1.3211581921293856, -0.2026463246291819, 0.19342137647035826, 0.5534389109567419, 1.3181515541801367, -0.4693052847058996, 0.6755540851223808, -1.8170272265901968, -0.1831085401789987, 1.0589691875711504, -0.3978402281999914, 0.3374376536139724, 1.0475785728927218, 1.0459382556276653, 0.8637172916848387, -0.12209157484767426, 0.12471295376821585, -0.32279480560829565, 0.8416747129961416, 2.390960515463033, 0.07619958783723642, -0.5664459304649568, 0.036141936684072715, -2.0749776006900293, 0.24779219974854666, -0.1367948332613474, 0.018289191349219306, 0.7554139823981354, 0.2152685809694434, 0.841008794931391, -1.4458100770443063, -0.5482424491868549, 0.3540203321992379, -0.0355130252781402, 0.5657383060625951, 1.5456588046255575, -0.9742363337673154, -0.07034487710410242, 0.30796885521603423, -0.20849876310587975, 1.0338007325554992, -2.4004536338122957, 2.0306036208387996, -1.1426312890227635, 0.21188338677770105, 0.7047206243171088, 0.4620597371620487, 0.7042282254621743, 0.5235079678938094, -0.9262543135302259, 2.0078429507780005, 0.2269625418708953, -1.1526591092509524, 0.6319794458091295, 0.0395126866933667, 0.46439232505089606, -3.5635166606247353, 1.3211056154702059, 0.15263055220453448, 0.16452954293239852, -0.4300956908764876, 0.7673687357524115, 1.3919861934464073, 0.07984231300862901, -0.3999645806965225, -1.0278505586819058, -0.5847182112607883, 0.8165939265478418, -0.08194705182666534, 0.5282881452973941, -1.0689887834801322, -0.5118813091268151, 0.2912053597430635, 0.503591759111203, 0.2852956847818571, 0.48428811274975, 1.3634815124261457, -0.781105283625392, -0.4680176663374855, 1.2245743551261743, 0.8754755042743244, -0.4507651031362744, 0.7491638059190651, -0.18217541166573417, 0.6806560043814565, -1.8184989903916142, 0.047071635325711084, 0.3948442093272043, -0.24843205438084665, -0.6177066479970167, -0.682883996449334, 0.4362576043409168, -1.703012774113238, -0.47932400357549726, -0.2990162929660804, 0.6941032876787643, 0.6786296737098565, 0.2395559950038969, 0.15122662929444983, 0.8161272333600409, 1.8935344675962007, 0.6396327631937027, -0.9620288319051914, -2.0852656421201097, 1.9302467674655757, -1.7353488744703927, 1.2103837049045143, 0.7974354194278735, -0.379810784047379, 0.7025622240016004, -0.850346271655115, 1.1768124501049289, -0.524336102632456, 0.7009077309156047, 0.9841880707224154, -0.12172840866682022, 2.365768628840039, 0.4961429262475947, 0.7965948666649523, 1.3577972581070583, -0.8048337241667037, -2.12362024909293, -0.33350244043324745, -0.886719352485378, 0.33419793089900884, 0.5367838249027502, -0.7438303679362013, -0.3202038822408791, 0.22598548673375538, 0.6287758265382943, 0.18649434877307466, 0.9524783451091219, 0.9881375825933089, -0.07260831396267549, -0.5506029235634193, -0.9381526140931042, -1.2390715625947926, 0.13968327403129469, 2.123691888593553, 0.12227343425882888, -1.4094317399227687, 1.4229859527722433, -2.14785503764361, -1.347532513457755, 0.3635645568066484, 1.2723950785462097, -1.4495666088633876, -1.1955237416669708, -0.591862973147249, -0.4145048435321895, 0.2093947875359238, -1.4731164134656474, -0.896580615301871, 1.1043515698603126, -0.43154951551604476, -0.16113690824405888, 0.8891574940728737, 0.2883768477152654, -1.0515389375700381, -0.6199930877212022, 0.156998376446689, -0.5714553510797893, 1.0576331832046142, -0.7914888094778855, 0.07187803937036874, 1.9107594272771828, 0.5130821444669919, -0.5464162802735939, 1.0439446554953231, 2.10778515279337, 1.4599274815852936, 1.0154054578125205, 0.7491846009241975, -0.6755214784366882, 0.4402663916687296, 0.6889718563269422, -0.2766461272769873, 1.92453332001529, 0.4112040207072239, 0.8907649561731171, 0.22636322725170696, -2.0786178937021753, 1.126385822137273, 0.2471117161577363, 0.1211718053315409, 0.2989839355420466, -0.1570991368466517, -0.7404690227807179, -1.2476529230512328, 0.24945521515244942, 0.5810733206206065, 2.7638440798495663, 0.3993254369795763, 0.6684881692058056, -0.2757737286563052, 0.5004829001543722, 0.8630648605906245, -1.0516278594652122, -1.392054077493087, 1.1539222406122254, 1.181944105999232, 0.39137144842193117, -0.8810470922015694, 0.2950799597862399, -1.4070845457432255, 0.12678118632697175, 0.0037598477954959237, -0.8388429214202899, 0.5539212514397202, -0.7884401845178787, 1.5294006744839312, 0.20545485392597962, 0.3130131289808603, 0.8665207121682993, 0.2990705295943764, 1.076540643846122, 0.3631773475444523, 1.8936798255518426, -0.48575274428280835, 0.3876744557775985, 0.023557610392553562, -0.6602295020442799, -0.31868492957801425, -0.7226621936743727, 0.17738671938459905, 0.9835127293431644, 0.0235045858853947, 0.553776977863366, 0.3537692939966397, -0.27559363376768226, -0.4904835914786814, -2.397503976138816, 1.5410299832779386, 0.06308453895730506, -0.28444068392629274, -1.2656005376012107, 1.7879796324557498, -0.35450870806937423, -0.10476112306710425, 0.3862536891890525, 0.8227753737653734, -0.6837898224310078, 1.0572033312141293, 0.03187997356903155, 1.3431824575289413, -0.0505396895487724, -0.3640099563071088, -0.3192978018201611, 0.5270464509549642, 0.7111123993648228, -0.21754548049047615, 2.6377912107038637, -1.7421376305949654, 1.4311837522545638, 0.5927584465506688, 0.170296895326288, -1.7517059477920245, 0.2885813223432078, -0.5425795169067793, 0.17160238198599498, 0.9828178292431048, -0.025348902062768783, -0.28755244928410806, 0.9244428673433661, -1.0227737046951428, 0.9959929702457525, 0.955557932627455, 0.7138407711950433, 0.13337096219412198, -0.8070383084728134, -0.3420107818792151, 1.9087796580911864, 0.15592326145312668, 0.7596525320929627, -0.42300622841924834, 0.18167274532368163, 0.27449257074640343, 0.06791235738075722, -0.036982814875919444, 1.3829972488529256, -0.022460873511426515, 0.13139536722591508, 0.4344371851022324, 0.2645340683169988, 0.5656583442738247, 0.5850842795017246, -0.17429815275208735, -1.0713686714550896, -0.04846050255238326, -0.8452903895662435, 0.4151005583815808, 0.4255305913978583, -0.9807243575005858, -0.42782610997202053, 1.498569955138537, -0.45824038933749284, -0.04138653961487197, 0.8210479561079149, 2.0978007807716916, 1.2829332468745234, 0.2703379257393719, 1.0031403620449315, 1.0786735513204067, 0.34075268512976414, -0.1980749596235683, 2.4814584228756535, 1.3852548761892063, 0.6078621862094797, -1.080096483157591, 0.10203511229233127, -1.4365739367721186, 0.21071705250565526, -0.8969041706975123, -1.7243930789918331, 1.7923391966469424, 0.555877426385625, -0.6818813054911307, 1.850397801609901, -0.3333504267494006, 0.1934642338198724, -0.49674493786490903, 1.0327232157358608, -1.7398037975225593, 0.3938922629126754, -0.9500255347962833, 0.33250662216224913, 0.5289444088560467, -1.120520993992725, 0.04826420692565666, 0.06198845052177757, -1.0275156732178674, -0.23833536546732603, 1.9321781695813465, -0.22663229367683593, -0.923830720176923, 0.35583899747282033, -1.2700634783862885, -0.19547241269675866, 0.9894148472858507, 1.388647381631717, 1.0877137365241412, 0.43880126303439065, -0.961602240881236, 1.2456099371478462, 0.5029255176706321, -0.6313987783785193, -0.70425204708826, -0.24048253675834233, 0.5855993109298576, 0.35280056010840655, -1.8155576924320858, -0.9101238456951419, -0.10812492648026306, 0.27477883705216777, 0.23734976450942513, -0.31244217715639994, 0.44850974251240683, -0.05953196470440051, 0.3495667716276656, -1.0274688471736129, -0.3066384838696108, 1.4061761394942678, -1.2496967727943529, 1.5573976506490226, -0.5933563949764882, -0.17028851232950049, 1.6726268084547062, -0.6841283287665846, 0.599962085981993, -0.2171991251446381, 0.3315265183521529, -0.38336458015082797, -0.781816088073111, 0.26623740682783636, 0.2794280245327373, -1.21962569517377, -0.7239489167555044, -1.7347783075439347, 0.27166078437402447, 0.09911201694909029, -0.3630899064372582, 0.025941713524132055, -0.5723023507451587, 1.1055869627971613, -1.2080155928296474, -1.3397010399749156, 2.0751854067317823, -1.4894097013310104, -1.1509530656259641, 0.4190598246739658, 0.4134052764244962, 0.7175769325882829, -0.2427712711003623, -0.5012681327516669, -0.6981289789688551, 1.384580160839074, -0.2864254139357557, 0.5000695850282261, 1.951103236540061, -0.2783674615930086, 0.03678625863071046, 0.44585250626100126, -1.4103507576806693, 0.4500013006954749, 0.5154795307938983, -1.1540839403826029, -1.3801733950718382, -0.4958330052131627, -0.029560902753084674, -0.7660398835228289, 0.09988207650262723, -0.7130239566297442, -2.226117620977587, 0.7257141531219552, 0.9169762830692352, -1.5221795568231706, -0.014278788627562308, -0.1653294765172792, 0.11911398259834126, -2.0749804861700474, -1.002755217016917, 0.523546018063799, 0.8215173089989222, -0.14874184933286258, 1.7303155195063402, 0.22892725550405343, 1.0927410572908394, -0.35357152666142744, -0.03065886493678412, 1.7114259970115762, 1.4353870862526215, -1.167520333241006, 0.040843424766001724, 0.36201819567044535, 0.5725921910432455, 1.1044602367331493, 0.75568884284869, 0.010281457155327522, 0.22458577076489658, -1.1347082265682895, -0.9515209412315562, -0.12713045607576656, 0.028944498401123394, 2.1040773666293053, 1.5675141434637165, -0.6242296327908734, -1.1370615382091245, -0.9031590369968799, -1.0972780624190317, -0.07130920963109931, -1.3193390866508534, -0.5600929458770713, 0.16495455703336395, -0.6315857879244524, -0.8670697795627686, -1.0025626707106647, 1.2073482032456735, 1.7119870129859922, -0.6245894793017125, -0.21214580398595856, -1.1935641822743448, 0.6575858924331783, 0.20007988155239426, 1.091259859221752, -0.48902205827370954, 1.368220262225958, 0.8916251175268084, 0.8375662124501372, 0.5141447133892467, -0.050049692409833806, 0.7439528461648938, -1.7240502035381267, 0.0899015732727284, 0.3227395618852, -0.37714942561155657, -0.0002208983015993693, 1.0501136937792215, -0.1686991122175147, 0.7978764964211627, 0.5525243131579977, -1.153093261804181, 1.6415521890288047, -1.4389778344742428, 2.0277395138175196, -1.365317321173664, 0.07214886239228502, 0.6131516784246442, 1.4891664262942452, 0.22129657503462105, -1.530892108386614, 0.801888214216484, 1.118854972135864, 1.569548064582847, 1.4277317710676356, -0.26641789264219634, 0.7792145652142417, -0.10281429468501402, -0.5864646217583874, 0.24025265459504974, -0.9980556587715391, 0.1911699128232047, -0.9528030215809088, 0.7189049215428981, 0.7646112966882201, -1.1894434708478612, -0.5348572637202641, -0.02159784664665048, -1.0559463385249355, 1.0213556589900556, 1.7096560949798731, 0.12384201643823771, 0.28943005670297534, 0.4144350112798109, 0.9498579011377821, 0.5218485421095229, -1.9692628740518392, 0.502810027757784, -0.35442243933376033, -0.44699048181139484, -1.1169783859357703, -0.7882663825810968, 1.0557521639658634, -1.3045412108969867, 0.5397352373427955, 0.3469912503733692, 0.8741928933305493, -1.5751793626207562, -0.15998365617495094, -0.643333236166963, -0.7153708866312951, 1.699458930621629, 1.2828372246866984, 0.3938001271158281, 0.4257406105857961, -0.13004743219159512, -0.6410597741081536, 0.17196425471545257, -0.8401490192933458, 0.8649983085249567, -0.1070733343325384, -0.24210668506471908, -0.9024827749371498, 0.7978708863196312, -0.289095787657148, 0.6769776126657561, -0.34318403393053737, 0.4872101346078452, 0.765665358162811, -2.5960623967791756, 0.4756748381165133, -1.594885645232233, -1.1100767316660405, -2.275806602546662, 1.5528072078665365, -1.149298768674316, 0.18853062859763994, 0.9889637830869817, -1.5861363032929552, -0.4723808755437636, -0.18884634787574245, 0.21112708032840474, 1.6117222924558978, 0.5667304418132302, -0.6411772534653856, 1.5387739411600052, -0.44884868035202796, 1.769100570312561, 0.2682004879637708, -1.4622250619252337, 1.700769505670963, 0.3533910559483136, 0.3364890211021921, 1.0571054344422781, 1.1986787224676672, -2.594654269661883, 0.8043460416389878, 1.1916553458718568, -0.12736538411633605, -1.0749752659886933, 1.4482691251839777, -0.27835427971563803, -1.0368186639409402, 0.5017557989907293, 1.6133349220114617, -1.8977106282505025, 1.2990825737762788, 0.5531844259723022, -0.20036229600666147, 0.5456699950930499, 0.26228661897316985, 0.21907020968038537, 0.9323529322684813, -0.12470367976984963, 0.9540316671351478, 0.7120509492248905, -0.5793366572156923, -0.7618194555160586, 1.6615021287437646, 2.547691702457717, -0.038912324029113265, -1.8625686534341959, 2.6519991181342113, -0.1362303703563351, 0.10374933997096626, 0.11543222568465579, 0.2586704644560386, 1.4877433319614572, 1.4543434763906329, 0.7043082981680985, 1.4663513758566715, 0.3536221825367628, -1.0855234635679416, 0.36320976100296887, -1.813277132405328, -0.19791075971583402, 0.4328745920492785, -0.5405657877076904, 0.29563065498089497, 2.0798442368337016, -1.8424329199610465, -0.5111660166205718, -0.58093512839474, 1.0627364666653065, 0.01805510965628009, 0.02279839968937127, -1.6797914849149362, 0.8124230006825046, -0.625888706466102, -1.2502708184687266, 0.615135458353951, -1.2808952713375565, 0.3246098059252541, 0.6705693906174532, 0.1491613231433755, 0.3270638038828972, -0.35296169014182177, -0.9055276404436707, 1.6761854255764614, 0.6809960077267706, -0.7037176105934078, 1.1950561396844794, 0.353683601249814, -0.40831076211055395, -1.8104296677951879, -0.9033080622801077, 1.0540450911893136, -0.9808768767289832, 0.35207889140437837, 0.6659818403106037, 1.0655015019548215, -0.22843361310270258, 0.3644839042458271, -1.514846657215433, -0.07526128723722576, -0.29705808175737614, -0.24587534038557923, -0.12794894211963254, -0.3693106199094617, -2.6230042844775308, 2.1158507289245674, 0.6855615854791441, -0.15744398471175033, 1.3812877674130073, 0.06842655874188228, 0.31253629248338644, 0.45425318515036217, -0.7884718753018505, -0.06584033431115952, -1.418479846109691, -0.1397533402109211, 0.6931185215037656, -1.2694318590858544, -0.2623238551840711, 2.337598482195056, -0.7817174376760302, 0.0800997455382507, -1.3394111207653079, 0.4134509638251659, 0.20445196734865428, 0.47845329452970037, 0.02958097097523698, -0.1824419843989386, 0.01746667513481011, 2.054289530002812, 0.4238146840382535, -0.955683515590636, -0.1336742103217792, -1.077403324709461, 1.2499025106911574, 0.5711487534631029, 0.2970484291574556, 0.8718652175016266, 0.6895231987879346, 1.9845899031898866, -0.11828188509401265, 0.9551299189232728, 1.4704739392964385, -0.021557883623027695, 0.7108614710694785, -1.12610018599184, -0.3078667459168953, -0.9618845356398223, 0.6708259593192185, 0.06338342659156378, -0.6567958804642327, -0.2883631824527201, -0.21979349574451643, 0.20024796080692478, -0.8455002410306656, 2.6429226847057117, -0.3337447706635678, 0.8933687076816909, 1.288554738453981, 0.33119818801148354, -0.07536789810631976, 1.8560568664485682, -0.7530412824561289, -0.34022586976460656, -0.5509960393063006, -0.6040373262522097, 2.1225899596034625, 0.020305520730884315, -0.35588838632283426, -0.9543423107689742, 1.591464114097166, 0.0005873380366202194, -0.4640317318179717, 0.15487036534807186, -0.8406493439809086, 0.010685782511001917, 0.6754553436625048, -0.9733422132310651, 0.8183481023464054, 1.0389554757038926, 0.981271848028589, 0.6166208035641588, -0.7874870323351537, 0.020856736754465456, 0.5993399050363709, -0.3781952626733465, 1.983488054493826, 0.07788802802787388, 0.4045844144487453, -0.8490095099068151, -0.0780897990873757, -0.5273122406197597, 1.1069498460085399, -0.03552991507180546, -0.9599149837120845, 0.2685148227050607, 0.488360812855723, 0.5868386021149908, -0.17539274109078976, -0.433426256842158, 0.043672011407345696, -2.368892931279029, -1.5927211354658712, -2.441670740242832, -0.822618318710863, -0.042268338331824626, -0.39127020083745107, 0.23058049991323532, 0.3285638932885436, 0.8380485839532836, -0.9078816127611445, -0.04174551326063229, 0.10816425581928157, -0.5892856890062176, -0.9849802336244897, -1.0361773997113255, 2.039686037158919, -0.6079835611701924, 0.866452901845807, -0.7414694894279271, -1.470561473204019, -0.12851239742110507, -0.16063982952151423, 1.0771702093251387, -0.6133974021549207, -0.711763631312299, 0.06543853933530658, -0.42147083331107177, -0.341216883674434, 1.3120365067494253, -1.8229324878347437, 0.21537592656166116, -0.6707133283158744, 0.2597174736789681, 0.46954942686078716, 0.51217052768379, -1.1420202563413573, 1.265974917971162, -0.9292300251800608, 1.001555629245316, -0.09742149039769883, -2.119596982319414, -2.1969217399884924, 1.122267866057918, 2.0118420191461803, 0.30201074703431263, -0.48966164024190245, -0.5135490947661565, -1.0739210599237325, 2.2035145562945293, -0.29882845731838414, 1.3460983256762604, 0.626820481067724, -0.06581075463628752, 0.10997254269648227, 2.0065611269776644, 1.0159978401232488, 0.2923665381528412, 1.3370321440963355, -0.24325392379441643, -0.3389292822418378, 0.3186160154286117, 1.3970387291415345, -0.8798130487131584, 0.11182047780156927, 0.4315681264740078, 1.6137850971757342, -0.2973845710076038, 1.638962314523427, 0.13409659216509714, 0.17203736635766856, -1.3650171542843021, -0.4212656827400207, 0.8806401486464327, 0.7577097291811645, -0.6366050127557136, -0.3878147409362679, 0.8896634154552829, 1.1341571652425653, 1.7316301950572073, -0.7055198448961673, -0.6382100575533082, 0.8811405230322151, -0.6532038099890327, -1.31996590252498, -0.8187126044465817, 0.16270221119589887, -0.5740804187646116, 0.7436871197925536, 0.6167126196705511, 0.9718668340412515, -0.7356927851492516, -0.9634637827705722, 0.45913770322630687, 0.6562382063047018, 0.7515034769028561, 0.9315457527732457, 0.32753233118239405, 0.7408138005017622, -0.8019050477600198 ], "xaxis": "x", "y": [ 2.265929471529643, 9.694561155437166, 15.001403007791444, 10.748742710522935, 4.464563054300227, 4.458606814787848, 5.720577430325107, 4.07067774720589, 1.590658838647819, 3.8561356439738455, 13.810615341379208, 2.7698934669732473, 3.6652752947892124, 4.258380402564378, 3.4246531645049862, 12.32396548183264, 8.236964297743414, 8.460567186562127, 9.617960664434255, 8.104539653403087, 17.09901330545235, 8.484138990719682, 10.681717563115276, 3.001393280247692, 11.263973781556944, 3.3413201248723268, 8.462833084556626, 10.939603495455666, 7.399661064524305, 2.620400631064451, 5.242739862271615, 4.010865464260581, 7.248533468937351, 3.381320486974768, 1.8308852277275207, 4.55686741680098, 1.51630276636483, 2.948719095440292, 7.30264204621881, 9.600952713627429, 6.601195519451783, 3.1942833111391407, 4.894615192702758, 5.635183887917489, 13.036012082261806, 4.828822090660765, 2.4365815271131694, 6.637853691092357, 8.53838768331626, 13.221400040211847, 2.7991157129239728, 4.397073336490484, 4.2005707454675845, 5.835865097197437, 4.100982661677124, 15.518747141216663, 1.3614330070922058, 0.9412421119534005, 4.84558565236586, 7.3429859357301615, 7.044358420828881, 4.279050919030776, 4.661836726142834, 7.027239323766707, 4.691120570711789, 6.2983880594659505, 3.020013027089809, 3.238771401281311, 5.057610475845288, 1.9338547248594324, 4.132263189536221, 8.978379801118601, 2.5448605324559037, 3.8272043421838253, 3.6461745154987355, 3.7141268554733924, 3.943333161825477, 1.5677485344907052, 16.513337028875252, 11.516513554272976, 1.8749519970640258, 5.245026374790678, 10.184765679426906, 5.0282521403687825, 3.8731537783093266, 9.526111855670262, 8.930290760456417, 13.740174353522601, 6.255971423541705, 10.861840580482127, 3.482434591178435, 4.160683319935916, 8.337209995273493, 2.525660823074181, 11.758696194494975, 5.0114814973324, 9.964967051348433, 2.3060695154765902, 5.563853505384101, 17.628049600932172, 2.6871766020875216, 1.5396465065237206, 2.987991789023849, 3.839128804311066, 6.914663671850868, 3.0532649901547106, 12.819285172419374, 3.510958942199201, 8.90246101383686, 15.9873797131138, 6.44432760117919, 2.7231523458302638, 13.654564132534047, 2.6867551361260875, 1.4447510137167534, 4.184193644033716, 2.3123531867413947, 2.219716094903136, 2.3552451215543204, 5.907226338887424, 9.755776884038891, 2.207973811762361, 2.297649078380153, 9.667867403640276, 4.0875966628748115, 3.621094634839108, 1.7662042158113374, 3.6172598935433316, 4.390268193041852, 2.4763266658009067, 11.076447482487703, 2.677127307459024, 4.521164016793937, 3.9790615945018963, 3.8699549823091317, 6.269105752749612, 6.681577465665945, 4.48780277684491, 2.908206085100257, 5.007461426415795, 3.338940416336114, 4.640072016011472, 3.1218223722428795, 9.869888400801477, 6.307738209931988, 3.903746274695888, 3.0856592384183767, 3.670106787790936, 6.122887292442154, 4.952098165720181, 6.421845648941789, 7.00091245254906, 8.294504633413677, 2.928135017125198, 17.485468447411897, 7.531354353045948, 18.184456808988877, 10.813496038550449, 11.227216864967803, 2.1441758155970394, 19.011448878519992, 8.190505279202194, 14.509762242844465, 6.046114345093918, 11.091717008532877, 3.544852768481243, 9.866525617443084, 12.551249053912088, 14.147775772480772, 2.654741728524375, 6.2650647639237524, 7.308070628222553, 6.950585492608079, 2.573817644256974, 4.423405333839632, 3.7891548279849387, 7.628517620276847, 2.2020926001030663, 10.418298407825423, 10.16406881190855, 8.976670952867433, 5.134771415941695, 1.0265758626467236, 10.618572668452142, 12.154706893256707, 2.959084173607903, 2.5765816250505438, 3.2033905280772075, 2.3635302870548887, 3.500852809076819, 18.77166976434441, 11.956913263566697, 4.433431324550289, 12.468809201993697, 11.611429868963665, 3.863768591178403, 7.1068830221501, 7.001435101935673, 8.369174521358374, 15.217050945628085, 13.603820025465769, 6.658213969381527, 2.970389713710068, 12.394596021181313, 4.348878276341836, 4.213142860639733, 14.91323011942871, 7.9492001745411365, 3.408500471687419, 6.2663586180489155, 3.528396784394658, 11.496296186991868, 3.6321862632085935, 5.607037732401054, 7.899498460269936, 15.511067704191701, 2.560866588137461, 9.731651246426889, 11.84023714538772, 2.8732879832270277, 4.877125463354467, 2.695630017314183, 1.2133795212480423, 10.231373497595118, 7.091572264058836, 3.7324465944061935, 1.572300015216746, 2.731916387579277, 8.17374189569183, 9.72395855428605, 2.4875526365435787, 4.978081921739523, 2.2771763059744146, 6.6339700137369, 8.140580358652747, 4.640616627035953, 1.8377549423898605, 6.342573084839112, 10.855949418171228, 4.263313964754971, 8.04651848454491, 6.8025687454395705, 4.3657037465282595, 3.6977943889433376, 19.085287142725683, 3.972984645526237, 1.642655075425628, 11.208286605796419, 3.5840621161906934, 11.546673655801067, 11.952633574770253, 2.39730823672077, 14.671836195629043, 8.530659137003743, 10.141716452962367, 16.010875697096775, 5.188713804683356, 10.716622199946908, 11.861472590823427, 1.8039268941832942, 10.40288304422664, 3.5002087345455655, 5.297098100050996, 3.0747743564141383, 13.012572481931103, 3.7846499729219025, -0.7598574267134771, 12.424871923769345, 4.283313579755587, 4.8146064377234845, 1.4098298865217036, 3.947546558909086, 1.9945304991518857, 6.546133143596889, 6.487369383152597, 16.256389831013333, 3.7995193097475877, 4.963357564324481, 9.199846271814256, 9.816627223980333, 3.025112405354149, 1.6760337811953563, 9.270906507890658, 10.851786931249737, 17.044317060137793, 3.1073986708814494, 10.658459208235294, 8.902449122129982, 10.958092102214838, 19.54071816474041, 9.806679996607661, 8.301841904208958, 2.8959520678532464, 4.833954303426042, 11.095742608750829, 1.1760851881807914, 2.512564357382991, 4.4968525225538745, 17.201070405665643, 11.655181721121407, 8.458668947695022, 6.789125404106795, 9.187651303946337, 8.090996981895236, 12.70118691914138, 7.182585257102322, 1.8381018734017056, 3.062039859234129, 7.095788044645277, 6.954448421794118, 4.385438408594497, 6.590367019049524, 10.874116064766108, 7.44274037363752, 8.225006373432192, 10.410356026338688, 8.092928912418811, 7.2279781627067194, 3.115857209972452, 4.695954776025797, 4.282548417419812, 14.506884332057322, 4.224684124764206, 8.921462959631633, 3.2777888910561184, 5.572925949158813, 14.656807361191017, 3.218124759032054, 5.506818285663842, 0.7123243327064984, 7.476384536900452, 6.663232799363023, 1.4229833078605425, 4.0366851227981435, 6.2566415961307165, 10.72206032966684, 2.211029639410973, 3.6637708586232267, 4.23489477868798, 6.084959782991081, 6.258356272014977, 3.379380966693951, 3.0993170207247682, 1.6472462881020162, 11.264043112573113, 2.163243668231, 3.528084599887016, 2.042943303573523, 12.68556134281856, 4.484170364411881, 3.220181807764813, 8.142758404508227, 7.661445440033579, 14.4752145699751, 5.145156625312843, 2.654358669444195, 13.879051236600745, 5.099931116909535, 7.45682004663257, 5.347351369089084, 9.141745153929424, 8.300043464836314, 5.31576547034449, 2.139848712789145, 9.752660083201123, 4.527300075464674, 6.897328712791664, 2.338330865206532, 5.02936560189911, 10.322939743368408, 5.392449167791411, 3.8839303549256052, 8.68167101482884, 4.652898997689499, 17.917205292427912, 4.297245511251533, 9.23135357094443, 6.493175338396726, 8.509909377619739, 1.875745309646252, 5.531646458900818, 2.3943898694921013, 10.781361555333927, 2.154134614445248, 8.013136736112866, 3.568654362308105, 7.4422908265758725, 17.227895549922852, 2.6317679540729095, 10.558916997021942, 12.453784287346103, 3.3062936042446442, 4.947169977729538, 12.347672582990297, 4.282706463206077, 2.291754437791348, 9.290154652133618, 1.5717542687400683, 3.5201550487419118, 11.832308202021874, 5.099030109770507, 3.082022967226665, 7.26008928972419, 3.233861162032418, 14.394201595285786, 8.12396657748174, 10.788541878471024, 2.439550018809831, 7.385012991957169, 3.2595052918257976, 4.5510943644870325, 8.683203534724592, 1.8698190374996018, 6.289082660734713, 4.788223873186884, 3.6330481899665306, 6.677261752418803, 1.846964087038559, 13.645123193561433, 5.4817511509321575, 10.313632395816132, 1.8366444709316732, 4.140511100668412, 9.202789285333695, 2.447011946793957, 10.73135266063922, 7.574194175314418, 1.3505635513390526, 4.755103062805348, 3.148671470811746, 7.496146584414306, 1.8908363200219356, 6.133489598125723, 1.6236894726215128, 14.997907268596853, 5.904399986686302, 10.17983249026187, 6.4106108238588435, 11.97078302652149, 12.186651231469241, 4.539902667427349, 3.856974473907083, 2.0881366955685468, 3.889966063019122, 5.112886606965867, 9.704875635951035, 10.799089667366115, 4.702400931420402, 6.127085315063862, 5.895177962193958, 3.805952128761161, 3.0980465678831446, 6.34465527074354, 4.492431190958236, 5.977163204512254, 8.562762070357183, 12.635811069085616, 2.6299896045787308, 1.2657470922349159, 6.942637664055524, 3.2373690084810773, 1.9488870521864206, 3.9231622333029783, 8.431169321816414, 7.476758283389479, 3.6965208088994967, 10.375372377939263, 3.348774115542101, 4.889123861091899, 11.74636802375234, 1.6184490045922735, 5.402157484675704, 10.116117235217182, 16.019602135417088, 11.705763971904398, 7.299053052365139, 4.461354743256478, 7.531671178472615, 1.582390736608868, 9.534542269263813, 1.9596143879565644, 15.489472594917014, 5.822830547230848, 7.499318869571259, 9.985216608333925, 10.03270304973028, 4.083188020683909, 8.190469660155882, 2.9821676416870058, 9.242591839213503, 9.998569948100528, 4.729218380691532, 7.593892036137035, 1.1470163880823563, 3.593338126565563, 1.5426314453879986, 4.513639508012342, 10.118913464563223, 0.5105259430515321, 15.775099197228867, 12.05679949241901, 7.8535085774225974, 3.8655532959460177, 3.2977205841009107, 3.8546112806651625, 9.993921914076, 13.662304944150975, 3.730133386249415, 6.930689831586816, 3.833114948129331, 7.843459588109377, 9.651382866988321, 4.32487240334703, 6.9954149907923355, 3.6732751826267678, 6.506224292866517, 2.836830831794468, 4.3174584761957835, 2.2745894543814305, 1.3672812791732438, 7.07526394073255, 4.003455411724395, 6.252880061722262, 4.156564963752937, 5.681035169088436, 12.792242512055923, 2.9604221983391765, 2.0462505871181245, 6.711606376048099, 4.068431613494066, 7.858383748838975, 3.8490213170428658, 4.580154835089165, 7.501941096065977, 10.7780201322668, 4.067694705027642, 4.4039593393058425, 2.6901058328850302, 3.264179673326793, 2.3879789571191288, 3.0930389945578867, 18.30115733900274, 6.471707350070127, 6.680905291971551, 5.742366537822184, 2.020899416110505, 10.207668213067246, 4.860619789530659, 2.6754162996313244, 3.585152771900879, 5.644030250207612, 6.374779432437629, 11.720995085266173, 9.937184334004515, 5.590718960449072, 8.701223834117853, 11.128463987492674, 4.587884587512182, 12.894044239488057, 3.0462423536527674, 12.477953973674333, 2.221756539602425, 6.228476809017635, 0.18358528357621517, 3.4441544833538806, 10.965190200526736, 4.980845003123529, 1.3932772724703333, 3.272093636010206, 4.266746562229977, 7.872279730973945, 3.8243847518725254, 10.670256218445862, 17.284779647497007, 2.644376105310677, 4.927058093891117, 5.30569605379481, 1.926392403294464, 7.845102420161203, 2.982656548934253, 1.4997244182188925, 4.7461574093585215, 2.8483087547703185, 12.047151352512428, 3.4880649403573276, 11.732943752874197, 6.9813129049237475, 3.2384593212065633, 1.9256466820771712, 5.7124412355837615, 8.418832968509168, 2.752751478600281, 4.171197545881602, 8.616904364240284, 6.284160109950633, 4.1810477059181155, 7.4242033037320105, 1.9692343390160645, 0.7311217267201264, 6.935912510464833, 10.787539601288069, 12.895746374184167, 9.301229136757724, 10.965974552589072, 10.062736049997376, 4.195976793683249, 7.098242051931191, 5.019460485585374, 4.005491424762978, 2.5337226893140006, 1.3647916549187198, 9.121321684423284, 1.818136863872882, 7.744568721567811, 9.401422362119996, 5.36004998386494, 5.590598935913978, 13.76757142388392, 17.320957993486164, 8.091359695868857, 3.056244034539619, 11.46875965833262, 1.0895965516554755, 2.409659052296855, 5.310917476297208, 5.0474420794264265, 10.065747029572861, 8.399995484071185, 5.999303540119944, 10.570025627681863, 16.68462394752922, 10.523661692873938, 7.319113255288522, -0.07188241454945812, 4.120672217814852, 3.850016635488781, 14.561860000216683, 2.7809199910271896, 11.597484092134568, 6.473066959556584, 7.602216633263769, 6.362604379349993, 6.265031461356174, 2.1327429654368624, 1.9203431272301326, 5.387341322372937, 3.294921420620403, 2.8302969183486257, 10.377576340374638, 12.695367528603342, 8.089813178847363, 8.618589782571492, 14.31462998390479, 6.229088516361773, 3.6173224162494, 8.573328912072396, 14.068835777185974, 19.519186032954707, 2.645542358212573, 11.057659219487391, 7.116304508486813, 12.203057597332762, 4.478951681107789, 13.201334815401736, 2.2535400933557805, 17.589185003221452, 10.917238694141234, 5.944176212265241, 2.914926419776223, 10.427571072431162, 7.305542662732612, 7.136485673917394, 3.473006149253745, -0.8948036838159846, 6.201274413655002, 4.620054753231987, 8.522818690465863, 1.7236331316200588, 7.381441868078257, 3.0983349286181285, 4.8533996369185095, 9.404158761029409, 3.199212957368143, 6.869418523046383, 4.075155979302653, 11.3952442006207, 5.9819054694834, 11.939881048529529, 1.2327216484910748, 9.520996289253404, 3.5448227286349776, 11.366415461847787, 6.393261931006413, 3.7689547564428887, 8.039514583666621, 3.7843861480103103, 7.333510258233163, 2.3747919230315953, 0.8808992404321346, 16.19267979954547, 6.045912993968392, 6.976194046073316, 7.562195090630139, 6.800721179390649, 2.480441393050849, 10.909191504815636, 1.729538434904268, 1.8707473024376742, 0.6245858936561355, 10.40459783669121, 3.3411429792009937, 11.066438850385445, 5.808740731181803, 13.650547610477856, 2.967127570033277, 3.816920031069716, 11.49549251788382, 8.896877285673233, 3.838830559941911, 2.8170253237765004, 7.634432948206113, 8.981233283470715, 1.7326646640660939, 9.386419189514582, 1.5785057335161181, 5.879091645985078, 5.465699169142491, 4.433684814922784, 3.8177536189397165, 2.4048289956555164, 10.325611392051856, 7.6074803442300984, 3.0375230618436166, 3.4273699234055215, 2.572549951305657, 5.069830743631792, 7.058062632929908, 3.4135514271495384, 4.966608680610329, 2.915932092366684, 3.3253092292052147, 12.436111994293643, 4.67475873038095, 3.65708240545015, 6.37197924529851, 16.56232837237978, 2.4184801906818314, 5.727536425813394, 2.4067812717509782, 3.7479395372103377, 4.357959643164212, 7.165247823105613, 3.115714363474604, 4.554665308156477, 5.376398009703256, 4.381187068919068, 2.0932624617665345, 5.842986192059503, 20.390985540233196, 2.979502069102285, 8.754246686289934, 13.775377927488867, 5.559315982479618, 5.057133610748745, 10.52804827793297, 3.0287108774118243, 3.9188253218804037, 4.249590936570091, 9.05470715769896, 10.103443000619611, 1.4257378401352638, 10.234732460655913, 18.51017035543307, 3.742531403422764, 5.682302063107566, 12.052165270043073, 4.2469082705562595, 3.1962885130444167, 5.631753203632753, 3.828289353783408, 2.3368296936625397, 13.114802646740193, 4.6819579463944265, 4.4347380132450684, 6.819121063304491, 5.088701749783405, 7.159051819363544, 7.733015419190123, 7.742955730548548, 10.542708203338568, 9.712064503322658, 4.373533894658112, 4.301228811426256, 3.12170971164312, 2.2179477278952398, 10.84119574001116, 7.114318566169389, 4.096600466653108, 9.642091012688123, 3.0947128735013534, 3.14344292302663, 5.680906971592573, 9.285082770663648, 10.636217269201904, 3.6790083186093123, 6.420833606247791, 5.481767881878449, 9.402526274613027, 7.57750145845892, 17.423540501737804, 12.111981679281225, 2.115230798899664, 2.348768957826344, 2.758855452517031, 3.6692564484876717, 4.077931749222289, 5.881245329861467, 20.71532564835613, 17.34422736518518, 9.611104553639624, 0.8589880967324383, 12.449212352595664, 8.980197224567005, 4.8875616041211565, 8.846735256556087, 16.957494350302664, 4.805564824787897, 8.964989170975489, 4.2911895405364895, 1.930967355657544, 2.1676659305603234, 0.9233793256699923, 2.112532122381978, 6.9371029470728205, 6.768823511173058, 2.04085544817848, 3.670871516056362, 0.3963597695790085, 3.6025896704276534, 9.584272616464322, 11.15412511310908, 5.738400719657727, 13.280705656341217, 9.155549718844648, 3.47788305538066, 6.184206312746015, 1.6382341393030238, 2.8484947110270165, 3.785737569930755, 9.57791145430953, 4.21649053438879, 5.057159291263697, 4.587668407155297, 2.229396331836379, 14.030088066682668, 4.299912064495803, 6.197549969436092, 9.636493224325857, 11.415592200763612, 2.91287781057633, 9.473267442479868, 12.181693147978782, 8.420632293781814, 7.114443764932338, 3.6829951311847617, 8.965626018208413, 10.961085374384197, 7.950627443018606, 4.221227283607655 ], "yaxis": "y" } ], "layout": { "legend": { "title": { "text": "Treatment" }, "tracegroupgap": 0 }, "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "text": "Scatter Plot of Outcome vs. Score by Treatment Status" }, "xaxis": { "anchor": "y", "domain": [ 0, 1 ], "title": { "text": "Score" } }, "yaxis": { "anchor": "x", "domain": [ 0, 1 ], "title": { "text": "Outcome" } } } }, "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = px.scatter(\n", " x=df['score'],\n", " y=df['y'],\n", " color=df['d'].astype(bool),\n", " labels={\n", " \"x\": \"Score\", \n", " \"y\": \"Outcome\",\n", " \"color\": \"Treatment\"\n", " },\n", " title=\"Scatter Plot of Outcome vs. Score by Treatment Status\"\n", ")\n", "\n", "fig.update_layout(\n", " xaxis_title=\"Score\",\n", " yaxis_title=\"Outcome\"\n", ")\n", "fig.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Fuzzy RDD Without Adjustment\n", "\n", "The standard RDD estimator for the fuzzy design takes the form \n", "\n", "$$\\hat{\\theta}_{base}(h) = \\frac{\\hat{\\tau}_{\\text{Y}, base}(h)}{\\hat{\\tau}_{\\text{D}, base}(h)} = \\frac{\\sum_{i=1}^n w_i(h)Y_i}{\\sum_{i=1}^n w_i(h)D_i}$$\n", "\n", "The packages ``rdrobust`` implements this estimation." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Call: rdrobust\n", "Number of Observations: 1000\n", "Polynomial Order Est. (p): 1\n", "Polynomial Order Bias (q): 2\n", "Kernel: Triangular\n", "Bandwidth Selection: mserd\n", "Var-Cov Estimator: NN\n", "\n", " Left Right\n", "------------------------------------------------\n", "Number of Observations 493 507\n", "Number of Unique Obs. 493 507\n", "Number of Effective Obs. 213 224\n", "Bandwidth Estimation 0.542 0.542\n", "Bandwidth Bias 0.864 0.864\n", "rho (h/b) 0.628 0.628\n", "\n", "Method Coef. S.E. t-stat P>|t| 95% CI \n", "-------------------------------------------------------------------------\n", "Conventional 4.64 3.052 1.52 1.285e-01 [-1.343, 10.622]\n", "Robust - - 1.414 1.575e-01 [-1.952, 12.054]\n" ] }, { "data": { "text/plain": [] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rdrobust_fuzzy_noadj = rdrobust(y=df['y'], x=df['score'], fuzzy=df['d'], c=0.0)\n", "rdrobust_fuzzy_noadj" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Fuzzy RDD with Linear Adjustment\n", "\n", "The linearly adjusted RDD estimator for the fuzzy design takes the form \n", "\n", "$$\\hat{\\theta}_{lin}(h) = \\frac{\\hat{\\tau}_{\\text{Y}, lin}(h)}{\\hat{\\tau}_{\\text{D}, lin}(h)} = \\frac{\\sum_{i=1}^n w_i(h)(Y_i-X_i^T\\hat{\\gamma}_{Y, h})}{\\sum_{i=1}^n w_i(h)(D_i-X_i^T\\hat{\\gamma}_{D, h})}$$\n", "\n", "Under similar assumptions as in the sharp case and that there are no *Defiers* (= individuals that would always pick the opposite treatment of their assigned one), this effect estimates the average treatment effect at the cutoff. The package ``rdrobust`` implements this estimation with a linear adjustment." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Call: rdrobust\n", "Number of Observations: 1000\n", "Polynomial Order Est. (p): 1\n", "Polynomial Order Bias (q): 2\n", "Kernel: Triangular\n", "Bandwidth Selection: mserd\n", "Var-Cov Estimator: NN\n", "\n", " Left Right\n", "------------------------------------------------\n", "Number of Observations 493 507\n", "Number of Unique Obs. 493 507\n", "Number of Effective Obs. 211 223\n", "Bandwidth Estimation 0.54 0.54\n", "Bandwidth Bias 0.88 0.88\n", "rho (h/b) 0.614 0.614\n", "\n", "Method Coef. S.E. t-stat P>|t| 95% CI \n", "-------------------------------------------------------------------------\n", "Conventional 2.802 2.326 1.205 2.283e-01 [-1.757, 7.361]\n", "Robust - - 1.097 2.728e-01 [-2.367, 8.381]\n" ] }, { "data": { "text/plain": [] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rdrobust_fuzzy = rdrobust(y=df['y'], x=df['score'], fuzzy=df['d'], covs=df[cov_names], c=0.0)\n", "rdrobust_fuzzy" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The fuzzy design usually has much larger standard errors than the sharp design, as the jump in treatment probability adds further estimation uncertainty." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Fuzzy RDD with Flexible Adjustment\n", "\n", "[Noack, Olma and Rothe (2024)](https://arxiv.org/abs/2107.07942) propose an estimator that reduces the variance of the above esimator, using a flexible adjustment of the outcome by ML. For more details, see our [User Guide](https://docs.doubleml.org/stable/guide/models.html). The estimator here takes the form \n", "\n", "$$\\hat{\\theta}_{\\text{RDFlex}}(h; \\eta) = \\frac{\\sum_{i=1}^n w_i(h)(Y_i - \\hat{\\eta}_Y(X_i))}{\\sum_{i=1}^n w_i(h)(D_i - \\hat{\\eta}_D(X_i))},$$\n", "\n", "\n", "with $\\eta_Y(\\cdot), \\eta_D(\\cdot)$ being potentially nonlinear adjustment functions.\n", "\n", "We initialize a `DoubleMLData` object using the usual package syntax:\n", "\n", " - `y_col` refers to the observed outcome, on which we want to estimate the effect at the cutoff\n", " - `s_col` refers to the score\n", " - `x_cols` refers to the covariates to be adjusted for\n", " - `d_cols` is an indicator whether an observation is treated or not. In the fuzzy design, this should __not__ be identical to an indicator whether an observation is left or right of the cutoff ($D_i \\neq \\mathbb{I}[S_i \\geq c]$)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "dml_data_fuzzy = dml.DoubleMLRDDData(df, y_col='y', d_cols='d', x_cols=cov_names, score_col='score')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This time, we also have to specify a classifier that adjusts the treatment assignment probabilities." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMRegressor was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMRegressor was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMRegressor was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMRegressor was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMRegressor was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMRegressor was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMRegressor was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMRegressor was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMRegressor was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMRegressor was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMClassifier was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMClassifier was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMClassifier was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMClassifier was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMClassifier was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMClassifier was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMClassifier was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMClassifier was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMClassifier was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMClassifier was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMRegressor was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMRegressor was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMRegressor was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMRegressor was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMRegressor was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMRegressor was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMRegressor was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMRegressor was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMRegressor was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMRegressor was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMClassifier was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMClassifier was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMClassifier was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMClassifier was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMClassifier was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMClassifier was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMClassifier was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMClassifier was fitted with feature names\n", "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Method Coef. S.E. t-stat P>|t| 95% CI\n", "-------------------------------------------------------------------------\n", "Conventional 0.979 0.726 1.348 1.777e-01 [-0.445, 2.403]\n", "Robust - - 0.994 3.201e-01 [-0.831, 2.541]\n", "Design Type: Fuzzy\n", "Cutoff: 0\n", "First Stage Kernel: triangular\n", "Final Bandwidth: [0.61170069]\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMClassifier was fitted with feature names\n", "\n", "/home/ubuntu/.venv/lib/python3.12/site-packages/sklearn/utils/validation.py:2739: UserWarning:\n", "\n", "X does not have valid feature names, but LGBMClassifier was fitted with feature names\n", "\n" ] } ], "source": [ "ml_g = LGBMRegressor(n_estimators=500, learning_rate=0.01, verbose=-1)\n", "ml_m = LGBMClassifier(n_estimators=500, learning_rate=0.01, verbose=-1)\n", "\n", "rdflex_fuzzy = RDFlex(dml_data_fuzzy,\n", " ml_g,\n", " ml_m,\n", " cutoff=0,\n", " fuzzy=True,\n", " n_folds=5,\n", " n_rep=1)\n", "rdflex_fuzzy.fit(n_iterations=2)\n", "\n", "print(rdflex_fuzzy)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Also for the fuzzy case, we observe a significant decrease in estimation standard error." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Advanced: Global and Local Learners, Stacked Ensembles\n", "\n", "By default, ``RDFlex`` fits ML methods using kernel weights, resulting in a \"local\" fit around the cutoff. If the adjustment should also include \"global\" information from the full support of $S$ available in the data, the use of a the ``GlobalLearner`` wrapper is recommended.\n", "\n", "The ``GlobalLearner`` allows to ignore the weights and fit the ML method on the full support of the data, even if weights are provided.\n", "\n", "The learners can also be stacked. All learners have to support the `sample_weight` in their `fit` method. By stacking and using local and global learners, it is possible to further tune the estimation and potentially reduce standard errors even further." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "from doubleml.utils import GlobalRegressor, GlobalClassifier\n", "\n", "from sklearn.linear_model import LinearRegression, LogisticRegression\n", "from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier\n", "from sklearn.ensemble import StackingClassifier, StackingRegressor" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "reg_estimators = [\n", " ('lr local', LinearRegression()),\n", " ('rf local', RandomForestRegressor()),\n", " ('lr global', GlobalRegressor(base_estimator=LinearRegression())),\n", " ('rf global', GlobalRegressor(base_estimator=RandomForestRegressor()))\n", "]\n", "\n", "class_estimators = [\n", " ('lr local', LogisticRegression()),\n", " ('rf local', RandomForestClassifier()),\n", " ('lr global', GlobalClassifier(base_estimator=LogisticRegression())),\n", " ('rf global', GlobalClassifier(base_estimator=RandomForestClassifier()))\n", "]\n", "\n", "ml_g = StackingRegressor(\n", " estimators=reg_estimators,\n", " final_estimator=LinearRegression(),\n", ")\n", "\n", "ml_m = StackingClassifier(\n", " estimators=class_estimators,\n", " final_estimator=LogisticRegression(),\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We first repeat the estimation of the sharp design and observe an even smaller standard error." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Method Coef. S.E. t-stat P>|t| 95% CI\n", "-------------------------------------------------------------------------\n", "Conventional 1.876 0.101 18.619 2.241e-77 [1.678, 2.073]\n", "Robust - - 15.992 1.443e-57 [1.612, 2.062]\n", "Design Type: Sharp\n", "Cutoff: 0\n", "First Stage Kernel: triangular\n", "Final Bandwidth: [0.61771229]\n" ] } ], "source": [ "rdflex_sharp_stack = RDFlex(dml_data_sharp,\n", " ml_g,\n", " fuzzy=False,\n", " n_folds=5,\n", " n_rep=1)\n", "rdflex_sharp_stack.fit(n_iterations=2)\n", "\n", "print(rdflex_sharp_stack)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The same applies for the fuzzy case." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Method Coef. S.E. t-stat P>|t| 95% CI\n", "-------------------------------------------------------------------------\n", "Conventional 1.726 0.609 2.835 4.577e-03 [0.533, 2.918]\n", "Robust - - 2.642 8.243e-03 [0.483, 3.261]\n", "Design Type: Fuzzy\n", "Cutoff: 0\n", "First Stage Kernel: triangular\n", "Final Bandwidth: [0.54550506]\n" ] } ], "source": [ "rdflex_fuzzy_stack = RDFlex(dml_data_fuzzy,\n", " ml_g,\n", " ml_m,\n", " fuzzy=True,\n", " n_folds=5,\n", " n_rep=1)\n", "rdflex_fuzzy_stack.fit(n_iterations=2)\n", "\n", "print(rdflex_fuzzy_stack)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To conclude, we look at a visualization of the estimated coefficient and the confidence intervals. We see that by using the flexible adjustment, it is possible to shrink confidence intervals." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "df_sharp = pd.DataFrame({\"coef\": [rdrobust_sharp_noadj.coef.values[0][0], rdrobust_sharp.coef.values[0][0], rdflex_sharp.coef[0], rdflex_sharp_stack.coef[0]],\n", " \"CI lower\": [rdrobust_sharp_noadj.ci.values[0][0], rdrobust_sharp.ci.values[0][0], rdflex_sharp.confint().values[0][0], rdflex_sharp_stack.confint().values[0][0]],\n", " \"CI upper\": [rdrobust_sharp_noadj.ci.values[0][1], rdrobust_sharp.ci.values[0][1], rdflex_sharp.confint().values[0][1], rdflex_sharp_stack.confint().values[0][1]],\n", " \"method\": [\"No Adj.\", \"Linear Adj.\", \"Flexible Adj.\", \"Flexible Adj. (Stacked)\"]})\n", "df_fuzzy = pd.DataFrame({\"coef\": [rdrobust_fuzzy_noadj.coef.values[0][0], rdrobust_fuzzy.coef.values[0][0], rdflex_fuzzy.coef[0], rdflex_fuzzy_stack.coef[0]],\n", " \"CI lower\": [rdrobust_fuzzy_noadj.ci.values[0][0], rdrobust_fuzzy.ci.values[0][0], rdflex_fuzzy.confint().values[0][0], rdflex_fuzzy_stack.confint().values[0][0]],\n", " \"CI upper\": [rdrobust_fuzzy_noadj.ci.values[0][1], rdrobust_fuzzy.ci.values[0][1], rdflex_fuzzy.confint().values[0][1], rdflex_fuzzy_stack.confint().values[0][1]],\n", " \"method\": [\"No Adj.\", \"Linear Adj.\", \"Flexible Adj.\", \"Flexible Adj. (Stacked)\"]})" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(10, 4))\n", "\n", "axes[0].errorbar(\n", " df_sharp['method'],\n", " df_sharp['coef'],\n", " yerr=(df_sharp['coef'] - df_sharp['CI lower'], df_sharp['CI upper'] - df_sharp['coef']),\n", " fmt='o',\n", " capsize=5,\n", " capthick=2\n", ")\n", "axes[0].set_title('Sharp Design')\n", "axes[0].set_ylabel('Coefficient')\n", "axes[0].set_xlabel('Method')\n", "axes[0].axhline(true_tau, linestyle=\"--\", color=\"r\")\n", "axes[0].tick_params(axis='x', rotation=30)\n", "\n", "axes[1].errorbar(\n", " df_fuzzy['method'],\n", " df_fuzzy['coef'],\n", " yerr=(df_fuzzy['coef'] - df_fuzzy['CI lower'], df_fuzzy['CI upper'] - df_fuzzy['coef']),\n", " fmt='o',\n", " capsize=5,\n", " capthick=2\n", ")\n", "axes[1].set_title('Fuzzy Design')\n", "axes[1].set_ylabel('Coefficient') \n", "axes[1].set_xlabel('Method')\n", "axes[1].axhline(true_tau, linestyle=\"--\", color=\"r\")\n", "axes[1].tick_params(axis='x', rotation=30)\n", "\n", "plt.tight_layout()" ] } ], "metadata": { "kernelspec": { "display_name": ".venv", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.3" } }, "nbformat": 4, "nbformat_minor": 2 }