# NeurIPS Sub 21784 - Instructions for generating plots in the submission

The key step in all the data generation scripts is the function which computes the beta given the classifier 'h' and the other parameters \alpha, \sigma and \delta. 
It first computes the optimal effort profile e* assuming an unweighted \ell_2-norm cost function, using the theory developed in the paper.
Then it computes beta by splitting e* into its desirable and undesirable feature components. 

For Figure 1, run the data generation script Data_gen_beta_v_sigma.py
This generates a pickle file which will be loaded for generating individual files.
Run fig1a.py, fig1b.py and fig1c.py to obtain all 3 plots in Figure 1. 


For Figure 2, run the following data generation scripts Data_gen_beta_v_delta_sigma3.py, Data_gen_beta_v_delta_sigma1.py and Data_gen_beta_v_delta_sigma01.py
These scripts are exactly identical except they generate data for sigma = 3, sigma = 1 and sigma = 0.1 respectively. 
Then run fig2a.py, fig2b.py and fig2c.py to obtain all 3 plots in Figure 2. 

Figure 4a, 4b and 4c are the same plots as 2a, 2b, 2c. 
For generating 4d, reuse fig2a.py and in the plt.plot commands, 
replace b_std[0] by b_std[1];
replace b_std[2] by b_std[3];
replace b_std[4] by b_std[5] and
replace b_std[6] by b_std[7];
This changes the value of alpha from alpha = 1 to alpha = 10. The rest of the script remains the same.
Similarly, generate 4e and 4f by reusing fig2b.py and fig2c.py respectively. 

Figure 3 is a graphical representation of the causal graph used for the numerical experiments. It has been generated on draw.io

Finally, Figure 5 can be generate by running fig5.py. It is self-explanatory.  


