This script runs simulations to evaluate a differentially private Maximum Likelihood Estimation (MLE) method using the ACRR mechanism and optional Divide-and-Conquer (DAC) for scalability.

--------------------------------------------------------------------------------
REQUIREMENTS
--------------------------------------------------------------------------------

Python version:

-Python 3.11

Required packages:

-numpy

-rpy2

Optional (for progress display):

-tqdm

External dependencies:

R and C++ compiler must be installed and accessible from the command line.

--------------------------------------------------------------------------------
FILES
--------------------------------------------------------------------------------

gov_census.csv : The government salary database from the package "fairadapt".

main.py : Run experiments on synthetic data and save results to experiment.npy. The results are organized in a ndarray where each row represents a single run.
Each row contains 5 numbers: sample sizes, privacy budget (epsilon), oracle error (inf norm when F_k(1) is known), actual error.

main.py : Run experiments on synthetic data and save results to experimentReal_sm.npy. The format is the same as for experiment.npy.

read_self_contain.py : Read data from experimentReal_sm.npy and experiment.npy to compute mean and standard deviation.

icm.R : A short script to connect Python to R. 

icm_old.cpp : The ICM algorithm from the book "Nonparametric Estimation under Shape Constraints" (2014), which is not available on PyPI or CRAN.