Skip to content

[Feature Request]: Methods robust to weak instruments #311

@esmucler

Description

@esmucler

Describe the feature you want to propose or implement

Hi folks. First off, congrats on your work on this great package, it's super useful!

Together with @david26694 we have been working on a project studying the properties of certain procedures to construct confidence sets for the local average treatment effect that are, in a sense, robust to weak instruments.

Just in case, I'll sum up some aspects of the literature here briefly. It is well known that Wald type confidence intervals can very low coverage under models that allow for the effect of the instrument on the treatment to be very weak. This and this are two classic references. I've also recently shown that this remains the case even when the underlying model accounts for all the restrictions encoded in the instrumental variables model; see this. The results in these papers imply that any method that has uniform coverage over a model that allows for arbitrarily weak instruments must have infinite length with high probability under some laws. Given these problems and the high prevalence of weak instruments in applications, it seems desirable to have flexible methods at hand that reliably let the practitioner know that something might be off, by returning an infinite (or empty) confidence set.

For linear models, this is a very well studied problem, and the usual recipe is to construct a confidence interval by inverting the Anderson Rubin test, which is just the score test. This has been generalized to non-parametric models in Stock and Wright (2000) and Ma (2023). The idea is essentially to take the non-parametric influence function, estimate the nuisances with some flexible method, use this as a score, and then again invert the score test (all this possibly using cross-fitting).

Given all the work already done in DoubleML it seems to us that this method could be easily added to the existing package, and would be highly valued to practitioners. We are not aware of other open source implementations of it in Python.

Would you be interested in us contributing this method?

Best

Propose a possible solution or implementation

To implement it, we would add a new method to the DoubleMLIIVM class. It could be called robust_confint() or something of the sort. The method would compute the confidence set as described above. Note that in general the confidence set could be an interval, a union of intervals, the whole real line, or the empty set, and thus the output should be structured somewhat differently from confint().

Did you consider alternatives to the proposed solution. If yes, please describe

No response

Comments, context or references

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions