I have just published a new version of `rdd’ to CRAN.

The main change is that multiple bandwidths may be more naturally estimated by passing a vector to the argument bw in the function RDestimate. If only a single bandwidth is passed to RDestimate (or none, allowing for the default Imbens-Kalyanaraman bandwidth calculation) then both half and double the initial bandwidth will be used for estimation. That is, if the call is RDestimate(Y~X,bw=5), then the RD will be estimated at bandwidths 5, 2.5, and 10. Robustness to varying bandwidths (and particularly to smaller bandwidths) should be a hallmark of a strong RDD, so I’m trying to make this a little more central to the output from the estimation commands.

Likewise, this means that certain other outputs now work differently. Most outputs are named the same, but they now return a vector of values, one for each bandwidth. So in the previous example, the est value of the object returned would be a vector of three values – the estimated discontinuity when estimating in bandwidths of 5, 2.5 and 10, respectively. For the model objects (if requested), they now reside in a list with the number of elements equal to the number of bandwidths used in estimation.

The summary method has been simultaneously reworked to allow for multiple bandwidths. If you are estimating a very large number of bandwidths, you should probably avoid using the summary command, as it must load in the model objects for every bandwidth used. In a future version, I will abstract farther away from the ivreg and lm objects, and provide all the necessary summary and fit statistics directly from the RD object. This should speed up the execution of the summary command, which is rather slow at the moment.

The next version will include a better summary function which does not require the model objects to be present in the RD object, as well as improved plotting methods for dealing with multiple bandwidths. I will also improve the workings of summary by providing a print method for it, rather than printing manually from within the summary.RD function (you’ll notice some ugly unintended output if you try to save the summary output, as in s.rd<-summary(rd) or similar).

I am also working on integrating randomization inference based methods (as well as window selection procedures) courtesy of Rocio Titiunik.

I will update the examples to reflect the changes to the package within the next few days.