Graphiques dans le plan de discontinuité de régression dans «Stata» ou «R»

10

Lee et Lemieux (p. 31, 2009) suggèrent au chercheur de présenter les graphiques lors de l'analyse de conception de discontinuité de régression (RDD). Ils suggèrent la procédure suivante:

"... pour une certaine largeur de bande , et pour un certain nombre de casiers et à gauche et à droite de la valeur de coupure, respectivement, l'idée est de construire des casiers ( , ], pour + , où "K 0 K 1 b k b k + 1 k = 1 , . . . , K = K 0 K 1 b k = c - ( K 0 - k + 1 ) h .hK0K1bkbk+1k=1,...,K=K0K1bk=c(K0k+1)h.

c=cutoff point or threshold value of assignment variable
h=bandwidth or window width.

... puis comparez les résultats moyens juste à gauche et à droite du point de coupure ... "

..dans tous les cas, nous montrons également les valeurs ajustées à partir d'un modèle de régression quartique estimé séparément de chaque côté du point de coupure ... (p. 34 du même article)

Ma question est de savoir comment programmer cette procédure dans Stataou Rpour tracer les graphiques de la variable de résultat par rapport à la variable d'affectation (avec des intervalles de confiance) pour le RDD net. Un exemple d'échantillon Stataest mentionné ici et ici (remplacer rd par rd_obs) et un échantillon exemple en Rest ici . Cependant, je pense que les deux n'ont pas mis en œuvre l'étape 1. Notez que les deux ont les données brutes avec les lignes ajustées dans les graphiques.

Exemple de graphique sans variable de confiance [Lee et Lemieux, 2009] entrez la description de l'image ici Merci d'avance.

Métrique
la source
En réponse à votre drapeau, un bon moyen de faire revivre votre question est de la modifier et d'offrir une prime: cela augmentera votre question et intéressera plus de personnes. Si vous pensez que cette question pourrait être mieux traitée sur Stack Overflow, faites-le nous savoir et nous pourrons la migrer pour vous.
chl
J'aimerais que cela soit migré vers Stack Overflow.
Mesures
1
Malheureusement, cette question est trop ancienne pour être migrée vers Stack Overflow. Je crois que cela appartient à Cross Validated mais si vous voulez poser des questions sur Stack Overflow (en mettant l'accent sur l' aspect programmation et en fournissant un exemple reproductible minimal ), faites le moi savoir et je vais le fermer ici.
chl
Vous devez utiliser le cmogramme . Il fait tout ce dont vous avez besoin.
Yan Song

Réponses:

10

Est-ce très différent de faire deux polynômes locaux de degré 2, un pour en dessous du seuil et un pour au-dessus avec des points lisses aux ? Voici un exemple avec Stata:Ki

use votex // the election-spending data that comes with rd

tw 
(scatter lne d, mcolor(gs10) msize(tiny)) 
(lpolyci lne d if d<0, bw(0.05) deg(2) n(100) fcolor(none)) 
(lpolyci lne d if d>=0, bw(0.05) deg(2) n(100) fcolor(none)), xline(0)  legend(off)

Alternativement, vous pouvez simplement enregistrer les valeurs lpoly lissées et les erreurs standard en tant que variables au lieu de les utiliser twoway. Au-dessous de est le bac, est la moyenne lissée, est l'erreur standard, et et sont les limites supérieure et inférieure de l'intervalle de confiance à 95% pour le résultat lissé.s s e u l l lxsseulll

lpoly lne d if d<0, bw(0.05) deg(2) n(100) gen(x0 s0) ci se(se0)
lpoly lne d if d>=0, bw(0.05) deg(2) n(100) gen(x1 s1) ci se(se1)

/* Get the 95% CIs */
forvalues v=0/1 {
    gen ul`v' = s`v' + 1.95*se`v' 
    gen ll`v' = s`v' - 1.95*se`v' 
};

tw 
(line ul0 ll0 s0 x0, lcolor(blue blue blue) lpattern(dash dash solid)) 
(line ul1 ll1 s1 x1, lcolor(red red red) lpattern(dash dash solid)), legend(off)  

Comme vous pouvez le voir, les lignes du premier tracé sont les mêmes que dans le second.

Dimitriy V. Masterov
la source
@Dimitry: +1 pour la solution. Cependant, je voudrais avoir la valeur moyenne pour chaque casier (veuillez exécuter l'exemple stata ci-dessus) plutôt que le nuage de points montrant les valeurs brutes. CI est génial.
Mesures
1
Je ne sais pas trop ce que tu veux dire. J'ai ajouté un code montrant comment vous obtenez les moyens lissés dans chaque bac à la main. Si ce n'est pas ce que vous recherchez, veuillez expliquer plus en détail ce que vous avez en tête. Pour autant que je sache, ces graphiques montrent généralement les données brutes et les moyennes lissées.
Dimitriy V. Masterov
Pour citer Lee et Lemieux (p. 31, 2009): "Une manière standard de représenter graphiquement les données est de diviser la variable d'affectation (d ici) en un certain nombre de cases, en s'assurant qu'il y a deux cases distinctes de chaque côté de la limite (pour éviter que les observations traitées et non traitées soient mélangées dans la même case). Ensuite, la valeur moyenne de la variable de résultat peut être calculée pour chaque case et représentée graphiquement par rapport aux points médians des cases ". Donc, s'il y a 50 cases, alors nous n'aurons que 25 points de données à gauche et à droite et pas toutes les données brutes (par exemple, graphique 6 (b) de la référence: mise à jour en question)
Metrics
1
Maintenant c'est clair! Je suis d'accord sur le noyau. Mais êtes-vous certain que ce n'est plus le degré 0? Cela correspondrait à un lissage moyen à pondération égale.
Dimitriy V. Masterov
1
Je crois que cela correspond à lpoly avec un noyau régulier et un polynôme de degré 0
Dimitriy V. Masterov
7

Voici un algorithme en conserve. Calonico, Cattaneo et Titiunik ont récemment proposé une procédure de sélection robuste de la bande passante. Ils ont implémenté leur travail théorique pour Stata et R , et il est également livré avec une commande de tracé. Voici un exemple dans R:

# install.packages("rdrobust")
library(rdrobust)
set.seed(26950) # from random.org
x<-runif(1000,-1,1)
y<-5+3*x+2*(x>=0)+rnorm(1000)
rdplot(y,x)

Cela vous donnera ce graphique: entrez la description de l'image ici

Durden
la source
Salut, comment ajouter du CI?
Krantz