This code was written in Python 3.9 with the following dependencies:
- numpy 1.21.1
- scipy 1.7.0
- pandas 1.3.0

To replicate the experiments in the paper:
- open a Python command line
- switch directory to this folder
- run the following commands

-------
>>> import experiments
>>> experiments.test_weak_instruments(20) # weak instruments experiment with d=20
>>> experiments.test_weak_instruments(100) # weak instruments experiment with d=100
>>> experiments.test_HE_corruption(20) # heterogeneous effects experiment with varied corruption level
>>> experiments.test_uncorrupted_HE() # heterogeneous effects experiment with no corruption
>>> experiments.test_HE_eigenbound() # heterogeneous effects experiment with varied eigenbound hyperparameter for GMM-Sever
>>> experiments.uncorrupted_nlsym_eigenbound() # NLSYM experiment with varied eigenbound hyperparameter
>>> experiments.corrupted_nlsym_corruption() # corrupted NLSYM with varied corruption level
>>> experiments.corrupted_nlsym_eigenbound() # corrupted NLSYM with varied eigenbound hyperparameter