From 8c1c31892f6330fc03be00ed20e9cfa5cbd06603 Mon Sep 17 00:00:00 2001 From: "Anastasios N. Angelopoulos" Date: Thu, 2 Nov 2023 16:35:04 -0700 Subject: [PATCH] [removed irrelevant functions for main] --- examples/eff-ppi/.gitignore | 2 - .../eff-ppi/eff_ppi_logistic_comparison.ipynb | 283 -------------- .../eff-ppi/lambda_census_healthcare.ipynb | 364 ------------------ examples/eff-ppi/lambda_census_income.ipynb | 334 ---------------- examples/eff-ppi/lambda_mean.ipynb | 252 ------------ .../lambda_mean_onestep-anticorrelated.ipynb | 252 ------------ examples/eff-ppi/lambda_mean_onestep.ipynb | 252 ------------ examples/eff-ppi/lambda_ols.ipynb | 279 -------------- examples/eff-ppi/lambda_ols_onestep.ipynb | 284 -------------- examples/eff-ppi/lamda_logistic.ipynb | 307 --------------- examples/eff-ppi/lamda_logistic_onestep.ipynb | 305 --------------- .../eff-ppi/plots/census_healthcare_tuned.pdf | Bin 11878 -> 0 bytes .../eff-ppi/plots/census_income_tuned.pdf | Bin 11798 -> 0 bytes examples/eff-ppi/plots/eff-comparison.pdf | Bin 16355 -> 0 bytes .../eff-ppi/plots/onestep-PPI-logistic.pdf | Bin 15829 -> 0 bytes .../plots/onestep-PPI-mean-anticorrelated.pdf | Bin 16736 -> 0 bytes examples/eff-ppi/plots/onestep-PPI-mean.pdf | Bin 16264 -> 0 bytes examples/eff-ppi/plots/onestep-PPI-ols.pdf | Bin 16983 -> 0 bytes .../eff-ppi/plots/tuned-PPI-alphafold.pdf | Bin 12725 -> 0 bytes examples/eff-ppi/plots/tuned-PPI-forest.pdf | Bin 12012 -> 0 bytes examples/eff-ppi/plots/tuned-PPI-galaxies.pdf | Bin 12037 -> 0 bytes examples/eff-ppi/plots/tuned-PPI-logistic.pdf | Bin 15930 -> 0 bytes examples/eff-ppi/plots/tuned-PPI-mean.pdf | Bin 16189 -> 0 bytes examples/eff-ppi/plots/tuned-PPI-ols.pdf | Bin 16607 -> 0 bytes examples/eff-ppi/tuned-alphafold.ipynb | 333 ---------------- examples/eff-ppi/tuned-forest.ipynb | 284 -------------- examples/eff-ppi/tuned-galaxies.ipynb | 284 -------------- ppi_py/ppi.py | 301 +++------------ 28 files changed, 45 insertions(+), 4071 deletions(-) delete mode 100644 examples/eff-ppi/.gitignore delete mode 100644 examples/eff-ppi/eff_ppi_logistic_comparison.ipynb delete mode 100644 examples/eff-ppi/lambda_census_healthcare.ipynb delete mode 100644 examples/eff-ppi/lambda_census_income.ipynb delete mode 100644 examples/eff-ppi/lambda_mean.ipynb delete mode 100644 examples/eff-ppi/lambda_mean_onestep-anticorrelated.ipynb delete mode 100644 examples/eff-ppi/lambda_mean_onestep.ipynb delete mode 100644 examples/eff-ppi/lambda_ols.ipynb delete mode 100644 examples/eff-ppi/lambda_ols_onestep.ipynb delete mode 100644 examples/eff-ppi/lamda_logistic.ipynb delete mode 100644 examples/eff-ppi/lamda_logistic_onestep.ipynb delete mode 100644 examples/eff-ppi/plots/census_healthcare_tuned.pdf delete mode 100644 examples/eff-ppi/plots/census_income_tuned.pdf delete mode 100644 examples/eff-ppi/plots/eff-comparison.pdf delete mode 100644 examples/eff-ppi/plots/onestep-PPI-logistic.pdf delete mode 100644 examples/eff-ppi/plots/onestep-PPI-mean-anticorrelated.pdf delete mode 100644 examples/eff-ppi/plots/onestep-PPI-mean.pdf delete mode 100644 examples/eff-ppi/plots/onestep-PPI-ols.pdf delete mode 100644 examples/eff-ppi/plots/tuned-PPI-alphafold.pdf delete mode 100644 examples/eff-ppi/plots/tuned-PPI-forest.pdf delete mode 100644 examples/eff-ppi/plots/tuned-PPI-galaxies.pdf delete mode 100644 examples/eff-ppi/plots/tuned-PPI-logistic.pdf delete mode 100644 examples/eff-ppi/plots/tuned-PPI-mean.pdf delete mode 100644 examples/eff-ppi/plots/tuned-PPI-ols.pdf delete mode 100644 examples/eff-ppi/tuned-alphafold.ipynb delete mode 100644 examples/eff-ppi/tuned-forest.ipynb delete mode 100644 examples/eff-ppi/tuned-galaxies.ipynb diff --git a/examples/eff-ppi/.gitignore b/examples/eff-ppi/.gitignore deleted file mode 100644 index 26f24d6..0000000 --- a/examples/eff-ppi/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -data/ -.cache/ diff --git a/examples/eff-ppi/eff_ppi_logistic_comparison.ipynb b/examples/eff-ppi/eff_ppi_logistic_comparison.ipynb deleted file mode 100644 index 100ffc9..0000000 --- a/examples/eff-ppi/eff_ppi_logistic_comparison.ipynb +++ /dev/null @@ -1,283 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "3f6be9f2", - "metadata": {}, - "outputs": [], - "source": [ - "%load_ext autoreload\n", - "%autoreload 2\n", - "import os, sys\n", - "\n", - "sys.path.append(\n", - " os.path.abspath(os.path.join(os.getcwd(), os.pardir, os.pardir))\n", - ")\n", - "import numpy as np\n", - "import pandas as pd\n", - "import matplotlib.pyplot as plt\n", - "from ppi_py.datasets import load_dataset\n", - "from ppi_py import ppi_logistic_ci, deprecated_ppi_logistic_ci\n", - "from tqdm import tqdm\n", - "from scipy.optimize import brentq\n", - "from scipy.special import expit\n", - "import seaborn as sns\n", - "\n", - "from tqdm import tqdm" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "e4ae754b", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|█████████████████████████████████████████████████████████████████████████████████| 100/100 [00:38<00:00, 2.58it/s]\n", - "100%|█████████████████████████████████████████████████████████████████████████████████| 100/100 [39:37<00:00, 23.77s/it]\n", - "100%|█████████████████████████████████████████████████████████████████████████████████| 100/100 [24:23<00:00, 14.63s/it]\n", - "100%|█████████████████████████████████████████████████████████████████████████████████| 100/100 [27:40<00:00, 16.61s/it]\n", - "100%|█████████████████████████████████████████████████████████████████████████████████| 100/100 [50:06<00:00, 30.07s/it]\n", - "100%|█████████████████████████████████████████████████████████████████████████████████| 100/100 [00:36<00:00, 2.73it/s]\n", - "100%|█████████████████████████████████████████████████████████████████████████████████| 100/100 [40:48<00:00, 24.48s/it]\n", - "100%|█████████████████████████████████████████████████████████████████████████████████| 100/100 [01:25<00:00, 1.16it/s]\n", - "100%|█████████████████████████████████████████████████████████████████████████████████| 100/100 [01:35<00:00, 1.05it/s]\n", - "100%|█████████████████████████████████████████████████████████████████████████████████| 100/100 [01:42<00:00, 1.02s/it]\n", - "100%|█████████████████████████████████████████████████████████████████████████████████| 100/100 [00:33<00:00, 3.01it/s]\n", - "100%|█████████████████████████████████████████████████████████████████████████████████| 100/100 [01:36<00:00, 1.04it/s]\n", - "100%|█████████████████████████████████████████████████████████████████████████████████| 100/100 [01:25<00:00, 1.17it/s]\n", - "100%|█████████████████████████████████████████████████████████████████████████████████| 100/100 [01:34<00:00, 1.06it/s]\n", - "100%|█████████████████████████████████████████████████████████████████████████████████| 100/100 [01:41<00:00, 1.02s/it]\n" - ] - } - ], - "source": [ - "alpha = 0.1\n", - "n = 1000\n", - "N = 10000\n", - "ds = np.array([1, 2, 3, 4, 5])\n", - "grid_limits = np.array([100, 1000, 5000])\n", - "optimizer_options = {\n", - " \"ftol\": 1e-4,\n", - " \"gtol\": 1e-4,\n", - " \"maxls\": 10000,\n", - " \"maxiter\": 10000,\n", - "}\n", - "num_trials = 100\n", - "eff_includeds = np.zeros((num_trials, ds.shape[0], grid_limits.shape[0]))\n", - "eff_sizes = np.zeros((num_trials, ds.shape[0], grid_limits.shape[0]))\n", - "includeds = np.zeros((num_trials, ds.shape[0], grid_limits.shape[0]))\n", - "sizes = np.zeros((num_trials, ds.shape[0], grid_limits.shape[0]))\n", - "for gl in range(grid_limits.shape[0]):\n", - " grid_limit = grid_limits[gl]\n", - " for j in range(ds.shape[0]):\n", - " d = ds[j]\n", - " for i in tqdm(range(num_trials)):\n", - " # Make a synthetic regression problem\n", - " X = np.random.randn(n, d)\n", - " beta = 1 * np.random.randn(d)\n", - " beta_prediction = beta + np.random.randn(d) + 2\n", - " Y = np.random.binomial(1, expit(X.dot(beta)))\n", - " Yhat = expit(X.dot(beta_prediction))\n", - " # Make a synthetic unlabeled data set with predictions Yhat\n", - " X_unlabeled = np.random.randn(N, d)\n", - " Yhat_unlabeled = expit(X_unlabeled.dot(beta_prediction))\n", - " # Compute the confidence interval\n", - " eff_ppi_ci = ppi_logistic_ci(\n", - " X,\n", - " Y,\n", - " Yhat,\n", - " X_unlabeled,\n", - " Yhat_unlabeled,\n", - " alpha=alpha,\n", - " optimizer_options=optimizer_options,\n", - " lhat=1,\n", - " )\n", - " ppi_ci = deprecated_ppi_logistic_ci(\n", - " X,\n", - " Y,\n", - " Yhat,\n", - " X_unlabeled,\n", - " Yhat_unlabeled,\n", - " alpha=alpha,\n", - " grid_size=20,\n", - " grid_limit=grid_limit,\n", - " max_refinements=3,\n", - " optimizer_options=optimizer_options,\n", - " )\n", - " eff_sizes[i, j, gl] = np.array(\n", - " [eff_ppi_ci[1][_d] - eff_ppi_ci[0][_d] for _d in range(d)]\n", - " ).sum()\n", - " sizes[i, j, gl] = np.array(\n", - " [ppi_ci[1][_d] - ppi_ci[0][_d] for _d in range(d)]\n", - " ).sum()\n", - " # Check that the confidence interval contains the true beta\n", - " eff_includeds[i, j, gl] = int(\n", - " (eff_ppi_ci[0][0] <= beta[0]) & (beta[0] <= eff_ppi_ci[1][0])\n", - " )\n", - " includeds[i, j, gl] = int(\n", - " (ppi_ci[0][0] <= beta[0]) & (beta[0] <= ppi_ci[1][0])\n", - " )" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "0c49f0f0", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "eff_color = \"darkorange\"\n", - "test_color = \"cornflowerblue\"\n", - "linewidth = 2\n", - "\n", - "fig, axs = plt.subplots(\n", - " nrows=grid_limits.shape[0], ncols=2, figsize=(8, 2 * grid_limits.shape[0])\n", - ")\n", - "all_median_sizes = np.median(sizes, axis=0)\n", - "inf_line_y = 100\n", - "for gs in range(grid_limits.shape[0]):\n", - " cvg_ax = axs[gs, 0]\n", - " sz_ax = axs[gs, 1]\n", - " cvg_ax.plot(\n", - " ds,\n", - " includeds[:, :, gs].mean(axis=0),\n", - " color=test_color,\n", - " linewidth=linewidth,\n", - " label=\"Testing\",\n", - " )\n", - " cvg_ax.plot(\n", - " ds,\n", - " eff_includeds[:, :, gs].mean(axis=0),\n", - " color=eff_color,\n", - " linewidth=linewidth,\n", - " label=\"Efficient\",\n", - " )\n", - " cvg_ax.axhline(y=1 - alpha, linestyle=\"dotted\", color=\"#888888\")\n", - " cvg_ax.set_yticks([0.6, 0.8, 1])\n", - " median_sizes = np.median(sizes[:, :, gs], axis=0)\n", - " median_eff_sizes = np.median(eff_sizes[:, :, gs], axis=0)\n", - " if np.any(np.isinf(median_sizes)):\n", - " largest_finite_index_sizes = np.where(np.isinf(median_sizes))[0][0] - 1\n", - " else:\n", - " largest_finite_index_sizes = -1\n", - " if np.any(np.isinf(median_eff_sizes)):\n", - " largest_finite_index_eff_sizes = (\n", - " np.where(np.isinf(median_eff_sizes))[0][0] - 1\n", - " )\n", - " else:\n", - " largest_finite_index_eff_sizes = -1\n", - " max_y = max(\n", - " median_sizes[largest_finite_index_sizes],\n", - " median_eff_sizes[largest_finite_index_eff_sizes],\n", - " )\n", - " if np.any(np.isinf(median_sizes)):\n", - " sz_line = sz_ax.plot(\n", - " ds,\n", - " median_sizes,\n", - " color=test_color,\n", - " linewidth=linewidth,\n", - " markevery=[np.where(np.isinf(median_sizes))[0][0] - 1],\n", - " marker=\"o\",\n", - " label=\"Testing\",\n", - " )\n", - " first_inf = np.where(np.isinf(median_sizes))[0][0]\n", - " first_inf_ax_coord = (first_inf - ds.min()) / (\n", - " ds.max() - ds.min()\n", - " ) + 0.03\n", - " sz_ax.axhline(\n", - " y=inf_line_y,\n", - " xmin=first_inf_ax_coord,\n", - " linewidth=linewidth,\n", - " color=sz_line[0].get_color(),\n", - " markevery=[0],\n", - " marker=\"o\",\n", - " markerfacecolor=\"white\",\n", - " linestyle=\"dotted\",\n", - " )\n", - " else:\n", - " sz_line = sz_ax.plot(\n", - " ds,\n", - " median_sizes,\n", - " color=test_color,\n", - " linewidth=linewidth,\n", - " label=\"Testing\",\n", - " )\n", - "\n", - " sz_ax.plot(\n", - " ds,\n", - " median_eff_sizes,\n", - " color=eff_color,\n", - " linewidth=linewidth,\n", - " label=\"Efficient\",\n", - " )\n", - " sz_ax.set_yticks([0.0, inf_line_y // 3, 2 * (inf_line_y // 3)])\n", - "\n", - " # Update yticks to include infinity symbol\n", - " current_yticks = sz_ax.get_yticks()\n", - " sz_ax.set_yticks(\n", - " list(current_yticks) + [inf_line_y],\n", - " list(map(str, current_yticks)) + [\"$\\infty$\"],\n", - " )\n", - " # Modify the properties of the tick label at y = \\infty\n", - " for label in sz_ax.get_yticklabels():\n", - " if (\n", - " label.get_text() == \"$\\infty$\"\n", - " ): # or any other condition that identifies the desired tick label\n", - " label.set_fontsize(18) # or any desired size\n", - "\n", - " cvg_ax.set_xlabel(\"d\")\n", - " cvg_ax.set_ylabel(\"grid limit \" + str(grid_limits[gs]))\n", - " cvg_ax.set_ylim([0.5, 1.03])\n", - " sz_ax.legend(bbox_to_anchor=(1.01, 1.01))\n", - " sz_ax.set_ylabel(\"width\")\n", - " sz_ax.set_ylim([0, 110])\n", - "axs[-1, 0].set_xlabel(\"d\")\n", - "axs[-1, 1].set_xlabel(\"d\")\n", - "axs[0, 0].set_title(\"coverage\")\n", - "axs[0, 1].set_title(\"width\")\n", - "sns.despine(top=True, right=True)\n", - "plt.tight_layout()\n", - "plt.savefig(\"./plots/eff-comparison.pdf\")" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.12" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/examples/eff-ppi/lambda_census_healthcare.ipynb b/examples/eff-ppi/lambda_census_healthcare.ipynb deleted file mode 100644 index 067faf9..0000000 --- a/examples/eff-ppi/lambda_census_healthcare.ipynb +++ /dev/null @@ -1,364 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "23c114b7-6751-4192-9939-86d40967caba", - "metadata": {}, - "source": [ - "# Relationship between income and private health insurance\n", - "\n", - "The goal is to investigate the quantitative effect of income on the procurement of private health insurance using US census data. The target of inference is the logistic regression coefficient when regressing the binary indicator of health insurance on income. The data from California in the year 2019 is downloaded through the Folktables interface (1). Predictions of health insurance are made by training a gradient boosting tree via XGBoost (2) on the previous year’s data.\n", - "\n", - "1. F. Ding, M. Hardt, J. Miller, L. Schmidt, “Retiring adult: New datasets for fair machine learning” in Advances in Neural Information Processing Systems 34 (2021), pp. 6478–6490.\n", - "2. T. Chen, C. Guestrin, “XGBoost: A scalable tree boosting system” in Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining (2016), pp. 785–794." - ] - }, - { - "cell_type": "markdown", - "id": "fa0b89de-40f4-4225-ba6f-f35428d8f648", - "metadata": {}, - "source": [ - "### Import necessary packages" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "bec4524b-d6bd-4d3c-ac59-2d6b77ac8a21", - "metadata": {}, - "outputs": [], - "source": [ - "%load_ext autoreload\n", - "%autoreload 2\n", - "import os, sys\n", - "\n", - "sys.path.append(\n", - " os.path.abspath(os.path.join(os.getcwd(), os.pardir, os.pardir))\n", - ")\n", - "import numpy as np\n", - "import pandas as pd\n", - "from ppi_py.datasets import load_dataset\n", - "from ppi_py import ppi_logistic_ci\n", - "from sklearn.linear_model import LogisticRegression\n", - "from tqdm import tqdm\n", - "from scipy.optimize import brentq\n", - "import matplotlib.pyplot as plt\n", - "import seaborn as sns" - ] - }, - { - "cell_type": "markdown", - "id": "5cf90ae6", - "metadata": {}, - "source": [ - "### Import the census healthcare data set\n", - "\n", - "Load the data. The data set contains reported indicators of health insurance (```Y```), predicted indicators of health insurance (```Yhat```), and reported income (```X```)." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "a6da3138", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Dataset census_healthcare not found at location ./data/; downloading now...\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Downloading...\n", - "From: https://drive.google.com/uc?id=1RjWsnq-gMngRFRj22DvezcdCVl2MxAIX\n", - "To: /Users/angelopoulos/Code/working/ppi_py/examples/eff-ppi/data/census_healthcare.npz\n", - "100%|██████████| 8.91M/8.91M [00:00<00:00, 34.7MB/s]\n" - ] - } - ], - "source": [ - "dataset_folder = \"./data/\"\n", - "data = load_dataset(dataset_folder, \"census_healthcare\")\n", - "Y_total = data[\"Y\"]\n", - "Yhat_total = data[\"Yhat\"]\n", - "X_total = data[\"X\"]" - ] - }, - { - "cell_type": "markdown", - "id": "8969f9db", - "metadata": {}, - "source": [ - "### Problem setup\n", - "\n", - "Specify the error level (```alpha```), range of values for the labeled data set size (```ns```), and number of trials (```num_trials```).\n", - "\n", - "Compute the ground-truth value of the estimand." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "5b3c8f29", - "metadata": {}, - "outputs": [], - "source": [ - "alpha = 0.1\n", - "coord = 0 # Choose between 0, 1\n", - "n_total = Y_total.shape[0] # Total number of labeled examples\n", - "ns = np.array([500, 1000, 1500, 2000, 2500]).astype(\n", - " int\n", - ") # Test for different numbers of labeled ballots\n", - "num_trials = 100\n", - "optimizer_options = {\n", - " \"ftol\": 1e-5,\n", - " \"gtol\": 1e-5,\n", - " \"maxls\": 10000,\n", - " \"maxiter\": 10000,\n", - "}\n", - "# Compute ground truth\n", - "theta_star = (\n", - " LogisticRegression(\n", - " penalty=None,\n", - " solver=\"lbfgs\",\n", - " max_iter=10000,\n", - " tol=1e-15,\n", - " fit_intercept=False,\n", - " )\n", - " .fit(X_total, Y_total)\n", - " .coef_.squeeze()\n", - ")\n", - "savename = \"census_healthcare_tuned\"" - ] - }, - { - "cell_type": "markdown", - "id": "83ce18be", - "metadata": {}, - "source": [ - "### Construct intervals\n", - "\n", - "Form confidence intervals for all methods and problem parameters. A dataframe with the following columns is formed:\n", - "1. ```method``` (one of ```PPI```, ```Classical```, and ```tuned PPI```)\n", - "2. ```n``` (labeled data set size, takes values in ```ns```)\n", - "3. ```lower``` (lower endpoint of the confidence interval)\n", - "4. ```upper``` (upper endpoint of the confidence interval)\n", - "5. ```trial``` (index of trial, goes from ```0``` to ```num_trials-1```)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "812f8fd5", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|███████████████████████████████████████████████████████████████████████████████| 100/100 [1:51:55<00:00, 67.16s/it]\n" - ] - } - ], - "source": [ - "# Run prediction-powered inference and classical inference for many values of n\n", - "results = []\n", - "for j in tqdm(range(num_trials)):\n", - " for i in range(ns.shape[0]):\n", - " # Prediction-Powered Inference\n", - " n = ns[i]\n", - " rand_idx = np.random.permutation(n_total)\n", - " _X, _X_unlabeled = X_total[rand_idx[:n]], X_total[rand_idx[n:]]\n", - " _Y, _Y_unlabeled = Y_total[rand_idx[:n]], Y_total[rand_idx[n:]]\n", - " _Yhat, _Yhat_unlabeled = (\n", - " Yhat_total[rand_idx[:n]],\n", - " Yhat_total[rand_idx[n:]],\n", - " )\n", - " ppi_ci_tuned = ppi_logistic_ci(\n", - " _X,\n", - " _Y,\n", - " _Yhat,\n", - " _X_unlabeled,\n", - " _Yhat_unlabeled,\n", - " alpha=alpha,\n", - " coord=coord,\n", - " optimizer_options=optimizer_options,\n", - " )\n", - " ppi_ci = ppi_logistic_ci(\n", - " _X,\n", - " _Y,\n", - " _Yhat,\n", - " _X_unlabeled,\n", - " _Yhat_unlabeled,\n", - " alpha=alpha,\n", - " lhat=1,\n", - " optimizer_options=optimizer_options,\n", - " )\n", - " classical_ci = ppi_logistic_ci(\n", - " _X,\n", - " _Y,\n", - " _Yhat,\n", - " _X_unlabeled,\n", - " _Yhat_unlabeled,\n", - " alpha=alpha,\n", - " lhat=0,\n", - " optimizer_options=optimizer_options,\n", - " )\n", - "\n", - " # Append results\n", - " results += [\n", - " pd.DataFrame(\n", - " [\n", - " {\n", - " \"method\": \"PPI\",\n", - " \"n\": n,\n", - " \"lower\": ppi_ci[0][coord],\n", - " \"upper\": ppi_ci[1][coord],\n", - " \"included\": (\n", - " ppi_ci_tuned[0][coord] <= theta_star[coord]\n", - " )\n", - " & (ppi_ci_tuned[1][coord] >= theta_star[coord]),\n", - " \"trial\": j,\n", - " }\n", - " ]\n", - " )\n", - " ]\n", - "\n", - " results += [\n", - " pd.DataFrame(\n", - " [\n", - " {\n", - " \"method\": \"classical\",\n", - " \"n\": n,\n", - " \"lower\": classical_ci[0][coord],\n", - " \"upper\": classical_ci[1][coord],\n", - " \"included\": (\n", - " classical_ci[0][coord] <= theta_star[coord]\n", - " )\n", - " & (classical_ci[1][coord] >= theta_star[coord]),\n", - " \"trial\": j,\n", - " }\n", - " ]\n", - " )\n", - " ]\n", - "\n", - " results += [\n", - " pd.DataFrame(\n", - " [\n", - " {\n", - " \"method\": \"tuned PPI\",\n", - " \"n\": n,\n", - " \"lower\": ppi_ci_tuned[0][coord],\n", - " \"upper\": ppi_ci_tuned[1][coord],\n", - " \"included\": (\n", - " ppi_ci_tuned[0][coord] <= theta_star[coord]\n", - " )\n", - " & (ppi_ci_tuned[1][coord] >= theta_star[coord]),\n", - " \"trial\": j,\n", - " }\n", - " ]\n", - " )\n", - " ]\n", - "\n", - "df = pd.concat(results, axis=0, ignore_index=True)\n", - "df[\"width\"] = df[\"upper\"] - df[\"lower\"]\n", - "os.makedirs(\".cache/\", exist_ok=True)\n", - "df.to_csv(\".cache/\" + savename + \".csv\")" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "19ac9be7", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAACICAYAAAAbK8onAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAAsTAAALEwEAmpwYAAA3DUlEQVR4nO3dd5RcV53g8e/vVQ6do9RKrVZLliW1goUDNs7GMjDDYDBxZrDHZ3yAAQZ28S67MAMzLLNexrM7gxkcMAYMbow9NtjGYzliyzjIlq2W1C2plUPnHCqnu3+86lawQqvVrU6/zznvVL1Xr17dW1V9+1c3ijEGpZRSSqnpwproBCillFJKjSUNbpRSSik1rWhwo5RSSqlpRYMbpZRSSk0rGtwopZRSalrR4EYppZRS04oGN0opNQIi8oCIdIhI/RhdLy0iddntybG4plLKJjrPjVJKnZ6IXA6EgAeNMcvH4HohY0zw7FOmlDqe1twopdQIGGM2AD1HHxORKhFZLyLviMirInLeBCVPKXUUDW6UUmr07gO+Yoy5APgG8OMzeK5XRDaJyJsi8mfjkjqlZijnRCdAKaWmIhEJAu8HHhWRocOe7GM3Av94gqc1G2Ouz96fZ4xpEZGFwEsiss0Ys3e8063UTKDBjVJKjY4F9BljVh3/gDHmceDxUz3ZGNOSvd0nIi8DqwENbpQaA9ospZRSo2CMGQD2i8hNAGJbOZLnikiBiAzV8hQDlwLbxy2xSs0wGtwopdQIiMivgTeAJSLSJCK3Ap8DbhWRLUAD8NERXm4psCn7vD8AdxhjNLhRaozoUHCllFJKTStac6OUUkqpaWXKdShet26dWb9+/UQnQyllk9OfMvVpuaPUpHLacmfK1dx0dXVNdBKUUjOMljtKTS3jFtycbh2W7MiCH4rIHhHZKiJrxistSik13lJpQziWmehkKKUY35qbnwPrTvH4DUB1drsNuHsc06KUUuPqzV0Jfrw+xNu742QyOlBDqYk0bsHNidZhOc5HsRegM8aYN4F8EZk1XulRSqnxYoyhrS9NPGl4ti7G/S+EOdSZmuhkKTVjTWSH4grg8FH7TdljrcefKCK3YdfuMG/evHOSOKWUGikR4eMX+9jV4uL5LTE6+tM8+HKYFfNdXL3CS45vynVvVGchmUzS1NRELBab6KRMaV6vlzlz5uByuc74uRMZ3Jyot/MJ63KNMfdhL1DH2rVrtb5XKTXpiAhLKlwsLHfy+s44b+xMsO1gksbmFFcs87B2kRuHNSMGl814TU1N5OTksGDBAo5ad0ydAWMM3d3dNDU1UVlZecbPn8ifE03A3KP25wAtE5QWpZQaEy6HcMUyL7ddH6R6tpNEyvD8lhg/eT7MwQ5tqpoJYrEYRUVFGticBRGhqKho1LVfExncPAn8ZXbU1MVAvzHmPU1SSik1FRUGLT51aYBPXeYnP2DRNZDml6+EefzNCAMRHVU13Wlgc/bO5j0ct2ap7DosVwLFItIEfAdwARhj7gH+E/gQsAeIALeMV1qUUmqiVM9yUVnq5I3GOK/tSLD9cJI9rSkuW+rhwmo3Tof+E1RqrI1bcGOM+cxpHjfA34zX6yul1GThdAgfON/Livlunq+L0diS5KVtMbYcSLButY/Ksik3Wbya5BwOBytWrCCVSrF06VJ+8Ytf4Pf7T3o8GAwSCoUmOtljRrvwK6XUOZIfsLjpUj+fvsxPYdCiezDDQxvCPPaGNlWpseXz+airq6O+vh63280999xzyuPTjQY3SqlpYwQzo18pIv0iUpfd/v5cpxFg0SwXt30wyFXLvbgcwo6mJHevD/HajjiptA4IVWPrAx/4AHv27Bnx8elA60KVUtPJz4EfAQ+e4pxXjTEfOTfJOTmnQ7h0qYfl8+25cXY2JflDvd1Udf1qL1XlZz63h5p8flp/37hc99blt43ovFQqxTPPPMO6detGdHy60OBGKTVtGGM2iMiCiU7HmcjzW3ziEj/72lM8uzlK92CGX78aYUmFi+tWeskPaAW7OnPRaJRVq1YBdg3Nrbfeesrj040GN0qpmeYSEdmCPa/WN4wxDROdIICFZU7++rogb+1O8OqOOI3NSfa2pbj0PA+XLNFRVVPVSGtYxtpQ35qRHp9u9CeBUmomeReYb4xZCdwF/O5kJ4rIbSKySUQ2dXZ2npPEOR3C+8/z8MXrg5w/10UqbXilIca9z4XY3Zo8J2lQajrQ4EYpNWMYYwaMMaHs/f8EXCJSfJJz7zPGrDXGrC0pKRnJtccsnbl+ixsv9vPnVwQoznXQG8rwmz9G+M1rYXpDOqpKqdPR4EYpNWOISLlkpz0VkQuxy8Dusbh2Y+9Ontr3BAcHDoxZoLOg1MlfXxfg2pVe3E5hd0uKe58NsaEhRlJHValTONmcNWd6fKqacsFNT08P27ZtAyCdTlNbW0tDg91knkwmqa2tZceOHQDE43Fqa2tpbGwEIBKJUFtbOzz0LRQKUVtby759+wAYGBigtraWAwcOANDX10dtbS2HDh0CoLu7m9raWpqamgDo7OyktraW1lZ71Yj29nZqa2tpb28HoLW1ldraWoaqtJuamqitraW72y5LDx06RG1tLX19fQAcOHCA2tpaBgYGANi3bx+1tbXDX7o9e/ZQW1tLJBIBoLGxkdraWuLxOAA7duygtraWZNKuvm5oaKC2tpZ0Og3Atm3bqK2tHX4v6+rqePjhh4f33333XR555JHh/U2bNvHYY48N72/cuJHf/va3w/tvvvkmTzzxxPD+a6+9xlNPPTW8/+qrr/L0008P77/yyiusX79+eP+ll17iueeeG95/4YUXeOGFF4b3n3vuOV566aXh/fXr1/PKK68M7z/99NO8+uqrw/tPPfUUr7322vD+E088wZtvvjm8/9vf/paNGzcO7z/22GNs2rRpeP+RRx7h3XffHd5/+OGHj2mbrq2tnTLfveamJn75qwdp3FnHwf2beePVp/jJvXfxx+d+xtsv3M2zj/yAe374T/zhV/+Njb/6Es/e+yXu+5dvs/HuG9n+79fw4l1/MaLv3mSTnRn9DWCJiDSJyK0i8gUR+UL2lE8A9dk+Nz8EPm3GKBLZ1beLjkg7Lxx6jsf2PMqu3kbSmfRZX9dhCRcv9vDFdUFWzHeRyhg2bI9z77MhdrUkx7TGSKnpQjsUKzXJZNJpIqEBkokYbS27iA7spaerk1B/Ozvf/i3NdVFCgxEGOhzUP7ORZukjHDeEQxXs+81vGJR2BlI+UsnVxJ+5D5/VjztTjDO5mvyGjeRaA0imlJbkSso63yBohZB0OS3pFeTGmwlIBG/GN9Fvw6iMYGb0H2EPFR9zN8z/EI19O6nv2kZ/vI9Xm1/hnY5NLCtaznkFS3E73Gd1/RyfxUcv9LO6MsX6zTE6+tM88lqEqnIn16/yUpjjGKOcKDX1yUiifhHxA/8VmGeM+WsRqQaWGGN+P94JPN7atWvN0b+2lZpMMuk00cgg4UgvkVAv8Wg/icgAyfgA6ViITHwQkwhDIoykwjiSEax0BGcqijMdwZ2J4MpEEc6+X0VaXCQtH0nLT8rhJ+X0kXH4ybgCGFcA3AHEHcDhycHhC+Ly5uLx5+H15eEPFFBUPGckLzMjhvCcSbmTMRn29e9la9cWemM9ALgcbpYWns+ywuX4Xf6zTk8mY9i0N8ErDXHiSYPDgouXeLjsPA8u54z4SCa1HTt2sHTp0olOxrRwkvfytF/ykdbc/Ax4B7gku98EPAqc8+BGqfGSTqeIRAaIhHqJRvqIRfpJRPtJRQdJxQfJxEOQzAYmyTCOVMTe0lFc6QiuTARXJjYcmFiAL7udcVrETcLykXT4SVl+0k4faacf4wpgXH5wBRGPHZg4vUGc3pxjApNgsBCP9+z/iaozkIqB5cSynCzKr6YqbxFNoSa2dtXRFm5la2cd9V3bqC6oZkXRSvI8eaN+KcsSLqz2sGyuixe3xth6MMlrO+JsO5jkupVezqtw6qrUakYbaXBTZYz5lIh8BsAYExX9y1GTSDqdIhTqJRLuJRa2A5NkbIBkbJB07NjAxEpGsLKBiTMblDjTMdwmCtg1mRbgz25nKiVukpbfDkwcPtIOP2mXn4wzAC4/uINYngCWO4jTm4vLl4vHl4cvmIffX0DAn4/bOzWbhWa0HbWw61Go/hgsuhHxFzM3Zy5zc+bSEelgW9cWDgweoLFnJ429jSzIWUBN8UpK/KWjfsmA1+JPL/SzZmGKZzbHaO9L89gbERaWObl+tZcibapSM9RIg5uEiPjIlvwiUgXExy1VakZJp1MMhnrsGpNwH/FoP8noAKmhwCQRgkQYkscGJq50BGcmgisdxWViw9dzAIFRpiUpXpIOH6lscJJ2+sk4/WRcfsg25VjuIA5PAKc3F7ffDky8/jx8gQKCwQJcLs+YvC9qiul4F6KdsPU+2PZTmHsVLLkJStdQ6i/lmnnX0RfvY1vXVvb07ebAwH4ODOynPDCLmuJVzAnOGXVty5xiJ7deG+DdvUlero+xrz3Fvc+FuKjaw2VLPXhc+ltUzSwjDW6+A6wH5orIQ8ClwM3jlSg1PaQSYUL9++jtPMhgdzOJvnYygx04o124E30nDExc2W00RhyYeHNwenOO1JgE8vEHC8gJFuJwaB97NUpX3wXt70DjI9D0Mhx6wd7yFsLiT8DCD5PvyecDFZdzQelaGrq3saN3B23hVtrCrRR4i6gprmFhXhWWnPlAVkuEtYvcLJ3j5A/1cer2J3ijMU79Ibupaukcbaqayb773e8SDAb5xje+MSbXe//738/rr78+4ek4mRGV5MaY50XkXeBi7I48f2uM6RrXlKlJzWTSREMtxAb2Exs4SKSnmXh/O2awE0ekG3e8B08yhDEWDiD/lFeT4cBkqPPrMYGJOwCuAJbHDkxc3hxc3ly8/jy8gfxsH5MCDUzUxBKB8rX2FumAPb+D3Y9D/z54+wew+S6o/BAsvgl/wSLeV34RK0tWs7N3B/Xd2+iNdfNK0x94p2MTy4tWsLhgCS7rzEP9gNfiI2t9rK50sX5zjNbeNI+/GaGy1MkHV3spydWmKnX2RhPYnEsj+m8gImuyd1uzt/NEJA84aIxJjUvK1IRKJgaI9O8j3n+AZKiJ1GAzqYE2MoNdOCI9uGO9SMZgjGAyFm6E4we6pnARskqIuotIeIoxgRKcOWX4C2eTUzgbX6AAfyCfQCBPAxM1vfhLoeY2WP5XcPhluy9O+zuw+zF7K10Ni2/CPfcqaopXsqxwOXv797C1awv98T7ebH2ddzve4fyiZSwrXI7X6T3jJFQUObnlmgB1+5K8VB9jf0eKnzwX4sJqDx84X5uqprsHH3yQO++8ExGhpqaGqqqq4cd+8pOfcN9995FIJFi0aBG//OUv8fv9PProo/zDP/wDDoeDvLw8NmzYQENDA7fccguJRIJMJsNjjz1GdXU1wWBweB6sH/zgB/zyl7/EsixuuOEG7rjjjpO+xrky0qHgbwJrgK3YNTfLs/eLgC8YY547xdPH1EiGZNa9VovU/4a005f95e9D3H4sbwCnN4jbH8Tjz8UXyMXlzcfpycflLcDtKcThmv4dOU0mTWTwELGBA8QHDpIKNZEJtSDhNiTchSPSiyMRxRgLk7HIZG/NcaPvYpLLoKOUkFVKzF1Cxl+CI6cMb8Fs8ovnUVoym8JcF24dmjqdzYgPd0ymoOjbB7v+A/b9HlL2ZIh4C2HRx6D6RgiUYYzh4OBBtnZtoTNiT8josJwsLljCiqIactw5o3rpSDzDH+rjbN6XACDotbh2pT3aSpuqxt7Rw5f/16P94/Ia377p5KPtGhoauPHGG3nttdcoLi6mp6eHH/7wh8PNQd3d3RQVFdnX+fa3KSsr4ytf+QorVqxg/fr1VFRU0NfXR35+Pl/5yle4+OKL+dznPkcikSCdTuPz+YaDm2eeeYbvfe97vPDCC/j9fnp6eigsLDzpa5xps9R4DwU/ANw6tHquiJwP3A58D3gcOGfBzUjE+pqZHdt32vPiQEIMIsYevisGYzlJOb2knT6M2wcuH+LxYXn9iDuIuHOw3DlYnjwsdy4OTx5Oz+QKkJKxfiL9+4gNHCA5eJh0qBkTbsWKtOOIduGK9kIGMhkLMRZOY5HJWHYwY4Q0kCSHQauUkMPewo4yYq5SrJwyPPmzyS+aS2F+kFk5DgqDFl63FpBKnVL+Qrjwv8HqL8P+Z+y+Of17of6n0PAzqLgcWfJJFpSvZX7OfNojbWzt2sLhwUPs6G5gZ892KnMXUlO8iiJf0Rm9tN9j8eELfKyudLN+c5SWnjS/2xjl3X1J1q32UpqnTVXTyUsvvcQnPvEJiovtZdMKCwuPeby+vp5vf/vb9PX1EQqFuP766wG49NJLufnmm/nkJz/JjTfeCMAll1zC97//fZqamrjxxhuprq4+5lovvPACt9xyy3CtzNBrnew1zpWRBjfnDQU2AMaY7SKy2hizbzJG/Ysv/gyd89cSjQyQCA9mR92EySTCkIggiQjW0KRpJow7Y996MhEkncZKxrGIA33HXFewAyGymxFDWjJkxJDIPiZiMA6LjNNLxnWk34g9aVoQcQVhKEBy52YDpHycnjwcnnxcngLc3kIcTh9ivbdTYSadJBo6TKx/P/GBQ6RChzGhVgi3YUU7cUW7caQiYAQxFi5j4RgKXDJCxljETICo5Nu1Lo4SwlYZIUcZYWcZcdcsPHmzyckvojjXRUHQYk6ORWHQwu8R/ZWn1Nly+WHxx+3amo46u8nq0It2J+SmlyFnHrL4E5Qv/Ajl89fRE+thW9cW9vbvZV92qwjOoaZ4JbMCs8/ob3J2oYObrw6w9UCSl7bFONSZ4ifPh3jfIjeXL/Pi1aaqMXeqGpbxYow55ffi5ptv5ne/+x0rV67k5z//OS+//DIA99xzDxs3buTpp59m1apV1NXV8dnPfpaLLrqIp59+muuvv57777+fq6+++rSvdbLXOFdGGtw0isjdwNBCRJ8CdomIB0iOS8rOQmHRHAqLTj+7ajpjiMSNPXV9zNAfTROKhImE+rMTuA2Sig6SjocxiTDOdAi3CePKhHBnwnZgZML2/UwYT3bfIm3XmUkEkRBOMQh2QGQHQJnhQGjoWBpDGkgAYcCIw25WGwqOLCeOWA/ueB8Ye5I4F+DMBi5DNS9pYxEzhQxIGaGhmhd3OWFHGRFnORFHGXFXOXk5PgpzLAqDDmYFLQqCFkU5FkGfYGkAo9T4E4Gy1fYW7c52QH4MBg/BO/8X6v4dKm+gcPFNXDHnKi4ofR/13dto7N1Jc6iJ5lATxb4SVhSvpDK3csRBjiXCqko3SypcvNIQ4529Cd7anaDhUJJrV3pZPk+bqqa6a665ho997GN8/etfp6ioiJ6enmMeHxwcZNasWSSTSR566CEqKioA2Lt3LxdddBEXXXQRTz31FIcPH6a/v5+FCxfy1a9+lX379rF169ZjgpsPfvCD/OM//iOf/exnj2mWOtlrnCsjDW5uBr4EfA27reuPwDewA5urTvYkEVkH/Bv21CP3G2PuOO7xPOBXwLxsWu40xvzsjHJwFhyWkOMTcoZbkZyAByh8z7nGGOJJCMczhGNHAqJwPEPv8H6GcCxDLBYjEx/EZUK4MiFcmUH71oRxZ44KkEwYd9oOiDwM4iWEmzAeE8JBAkkkcUgfDulFMBhjkcy4iVhFDEoZ/cwi5MjWujjKiTrKCTtnkbTyEEvI81vZAMZi7nAA4yDPL1iWFl5KTRq+IlhxKyy7GZpfhcZHoW2jHfDs+R0UryC4+CYunn8tq0vXsL2nge3dDXRFO/nD4RfY5M5lRXEN1fmLcVojK9Z9bmHdah+rFthNVU3daZ54K8o7exOsW+OjPF+bqqaqZcuW8a1vfYsrrrgCh8PB6tWrWbBgwfDj3/ve97jooouYP38+K1asYHBwEIDbb7+d3bt3Y4zhmmuuYeXKldxxxx386le/wuVyUV5ezt///d8f81rr1q2jrq6OtWvX4na7+dCHPsQ//dM/nfQ1zpURdSge1YVFHMAu4Drs5RreBj5jjNl+1Dn/E8gzxvx3ESkBGoFyY0ziZNedKmtLJdPZWqFsABQ+OgCKGyJH7UcShuM/BjEJXGk7QHJnQlgmTtRRQtRZhpEj45JyfHbwUphjUZS9LQhaFAQsnA4NYNS4mxFfsgkpdwYOwq7HYO+TkLRHpeDJh6qPwuKPk/KXsrtvF9u6tjKYGADA6/SxrGg5SwvPx+MY+WSSGWPYdjDJS1tjhOMGEVhb5eaKZV7tTzcKurbU2BnXDsXZhTL/N3A+MDwm0Riz8BRPuxDYY4zZl73Gw8BHge1HnWOAnOxSDkGgB5gWQ8tdDiHPL+T5wa64OrmMMUTjx9YGheNeIvGc4f1EEioCdiBTlA1gCoOWjkRS05aIlAH/BMw2xtyQHchwiTHmpxOctHMjdz6s/S+w8otw4FnY9Qj07oLtv4DtD+KsuIyli2/ivEU3sX/wAFu7ttAd7eKd9rfZ0lXHeQXnsaxoBUFX8LQvZYmwcoGbJbPtpqpNexO8vSfB1oNJFs92sni2i6pyp5Y3aso4k4UzvwP8P+xmqFs4feRUARw+ar8JuOi4c34EPAm0ADnAp4wx71kOWURuA24DmDdv3giTPHVYIgS8QsALnPu+Z0pNVj/HLnu+ld3fBfwGmBnBzRCXD6r/DBZ9FLrq7Q7IB5+3m6+aX0WCFSys/jiVVX9KSyrM1q46WkLN1Hdto6G7gaq8RdQUr6TAW3Dal/K6hetX+1hV6ebZOrvD8baDSbYdTOK0hMoyB0sqXFTPchLwnvksykqdKyMNbnzGmBdFRIwxB4Hvisir2AHPyZwo+Dm+Dex6oA64GqgCnheRV40xA8c8yZj7gPvArh4eYZqVUlNbsTHmERH5HwDGmJSIpCc6URNGBEpW2NsFX7ebq3b9B4SaYfMPkS33ULHgg1QsvomusovY2rWFAwP72NO3iz19u5ibM4+a4lWUB8pP+1Jl+Q7+8soAXQNpdrWkaGxJ0tydZndrit2tduX63GIni2c7WTLbSaEu0KkmmZEGNzERsYDdIvJloBk43VK2TcDco/bnYNfQHO0W4A5jd/zZIyL7gfOAt0aYLqXU9BUWkSKOLNh7MTA+M6JNNd4CWPZ5OP8voPk1uzan5Q17gsB9v6e46Hyurv4EA5Ufpb5vF7v6Gjk8eIjDg4co9ZdRU7ySeTnzTzsqqjjXQXGug/ef52EwmmF3NtA50JHicJe9vbjVPm9JhZMls13MKrB0tJWacCMNbr4G+IGvYk/cdxXw+dM8522gWkQqsYOhTwOfPe6cQ8A1wKvZ9vUlwOln31NKzQT/FbvZukpEXgNKgJsmNkmTjFgw5wP2NthkDyXf8wR0b4fufyTXncv7q/6ENZUfpiE1wPbuBjoi7bxw6DnyPPnUFK+kKm8RDuv0NS85Pos1VW7WVLmJJw172+xAZ09riq6BNF0DaV7bESfHZ9k1OhUu5hU7dGCDmhCnHS2VHfV0hzHm9jO+uMiHgH/F7lH7gDHm+yLyBQBjzD0iMhu7XX0WdjPWHcaYX53qmlNltJRSM8S4/ucSESf2jx4BGo0xEzKv1pQqd1Jxu0/Orkehu+HI8VmXkFr0MXYGiqjvbiCcHYHldwVYVrSc8wqW4nYcv0LcCF4ubTjUlaaxOcmulhSD0SPdJj0uYdEsu0anqtw5Y9az0tFSY2e0o6VGurbUS8A1ZrzGjZ+BKVXIKDX9jdt/KxHZC/yzMeaeo4793hjzkfF6zZOZsuVO93a7X87+9ZDJzrARKCez6GMcKK2hbvAgvTF7gjeXw83SwvNZVrgcv2t0CxxmjKGtN0NjS5LGZrtGZ4jDggWldqCzuMJJcBp3SJ7o4Kavr4/a2lq+9KUvjftrXXnlldx5552sXbv2PcdbW1vxer0Eg0EeeOABlixZcsrjJ7rOaIObkX67NgNPiMhfiMiNQ9sIn6uUUqORBK4SkZ+JDE/udG6nOZ3qis6HS/4ePr4e1nwNgnPspVq23M3CF7/Cx9o28+HgPMr95STTCbZ21vGbXb/mjy0b6I+fefcmS4TZhQ6uWu7lC9cH+eK6INfUeJlT5CCdgb1tKf7z3Sj/+tQgP3spxOs743QPztw+4uOlr6+PH//4xxOdDB566CG2bNnC5z//eW6//fbTHh9LIw1uCoFu7FFNf5LdzvmvJ6XUjBIxxnwK2IHdL28+7x1xqUbCkwvn/zl89HG4+i6Yczlk0siBZyn/47f58I6H+QQuKv3lZMjQ2LOT/9jzCM8fepb9A/tJZUY3/VhRjoNLlni4+eogX/+THD6y1kf1LCdOS2juTvPSthh3rw9x9/pBXtoWo7k7RWbiGwimvG9+85vs3buXVatWcfvtt/Pyyy/zkY8c+Zf95S9/mZ///OcALFiwgO985zusWbOGFStWsHPnTgDC4TB/9Vd/xfve9z5Wr17NE088AUA0GuXTn/40NTU1fOpTnyIajZ42PZdffjl79uwZ8fGxMKIOxcaYW8bl1ZVS6uQEwBjzAxF5B3iWE62NokZOLJh9ib2FWmD3b+3lHXp3kde7i6tdAaLzrmVb4WIaUiEODRzk0MBBnA4X83PmszCviorAnBF1QD5ewGuxqtLNqkq7Q/K+9hS7WpLsbk3RPZjh9Z1xXt8ZJ+i1qM4OMV9Q6pz6HZJ/tfb054zGn5+8mfSOO+6gvr6euro6gNMuWllcXMy7777Lj3/8Y+68807uv/9+vv/973P11VfzwAMP0NfXx4UXXsi1117Lvffei9/vZ+vWrWzdupU1a9acNqlPPfUUK1asGPHxsTDSGYoXA3cDZcaY5SJSA/ypMeZ/jUuqlFIKhhexyc6zdT2nH6WpRio4G1b/DdT8tb0qeeOj0LUV394nuHAvrC5dTVP5Who8ebQnB9jbt4e9fXtwOzzMz11AVV4VswKzseTM+854XMLSOS6WznGRzhgOdabZle2nMxDNsHlfgs37EriddofkxbOdLJrl0lXLx8mNN9q9TC644AIef/xxAJ577jmefPJJ7rzzTgBisRiHDh1iw4YNfPWrXwWgpqaGmpqak173c5/7HD6fjwULFnDXXXed9vhYGulQ8J8AtwP3AhhjtopILaDBjVJqTInIecaYnUCziBz/s/D3E5Gmac3hhsob7K1nlz3Kav8zuDo2U9mxmUrLRbxkJS0FVWz3FdGWjrO7t5HdvY14nT4W5FayMK+Kcn/5qOa3cVhCZZmTyjInH1xlaO870iG5oz/N9sNJth9OYllRFpQ4h2dIzvVPkQ7Jp6hhOVecTieZzJFRbLFY7JjHPR57HTKHw0EqZTdBGmN47LHHWLJkyXuuN9LP+aGHHnpPB+FTHR9LIw1u/MaYt47L0LRYA0opNen8F+zlVv7lqGNHd8S4+twmZwYpXAwXfwvWfBX2PQ0HnoOubXjaN1HZvolKIJ5bSVthNTv9xTQZw86e7ezs2Y7fFaAyG+iU+EpHFeiICOUFDsoLHFyxDPrCGRqbkzS22BMG7mu3t2eAWQX2UhBLZjspztWJA4+Wk5NzzCrc8+fPZ/v27cTjcWKxGC+++CKXXXbZKa9x/fXXc9ddd3HXXXchImzevJnVq1dz+eWX89BDD3HVVVdRX1/P1q1bxzs7ozLS4KZLRKo4MlPoJ4DWcUuVUmrGMsbclr17N7DeGDMgIn8HrMGeRFSNN3cOnPdpe4v2QMtr0LQBWt/EM7Cf+QP7mQckPQV0FFbTGCjlkL+Uhu56GrrrCbpzqMxdyMK8Koq8RaMOPPIDFhct9nDRYg+ReIbdrSkam+0Ap7U3TWtvmpfroTBosXi2iyUVTiqKHFgzPNApKiri0ksvZfny5dxwww388z//M5/85Cepqamhurqa1atXn/Yaf/d3f8fXvvY1ampqMMawYMECfv/73/PFL36RW265hZqaGlatWsWFF154DnJ05kY6z81C7LWd3g/0AvuBz2XXmTqnpux8E0pNT+M5z81WY0yNiFyGvTr4vwD/0xhz/AK8407Lnax0Ato2QdMr9sKdkQ7A/tWbEged+VXsCZZzMGcuCXcAgFxPHgtzF7Iwb9GIFu8ciWTK7pDc2JJid0uSaOLI/7GAR6jOBjqVE9QheaLnuZlORjvPzUhrbg4aY64VkQBgGWMGT/sMpZQ6O0MToHwYuMcY84SIfHcC06Mcbqh4v72Zb0JPIzRvQJo24OrZyezeXczq3cUlmRS9ORXsDc7mcN4C6mJ91HVuJt9bwMK8KhbmVpHnyRt1MlxOsZukKlxkMl4Odx+ZIbkvnKFuf4K6/QlcTqGqzMmSCrtDss89s2t0ZpKRBjf7RWQ98BvgpXFMj1JKDWkWkXuBa4H/IyIeTjM3l4g8gD0HV4cxZvkJHhfg34APARHgZmPMu2Oe8plABIrOs7ea2+xanKZX7UCn7W1Kw+2UhNu5oOUtBt1BDuTOpSmvks2RLt5t30SRr5iFeVVU5i4kx50z6mRYljC/xMn8EifXrTR09B/pkNzel2Znc5KdzUlEolQU2v15yvPtrTjXmvpDzdUJjTS4WYI9cd/fAD8Vkd8DDxtj/jhuKVNKzXSfBNYBdxpj+kRkFvaozVP5OfAj4MGTPH4DUJ3dLsLu13POm7mmJX8pLP64vSUj0PYW0rQBd9OrFMV7KezZw4qu7UREOJQ7l5a8hdQVHOZt50ZK/WVU5i2kMnchAVdg1EkQEcryHZTlO7j8fLtD8u4Wu0Pywc4UTd1pmrqPzIhsWVCSOxTsWJQVOCjLc4zJGljGGO3kfJbOZsWnEfW5OeYJIgXYv3w+Z4w585mczpK2fSs1qUy60ltEFgC/P0nNzb3Ay8aYX2f3G4ErjTGnHCCh5c5ZMBnoqrc7JDdtgP59GAOJTJx4JklroJzW/CraCqoJ+4so95ezMK+KBbmV+Jy+MUtGNGFo6UnR1pehvTdNW1+anlDmhOcWBi3K8x2UFRwJfAJnsBbW/v37ycnJoaho9J2pZzpjDN3d3QwODlJZWXn8w2PW5wYRuQL4FPYvn7exf1UppdRUUgEcPmq/KXvsPcGNiNyGPSSdefPmnZPETUtiQUmNva3+Mgw2I00b8DRvwNP+LsH4IPNb3yLR9Co97lxaCxaxs6CaN3LnMDs4l4V5VczPXYDH4TmrZPjcQlW5i6ryI8fiSUN7fzob7GRo60vTOWAHPT2hDNubjixCn+Oz7Nqd/CNNW3l+OWHwMmfOHJqamujs7DyrNM90Xq+XOXPmjOq5I52heD9QBzwC3G6MCY/q1ZRSamKd6BffCauvjTH3YY8SZe3atbrg0VjJqYCln7G3xCBWyxt4mzbgbXmNYHyA8q564u3vELZctOVXsaegmjcLqpiVt4jKvIXMz1mAy+Eak6R4XMK8Yifzio/8K0ylDV0DdqDT1pemrTdNR3+Gwai97W49MsWb1y2U5Q0FO3ZtT1GOhcvlOlFtgzqHRlpzs9IYMzCuKVFKqfHXBMw9an8O0DJBaVHuHFjwQXvLpLA66uxAp2kDOYOHKejbT1X3TuImQ2fePA4WLGZT0RJKilawMK+KuTnzcFojboAYEafjyESCQzLG0BvK0NZrBz3t2cAnEjcc7LT78ww/3xJKszU8s/IdlBVYlOY5cGnH5XNqpN+KXBH5BXAp9q+cPwJ/a4xpGreUKaXU2HsS+LKIPIzdkbj/dP1t1DliOaF8rb1d8HWsgQP4mjbga9pApqOOnHAHFQOHSe5fz4C/jObCxWwpPI+82RezMK+aOcHRLeg5oqSJUJTjoCjHwbJ5dq2RMYbBqDkq2MnQ3pemL5yhpSdNS0+azdnni9grpM8qyDZrZTs969D08TPSSfyeB2qBX2YP/Tl2h+LrxjFtJ6Qd+5SaVCZV6SwivwauBIqBduA7gAvAGHNPdij4j7BHYUWAW4wxpy1QtNyZYLFeaLZnSU63/JF4vJ9EOk4ykyTmzqG9YBFdRecTmHsllQVLmR2sGNWCnmMhmjDDNTvtfWlaezN0D6Y50b/a/MBQsHMk6MnxnbgfjzrGad+gkQY3dcaYVac7di5oIaPUpDIjSmEtdyaRoVmSm18leehFkqEm4qk4KZMibbnozKuku3gZ3vnXMa9kNbMCsyY8WEimDR39adp7M7Rmg56OvgypzHv///o9MlyzU57voLzAoiBozfglJY4zZsHNC9jzR/w6e+gz2L94rjmb1I2GFjJKTSozosTVcmeSMgZ6d0PTKyQOvUCycxvxdJy0SQFCb3A2PcXLcM+/joqKyyn1l014oDMkkzF0Dw51XM7Q1msHPbHke/8nu51CaZ6lExAeMWbBzTzsqtxLsPvcvA581Rhz6GxTeKa0kFFqUpkRpauWO1NEpAPT9Crxg8+TanmdRDJE2tiT9kU8+fQWLobi5XjL1lJQuppiX9m49dMZDWMM/REzPEprqC/PYPS98/FYlj0fT37AoiCQvc3u5wcs3M5p/ac5ZsHNL4CvGWN6s/uF2LOG/tVZJ/EMaSGj1KQyrUvQIVruTEHJKKZ1I5EDz5A6/DKpaCcZc2R24rTDTX9gFonCJTiKawiWX0hR0TIC7uDEpfkkwrHMcIflocDnZBMQDgl4hPzjg5+ARX7QIscnU72Za8wm8asZCmwAjDE9InLaNdNFZB32bMYO4H5jzB0nOOdK4F+xO/11GWOuGGGalFJKqRNz+ZB5VxKYdyWYDKaznmjrG8Ta34HuBpzhNgoHDsHAQTjwHAB9rgBNuQvIFC3FU7qavFmXUJBXOWGdk4cEvBZV5RZV5Uf+ZceThr5whr5wht6h25B92x82hOOGcDxN81HLTQyxLMj324FOvv9Irc9Q8OMdg+UnJtpIgxtLRAqOq7k55XNFxAH8O3Ad9twSb4vIk8aY7Uedkw/8GFhnjDkkIqWjyINSSil1cmIhpTX4S2vwDx2L9pDs3EKobSPJjjocPTvwxPtxdzdAdwPs+g8yQJO3kERBNVbxCnzlaykovwSvN3/i8pLlcR1ZR+t4GWMIRc0xgc+R4McQimWGZ2E+Ea9bhmt7hmp8hpq8cv2Cw5r8wc9Ig5t/AV4Xkf/A7nPzSeD7p3nOhcAeY8w+gOy8Eh8Fth91zmeBx4f67hhjOs4g7UoppdTo+ApxzbuKgnlX2fvGYAabGWzbSLTtLTJd9bj69uCL9eBr3QitG2Hb/Qxi0ZFTQbrwPFwlK8mZdQm5JasQx9hOJng2LBFy/UKu32JeyXsfT6ZOEPiEM/SF7OOxhKE1kaa19721PiKQ5z828MkPWOQH7YDI554cQ9lH9GkYYx4UkU3A1dhtXTceXQNzEidaw+X41XcXAy4ReRnIAf7NGHOy1XyVUkqp8SGC5M4hN3cOuYs/bh/LpIl1NzDQ8gaJzs1I9w7cg4fwDR6GwcNw8HkSQKfDQzyvEilahrdsLbmzL8Gdu8COBCYhl1MoyXNQkvfeWh9jDJG4PSPzkeDHZIOfDAPRIwHRibidckzH5vyADNf85PnP3QivEYea2WDmdAHN0UayhosTuAC4BvABb4jIm8aYXcdcSBewU0opda5ZDrwlNXhLaoYPpRMh+tvfItz2FumOrTh7G/FEu/D27ISenZjdj9GPYNw5pAqX4CxZSaD8QvylaxF/0QRmZmREhIBXCHgt5hS/9/FU2tAfsZu4+iNmuJ9Pb7bZK5GyJzFs73tvrQ/YC5AWZIOe/Gw/n4KARV7AIugdu1qf8axHG8kaLk3YnYjDQFhENgArgWOCG13ATiml1GTgcAcpnHs1hXOvHj4WCjXR3/IG8fZ3MF0NePv34k4M4Gp7G9reJrLtfmJikfGXYYrOx126mmD5RTiLl4PLf4pXm3ycjiNLURzPGEM0YegLH9XsdVTw0x85sgDpoa73XnteiZO/vDIwNukck6uc2NtAtYhUAs3Ap7H72BztCeBHIuIE3NjNVv9vHNOklFJKjalgcA7BxTfB4psASKWT9HQ3EGrbSKKzDkf3TnIGm3CEW5FwK8lDL9KH4LBcZHLnI8Ur8Je/D2/pGihYZK+zNQWJCH6P4PfA7MITdHTOGAaixzV5Ze/3hjPk+sauyWrc3kFjTEpEvgw8iz0U/AFjTIOIfCH7+D3GmB0ish7YCmSwh4vXj1ealFJKqfHmdLgoLV1FaekqILvIZqKfnvZ3iLa9RbqrHm/fXnIj7UjfbujbzeCex4mIA4fTR6ZgMa7SVfjL1mIVr4CcuZO2/86ZsCyxm6MCFpUneDx9guUoRmtEk/hNJjqZllKTytQvcUdAyx011hLpBJ2hJgba3iLesRmrZwe5A4cJxHqGzxEEp+XC8uRB0TK8patxl62BomXgm/z9d8bRmE3ip5RSSqkx4na4qchbSEXeQljyaYwx9MX76OzbQ7jjbdKd2/D27iY/1Ion2glNLxNvehmHOHFZTsRfhuQtxAqU4PSX4/SXIb5i8BXbgY+vGFzBaVHjMxoa3CillFITTEQo8BZQUP4+KH8fALFUjI5IG829O4m1bYLuHeSFmigIteAYPAiDB488H3ukkYWFSHYVcYcH4ynA+IrAV4TlK8HhL8MZKMMdmI34S8BbBN5CcLgmKuvjQoMbpZRSahLyOr3My13AvNwFMH8dGZOhJ9ZNR7iN/q6tpAebINaFFe3FEe/DmwzhTYTxJEN4kyEciQFIDBwTBB1hry81FAxl3EEyngIyvkLEV4L4inH4SnEGynEFyvEMBUPunClRG6TBjVJKKTUFWGJR7Cuh2FcCxSuOeSxjMsRSMWLpKNFUjHAqSjzeSyrcTjraQSbSCbFuJNqNFevFFe+3g6BECE8yArEeiPUg/XsBe1K6VHaLAYPZYAjLRcqTR9pTgPEWgK8Y8ZVg+Utx+stwBWbhDs7CE5iN5fSc67domAY3Siml1BRniYXf5cc/wnlzjgRDMWLJMPFIB6lw65FAKNoFMTsQcsR6cSUG8CRCONNxrEgHVuS9qyUZIJHdQghpl5/kUYGQ8RZmA6Gh5rFy3MHZeL0leF2+MV2gVIMbpZRSaoY5JhjyFtrDzU8hYzLE03GisR4S4TZS4TZSkXYykXZMtAuiXVixXqx4H854H+7EII5kGEcyDKHj5+89Ig2ExEGXO0i8dDXV634xJvnT4EYppZRSp2SJhc/pwxesgGDFac83mTSxSDuJUAvJSCvJcEc2ELJrhSTWgxXrxRnvx5GK4I8PYFLRMUuvBjdKKaWUGlNiOfAFZ+MLzj79yak4JtpFvjnxelSjocGNUkoppSaO04PkVIxpQDJ2vXeUUkoppSaBKbf8goh0AicatH8ixcAJ1h6dkqZTXkDzM9mNND9dxph1452YiXYG5c5M/R5MFZqfyW3Myp0pF9ycCRHZZIxZO9HpGAvTKS+g+Znsplt+zpXp9r5pfiY3zc/JabOUUkoppaYVDW6UUkopNa1M9+DmvolOwBiaTnkBzc9kN93yc65Mt/dN8zO5aX5OYlr3uVFKKaXUzDPda26UUkopNcNocKOUUkqpaWVKBzcickBEtolInYhsyh4rFJHnRWR39rbgqPP/h4jsEZFGEbl+4lI+nJ4HRKRDROqPOnbG6ReRC7Lvwx4R+aGIyLnOSzYdJ8rPd0WkOfsZ1YnIh456bNLmR0TmisgfRGSHiDSIyN9mj0/Jz+cU+ZmSn89E0nJn+PiEfw+mU5mTTYeWO2OVH2PMlN2AA0Dxccd+AHwze/+bwP/J3j8f2AJ4gEpgL+CY4PRfDqwB6s8m/cBbwCWAAM8AN0yi/HwX+MYJzp3U+QFmAWuy93OAXdk0T8nP5xT5mZKfz0RuWu5Mnu/BdCpzsunQcmeM8jOla25O4qPA0JrpvwD+7KjjDxtj4saY/cAe4MJzn7wjjDEbgJ7jDp9R+kVkFpBrjHnD2N+AB496zjl1kvyczKTOjzGm1Rjzbvb+ILADqGCKfj6nyM/JTOr8TEJa7kzM93ralDmg5Q5jmJ+pHtwY4DkReUdEbsseKzPGtIL9xgKl2eMVwOGjntvEqd/kiXKm6a/I3j/++GTyZRHZmq1CHqpOnTL5EZEFwGpgI9Pg8zkuPzDFP58JoOXO5P8eTPnvtJY7wFnkZ6oHN5caY9YANwB/IyKXn+LcE7XPTaVx8CdL/2TP191AFbAKaAX+JXt8SuRHRILAY8DXjDEDpzr1BMemQn6m9OczQbTcmdz5mvLfaS13jjGq/Ezp4MYY05K97QB+i13d256twiJ725E9vQmYe9TT5wAt5y61I3am6W/K3j/++KRgjGk3xqSNMRngJxypkp/0+RERF/Yf5EPGmMezh6fs53Oi/Ezlz2eiaLkzub8HU/07reXO2ORnygY3IhIQkZyh+8AHgXrgSeDz2dM+DzyRvf8k8GkR8YhIJVCN3UFpsjmj9GerKAdF5OJs7/G/POo5E27oDzLrY9ifEUzy/GRf+6fADmPM/z3qoSn5+ZwsP1P185koWu5M/u/BVP5Oa7kzhvk5VW/jybwBC7F7VW8BGoBvZY8XAS8Cu7O3hUc951vYva8bmQQjPIBfY1fJJbEj01tHk35gbfbLsRf4EdmZpydJfn4JbAO2Zr+4s6ZCfoDLsKs9twJ12e1DU/XzOUV+puTnM1GbljuT63swncqcbDq03Bmj/OjyC0oppZSaVqZss5RSSiml1IlocKOUUkqpaUWDG6WUUkpNKxrcKKWUUmpa0eBGKaWUUtOKBjdKKaWUmlY0uFFKKaXUtKLBjTqnRGSBiOwQkZ+ISIOIPCcivolOl1Jq+tJyZ+bR4EZNhGrg340xy4A+4OMTmxyl1Ayg5c4MosGNmgj7jTF12fvvAAsmLilKqRlCy50ZRIMbNRHiR91PA86JSohSasbQcmcG0eBGKaWUUtOKBjdKKaWUmlZ0VXCllFJKTStac6OUUkqpaUWDG6WUUkpNKxrcKKWUUmpa0eBGKaWUUtOKBjdKKaWUmlY0uFFKKaXUtKLBjVJKKaWmlf8P30t/VUtPkkoAAAAASUVORK5CYII=\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "palette = {\n", - " \"tuned PPI\": \"darkorange\",\n", - " \"PPI\": \"#83C980\",\n", - " \"classical\": \"cornflowerblue\",\n", - "}\n", - "linewidth = 2\n", - "\n", - "fig, axs = plt.subplots(\n", - " nrows=1, ncols=2, figsize=(8, 2), sharex=True, sharey=False\n", - ")\n", - "cvg_ax = axs[0]\n", - "sz_ax = axs[1]\n", - "sns.lineplot(\n", - " ax=cvg_ax,\n", - " data=df,\n", - " x=\"n\",\n", - " y=\"included\",\n", - " linewidth=linewidth,\n", - " errorbar=None,\n", - " hue=\"method\",\n", - " legend=False,\n", - " palette=palette,\n", - " alpha=0.8,\n", - ")\n", - "sns.lineplot(\n", - " ax=sz_ax,\n", - " data=df,\n", - " x=\"n\",\n", - " y=\"width\",\n", - " linewidth=linewidth,\n", - " errorbar=None,\n", - " hue=\"method\",\n", - " legend=True,\n", - " palette=palette,\n", - " alpha=0.8,\n", - ")\n", - "cvg_ax.set_ylabel(\"coverage\")\n", - "cvg_ax.set_ylim([0.5, 1.03])\n", - "cvg_ax.axhline(y=1 - alpha, color=\"#888888\", linestyle=\"dotted\")\n", - "cvg_ax.set_xlabel(\"n\")\n", - "sz_ax.set_ylabel(\"size\")\n", - "sz_ax.set_xlabel(\"n\")\n", - "sz_ax.legend_.set_title(None)\n", - "sns.despine(top=True, right=True)\n", - "plt.tight_layout()\n", - "os.makedirs(\"./plots\", exist_ok=True)\n", - "plt.savefig(\"./plots/\" + savename + \".pdf\")" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.12" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/examples/eff-ppi/lambda_census_income.ipynb b/examples/eff-ppi/lambda_census_income.ipynb deleted file mode 100644 index f32d747..0000000 --- a/examples/eff-ppi/lambda_census_income.ipynb +++ /dev/null @@ -1,334 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "87f04e65-56dc-457c-8129-c8dc49b36c4f", - "metadata": {}, - "source": [ - "# Relationship between age and income\n", - "\n", - "The goal is to investigate the relationship between age and income using US census data. The target of inference is the linear regression coefficient when regressing yearly income in dollars on age, while controlling for sex. The data from California in the year 2019 is downloaded through the Folktables interface (1). Predictions of income are made by training a gradient boosting tree via XGBoost (2) on the previous year’s data.\n", - "\n", - "1. F. Ding, M. Hardt, J. Miller, L. Schmidt, “Retiring adult: New datasets for fair machine learning” in Advances in Neural Information Processing Systems 34 (2021), pp. 6478–6490.\n", - "2. T. Chen, C. Guestrin, “XGBoost: A scalable tree boosting system” in Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining (2016), pp. 785–794." - ] - }, - { - "cell_type": "markdown", - "id": "39d677d1-9c49-40ca-9d8b-4ad2541b013c", - "metadata": {}, - "source": [ - "### Import necessary packages" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "8c21cbbe-ccb0-4d54-b913-41c88c9d08ee", - "metadata": {}, - "outputs": [], - "source": [ - "%load_ext autoreload\n", - "%autoreload 2\n", - "import os, sys\n", - "\n", - "sys.path.append(\n", - " os.path.abspath(os.path.join(os.getcwd(), os.pardir, os.pardir))\n", - ")\n", - "sys.path.append(os.path.abspath(os.path.join(os.getcwd(), os.pardir)))\n", - "import numpy as np\n", - "import pandas as pd\n", - "from ppi_py.datasets import load_dataset\n", - "from ppi_py import ppi_ols_ci\n", - "from statsmodels.regression.linear_model import OLS\n", - "from scipy.optimize import brentq\n", - "from tqdm import tqdm\n", - "from utils import *\n", - "import pdb" - ] - }, - { - "cell_type": "markdown", - "id": "5cf90ae6", - "metadata": {}, - "source": [ - "### Import the census income data set\n", - "\n", - "Load the data. The data set contains reported income (```Y```), predicted income (```Yhat```), and age and sex (```X```)." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "a6da3138", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Dataset census_income not found at location ../data/; downloading now...\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Downloading...\n", - "From: https://drive.google.com/uc?id=15dZeWw-RTw17-MieG4y1ILTZlreJOmBS\n", - "To: /Users/angelopoulos/Code/working/ppi_py/examples/data/census_income.npz\n", - "100%|██████████| 10.6M/10.6M [00:00<00:00, 46.8MB/s]\n" - ] - } - ], - "source": [ - "dataset_folder = \"../data/\"\n", - "data = load_dataset(dataset_folder, \"census_income\")\n", - "Y_total = data[\"Y\"]\n", - "Yhat_total = data[\"Yhat\"]\n", - "X_total = data[\"X\"]" - ] - }, - { - "cell_type": "markdown", - "id": "8969f9db", - "metadata": {}, - "source": [ - "### Problem setup\n", - "\n", - "Specify the error level (```alpha```), range of values for the labeled data set size (```ns```), and number of trials (```num_trials```).\n", - "\n", - "Compute the ground-truth value of the estimand." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "5b3c8f29", - "metadata": {}, - "outputs": [], - "source": [ - "alpha = 0.1\n", - "coord = 0 # Choose between 0, 1\n", - "n_total = Y_total.shape[0] # Total number of labeled examples\n", - "ns = np.linspace(100, 2000, 5).astype(\n", - " int\n", - ") # Test for different numbers of labeled ballots\n", - "num_trials = 100\n", - "# Compute ground truth\n", - "theta_star = OLS(Y_total, exog=X_total).fit().params\n", - "savename = \"census_income_tuned\"" - ] - }, - { - "cell_type": "markdown", - "id": "83ce18be", - "metadata": {}, - "source": [ - "### Construct intervals\n", - "\n", - "Form confidence intervals for all methods and problem parameters. A dataframe with the following columns is formed:\n", - "1. ```method``` (one of ```PPI```, ```Classical```, and ```tuned PPI```)\n", - "2. ```n``` (labeled data set size, takes values in ```ns```)\n", - "3. ```lower``` (lower endpoint of the confidence interval)\n", - "4. ```upper``` (upper endpoint of the confidence interval)\n", - "5. ```trial``` (index of trial, goes from ```0``` to ```num_trials-1```)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "812f8fd5", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|████████████████████████████████████████████████████████████████████████████████████| 5/5 [34:35<00:00, 415.01s/it]\n" - ] - } - ], - "source": [ - "# Run prediction-powered inference and classical inference for many values of n\n", - "results = []\n", - "for i in tqdm(range(ns.shape[0])):\n", - " for j in range(num_trials):\n", - " # Prediction-Powered Inference\n", - " n = ns[i]\n", - " rand_idx = np.random.permutation(n_total)\n", - " _X, _X_unlabeled = X_total[rand_idx[:n]], X_total[rand_idx[n:]]\n", - " _Y, _Y_unlabeled = Y_total[rand_idx[:n]], Y_total[rand_idx[n:]]\n", - " _Yhat, _Yhat_unlabeled = (\n", - " Yhat_total[rand_idx[:n]],\n", - " Yhat_total[rand_idx[n:]],\n", - " )\n", - " ppi_ci_tuned = ppi_ols_ci(\n", - " _X,\n", - " _Y,\n", - " _Yhat,\n", - " _X_unlabeled,\n", - " _Yhat_unlabeled,\n", - " alpha=alpha,\n", - " coord=coord,\n", - " )\n", - " ppi_ci = ppi_ols_ci(\n", - " _X, _Y, _Yhat, _X_unlabeled, _Yhat_unlabeled, alpha=alpha, lhat=1\n", - " )\n", - " classical_ci = ppi_ols_ci(\n", - " _X, _Y, _Yhat, _X_unlabeled, _Yhat_unlabeled, alpha=alpha, lhat=0\n", - " )\n", - "\n", - " # Append results\n", - " results += [\n", - " pd.DataFrame(\n", - " [\n", - " {\n", - " \"method\": \"PPI\",\n", - " \"n\": n,\n", - " \"lower\": ppi_ci[0][coord],\n", - " \"upper\": ppi_ci[1][coord],\n", - " \"included\": (\n", - " ppi_ci_tuned[0][coord] <= theta_star[coord]\n", - " )\n", - " & (ppi_ci_tuned[1][coord] >= theta_star[coord]),\n", - " \"trial\": j,\n", - " }\n", - " ]\n", - " )\n", - " ]\n", - "\n", - " results += [\n", - " pd.DataFrame(\n", - " [\n", - " {\n", - " \"method\": \"classical\",\n", - " \"n\": n,\n", - " \"lower\": classical_ci[0][coord],\n", - " \"upper\": classical_ci[1][coord],\n", - " \"included\": (\n", - " classical_ci[0][coord] <= theta_star[coord]\n", - " )\n", - " & (classical_ci[1][coord] >= theta_star[coord]),\n", - " \"trial\": j,\n", - " }\n", - " ]\n", - " )\n", - " ]\n", - "\n", - " results += [\n", - " pd.DataFrame(\n", - " [\n", - " {\n", - " \"method\": \"tuned PPI\",\n", - " \"n\": n,\n", - " \"lower\": ppi_ci_tuned[0][coord],\n", - " \"upper\": ppi_ci_tuned[1][coord],\n", - " \"included\": (\n", - " ppi_ci_tuned[0][coord] <= theta_star[coord]\n", - " )\n", - " & (ppi_ci_tuned[1][coord] >= theta_star[coord]),\n", - " \"trial\": j,\n", - " }\n", - " ]\n", - " )\n", - " ]\n", - "\n", - "df = pd.concat(results, axis=0, ignore_index=True)\n", - "df[\"width\"] = df[\"upper\"] - df[\"lower\"]\n", - "os.makedirs(\".cache/\", exist_ok=True)\n", - "df.to_csv(\".cache/\" + savename + \".csv\")" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "41f1235d", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "palette = {\n", - " \"tuned PPI\": \"darkorange\",\n", - " \"PPI\": \"#83C980\",\n", - " \"classical\": \"cornflowerblue\",\n", - "}\n", - "linewidth = 2\n", - "\n", - "fig, axs = plt.subplots(\n", - " nrows=1, ncols=2, figsize=(8, 2), sharex=True, sharey=False\n", - ")\n", - "cvg_ax = axs[0]\n", - "sz_ax = axs[1]\n", - "sns.lineplot(\n", - " ax=cvg_ax,\n", - " data=df,\n", - " x=\"n\",\n", - " y=\"included\",\n", - " linewidth=linewidth,\n", - " errorbar=None,\n", - " hue=\"method\",\n", - " legend=False,\n", - " palette=palette,\n", - " alpha=0.8,\n", - ")\n", - "sns.lineplot(\n", - " ax=sz_ax,\n", - " data=df,\n", - " x=\"n\",\n", - " y=\"width\",\n", - " linewidth=linewidth,\n", - " errorbar=None,\n", - " hue=\"method\",\n", - " legend=True,\n", - " palette=palette,\n", - " alpha=0.8,\n", - ")\n", - "cvg_ax.set_ylabel(\"coverage\")\n", - "cvg_ax.set_ylim([0.5, 1.03])\n", - "cvg_ax.axhline(y=1 - alpha, color=\"#888888\", linestyle=\"dotted\")\n", - "cvg_ax.set_xlabel(\"n\")\n", - "sz_ax.set_ylabel(\"size\")\n", - "sz_ax.set_xlabel(\"n\")\n", - "sz_ax.legend_.set_title(None)\n", - "sns.despine(top=True, right=True)\n", - "plt.tight_layout()\n", - "os.makedirs(\"./plots\", exist_ok=True)\n", - "plt.savefig(\"./plots/\" + savename + \".pdf\")" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.12" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/examples/eff-ppi/lambda_mean.ipynb b/examples/eff-ppi/lambda_mean.ipynb deleted file mode 100644 index a64597e..0000000 --- a/examples/eff-ppi/lambda_mean.ipynb +++ /dev/null @@ -1,252 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "c1fc1715", - "metadata": {}, - "outputs": [], - "source": [ - "%load_ext autoreload\n", - "%autoreload 2\n", - "import os, sys\n", - "\n", - "sys.path.append(\n", - " os.path.abspath(os.path.join(os.getcwd(), os.pardir, os.pardir))\n", - ")\n", - "import numpy as np\n", - "import pandas as pd\n", - "import matplotlib.pyplot as plt\n", - "import seaborn as sns\n", - "from ppi_py.datasets import load_dataset\n", - "from ppi_py import ppi_mean_ci\n", - "from tqdm import tqdm\n", - "from scipy.optimize import brentq\n", - "from scipy.special import expit\n", - "from tqdm import tqdm\n", - "import pdb" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "debf2d80", - "metadata": {}, - "outputs": [], - "source": [ - "alpha = 0.1\n", - "ns = np.linspace(50, 1000, 10).astype(\n", - " int\n", - ") # Test for different numbers of labeled examples\n", - "sigmas = [0.1, 1, 2]\n", - "N = 10000\n", - "num_trials = 100\n", - "\n", - "theta_star = 0" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "4cd55642", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|█████████████████████████████████████████████████████████████████████████████████| 100/100 [00:21<00:00, 4.71it/s]\n", - "100%|█████████████████████████████████████████████████████████████████████████████████| 100/100 [00:22<00:00, 4.51it/s]\n", - "100%|█████████████████████████████████████████████████████████████████████████████████| 100/100 [00:23<00:00, 4.24it/s]\n" - ] - } - ], - "source": [ - "# Run prediction-powered inference and classical inference for many values of n\n", - "results = []\n", - "for s in range(len(sigmas)):\n", - " sigma = sigmas[s]\n", - " for j in tqdm(range(num_trials)):\n", - " Y = np.random.normal(0, 1, ns.max())\n", - " Yhat = Y + np.random.normal(-2, sigma, ns.max())\n", - " Y_unlabeled = np.random.normal(0, 1, N)\n", - " Yhat_unlabeled = Y_unlabeled + np.random.normal(-2, sigma, N)\n", - "\n", - " for i in range(ns.shape[0]):\n", - " # Prediction-Powered Inference\n", - " n = ns[i]\n", - " _Yhat = Yhat[:n]\n", - " _Y = Y[:n]\n", - "\n", - " # PPI interval\n", - " ppi_ci = ppi_mean_ci(\n", - " _Y, _Yhat, Yhat_unlabeled, alpha=alpha, lhat=1\n", - " )\n", - " classical_ci = ppi_mean_ci(\n", - " _Y, _Yhat, Yhat_unlabeled, alpha=alpha, lhat=0\n", - " )\n", - " ppi_ci_tuned = ppi_mean_ci(_Y, _Yhat, Yhat_unlabeled, alpha=alpha)\n", - "\n", - " # Append results\n", - " results += [\n", - " pd.DataFrame(\n", - " [\n", - " {\n", - " \"method\": \"PPI\",\n", - " \"n\": n,\n", - " \"lower\": ppi_ci[0],\n", - " \"upper\": ppi_ci[1],\n", - " \"included\": (ppi_ci[0] <= theta_star)\n", - " & (ppi_ci[1] >= theta_star),\n", - " \"trial\": j,\n", - " \"sigma\": sigma,\n", - " }\n", - " ]\n", - " )\n", - " ]\n", - "\n", - " results += [\n", - " pd.DataFrame(\n", - " [\n", - " {\n", - " \"method\": \"classical\",\n", - " \"n\": n,\n", - " \"lower\": classical_ci[0],\n", - " \"upper\": classical_ci[1],\n", - " \"included\": (classical_ci[0] <= theta_star)\n", - " & (classical_ci[1] >= theta_star),\n", - " \"trial\": j,\n", - " \"sigma\": sigma,\n", - " }\n", - " ]\n", - " )\n", - " ]\n", - "\n", - " results += [\n", - " pd.DataFrame(\n", - " [\n", - " {\n", - " \"method\": \"tuned PPI\",\n", - " \"n\": n,\n", - " \"lower\": ppi_ci_tuned[0],\n", - " \"upper\": ppi_ci_tuned[1],\n", - " \"included\": (ppi_ci_tuned[0] <= theta_star)\n", - " & (ppi_ci_tuned[1] >= theta_star),\n", - " \"trial\": j,\n", - " \"sigma\": sigma,\n", - " }\n", - " ]\n", - " )\n", - " ]\n", - "\n", - "df = pd.concat(results, axis=0, ignore_index=True)\n", - "df[\"width\"] = df[\"upper\"] - df[\"lower\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "2c513835", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "palette = {\n", - " \"tuned PPI\": \"darkorange\",\n", - " \"PPI\": \"#83C980\",\n", - " \"classical\": \"cornflowerblue\",\n", - "}\n", - "linewidth = 2\n", - "sigmas_to_plot = [sigmas[0], sigmas[1], sigmas[2]]\n", - "df_to_plot = df[np.isin(df.sigma, sigmas_to_plot)]\n", - "n_unique_sigmas = len(sigmas_to_plot)\n", - "\n", - "\n", - "fig, axs = plt.subplots(\n", - " nrows=n_unique_sigmas,\n", - " ncols=2,\n", - " figsize=(8, 2 * n_unique_sigmas),\n", - " sharex=True,\n", - " sharey=\"col\",\n", - ")\n", - "for s in range(n_unique_sigmas):\n", - " cvg_ax = axs[s, 0]\n", - " sz_ax = axs[s, 1]\n", - " legend = False if s > 0 else True\n", - " sns.lineplot(\n", - " ax=cvg_ax,\n", - " data=df_to_plot[df_to_plot.sigma == sigmas_to_plot[s]],\n", - " x=\"n\",\n", - " y=\"included\",\n", - " linewidth=linewidth,\n", - " errorbar=None,\n", - " hue=\"method\",\n", - " legend=False,\n", - " palette=palette,\n", - " alpha=0.8,\n", - " )\n", - " sns.lineplot(\n", - " ax=sz_ax,\n", - " data=df_to_plot[df_to_plot.sigma == sigmas_to_plot[s]],\n", - " x=\"n\",\n", - " y=\"width\",\n", - " linewidth=linewidth,\n", - " errorbar=None,\n", - " hue=\"method\",\n", - " legend=legend,\n", - " palette=palette,\n", - " alpha=0.8,\n", - " )\n", - " cvg_ax.set_ylabel(r\"$\\sigma=$\" + str(sigmas_to_plot[s]))\n", - " cvg_ax.set_ylim([0.5, 1.03])\n", - " cvg_ax.axhline(y=1 - alpha, color=\"#888888\", linestyle=\"dotted\")\n", - " cvg_ax.set_xlabel(\"\")\n", - " sz_ax.set_ylabel(\"\")\n", - " sz_ax.set_xlabel(\"\")\n", - " if legend:\n", - " sz_ax.legend_.set_title(None)\n", - "axs[0, 0].set_title(\"coverage\")\n", - "axs[0, 1].set_title(\"width\")\n", - "axs[-1, 0].set_xlabel(\"n\")\n", - "axs[-1, 1].set_xlabel(\"n\")\n", - "sns.despine(top=True, right=True)\n", - "plt.tight_layout()\n", - "os.makedirs(\"./plots\", exist_ok=True)\n", - "plt.savefig(\"./plots/tuned-PPI-mean.pdf\")" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.12" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/examples/eff-ppi/lambda_mean_onestep-anticorrelated.ipynb b/examples/eff-ppi/lambda_mean_onestep-anticorrelated.ipynb deleted file mode 100644 index 09a7197..0000000 --- a/examples/eff-ppi/lambda_mean_onestep-anticorrelated.ipynb +++ /dev/null @@ -1,252 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "c1fc1715", - "metadata": {}, - "outputs": [], - "source": [ - "%load_ext autoreload\n", - "%autoreload 2\n", - "import os, sys\n", - "\n", - "sys.path.append(\n", - " os.path.abspath(os.path.join(os.getcwd(), os.pardir, os.pardir))\n", - ")\n", - "import numpy as np\n", - "import pandas as pd\n", - "import matplotlib.pyplot as plt\n", - "import seaborn as sns\n", - "from ppi_py.datasets import load_dataset\n", - "from ppi_py import ppi_mean_ci\n", - "from tqdm import tqdm\n", - "from scipy.optimize import brentq\n", - "from scipy.special import expit\n", - "from tqdm import tqdm\n", - "import pdb" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "debf2d80", - "metadata": {}, - "outputs": [], - "source": [ - "alpha = 0.1\n", - "ns = np.linspace(50, 1000, 10).astype(\n", - " int\n", - ") # Test for different numbers of labeled examples\n", - "sigmas = [0.1, 1, 2]\n", - "N = 10000\n", - "num_trials = 100\n", - "\n", - "theta_star = 0" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "4cd55642", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|█████████████████████████████████████████████████████████████████████████████████| 100/100 [00:42<00:00, 2.34it/s]\n", - "100%|█████████████████████████████████████████████████████████████████████████████████| 100/100 [00:44<00:00, 2.26it/s]\n", - "100%|█████████████████████████████████████████████████████████████████████████████████| 100/100 [00:44<00:00, 2.23it/s]\n" - ] - } - ], - "source": [ - "# Run prediction-powered inference and classical inference for many values of n\n", - "results = []\n", - "for s in range(len(sigmas)):\n", - " sigma = sigmas[s]\n", - " for j in tqdm(range(num_trials)):\n", - " Y = np.random.normal(0, 1, ns.max())\n", - " Yhat = -Y + np.random.normal(-2, sigma, ns.max())\n", - " Y_unlabeled = np.random.normal(0, 1, N)\n", - " Yhat_unlabeled = -Y_unlabeled + np.random.normal(-2, sigma, N)\n", - "\n", - " for i in range(ns.shape[0]):\n", - " # Prediction-Powered Inference\n", - " n = ns[i]\n", - " _Yhat = Yhat[:n]\n", - " _Y = Y[:n]\n", - "\n", - " # PPI interval\n", - " ppi_ci = ppi_mean_ci(\n", - " _Y, _Yhat, Yhat_unlabeled, alpha=alpha, lhat=1\n", - " )\n", - " ppi_ci_tuned = ppi_mean_ci(_Y, _Yhat, Yhat_unlabeled, alpha=alpha)\n", - " ppi_ci_onestep = ppi_mean_ci(\n", - " _Y, _Yhat, Yhat_unlabeled, alpha=alpha, one_step=True\n", - " )\n", - "\n", - " # Append results\n", - " results += [\n", - " pd.DataFrame(\n", - " [\n", - " {\n", - " \"method\": \"PPI\",\n", - " \"n\": n,\n", - " \"lower\": ppi_ci[0],\n", - " \"upper\": ppi_ci[1],\n", - " \"included\": (ppi_ci[0] <= theta_star)\n", - " & (ppi_ci[1] >= theta_star),\n", - " \"trial\": j,\n", - " \"sigma\": sigma,\n", - " }\n", - " ]\n", - " )\n", - " ]\n", - "\n", - " results += [\n", - " pd.DataFrame(\n", - " [\n", - " {\n", - " \"method\": \"one-step PPI\",\n", - " \"n\": n,\n", - " \"lower\": ppi_ci_onestep[0],\n", - " \"upper\": ppi_ci_onestep[1],\n", - " \"included\": (ppi_ci_onestep[0] <= theta_star)\n", - " & (ppi_ci_onestep[1] >= theta_star),\n", - " \"trial\": j,\n", - " \"sigma\": sigma,\n", - " }\n", - " ]\n", - " )\n", - " ]\n", - "\n", - " results += [\n", - " pd.DataFrame(\n", - " [\n", - " {\n", - " \"method\": \"tuned PPI\",\n", - " \"n\": n,\n", - " \"lower\": ppi_ci_tuned[0],\n", - " \"upper\": ppi_ci_tuned[1],\n", - " \"included\": (ppi_ci_tuned[0] <= theta_star)\n", - " & (ppi_ci_tuned[1] >= theta_star),\n", - " \"trial\": j,\n", - " \"sigma\": sigma,\n", - " }\n", - " ]\n", - " )\n", - " ]\n", - "\n", - "df = pd.concat(results, axis=0, ignore_index=True)\n", - "df[\"width\"] = df[\"upper\"] - df[\"lower\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "2c513835", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "palette = {\n", - " \"tuned PPI\": \"darkorange\",\n", - " \"PPI\": \"#83C980\",\n", - " \"one-step PPI\": \"cornflowerblue\",\n", - "}\n", - "linewidth = 2\n", - "sigmas_to_plot = [sigmas[0], sigmas[1], sigmas[2]]\n", - "df_to_plot = df[df.sigma.isin(sigmas_to_plot) & df.method.isin(palette.keys())]\n", - "n_unique_sigmas = len(sigmas_to_plot)\n", - "\n", - "\n", - "fig, axs = plt.subplots(\n", - " nrows=n_unique_sigmas,\n", - " ncols=2,\n", - " figsize=(8, 2 * n_unique_sigmas),\n", - " sharex=True,\n", - " sharey=\"col\",\n", - ")\n", - "for s in range(n_unique_sigmas):\n", - " cvg_ax = axs[s, 0]\n", - " sz_ax = axs[s, 1]\n", - " legend = False if s > 0 else True\n", - " sns.lineplot(\n", - " ax=cvg_ax,\n", - " data=df_to_plot[df_to_plot.sigma == sigmas_to_plot[s]],\n", - " x=\"n\",\n", - " y=\"included\",\n", - " linewidth=linewidth,\n", - " errorbar=None,\n", - " hue=\"method\",\n", - " legend=False,\n", - " palette=palette,\n", - " alpha=0.8,\n", - " )\n", - " sns.lineplot(\n", - " ax=sz_ax,\n", - " data=df_to_plot[df_to_plot.sigma == sigmas_to_plot[s]],\n", - " x=\"n\",\n", - " y=\"width\",\n", - " linewidth=linewidth,\n", - " errorbar=None,\n", - " hue=\"method\",\n", - " legend=legend,\n", - " palette=palette,\n", - " alpha=0.8,\n", - " )\n", - " cvg_ax.set_ylabel(r\"$\\sigma=$\" + str(sigmas_to_plot[s]))\n", - " cvg_ax.set_ylim([0.5, 1.03])\n", - " cvg_ax.axhline(y=1 - alpha, color=\"#888888\", linestyle=\"dotted\")\n", - " cvg_ax.set_xlabel(\"\")\n", - " sz_ax.set_ylabel(\"\")\n", - " sz_ax.set_xlabel(\"\")\n", - " if legend:\n", - " sz_ax.legend_.set_title(None)\n", - "axs[0, 0].set_title(\"coverage\")\n", - "axs[0, 1].set_title(\"width\")\n", - "axs[-1, 0].set_xlabel(\"n\")\n", - "axs[-1, 1].set_xlabel(\"n\")\n", - "sns.despine(top=True, right=True)\n", - "plt.tight_layout()\n", - "os.makedirs(\"./plots\", exist_ok=True)\n", - "plt.savefig(\"./plots/onestep-PPI-mean-anticorrelated.pdf\")" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.12" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/examples/eff-ppi/lambda_mean_onestep.ipynb b/examples/eff-ppi/lambda_mean_onestep.ipynb deleted file mode 100644 index 93a5ebf..0000000 --- a/examples/eff-ppi/lambda_mean_onestep.ipynb +++ /dev/null @@ -1,252 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "c1fc1715", - "metadata": {}, - "outputs": [], - "source": [ - "%load_ext autoreload\n", - "%autoreload 2\n", - "import os, sys\n", - "\n", - "sys.path.append(\n", - " os.path.abspath(os.path.join(os.getcwd(), os.pardir, os.pardir))\n", - ")\n", - "import numpy as np\n", - "import pandas as pd\n", - "import matplotlib.pyplot as plt\n", - "import seaborn as sns\n", - "from ppi_py.datasets import load_dataset\n", - "from ppi_py import ppi_mean_ci\n", - "from tqdm import tqdm\n", - "from scipy.optimize import brentq\n", - "from scipy.special import expit\n", - "from tqdm import tqdm\n", - "import pdb" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "debf2d80", - "metadata": {}, - "outputs": [], - "source": [ - "alpha = 0.1\n", - "ns = np.linspace(50, 1000, 10).astype(\n", - " int\n", - ") # Test for different numbers of labeled examples\n", - "sigmas = [0.1, 1, 2]\n", - "N = 10000\n", - "num_trials = 100\n", - "\n", - "theta_star = 0" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "4cd55642", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|█████████████████████████████████████████████████████████████████████████████████| 100/100 [01:12<00:00, 1.37it/s]\n", - "100%|█████████████████████████████████████████████████████████████████████████████████| 100/100 [01:17<00:00, 1.30it/s]\n", - "100%|█████████████████████████████████████████████████████████████████████████████████| 100/100 [01:12<00:00, 1.38it/s]\n" - ] - } - ], - "source": [ - "# Run prediction-powered inference and classical inference for many values of n\n", - "results = []\n", - "for s in range(len(sigmas)):\n", - " sigma = sigmas[s]\n", - " for j in tqdm(range(num_trials)):\n", - " Y = np.random.normal(0, 1, ns.max())\n", - " Yhat = Y + np.random.normal(-2, sigma, ns.max())\n", - " Y_unlabeled = np.random.normal(0, 1, N)\n", - " Yhat_unlabeled = Y_unlabeled + np.random.normal(-2, sigma, N)\n", - "\n", - " for i in range(ns.shape[0]):\n", - " # Prediction-Powered Inference\n", - " n = ns[i]\n", - " _Yhat = Yhat[:n]\n", - " _Y = Y[:n]\n", - "\n", - " # PPI interval\n", - " ppi_ci = ppi_mean_ci(\n", - " _Y, _Yhat, Yhat_unlabeled, alpha=alpha, lhat=1\n", - " )\n", - " ppi_ci_tuned = ppi_mean_ci(_Y, _Yhat, Yhat_unlabeled, alpha=alpha)\n", - " ppi_ci_onestep = ppi_mean_ci(\n", - " _Y, _Yhat, Yhat_unlabeled, alpha=alpha, one_step=True\n", - " )\n", - "\n", - " # Append results\n", - " results += [\n", - " pd.DataFrame(\n", - " [\n", - " {\n", - " \"method\": \"PPI\",\n", - " \"n\": n,\n", - " \"lower\": ppi_ci[0],\n", - " \"upper\": ppi_ci[1],\n", - " \"included\": (ppi_ci[0] <= theta_star)\n", - " & (ppi_ci[1] >= theta_star),\n", - " \"trial\": j,\n", - " \"sigma\": sigma,\n", - " }\n", - " ]\n", - " )\n", - " ]\n", - "\n", - " results += [\n", - " pd.DataFrame(\n", - " [\n", - " {\n", - " \"method\": \"one-step PPI\",\n", - " \"n\": n,\n", - " \"lower\": ppi_ci_onestep[0],\n", - " \"upper\": ppi_ci_onestep[1],\n", - " \"included\": (ppi_ci_onestep[0] <= theta_star)\n", - " & (ppi_ci_onestep[1] >= theta_star),\n", - " \"trial\": j,\n", - " \"sigma\": sigma,\n", - " }\n", - " ]\n", - " )\n", - " ]\n", - "\n", - " results += [\n", - " pd.DataFrame(\n", - " [\n", - " {\n", - " \"method\": \"tuned PPI\",\n", - " \"n\": n,\n", - " \"lower\": ppi_ci_tuned[0],\n", - " \"upper\": ppi_ci_tuned[1],\n", - " \"included\": (ppi_ci_tuned[0] <= theta_star)\n", - " & (ppi_ci_tuned[1] >= theta_star),\n", - " \"trial\": j,\n", - " \"sigma\": sigma,\n", - " }\n", - " ]\n", - " )\n", - " ]\n", - "\n", - "df = pd.concat(results, axis=0, ignore_index=True)\n", - "df[\"width\"] = df[\"upper\"] - df[\"lower\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "2c513835", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "palette = {\n", - " \"tuned PPI\": \"darkorange\",\n", - " \"PPI\": \"#83C980\",\n", - " \"one-step PPI\": \"cornflowerblue\",\n", - "}\n", - "linewidth = 2\n", - "sigmas_to_plot = [sigmas[0], sigmas[1], sigmas[2]]\n", - "df_to_plot = df[df.sigma.isin(sigmas_to_plot) & df.method.isin(palette.keys())]\n", - "n_unique_sigmas = len(sigmas_to_plot)\n", - "\n", - "\n", - "fig, axs = plt.subplots(\n", - " nrows=n_unique_sigmas,\n", - " ncols=2,\n", - " figsize=(8, 2 * n_unique_sigmas),\n", - " sharex=True,\n", - " sharey=\"col\",\n", - ")\n", - "for s in range(n_unique_sigmas):\n", - " cvg_ax = axs[s, 0]\n", - " sz_ax = axs[s, 1]\n", - " legend = False if s > 0 else True\n", - " sns.lineplot(\n", - " ax=cvg_ax,\n", - " data=df_to_plot[df_to_plot.sigma == sigmas_to_plot[s]],\n", - " x=\"n\",\n", - " y=\"included\",\n", - " linewidth=linewidth,\n", - " errorbar=None,\n", - " hue=\"method\",\n", - " legend=False,\n", - " palette=palette,\n", - " alpha=0.8,\n", - " )\n", - " sns.lineplot(\n", - " ax=sz_ax,\n", - " data=df_to_plot[df_to_plot.sigma == sigmas_to_plot[s]],\n", - " x=\"n\",\n", - " y=\"width\",\n", - " linewidth=linewidth,\n", - " errorbar=None,\n", - " hue=\"method\",\n", - " legend=legend,\n", - " palette=palette,\n", - " alpha=0.8,\n", - " )\n", - " cvg_ax.set_ylabel(r\"$\\sigma=$\" + str(sigmas_to_plot[s]))\n", - " cvg_ax.set_ylim([0.5, 1.03])\n", - " cvg_ax.axhline(y=1 - alpha, color=\"#888888\", linestyle=\"dotted\")\n", - " cvg_ax.set_xlabel(\"\")\n", - " sz_ax.set_ylabel(\"\")\n", - " sz_ax.set_xlabel(\"\")\n", - " if legend:\n", - " sz_ax.legend_.set_title(None)\n", - "axs[0, 0].set_title(\"coverage\")\n", - "axs[0, 1].set_title(\"width\")\n", - "axs[-1, 0].set_xlabel(\"n\")\n", - "axs[-1, 1].set_xlabel(\"n\")\n", - "sns.despine(top=True, right=True)\n", - "plt.tight_layout()\n", - "os.makedirs(\"./plots\", exist_ok=True)\n", - "plt.savefig(\"./plots/onestep-PPI-mean.pdf\")" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.12" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/examples/eff-ppi/lambda_ols.ipynb b/examples/eff-ppi/lambda_ols.ipynb deleted file mode 100644 index 3c351a7..0000000 --- a/examples/eff-ppi/lambda_ols.ipynb +++ /dev/null @@ -1,279 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "c1fc1715", - "metadata": {}, - "outputs": [], - "source": [ - "%load_ext autoreload\n", - "%autoreload 2\n", - "import os, sys\n", - "\n", - "sys.path.append(\n", - " os.path.abspath(os.path.join(os.getcwd(), os.pardir, os.pardir))\n", - ")\n", - "import numpy as np\n", - "import pandas as pd\n", - "import matplotlib.pyplot as plt\n", - "import seaborn as sns\n", - "from ppi_py.datasets import load_dataset\n", - "from ppi_py import ppi_ols_ci\n", - "from tqdm import tqdm\n", - "from scipy.optimize import brentq\n", - "from scipy.special import expit\n", - "from tqdm import tqdm" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "debf2d80", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[-0.23815367 0.39597782]\n" - ] - } - ], - "source": [ - "alpha = 0.1\n", - "ns = np.linspace(500, 5000, 10).astype(\n", - " int\n", - ") # Test for different numbers of labeled examples\n", - "sigmas = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 1]\n", - "N = 10000\n", - "num_trials = 100\n", - "d = 2\n", - "epsilon = 1\n", - "coord = 0\n", - "\n", - "theta_star = np.random.randn(d)\n", - "print(theta_star)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "4cd55642", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|████████████████████████████████████████████████████████████████████| 100/100 [22:55<00:00, 13.76s/it]\n", - "100%|████████████████████████████████████████████████████████████████████| 100/100 [22:11<00:00, 13.31s/it]\n", - "100%|████████████████████████████████████████████████████████████████████| 100/100 [23:04<00:00, 13.84s/it]\n", - "100%|████████████████████████████████████████████████████████████████████| 100/100 [22:16<00:00, 13.36s/it]\n", - "100%|████████████████████████████████████████████████████████████████████| 100/100 [22:17<00:00, 13.37s/it]\n", - "100%|████████████████████████████████████████████████████████████████████| 100/100 [22:22<00:00, 13.43s/it]\n", - "100%|█████████████████████████████████████████| 100/100 [33:28<00:00, 20.09s/it]\n" - ] - } - ], - "source": [ - "# Run prediction-powered inference and classical inference for many values of n\n", - "results = []\n", - "for s in range(len(sigmas)):\n", - " sigma = sigmas[s]\n", - " for j in tqdm(range(num_trials)):\n", - " X = np.random.multivariate_normal(np.zeros(d), np.eye(d), ns.max())\n", - " Y = X @ theta_star + epsilon * np.random.normal(0, 1, ns.max())\n", - " Yhat = Y + sigma * np.random.normal(-2, 1, ns.max())\n", - " X_unlabeled = np.random.multivariate_normal(np.zeros(d), np.eye(d), N)\n", - " Y_unlabeled = X_unlabeled @ theta_star + epsilon * np.random.normal(\n", - " 0, 1, N\n", - " )\n", - " Yhat_unlabeled = Y_unlabeled + sigma * np.random.normal(-2, 1, N)\n", - " for i in range(ns.shape[0]):\n", - " n = ns[i]\n", - " _X = X[:n]\n", - " _Y = Y[:n]\n", - " _Yhat = Yhat[:n]\n", - "\n", - " # PPI interval\n", - " ppi_ci = ppi_ols_ci(\n", - " _X, _Y, _Yhat, X_unlabeled, Yhat_unlabeled, alpha=alpha, lhat=1\n", - " )\n", - " classical_ci = ppi_ols_ci(\n", - " _X, _Y, _Yhat, X_unlabeled, Yhat_unlabeled, alpha=alpha, lhat=0\n", - " )\n", - " ppi_ci_tuned = ppi_ols_ci(\n", - " _X,\n", - " _Y,\n", - " _Yhat,\n", - " X_unlabeled,\n", - " Yhat_unlabeled,\n", - " coord=coord,\n", - " alpha=alpha,\n", - " )\n", - " # Append results\n", - " results += [\n", - " pd.DataFrame(\n", - " [\n", - " {\n", - " \"method\": \"PPI\",\n", - " \"n\": n,\n", - " \"lower\": ppi_ci[0][coord],\n", - " \"upper\": ppi_ci[1][coord],\n", - " \"included\": (ppi_ci[0][coord] <= theta_star[coord])\n", - " & (ppi_ci[1][coord] >= theta_star[coord]),\n", - " \"trial\": j,\n", - " \"sigma\": sigma,\n", - " }\n", - " ]\n", - " )\n", - " ]\n", - "\n", - " results += [\n", - " pd.DataFrame(\n", - " [\n", - " {\n", - " \"method\": \"classical\",\n", - " \"n\": n,\n", - " \"lower\": classical_ci[0][coord],\n", - " \"upper\": classical_ci[1][coord],\n", - " \"included\": (\n", - " classical_ci[0][coord] <= theta_star[coord]\n", - " )\n", - " & (classical_ci[1][coord] >= theta_star[coord]),\n", - " \"trial\": j,\n", - " \"sigma\": sigma,\n", - " }\n", - " ]\n", - " )\n", - " ]\n", - "\n", - " results += [\n", - " pd.DataFrame(\n", - " [\n", - " {\n", - " \"method\": \"tuned PPI\",\n", - " \"n\": n,\n", - " \"lower\": ppi_ci_tuned[0][coord],\n", - " \"upper\": ppi_ci_tuned[1][coord],\n", - " \"included\": (\n", - " ppi_ci_tuned[0][coord] <= theta_star[coord]\n", - " )\n", - " & (ppi_ci_tuned[1][coord] >= theta_star[coord]),\n", - " \"trial\": j,\n", - " \"sigma\": sigma,\n", - " }\n", - " ]\n", - " )\n", - " ]\n", - "\n", - "df = pd.concat(results, axis=0, ignore_index=True)\n", - "df[\"width\"] = df[\"upper\"] - df[\"lower\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "2c513835", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxMAAAJOCAYAAADMPVrNAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAADVmElEQVR4nOzdeXwU5eE/8M/M7L2574RwBBALqIhQEZQqKlhsPdAWeuGJhWKriNWKtvX8/mhrW/ACj1rxLtJ6S1XUeiBeILQqogKBQO57s/fOzPP7Y/ZMNiEJSRbI5/16jbsz8+zss7u4mc8+x0hCCAEiIiIiIqIeklNdASIiIiIiOjwxTBARERERUa8wTBARERERUa8wTBARERERUa8wTBARERERUa8wTBARERERUa8wTBARERERUa8wTBARERERUa8wTBARERERUa8wTBARERH1g9NOOw2nnXbaAcvt2bMHkiRhzZo10W3r16/HLbfckrS8JEn45S9/2TeVJDpIDBNERERE/WDVqlVYtWpVrx67fv163HrrrX1cI6K+Z0p1BYioa5qmQVVVWK3WVFeFiIh6YNy4camuAlG/Y8sEDVo7duzAj3/8YxQWFsJqtWLYsGG46KKLEAgEAACff/45zjvvPGRnZ8Nms+H444/Ho48+Gn18fX09LBYLfve73yU9tiRJuPvuu6PbampqsHDhQpSWlsJisaCsrAy33norVFWNlok0df/pT3/CHXfcgbKyMlitVvznP/+B3+/Htddei+OPPx6ZmZnIycnB1KlT8cILL3R4/paWFlx++eXIyclBWloavve972H37t2QJKlDs/k333yDn/zkJygoKIDVasXYsWNx3333HezbS0R0xPjiiy8gSRLWrVsX3bZlyxZIkoTx48cnlD333HMxadIkAMm7OVVVVWHu3LlIT09HZmYm5s2bh5qamoQyl1xySfR7WJKk6LJnz56Eco8//jjGjh0Lh8OBCRMm4OWXX+6jV0zUfWyZoEHpv//9L0455RTk5eXhtttuw1FHHYXq6mq8+OKLCAaD2LNnD6ZNm4aCggLcfffdyM3NxRNPPIFLLrkEtbW1uP7665Gfn4/vf//7ePTRR3HrrbdClmPZ/JFHHoHFYsFPf/pTAEaQOPHEEyHLMn7/+99j1KhR+OCDD3DHHXdgz549eOSRRxLqd/fdd2PMmDH485//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ZjPZMDJzJEaGB3MTERHR4MAOy0RERERE1CsME0RERERE1CsME0RERERE1CsME0RERERE1CsME0RERERE1Ct9Fib27duHyy67rK8OR0RERER0RHn77bchSRJaWlpSXZU+02dhoqmpCY8++mhfHY6IiIiI6KCcdtppWLJkSaqr0SMjRoyAJEmQJAkOhwPHHHMMHnjggej+NWvWRPdLkoTi4mLMnTsX5eXlCcdYuXLlgNS329eZePHFF7vcv3v37oOuDBERERHRYHfbbbfhiiuugNvtxpo1a7Bo0SJkZWVh3rx5AICMjAx89dVXEEJgx44dWLhwIc4991xs27YNiqIMaF273TJx/vnnY86cOTj//POTLkuXLu3PehIRERERddsll1yCd955B3fddVf0V/w9e/ZgzZo1yMrKSij7/PPPQ5Kk6Pott9yC448/Ho8//jhGjBiBzMxM/OhHP0JbW1u0jBACf/rTnzBy5EjY7XZMmDAB//znPxOOu379eowZMwZ2ux0zZszAnj17ulX39PR0FBUVYfTo0bjjjjtw1FFH4fnnn4/ulyQJRUVFKC4uxowZM3DzzTfj888/x86dO3v8Ph2sboeJ4uJi/Otf/4Ku60mXTz/9tD/rSURERESHCiGAkCc1ixDdquJdd92FqVOn4oorrkB1dTWqq6sxdOjQbr/EXbt24fnnn8fLL7+Ml19+Ge+88w7+8Ic/RPf/9re/xSOPPILVq1fjiy++wDXXXIOf/exneOeddwAY44kvuOACnH322di2bRsWLFiAG264oWfvc5jNZkMoFOp0v91uB4Auy/SXbndzmjRpEj799FOcf/75SfdLkgTRzQ+XiIiIiA5jqhe4Oy01z32VGzA7D1gsMzMTFosFDocDRUVFPX4aXdexZs0apKenAwDmz5+PN998E//3f/8Hj8eDv/71r3jrrbcwdepUAMDIkSOxceNGPPDAAzj11FOxevVqjBw5EitWrIAkSTj66KPx2Wef4Y9//GO366CqKp544gl89tln+MUvfpG0zP79+3HnnXeitLQUY8aM6fHrPFjdDhPXXXcdPB5Pp/tHjx6N//znP31SKSIiIiKiVBoxYkQ0SABGL526ujoAwPbt2+H3+zFz5syExwSDQUycOBEA8OWXX+Kkk05K6D4VCR4H8pvf/Aa//e1vEQgEYLFYcN1112HhwoXR/a2t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3/2DLky0tbUBAIYOHZrimhARHfpaW1uRkZGR6mocNH73ExF1X0+++yWRbK6qI5iu66iqqjqsf21zuVwYOnQo9u3bd0T8kT8YfC9i+F4Y+D7E9MV7cTh/V8bjd/+Rg+9DDN+LGL4XMQP93T/oWiZkWUZpaWmqq9EnMjIyBv3/MBF8L2L4Xhj4PsTwveB3/5GI70MM34sYvhcxA/VecAA2ERERERH1CsMEERERERH1CsPEYchqteLmm2+G1WpNdVVSju9FDN8LA9+HGL4XRxZ+nga+DzF8L2L4XsQM9Hsx6AZgExERERFR32DLBBERERER9QrDBBERERER9QrDBBERERER9QrDBBERERER9QrDBBERERER9QrDBBERERER9QrDBBERERER9QrDBBERERER9QrDBBERERER9QrDBBERERER9QrDBBERERER9QrDBBERERER9cqgCxNCCLhcLgghUl0VIiIaIPzuJyLqH4MuTLS1tSEzMxNtbW2prgoREQ0QfvcTEfWPQRcmiIiIiIiobzBMEBERERFRrzBMEBERERFRr6Q0TLz77rs455xzUFJSAkmS8Pzzzx/wMe+88w4mTZoEm82GkSNH4v777+//ihIRERERUQcpDRMejwcTJkzAvffe263y5eXlOPvsszF9+nRs3boVN954I6666ir861//6ueaEhERERFRe6ZUPvns2bMxe/bsbpe///77MWzYMKxcuRIAMHbsWGzevBl//vOfceGFF/ZTLYmIiIiIKJnDaszEBx98gFmzZiVsO+uss7B582aEQqEU1YqIiIiIaHBKactET9XU1KCwsDBhW2FhIVRVRUNDA4qLizs8JhAIIBAIRNddLle/15OIiIiIaDA4rFomAECSpIT1yNVM22+PWL58OTIzM6PL0KFD+72ORERERESDwWHVMlFUVISampqEbXV1dTCZTMjNzU36mGXLlmHp0qXRdZfLxUBB1EO6EPAHBTwBAa/fuPX4deM2IODxC3gDOtx+I9w7bRIcVglpVhkOm4Q0qwSHVUZaeLvTJsFmkSB38iPAoUwXAr641+0J6OHXL+COex+8AQFFhvE+2OTwrfE+OG0SnOH3wWmVYTV3/oMIERHRoeywChNTp07FSy+9lLDt9ddfx+TJk2E2m5M+xmq1wmq1DkT1iA4rqmac8CYEA39kmx4+UY4FBV10/9gt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Uf8YtO389913H6677jo4HEbXoY8++gjvvfcejjvuOMyePTta7t5770UoFMKiyy9G5sYbAQCfuo/CW61TMc6+F+fkfBwte3/t9+DTrbhsfDXyi0cAWaPxWY0Jr238L4466ihccOoF0bJ/W70aLpcLF110EYqLjUtdf/nll3j55ZcxbPgwnHHuGeG+70348PmPEXAFkHFSGiy5xh/6QE0QbVs8MGUryJoW+8PYstEFtVVDxuQ0WAqNssH6EFwfu6FkKMieHlf2gzaoTSrST3DCWmyctIeaVLR+0AbZISNnRma0bOvHbQjVq0g7zgHbUGNaJ7VVRcvGNshWCYVnFSDbmo1sWw52byxHdXk1ZpwxAydOPhEA0NzcjIceeghWqxVLliyJHve1117D559/jtNOOw1TpkwBALjdbqxatQqyLOO6666Lln3rrbewdetWnHzyyTjllFOM9yEQwF133QUA+PWvfx0NDu+++y4+/vhjnHjiiZgxYwYA44RpxYoVAICrr74aNpsNAPDBBx/g/fffx8SJEzFr1qzo8911113QdR2LFy9Geno6AGDz5s14++23ccwxx+B73/tetOyqVasQCARwxRVXICfHaFn6dOuneOvNt5A/PB85385Go78BEAJNb7RADwhknZIOU6bxv2CoWoNrWxvyS/Nx/oXnIduaA0mS8OCDD6K5uRk//elPUVpaCgD4+uuv8cILL2Do0KH4yU9+Eq3DE088gbq6OsydOxdlZWUAgPLycvzzn/9EUVERLr744mjZtWvXorKyEnPmzMGYMWNgVazQmjX8++lXkZubiwULFkAIAU/Ig3+u+ydq99di5LSRUIoltAZaEGgJovX9Nsh2GTmnZ0LVQqj31mLX5l0I1oaQdqwDtmHhfydtGlredUGySMidmRWtg/t/XgSqgnCOs8NeZnwWctCE+jcaICkSJs2dCJvJBrvJga82fYWKr/Zh4knHY8pJJ8FmskH1q7j33nsBAL/5zW+ix33jjTewZcsWTJ06FWd/5/sQQsDlc+H+e+4HAJz4o8loVV1oCTTBtcMN3y4/bCOsSBvvgKaraPTV46tXvgYA5JyZCdkqw2qyIbRLRd3n9Rh+9DCcPuv06BS80e+IRYuQmWn8P/Ppp5/irbfewrhx43DOOedE63b//ffD5/PhsssuQ35+PgDgs88+w2uvvWZ8R1wQ9x3x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ZGSkujpERDQA+N1PRNQ/Un7RulWrVqGsrAw2mw2TJk3Ce++912X5J598EhMmTIDD4UBxcTEuvfTS6JS1REREREQ0cFIaJtauXYslS5bgpptuwtatWzF9+nTMnj0bFRUVSctv3LgRF110ES6//HJ88cUXWLduHT755BMsWLBggGtORERERER9FibOPPNMjBw5skeP+etf/4rLL78cCxYswNixY7Fy5UoMHToUq1evTlr+ww8/xIgRI3DVVVehrKwMp5xyChYuXIjNmzf3xUsgIiIiIqIe6LMwMWfOHFx88cXdLh8MBrFlyxbMmjUrYfusWbOwadOmpI+ZNm0a9u/fj/Xr10MIgdraWvzzn//E9773vU6fJxAIwOVyJSxERERERHTw+ixMXHnllR1mfOpKQ0MDNE1Ler2KmpqapI+ZNm0annzyScybNw8WiwVFRUXIysrCPffc0+nzLF++HJmZmdFl6NCh3a4jERH1j56Ml3v22Wcxc+ZM5OfnIyMjA1OnTsVrr702gLUlIqLOpHwAduRCeBFCiA7bIrZv346rrroKv//977Flyxa8+uqrKC8vx6JFizo9/rJly9Da2hpd9u3b16f1JyKinunpeLl3330XM2fOxPr167FlyxbMmDED55xzDrZu3TrANSciovZ6NDXs/v37sXr1amzatAk1NTWQJAmFhYWYNm0aFi1a1KNf/YPBIBwOB9atW4c5c+ZEt1999dXYtm0b3nnnnQ6PmT9/Pvx+P9atWxfdtnHjRkyfPh1VVVUoLi4+4PNyekAiotSaMmUKTjjhhITxcWPHjsX555+P5cuXd+sY48ePx7x58/D73/++W+X53U9E1D+63TKxceNGjB07Fs899xwmTJiAiy66CD/72c8wYcIEPP/88xg/fjzef//9bj+xxWLBpEmTsGHDhoTtGzZswLRp05I+xuv1QpYTq6woCgCjRYOIiA5tvRkv156u62hra0NOTk6nZThejohoYHT7CtjXXHMNFixYgBUrVnS6f8mSJfjkk0+6/eRLly7F/PnzMXnyZEydOhUPPvggKioqot2Wli1bhsrKSjz22GMAgHPOOQdXXHEFVq9ejbPOOgvV1dVYsmQJTjzxRJSUlHT7eYmIKDV6M16uvb/85S/weDyYO3dup2WWL1+OW2+99aDqSkREB9btMPH555/jiSee6HT/woULcf/9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qJBQYUKBCTUxKTASywZUSJlYlyp0qcAU1rIBBYZUUV44H8AEe/SywDBBRERENN2EAjgKrGmqSWmNoJUeOvRh4SM9eJixzP3DQ8rw8kY09fqmbo1Ra8RT8+R2e67P/KBhB6LcvL1ITCc1rljBV4HKv5+cCh0HwwQRERHRXCZEoofFMT3hZTyktD6w2yFjtMAxbHsyoKTvHx5apJEINMPmppF5rL19ksrOlJv90ynHfyjjZGGYICIiIqLpJUTqsh7MgYcLS9MKFqYOILEsjdT8eMvJUGUvpwWUEx4/7Fg77JhA6eJp+dEZJoiIiIiIToZQAFWxen/yTO4e8UhERERERLMawwQREREREWWFYYKIiIiIiLLCMEFERERERFlhmCAiIiIioqwwTBARERERUVYYJoiIiIiIKCsME0RERERElBWGCSIiIiIiygrDBBERERERZYVhgoiIiIiIssIwQUREREREWWGYICIiIiKirDBMEBERERFRVhgmiIiIiIgoK1quKzDdpJQAgEAgkOOaEBHNfEVFRRBC5LoaJ41tPxHR+E2k7c+7MDE4OAgAqK+vz3FNiIhmvoGBARQXF+e6GieNbT8R0fhNpO0XMvl1TZ4wTROtra2z+tu2QCCA+vp6HD16dE78kT8ZPBcpPBcWnoeUyTgXs7mtTMe2f+7geUjhuUjhuUiZ7rY/73omFEVBXV1drqsxKYqLi/P+f5gknosUngsLz0MKzwXb/rmI5yGF5yKF5yJlus4Fb8AmIiIiIqKsMEwQEREREVFWGCZmIZfLhXvuuQculyvXVck5nosUngsLz0MKz8Xcwt+nhechheciheciZbrPRd7dgE1ERERERJODPRNERERERJQVhgkiIiIiIsoKwwQREREREWWFYYKIiIiIiLLCMEFERERERFlhmCAiIiIioqwwTBARERERUVYYJoiIiIiIKCsME0RERERElBWGCSIiIiIiygrDBBERERERZYVhgoiIiIiIspJ3YUJKiUAgACllrqtCRETThG0/EdHUyLswMTg4CJ/Ph8HBwVxXhYiIpgnbfiKiqZF3YYKIiIiIiCYHwwQREREREWWFYYKIiIiIiLKS0zDxyiuv4LrrrkNtbS2EEPjd7353wmNefvllrFq1Cm63GwsWLMDDDz889RUlIiIiIqIRchomhoaGsHLlSvzgBz8YV/nm5mZcffXV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Ej3jNqDimimvV87DxETGGgesm+ruv/9+/OpXv0J7ezvq6urwjW98A7fddts01pqIiLK1YcMGrF+/HqtXr8batWvx4x//GEeOHMHtt98OwLpEqaWlBY8++qh9zM6dOwEAwWAQXV1d2LlzJ5xOJ04//fRc/AhEM4dQAM1lTbkgTcCIQZg6YMYhzLgVbsz0ydqXuX20bWOUydiuH6d8HDANQOqAqUOaOmAaiXliPTmc8IgwkrYNmaElOR+xL+344cemB5nh5dNm9r7Ushx9HwABEypiw1587F9NRA+OvXMS5TRMTHSscQC46aab0NHRgZ/97GdYtGgROjs7oev6NNeciIiydfPNN6Onpwf3338/2trasGzZMmzatAmNjY0ArIfUHTlyJOOYM888017evn07HnvsMTQ2NuLQoUPTWXUiGk4ogObOdS1GJYbNAVjhJxEuYOqANMZel+Mok17OXjetMslyyXXTGGO/kahXMggZadus/dK0puSyHZKG7UNaGVk+PQEzp8+ZmOhY488//zxuueUWHDx4EH5/djdVcaxxIqL8w7afiGhqnPjZ81MkOdb4lVdembH9eGONP/vss1i9ejW+/e1vY968eTj11FPxv//3/0Y4HB7zfaLRKAKBQMZEREREREQnL2eXOWUz1vjBgwexdetWuN1uPPPMM+ju7sY///M/o7e3Fz//+c9HPYZjjRMRERERTY2c9UwkTWSscdM0IYTAr3/9a5xzzjm4+uqr8W//9m/45S9/OWbvxN13342BgQF7Onr06KT/DERERERE+ShnPRPZjDVeU1ODefPmwefz2duWLFkCKSWOHTuGU045ZcQxHGuciIiIiGhq5KxnIn2s8XSbN2/GeeedN+ox559/PlpbWxEMpoa6+uCDD6AoCurq6qa0vkRERERElCmnlzlt2LABP/3pT/Hzn/8c7733Hr7yla+MGGv8U5/6lF3+E5/4BMrKyvDpT38ae/bswSuvvIJ/+Zd/wW233QaPx5OrH4OIiIiIKC/l9DkTEx1rvLCwEJs3b8Ydd9yB1atXo6ysDDfddBO++c1v5upHICIiIiLKWzl9zkQucKxxIqL8w7afiGhq5Hw0JyIiIiIimp0YJoiIiIiIKCsME0RERERElBWGCSIiIiIiygrDBBERERERZYVhgoiIiIiIssIwQUREREREWWGYICIiIiKirDBMEBERERFRVhgmiIiIiIgoKwwTRERERESUFYYJIiIiIiLKCsMEERERERFlhWGCiIiIiIiywjBBRERERERZYZggIiIiIqKsMEwQEREREVFWGCaIiIiIiCgrDBNERERERJQVhgkiIiIiIsoKwwQREREREWWFYYKIiIiIiLKi5boC001KCQAIBAI5rgkR0cxXVFQEIUSuq3HS2PYTEY3fRNr+vAsTg4ODAID6+voc14SIaOYbGBhAcXFxrqtx0tj2ExGN30TafiGTX9fkCdM00draOqu/bQsEAqivr8fRo0fnxB/5k8FzkcJzYeF5SJmMczGb28p0bPvnDp6HFJ6LFJ6LlOlu+/OuZ0JRFNTV1eW6GpOiuLg47/+HSeK5SOG5sPA8pPBcsO2fi3geUnguUnguUqbrXPAGbCIiIiIiygrDBBERERERZYVhYhZyuVy455574HK5cl2VnOO5SOG5sPA8pPBczC38fVp4HlJ4LlJ4LlKm+1zk3Q3YREREREQ0OdgzQUREREREWWGYICIiIiKirDBMEBERERFRVhgmcuSVV17Bddddh9raWggh8Lvf/S5jv5QS9957L2pra+HxeHDxxRdj9+7dGWWi0SjuuOMOlJeXw+v14iMf+QiOHTuWUaavrw/r16+Hz+eDz+fD+vXr0d/fP8U/3fht3LgRZ599NoqKilBZWYnrr78ee/fuzSiTL+fioYcewooVK+xxodeuXYs//vGP9v58OQ/Dbdy4EUII3Hnnnfa2fDoX9957L4QQGVN1dbW9P5/OxWzHdj+FbX8K2/7R5XPbP+vafUk5sWnTJvmNb3xDPvXUUxKAfOaZZzL2f+tb35JFRUXyqaeekrt27ZI333yzrKmpkYFAwC5z++23y3nz5snNmzfLt99+W15yySVy5cqVUtd1u8yHP/xhuWzZMrlt2za5bds2uWzZMnnttddO1495QldddZX8xS9+Id999125c+dOec0118iGhgYZDAbtMvlyLp599ln53HPPyb1798q9e/fKr3/969LhcMh3331XSpk/5yHdm2++KefPny9XrFghv/zlL9vb8+lc3HPPPXLp0qWyra3Nnjo7O+39+XQuZju2+yls+1PY9o+U723/bGv3GSZmgOF/VEzTlNXV1fJb3/qWvS0SiUifzycffvhhKaWU/f390uFwyN/85jd2mZaWFqkoinz++eellFLu2bNHApCvv/66Xea1116TAOT7778/xT9Vdjo7OyUA+fLLL0sp8/tcSCllaWmp/OlPf5qX52FwcFCecsopcvPmzfKiiy6y/6Dk27m455575MqVK0fdl2/nYi5hu5+JbX8mtv353fbPtnaflznNQM3NzWhvb8eVV15pb3O5XLjooouwbds2AMD27dsRj8czytTW1mLZsmV2mddeew0+nw9r1qyxy5x77rnw+Xx2mZlmYGAAAOD3+wHk77kwDAO/+c1vMDQ0hLVr1+blefjCF76Aa665BpdffnnG9nw8F/v27UNtbS2amppwyy234ODBgwDy81zMVfn+u2Tbb2Hbz7Y/aTa1+1rWPyVNmfb2dgBAVVVVxvaqqiocPnzYLuN0OlFaWjqiTPL49vZ2VFZWjnj9yspKu8xMIqXEhg0b8KEPfQjLli0DkH/nYteuXVi7di0ikQgKCwvxzDPP4PTTT7f/x86X8/Cb3/wGb7/9Nv7617+O2Jdv/ybWrFmDRx99FKeeeio6OjrwzW9+E+eddx52796dd+diLsvn3yXbfrb9SWz7LbOt3WeYmMGEEBnrUsoR24YbXma08uN5nVz44he/iL/97W/YunXriH35ci4WL16MnTt3or+/H0899RRuvfVWvPzyy/b+fDgPR48exZe//GW88MILcLvdY5bLh3MBAOvWrbOXly9fjrVr12LhwoV45JFHcO655wLIn3ORD/Lxd8m2n20/wLY/3Wxr93mZ0wyUvGN/eDLs7Oy0k2h1dTVisRj6+vqOW6ajo2PE63d1dY1ItLl2xx134Nlnn8VLL72Euro6e3u+nQun04lFixZh9erV2LhxI1auXIl///d/z6vzsH37dnR2dmLVqlXQNA2apuHll1/G97//fWiaZtczH87FaLxeL5YvX459+/bl1b+LuS5ff5ds+y1s+9n2H89Mb/cZJmagpqYmVFdXY/Pmzfa2WCyGl19+Geeddx4AYNWqVXA4HBll2tra8O6779pl1q5di4GBAbz55pt2mTfeeAMDAwN2mVyTUuKLX/winn76abz44otoamrK2J9P52I0UkpEo9G8Og+XXXYZdu3ahZ07d9rT6tWr8clPfhI7d+7EggUL8uZcjCYajeK9995DTU1NXv27mOvy7XfJtv/42Paz7U8349v9Cd2uTZNmcHBQ7tixQ+7YsUMCkP/2b/8md+zYIQ8fPiyltIb98vl88umnn5a7du2SH//4x0cd9quurk7++c9/lm+//ba89NJLRx32a8WKFfK1116Tr732mly+fPmMGv7s85//vPT5fPIvf/lLxhBooVDILpMv5+Luu++Wr7zyimxubpZ/+9vf5Ne//nWpKIp84YUXpJT5cx5Gkz6ih5T5dS7uuusu+Ze//EUePHhQvv766/Laa6+VRUVF8tChQ1LK/DoXsx3b/RS2/Sls+8eWr23/bGv3GSZy5KWXXpIARky33nqrlNIa+uuee+6R1dXV0uVyyQsvvFDu2rUr4zXC4bD84he/KP1+v/R4PPLaa6+VR44cySjT09MjP/nJT8qioiJZVFQkP/nJT8q+vr5p+ilPbLRzAED+4he/sMvky7m47bbbZGNjo3Q6nbKiokJedtll9h8TKfPnPIxm+B+UfDoXyfHDHQ6HrK2tlTfeeKPcvXu3vT+fzsVsx3Y/hW1/Ctv+seVr2z/b2n0hpZQT68sgIiIiIiLiPRNERERERJQlhgkiIiIiIsoKwwQREREREWWFYYKIiIiIiLLCMEFERERERFlhmCAiIiIioqwwTBARERERUVYYJoiIiIiIKCsME0RERERElBWGCSIiIiIiygrDBBERERERZUXLdQWI8tnFF1+MFStWwO1246c//SmcTiduv/123HvvvbmuGhERTQG2+zTXsGeCKMceeeQReL1evPHGG/j2t7+N+++/H5s3b851tYiIaIqw3ae5REgpZa4rQZSvLr74YhiGgS1bttjbzjnnHFx66aX41re+lcOaERHRVGC7T3MNeyaIcmzFihUZ6zU1Nejs7MxRbYiIaKqx3ae5hGGCKMccDkfGuhACpmnmqDZERDTV2O7TXMIwQUREREREWWGYICIiIiKirDBMEBERERFRVjiaExERERERZYU9E0RERERElBWGCSIiIiIiygrDBBERERERZYVhgoiIiIiIssIwQUREREREWWGYICIiIiKirDBMEBERERFRVhgmiIiIiIgoKwwTRERERESUFYYJIiIiIiLKCsMEERERERFlhWGCiIiIiIiy8v8DHGeAEDfEZSoAAAAASUVORK5CYII=\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "palette = {\n", - " \"tuned PPI\": \"darkorange\",\n", - " \"PPI\": \"#83C980\",\n", - " \"classical\": \"cornflowerblue\",\n", - "}\n", - "linewidth = 2\n", - "sigmas_to_plot = [sigmas[0], sigmas[-3], sigmas[-1]]\n", - "df_to_plot = df[np.isin(df.sigma, sigmas_to_plot)]\n", - "n_unique_sigmas = len(sigmas_to_plot)\n", - "\n", - "\n", - "fig, axs = plt.subplots(\n", - " nrows=n_unique_sigmas,\n", - " ncols=2,\n", - " figsize=(8, 2 * n_unique_sigmas),\n", - " sharex=True,\n", - " sharey=\"col\",\n", - ")\n", - "for s in range(n_unique_sigmas):\n", - " cvg_ax = axs[s, 0]\n", - " sz_ax = axs[s, 1]\n", - " legend = False if s > 0 else True\n", - " sns.lineplot(\n", - " ax=cvg_ax,\n", - " data=df_to_plot[df_to_plot.sigma == sigmas_to_plot[s]],\n", - " x=\"n\",\n", - " y=\"included\",\n", - " linewidth=linewidth,\n", - " errorbar=None,\n", - " hue=\"method\",\n", - " legend=False,\n", - " palette=palette,\n", - " alpha=0.8,\n", - " )\n", - " sns.lineplot(\n", - " ax=sz_ax,\n", - " data=df_to_plot[df_to_plot.sigma == sigmas_to_plot[s]],\n", - " x=\"n\",\n", - " y=\"width\",\n", - " linewidth=linewidth,\n", - " errorbar=None,\n", - " hue=\"method\",\n", - " legend=legend,\n", - " palette=palette,\n", - " alpha=0.8,\n", - " )\n", - " cvg_ax.set_ylabel(r\"$\\sigma=$\" + str(sigmas_to_plot[s]))\n", - " cvg_ax.set_ylim([0.5, 1.03])\n", - " cvg_ax.axhline(y=1 - alpha, color=\"#888888\", linestyle=\"dotted\")\n", - " cvg_ax.set_xlabel(\"\")\n", - " sz_ax.set_ylabel(\"\")\n", - " sz_ax.set_xlabel(\"\")\n", - " if legend:\n", - " sz_ax.legend_.set_title(None)\n", - "axs[0, 0].set_title(\"coverage\")\n", - "axs[0, 1].set_title(\"width\")\n", - "axs[-1, 0].set_xlabel(\"n\")\n", - "axs[-1, 1].set_xlabel(\"n\")\n", - "sns.despine(top=True, right=True)\n", - "plt.tight_layout()\n", - "os.makedirs(\"./plots\", exist_ok=True)\n", - "plt.savefig(\"./plots/tuned-PPI-ols.pdf\")" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.12" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/examples/eff-ppi/lambda_ols_onestep.ipynb b/examples/eff-ppi/lambda_ols_onestep.ipynb deleted file mode 100644 index e28a319..0000000 --- a/examples/eff-ppi/lambda_ols_onestep.ipynb +++ /dev/null @@ -1,284 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "c1fc1715", - "metadata": {}, - "outputs": [], - "source": [ - "%load_ext autoreload\n", - "%autoreload 2\n", - "import os, sys\n", - "\n", - "sys.path.append(\n", - " os.path.abspath(os.path.join(os.getcwd(), os.pardir, os.pardir))\n", - ")\n", - "import numpy as np\n", - "import pandas as pd\n", - "import matplotlib.pyplot as plt\n", - "import seaborn as sns\n", - "from ppi_py.datasets import load_dataset\n", - "from ppi_py import ppi_ols_ci\n", - "from tqdm import tqdm\n", - "from scipy.optimize import brentq\n", - "from scipy.special import expit\n", - "from tqdm import tqdm" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "debf2d80", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[-0.4913094 -1.23814887]\n" - ] - } - ], - "source": [ - "alpha = 0.1\n", - "ns = np.linspace(500, 5000, 10).astype(\n", - " int\n", - ") # Test for different numbers of labeled examples\n", - "sigmas = [0.1, 0.3, 0.6] # [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 1]\n", - "N = 10000\n", - "num_trials = 100\n", - "d = 2\n", - "epsilon = 1\n", - "coord = 0\n", - "\n", - "theta_star = np.random.randn(d)\n", - "print(theta_star)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "4cd55642", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|███████████████████████████████████████████████████████████████████████████████████████████████| 100/100 [21:18<00:00, 12.79s/it]\n", - "100%|███████████████████████████████████████████████████████████████████████████████████████████████| 100/100 [21:13<00:00, 12.74s/it]\n", - "100%|███████████████████████████████████████████████████████████████████████████████████████████████| 100/100 [21:16<00:00, 12.77s/it]\n" - ] - } - ], - "source": [ - "# Run prediction-powered inference and classical inference for many values of n\n", - "results = []\n", - "for s in range(len(sigmas)):\n", - " sigma = sigmas[s]\n", - " for j in tqdm(range(num_trials)):\n", - " X = np.random.multivariate_normal(np.zeros(d), np.eye(d), ns.max())\n", - " Y = X @ theta_star + epsilon * np.random.normal(0, 1, ns.max())\n", - " Yhat = Y + sigma * np.random.normal(-2, 1, ns.max())\n", - " X_unlabeled = np.random.multivariate_normal(np.zeros(d), np.eye(d), N)\n", - " Y_unlabeled = X_unlabeled @ theta_star + epsilon * np.random.normal(\n", - " 0, 1, N\n", - " )\n", - " Yhat_unlabeled = Y_unlabeled + sigma * np.random.normal(-2, 1, N)\n", - " for i in range(ns.shape[0]):\n", - " n = ns[i]\n", - " _X = X[:n]\n", - " _Y = Y[:n]\n", - " _Yhat = Yhat[:n]\n", - "\n", - " # PPI interval\n", - " ppi_ci = ppi_ols_ci(\n", - " _X, _Y, _Yhat, X_unlabeled, Yhat_unlabeled, alpha=alpha, lhat=1\n", - " )\n", - " ppi_ci_onestep = ppi_ols_ci(\n", - " _X,\n", - " _Y,\n", - " _Yhat,\n", - " X_unlabeled,\n", - " Yhat_unlabeled,\n", - " coord=coord,\n", - " alpha=alpha,\n", - " one_step=True,\n", - " )\n", - " ppi_ci_tuned = ppi_ols_ci(\n", - " _X,\n", - " _Y,\n", - " _Yhat,\n", - " X_unlabeled,\n", - " Yhat_unlabeled,\n", - " coord=coord,\n", - " alpha=alpha,\n", - " )\n", - " # Append results\n", - " results += [\n", - " pd.DataFrame(\n", - " [\n", - " {\n", - " \"method\": \"PPI\",\n", - " \"n\": n,\n", - " \"lower\": ppi_ci[0][coord],\n", - " \"upper\": ppi_ci[1][coord],\n", - " \"included\": (ppi_ci[0][coord] <= theta_star[coord])\n", - " & (ppi_ci[1][coord] >= theta_star[coord]),\n", - " \"trial\": j,\n", - " \"sigma\": sigma,\n", - " }\n", - " ]\n", - " )\n", - " ]\n", - "\n", - " results += [\n", - " pd.DataFrame(\n", - " [\n", - " {\n", - " \"method\": \"one-step PPI\",\n", - " \"n\": n,\n", - " \"lower\": ppi_ci_onestep[0][coord],\n", - " \"upper\": ppi_ci_onestep[1][coord],\n", - " \"included\": (\n", - " ppi_ci_onestep[0][coord] <= theta_star[coord]\n", - " )\n", - " & (ppi_ci_onestep[1][coord] >= theta_star[coord]),\n", - " \"trial\": j,\n", - " \"sigma\": sigma,\n", - " }\n", - " ]\n", - " )\n", - " ]\n", - "\n", - " results += [\n", - " pd.DataFrame(\n", - " [\n", - " {\n", - " \"method\": \"tuned PPI\",\n", - " \"n\": n,\n", - " \"lower\": ppi_ci_tuned[0][coord],\n", - " \"upper\": ppi_ci_tuned[1][coord],\n", - " \"included\": (\n", - " ppi_ci_tuned[0][coord] <= theta_star[coord]\n", - " )\n", - " & (ppi_ci_tuned[1][coord] >= theta_star[coord]),\n", - " \"trial\": j,\n", - " \"sigma\": sigma,\n", - " }\n", - " ]\n", - " )\n", - " ]\n", - "\n", - "df = pd.concat(results, axis=0, ignore_index=True)\n", - "df[\"width\"] = df[\"upper\"] - df[\"lower\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "2c513835", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "palette = {\n", - " \"tuned PPI\": \"darkorange\",\n", - " \"PPI\": \"#83C980\",\n", - " \"one-step PPI\": \"cornflowerblue\",\n", - "}\n", - "linewidth = 2\n", - "sigmas_to_plot = [sigmas[0], sigmas[-2], sigmas[-1]]\n", - "df_to_plot = df[np.isin(df.sigma, sigmas_to_plot)]\n", - "n_unique_sigmas = len(sigmas_to_plot)\n", - "\n", - "\n", - "fig, axs = plt.subplots(\n", - " nrows=n_unique_sigmas,\n", - " ncols=2,\n", - " figsize=(8, 2 * n_unique_sigmas),\n", - " sharex=True,\n", - " sharey=False,\n", - ")\n", - "for s in range(n_unique_sigmas):\n", - " cvg_ax = axs[s, 0]\n", - " sz_ax = axs[s, 1]\n", - " legend = False if s > 0 else True\n", - " sns.lineplot(\n", - " ax=cvg_ax,\n", - " data=df_to_plot[df_to_plot.sigma == sigmas_to_plot[s]],\n", - " x=\"n\",\n", - " y=\"included\",\n", - " linewidth=linewidth,\n", - " errorbar=None,\n", - " hue=\"method\",\n", - " legend=False,\n", - " palette=palette,\n", - " alpha=0.8,\n", - " )\n", - " sns.lineplot(\n", - " ax=sz_ax,\n", - " data=df_to_plot[df_to_plot.sigma == sigmas_to_plot[s]],\n", - " x=\"n\",\n", - " y=\"width\",\n", - " linewidth=linewidth,\n", - " errorbar=None,\n", - " hue=\"method\",\n", - " legend=legend,\n", - " palette=palette,\n", - " alpha=0.8,\n", - " )\n", - " cvg_ax.set_ylabel(r\"$\\sigma=$\" + str(sigmas_to_plot[s]))\n", - " cvg_ax.set_ylim([0.5, 1.03])\n", - " cvg_ax.axhline(y=1 - alpha, color=\"#888888\", linestyle=\"dotted\")\n", - " cvg_ax.set_xlabel(\"\")\n", - " sz_ax.set_ylabel(\"\")\n", - " sz_ax.set_xlabel(\"\")\n", - " if legend:\n", - " sz_ax.legend_.set_title(None)\n", - "axs[0, 0].set_title(\"coverage\")\n", - "axs[0, 1].set_title(\"width\")\n", - "axs[-1, 0].set_xlabel(\"n\")\n", - "axs[-1, 1].set_xlabel(\"n\")\n", - "sns.despine(top=True, right=True)\n", - "plt.tight_layout()\n", - "os.makedirs(\"./plots\", exist_ok=True)\n", - "plt.savefig(\"./plots/onestep-PPI-ols.pdf\")" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.12" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/examples/eff-ppi/lamda_logistic.ipynb b/examples/eff-ppi/lamda_logistic.ipynb deleted file mode 100644 index 257cbe8..0000000 --- a/examples/eff-ppi/lamda_logistic.ipynb +++ /dev/null @@ -1,307 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "c1fc1715", - "metadata": {}, - "outputs": [], - "source": [ - "%load_ext autoreload\n", - "%autoreload 2\n", - "import os, sys\n", - "\n", - "sys.path.append(\n", - " os.path.abspath(os.path.join(os.getcwd(), os.pardir, os.pardir))\n", - ")\n", - "import numpy as np\n", - "import pandas as pd\n", - "import matplotlib.pyplot as plt\n", - "import seaborn as sns\n", - "from ppi_py.datasets import load_dataset\n", - "from ppi_py import ppi_logistic_ci\n", - "from tqdm import tqdm\n", - "from scipy.optimize import brentq\n", - "from scipy.special import expit\n", - "from scipy.stats import bernoulli\n", - "from tqdm import tqdm\n", - "import pdb" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "debf2d80", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1, 1]\n" - ] - } - ], - "source": [ - "alpha = 0.1\n", - "ns = np.linspace(200, 1000, 10).astype(\n", - " int\n", - ") # Test for different numbers of labeled examples\n", - "N = 10000\n", - "num_trials = 100\n", - "d = 2\n", - "coord = 0\n", - "optimizer_options = {\n", - " \"ftol\": 1e-5,\n", - " \"gtol\": 1e-5,\n", - " \"maxls\": 10000,\n", - " \"maxiter\": 10000,\n", - "}\n", - "sigmas = [1e-2, 1e-1, 2e-1]\n", - "\n", - "theta_star = [1, 1]\n", - "print(theta_star)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "4cd55642", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|█████████████████████████████████████████████████████████████████████████████████| 100/100 [17:37<00:00, 10.57s/it]\n", - "100%|█████████████████████████████████████████████████████████████████████████████████| 100/100 [25:35<00:00, 15.36s/it]\n", - "100%|█████████████████████████████████████████████████████████████████████████████████| 100/100 [37:29<00:00, 22.49s/it]\n" - ] - } - ], - "source": [ - "# Run prediction-powered inference and classical inference for many values of n\n", - "results = []\n", - "for s in range(len(sigmas)):\n", - " sigma = sigmas[s]\n", - " for j in tqdm(range(num_trials)):\n", - " X = np.random.multivariate_normal(np.zeros(d), np.eye(d), ns.max())\n", - " s = X @ theta_star\n", - " Y = bernoulli.rvs(expit(s))\n", - " corruption = np.random.binomial(1, sigma, size=ns.max())\n", - " Yhat = Y * (1 - corruption) + (1 - Y) * corruption\n", - " X_unlabeled = np.random.multivariate_normal(np.zeros(d), np.eye(d), N)\n", - " s_unlabeled = X_unlabeled @ theta_star\n", - " Y_unlabeled = bernoulli.rvs(expit(s_unlabeled))\n", - " corruption_unlabeled = np.random.binomial(1, sigma, size=N)\n", - " Yhat_unlabeled = (\n", - " Y_unlabeled * (1 - corruption_unlabeled)\n", - " + (1 - Y_unlabeled) * corruption_unlabeled\n", - " )\n", - " for i in range(ns.shape[0]):\n", - " try:\n", - " n = ns[i]\n", - " _X = X[:n]\n", - " _Y = Y[:n]\n", - " _Yhat = Yhat[:n]\n", - "\n", - " # PPI interval\n", - " ppi_ci_tuned = ppi_logistic_ci(\n", - " _X,\n", - " _Y,\n", - " _Yhat,\n", - " X_unlabeled,\n", - " Yhat_unlabeled,\n", - " alpha=alpha,\n", - " coord=coord,\n", - " optimizer_options=optimizer_options,\n", - " )\n", - " ppi_ci = ppi_logistic_ci(\n", - " _X,\n", - " _Y,\n", - " _Yhat,\n", - " X_unlabeled,\n", - " Yhat_unlabeled,\n", - " alpha=alpha,\n", - " lhat=1,\n", - " optimizer_options=optimizer_options,\n", - " )\n", - " classical_ci = ppi_logistic_ci(\n", - " _X,\n", - " _Y,\n", - " _Yhat,\n", - " X_unlabeled,\n", - " Yhat_unlabeled,\n", - " alpha=alpha,\n", - " lhat=0,\n", - " optimizer_options=optimizer_options,\n", - " )\n", - " except:\n", - " continue\n", - " # Append results\n", - " results += [\n", - " pd.DataFrame(\n", - " [\n", - " {\n", - " \"method\": \"PPI\",\n", - " \"n\": n,\n", - " \"lower\": ppi_ci[0][coord],\n", - " \"upper\": ppi_ci[1][coord],\n", - " \"included\": (ppi_ci[0][coord] <= theta_star[coord])\n", - " & (ppi_ci[1][coord] >= theta_star[coord]),\n", - " \"trial\": j,\n", - " \"sigma\": sigma,\n", - " }\n", - " ]\n", - " )\n", - " ]\n", - "\n", - " results += [\n", - " pd.DataFrame(\n", - " [\n", - " {\n", - " \"method\": \"classical\",\n", - " \"n\": n,\n", - " \"lower\": classical_ci[0][coord],\n", - " \"upper\": classical_ci[1][coord],\n", - " \"included\": (\n", - " classical_ci[0][coord] <= theta_star[coord]\n", - " )\n", - " & (classical_ci[1][coord] >= theta_star[coord]),\n", - " \"trial\": j,\n", - " \"sigma\": sigma,\n", - " }\n", - " ]\n", - " )\n", - " ]\n", - "\n", - " results += [\n", - " pd.DataFrame(\n", - " [\n", - " {\n", - " \"method\": \"tuned PPI\",\n", - " \"n\": n,\n", - " \"lower\": ppi_ci_tuned[0][coord],\n", - " \"upper\": ppi_ci_tuned[1][coord],\n", - " \"included\": (\n", - " ppi_ci_tuned[0][coord] <= theta_star[coord]\n", - " )\n", - " & (ppi_ci_tuned[1][coord] >= theta_star[coord]),\n", - " \"trial\": j,\n", - " \"sigma\": sigma,\n", - " }\n", - " ]\n", - " )\n", - " ]\n", - "\n", - "df = pd.concat(results, axis=0, ignore_index=True)\n", - "df[\"width\"] = df[\"upper\"] - df[\"lower\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "2c513835", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "palette = {\n", - " \"tuned PPI\": \"darkorange\",\n", - " \"PPI\": \"#83C980\",\n", - " \"classical\": \"cornflowerblue\",\n", - "}\n", - "linewidth = 2\n", - "sigmas_to_plot = [sigmas[0], sigmas[1], sigmas[2]]\n", - "df_to_plot = df[np.isin(df.sigma, sigmas_to_plot)]\n", - "n_unique_sigmas = len(sigmas_to_plot)\n", - "\n", - "\n", - "fig, axs = plt.subplots(\n", - " nrows=n_unique_sigmas,\n", - " ncols=2,\n", - " figsize=(8, 2 * n_unique_sigmas),\n", - " sharex=True,\n", - " sharey=\"col\",\n", - ")\n", - "for s in range(n_unique_sigmas):\n", - " cvg_ax = axs[s, 0]\n", - " sz_ax = axs[s, 1]\n", - " legend = False if s > 0 else True\n", - " sns.lineplot(\n", - " ax=cvg_ax,\n", - " data=df_to_plot[df_to_plot.sigma == sigmas_to_plot[s]],\n", - " x=\"n\",\n", - " y=\"included\",\n", - " linewidth=linewidth,\n", - " errorbar=None,\n", - " hue=\"method\",\n", - " legend=False,\n", - " palette=palette,\n", - " alpha=0.8,\n", - " )\n", - " sns.lineplot(\n", - " ax=sz_ax,\n", - " data=df_to_plot[df_to_plot.sigma == sigmas_to_plot[s]],\n", - " x=\"n\",\n", - " y=\"width\",\n", - " linewidth=linewidth,\n", - " errorbar=None,\n", - " hue=\"method\",\n", - " legend=legend,\n", - " palette=palette,\n", - " alpha=0.8,\n", - " )\n", - " cvg_ax.set_ylabel(r\"$\\sigma=$\" + str(sigmas_to_plot[s]))\n", - " cvg_ax.set_ylim([0.5, 1.03])\n", - " cvg_ax.axhline(y=1 - alpha, color=\"#888888\", linestyle=\"dotted\")\n", - " cvg_ax.set_xlabel(\"\")\n", - " sz_ax.set_ylabel(\"\")\n", - " sz_ax.set_xlabel(\"\")\n", - " if legend:\n", - " sz_ax.legend_.set_title(None)\n", - "axs[0, 0].set_title(\"coverage\")\n", - "axs[0, 1].set_title(\"width\")\n", - "axs[-1, 0].set_xlabel(\"n\")\n", - "axs[-1, 1].set_xlabel(\"n\")\n", - "sns.despine(top=True, right=True)\n", - "plt.tight_layout()\n", - "os.makedirs(\"./plots\", exist_ok=True)\n", - "plt.savefig(\"./plots/tuned-PPI-logistic.pdf\")" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.12" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/examples/eff-ppi/lamda_logistic_onestep.ipynb b/examples/eff-ppi/lamda_logistic_onestep.ipynb deleted file mode 100644 index 3840803..0000000 --- a/examples/eff-ppi/lamda_logistic_onestep.ipynb +++ /dev/null @@ -1,305 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "c1fc1715", - "metadata": {}, - "outputs": [], - "source": [ - "%load_ext autoreload\n", - "%autoreload 2\n", - "import os, sys\n", - "\n", - "sys.path.append(\n", - " os.path.abspath(os.path.join(os.getcwd(), os.pardir, os.pardir))\n", - ")\n", - "import numpy as np\n", - "import pandas as pd\n", - "import matplotlib.pyplot as plt\n", - "import seaborn as sns\n", - "from ppi_py.datasets import load_dataset\n", - "from ppi_py import ppi_logistic_ci\n", - "from tqdm import tqdm\n", - "from scipy.optimize import brentq\n", - "from scipy.special import expit\n", - "from scipy.stats import bernoulli\n", - "from tqdm import tqdm\n", - "import pdb" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "debf2d80", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1, 1]\n" - ] - } - ], - "source": [ - "alpha = 0.1\n", - "ns = np.linspace(100, 1000, 3).astype(\n", - " int\n", - ") # Test for different numbers of labeled examples\n", - "N = 10000\n", - "num_trials = 100\n", - "d = 2\n", - "coord = 0\n", - "optimizer_options = {\n", - " \"ftol\": 1e-5,\n", - " \"gtol\": 1e-5,\n", - " \"maxls\": 10000,\n", - " \"maxiter\": 10000,\n", - "}\n", - "sigmas = [1e-2, 1e-1, 2e-1]\n", - "\n", - "theta_star = [1, 1]\n", - "print(theta_star)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "4cd55642", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|█████████████████████████████████████████████████████████████████████████████████| 100/100 [18:48<00:00, 11.28s/it]\n", - "100%|█████████████████████████████████████████████████████████████████████████████████| 100/100 [17:51<00:00, 10.72s/it]\n", - "100%|█████████████████████████████████████████████████████████████████████████████████| 100/100 [18:27<00:00, 11.07s/it]\n" - ] - } - ], - "source": [ - "# Run prediction-powered inference and classical inference for many values of n\n", - "results = []\n", - "for s in range(len(sigmas)):\n", - " sigma = sigmas[s]\n", - " for j in tqdm(range(num_trials)):\n", - " X = np.random.multivariate_normal(np.zeros(d), np.eye(d), ns.max())\n", - " s = X @ theta_star\n", - " Y = bernoulli.rvs(expit(s))\n", - " corruption = np.random.binomial(1, sigma, size=ns.max())\n", - " Yhat = Y * (1 - corruption) + (1 - Y) * corruption\n", - " X_unlabeled = np.random.multivariate_normal(np.zeros(d), np.eye(d), N)\n", - " s_unlabeled = X_unlabeled @ theta_star\n", - " Y_unlabeled = bernoulli.rvs(expit(s_unlabeled))\n", - " corruption_unlabeled = np.random.binomial(1, sigma, size=N)\n", - " Yhat_unlabeled = (\n", - " Y_unlabeled * (1 - corruption_unlabeled)\n", - " + (1 - Y_unlabeled) * corruption_unlabeled\n", - " )\n", - " for i in range(ns.shape[0]):\n", - " n = ns[i]\n", - " _X = X[:n]\n", - " _Y = Y[:n]\n", - " _Yhat = Yhat[:n]\n", - "\n", - " # PPI interval\n", - " ppi_ci_tuned = ppi_logistic_ci(\n", - " _X,\n", - " _Y,\n", - " _Yhat,\n", - " X_unlabeled,\n", - " Yhat_unlabeled,\n", - " alpha=alpha,\n", - " coord=coord,\n", - " optimizer_options=optimizer_options,\n", - " )\n", - " ppi_ci = ppi_logistic_ci(\n", - " _X,\n", - " _Y,\n", - " _Yhat,\n", - " X_unlabeled,\n", - " Yhat_unlabeled,\n", - " alpha=alpha,\n", - " lhat=1,\n", - " optimizer_options=optimizer_options,\n", - " )\n", - " ppi_ci_onestep = ppi_logistic_ci(\n", - " _X,\n", - " _Y,\n", - " _Yhat,\n", - " X_unlabeled,\n", - " Yhat_unlabeled,\n", - " alpha=alpha,\n", - " optimizer_options=optimizer_options,\n", - " one_step=True,\n", - " )\n", - "\n", - " # Append results\n", - " results += [\n", - " pd.DataFrame(\n", - " [\n", - " {\n", - " \"method\": \"PPI\",\n", - " \"n\": n,\n", - " \"lower\": ppi_ci[0][coord],\n", - " \"upper\": ppi_ci[1][coord],\n", - " \"included\": (ppi_ci[0][coord] <= theta_star[coord])\n", - " & (ppi_ci[1][coord] >= theta_star[coord]),\n", - " \"trial\": j,\n", - " \"sigma\": sigma,\n", - " }\n", - " ]\n", - " )\n", - " ]\n", - "\n", - " results += [\n", - " pd.DataFrame(\n", - " [\n", - " {\n", - " \"method\": \"one-step PPI\",\n", - " \"n\": n,\n", - " \"lower\": ppi_ci_onestep[0][coord],\n", - " \"upper\": ppi_ci_onestep[1][coord],\n", - " \"included\": (\n", - " ppi_ci_onestep[0][coord] <= theta_star[coord]\n", - " )\n", - " & (ppi_ci_onestep[1][coord] >= theta_star[coord]),\n", - " \"trial\": j,\n", - " \"sigma\": sigma,\n", - " }\n", - " ]\n", - " )\n", - " ]\n", - "\n", - " results += [\n", - " pd.DataFrame(\n", - " [\n", - " {\n", - " \"method\": \"tuned PPI\",\n", - " \"n\": n,\n", - " \"lower\": ppi_ci_tuned[0][coord],\n", - " \"upper\": ppi_ci_tuned[1][coord],\n", - " \"included\": (\n", - " ppi_ci_tuned[0][coord] <= theta_star[coord]\n", - " )\n", - " & (ppi_ci_tuned[1][coord] >= theta_star[coord]),\n", - " \"trial\": j,\n", - " \"sigma\": sigma,\n", - " }\n", - " ]\n", - " )\n", - " ]\n", - "\n", - "df = pd.concat(results, axis=0, ignore_index=True)\n", - "df[\"width\"] = df[\"upper\"] - df[\"lower\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "2c513835", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "palette = {\n", - " \"tuned PPI\": \"darkorange\",\n", - " \"PPI\": \"#83C980\",\n", - " \"one-step PPI\": \"cornflowerblue\",\n", - "}\n", - "linewidth = 2\n", - "sigmas_to_plot = [sigmas[0], sigmas[1], sigmas[2]]\n", - "df_to_plot = df[np.isin(df.sigma, sigmas_to_plot)]\n", - "n_unique_sigmas = len(sigmas_to_plot)\n", - "\n", - "\n", - "fig, axs = plt.subplots(\n", - " nrows=n_unique_sigmas,\n", - " ncols=2,\n", - " figsize=(8, 2 * n_unique_sigmas),\n", - " sharex=True,\n", - " sharey=\"col\",\n", - ")\n", - "for s in range(n_unique_sigmas):\n", - " cvg_ax = axs[s, 0]\n", - " sz_ax = axs[s, 1]\n", - " legend = False if s > 0 else True\n", - " sns.lineplot(\n", - " ax=cvg_ax,\n", - " data=df_to_plot[df_to_plot.sigma == sigmas_to_plot[s]],\n", - " x=\"n\",\n", - " y=\"included\",\n", - " linewidth=linewidth,\n", - " errorbar=None,\n", - " hue=\"method\",\n", - " legend=False,\n", - " palette=palette,\n", - " alpha=0.8,\n", - " )\n", - " sns.lineplot(\n", - " ax=sz_ax,\n", - " data=df_to_plot[df_to_plot.sigma == sigmas_to_plot[s]],\n", - " x=\"n\",\n", - " y=\"width\",\n", - " linewidth=linewidth,\n", - " errorbar=None,\n", - " hue=\"method\",\n", - " legend=legend,\n", - " palette=palette,\n", - " alpha=0.8,\n", - " )\n", - " cvg_ax.set_ylabel(r\"$\\sigma=$\" + str(sigmas_to_plot[s]))\n", - " cvg_ax.set_ylim([0.5, 1.03])\n", - " cvg_ax.axhline(y=1 - alpha, color=\"#888888\", linestyle=\"dotted\")\n", - " cvg_ax.set_xlabel(\"\")\n", - " sz_ax.set_ylabel(\"\")\n", - " sz_ax.set_xlabel(\"\")\n", - " if legend:\n", - " sz_ax.legend_.set_title(None)\n", - "axs[0, 0].set_title(\"coverage\")\n", - "axs[0, 1].set_title(\"width\")\n", - "axs[-1, 0].set_xlabel(\"n\")\n", - "axs[-1, 1].set_xlabel(\"n\")\n", - "sns.despine(top=True, right=True)\n", - "plt.tight_layout()\n", - "os.makedirs(\"./plots\", exist_ok=True)\n", - "plt.savefig(\"./plots/onestep-PPI-logistic.pdf\")" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.12" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/examples/eff-ppi/plots/census_healthcare_tuned.pdf b/examples/eff-ppi/plots/census_healthcare_tuned.pdf deleted file mode 100644 index a24c315035b272b4868e95628e7140044b503a45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11878 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 a&C>4^3NoF^TCQjm34}aSQhHnU5&sYBR6(Br diff --git a/examples/eff-ppi/plots/census_income_tuned.pdf b/examples/eff-ppi/plots/census_income_tuned.pdf deleted file mode 100644 index 2dbb927f86d243a949e76c44d1012ce7b621d3b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11798 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 diff --git a/examples/eff-ppi/plots/onestep-PPI-logistic.pdf b/examples/eff-ppi/plots/onestep-PPI-logistic.pdf deleted file mode 100644 index 41b4398d851fe336fa61728412f0720bcdce463b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15829 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 P28+N#goRa)szLr2+*^Of diff --git a/examples/eff-ppi/plots/onestep-PPI-mean.pdf b/examples/eff-ppi/plots/onestep-PPI-mean.pdf deleted file mode 100644 index 82cd3e051cf28c6205dfa0a8003a2aad95bde898..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16264 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 hwUM)rJyFFI2+5G45Rp{K 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 Pj5rzv;pbP>P=fp~#woTO diff --git a/examples/eff-ppi/plots/tuned-PPI-alphafold.pdf b/examples/eff-ppi/plots/tuned-PPI-alphafold.pdf deleted file mode 100644 index 7f6705d758b53b0983080895d2c31881a7585a56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12725 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 HbrJsqY5$Pc diff --git a/examples/eff-ppi/plots/tuned-PPI-galaxies.pdf b/examples/eff-ppi/plots/tuned-PPI-galaxies.pdf deleted file mode 100644 index eba05359c747098140ae77daf82e797cd345c0c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12037 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 diff --git a/examples/eff-ppi/plots/tuned-PPI-logistic.pdf b/examples/eff-ppi/plots/tuned-PPI-logistic.pdf deleted file mode 100644 index 5e5153c30724a53594dcbc8ed473ad461bf8388b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15930 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 diff --git a/examples/eff-ppi/plots/tuned-PPI-mean.pdf b/examples/eff-ppi/plots/tuned-PPI-mean.pdf deleted file mode 100644 index 8e165bd9e358f3f93e1c7702c1763c75f0fd5015..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16189 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 Z3xz8QPb86-2?PcK$3X-Hl(khL{|mEFrP%-g diff --git a/examples/eff-ppi/plots/tuned-PPI-ols.pdf b/examples/eff-ppi/plots/tuned-PPI-ols.pdf deleted file mode 100644 index 59c0a29f570c30d1f08a2135cdf90af0e4e68b80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16607 zcmeHv2{cvF_rF5&jG0Oq9zujSKb|Rbgp461&#X-GC?vDUR7fe6DG{NFh{%{Iq|8#8 zOJoR@_@Dcv(eGR9_y7IZf35%eKkIbPJ$Ijb_St9Ov-dvda}(56Q4>c=U}1u}eej$z z7z&PryILKA$;!eJhTd+raD+0EM09esha+@}_O>2yG$7E2%ge)TU2Gsish=9Cxw??x z7%~CEM91ogtu+ZQxq7L3g0$CwL?qe5v8xrjL=wr?-35+=E@21*2cnImi#;6w?XJ74 zwSg@OZU(wlQ3I^lo*=;y8qR z8jJ_xUmuRpwzY92D!HBjJtDy$P7)8tV$kqIFoZG~6lm!IC#+H`y12N4D-=Zbvml_` zYm(Elb+IQoz)|0NQ*(3zV}&EsoPYpSY^_~wY$29CNba^oXV{74Ix}q#u97VkE%_JI zPcny0#VRuzvE`&`Iz5f|pR%x)Z;c*iJdTTcBYLUNLTvj92U6uJ z8K3z#pYuzMJNG;|DZl*naeva%h`i;R0D(|HD7kIp*OUsx>V#9CDFDxF#MGxPVg zpT2O_e+5rp$=LFsu2m-L1Yt4b4yW_9sLILKkt~u|JtEW0Zbo{4=D6~^Chz?+PrQRY zEwx3h4}4HaCvqS4U=-6*D>BWQ9jch zm%rHcc=48_Q}0=p)7rKB$&b7|dMme%XjU%b~$VGRA{j92K#~2IwU_~(XF@I zP)?SSzgI?cu9U);qs2U&>}`(jeEX57j)IECl(t%E>2C?EKZp1?R*lG|6w+1 zY1;+nG*vS$-N&3+RxHX>4hCuay9O5roAffz@!7CfFbYOXu=mYQ6tS1I3+4ydJtZY? zGM2xtK016y&**XrU3V|LZF^M=^X{%w?ge`fu!Q;EDe)Dp7jR0LC#cLs3NCW7K53E2 z;o^-#cU$*fspvPk{q*(64>gO!+wNOwhZB0Jq9`eDT{MVdukOhhYu`!~E3nx{C&pQC zC0k?C#aZ9|+OA`#0E)va>=@&{OW9qmM6r60s3gCw^*D&ci4=Cj+;tnmFQb6P3Ms&mMFfrYB& z5jcE%S;;2@dtH7uIotFhmFoKNO?Gw1==66wIqiBQc|zk%$Snrd*9TA

n-XPxMaJ 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 Qy#2;m;C89;z$EYMWQ6(ryRDiNA+_tw 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 odds_ratio),\n", - " \"trial\": j,\n", - " }\n", - " ]\n", - " )\n", - " ]\n", - " results += [\n", - " pd.DataFrame(\n", - " [\n", - " {\n", - " \"method\": \"tuned PPI\",\n", - " \"n\": n,\n", - " \"lower\": ppi_odds_ratio_ci_tuned[0],\n", - " \"upper\": ppi_odds_ratio_ci_tuned[1],\n", - " \"included\": (ppi_odds_ratio_ci_tuned[0] <= odds_ratio)\n", - " & (ppi_odds_ratio_ci_tuned[1] >= odds_ratio),\n", - " \"trial\": j,\n", - " }\n", - " ]\n", - " )\n", - " ]\n", - " results += [\n", - " pd.DataFrame(\n", - " [\n", - " {\n", - " \"method\": \"classical\",\n", - " \"n\": n,\n", - " \"lower\": classical_odds_ratio_ci[0],\n", - " \"upper\": classical_odds_ratio_ci[1],\n", - " \"included\": (classical_odds_ratio_ci[0] <= odds_ratio)\n", - " & (classical_odds_ratio_ci[1] >= odds_ratio),\n", - " \"trial\": j,\n", - " }\n", - " ]\n", - " )\n", - " ]\n", - "\n", - "df = pd.concat(results, axis=0, ignore_index=True)\n", - "df[\"width\"] = df[\"upper\"] - df[\"lower\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "fbe807d2", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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qVGTYpvrZMWKFSb7t22l1IRRUj+FC1XXbNjTw9qN3QBcep6fa5cFdbqGIrN9+3YWL15c6GyUhCG+yxH/QRTdYymllCplK87187GVIRwH/ri7h0df6eL4KX2TSuWura2N++67b1zudfXVVzPYLwFXX301CxcuZNmyZVxxxRWZR/TDpefzl4mcghsRCYnI10XkQXf/PBG5MW+5UEoplfG+Bh+3fiBM0C/sO57kwd928syb3URjOuCfGtl4BjfDWbNmDW+//Taf/vSnueeee0ZMz6dcW27+A4gD73f3m4B/HJMcKaWUYsE0L59bXc4l5/oB2Li3h397tpPXdsRJpoqrO4EaX1/5yld49913ufDCC7nnnnt46aWXuPHGvvaIu+++m4cffhiAefPm8Y1vfIOLLrqIpUuXsmPHDgCi0Sh/8Rd/wSWXXMLy5cszL490d3dz66230tjYyC233EJ3d/eI+bnqqqsyL1Pkkp4PuXYoPscYc4uIfBLAGNMt2stNKaXGVCjgcP3yMi46x8+Lb8fY816SdVtivLW3h2sagyya5dUOxxPdT1eMzXU/NfQjnG9961ts3bo187bnSy+9NOyl6uvreeutt7jvvvv4zne+ww9/+EPuvfdeVq1axUMPPURbWxuXXnop1157LT/4wQ8IhUJs3ryZzZs3c9FFF42Y1aeffpqlS5fmnJ4PuQY3PSJShjuip4icg23JUUopNcamVHq49cow776X4LdvxznZnuLxP3TRUO/lw8uCzKj1FDqLqojddNNNAFx88cX88pd2DMznn3+ep556iu985zsAxGIxDh48yCuvvMIXvvAFABobG2lsbBzyurfffjtlZWXMmzeP73//+yOm51Ouwc03gLXAHBFZgx1X4o4xyZFSSqlBnTPdx/ypXjbuS/DythgHTyb50YudNM718aGlQSrK9B2RCWeYFpbx4vV6Saf7+mvFYrF+xwOBAAAej4dk0o6SbYzh8ccfZ+HChaddL9fWwjVr1rBixektV0Ol51NO/xKMMb8FbsIGNI8CK4wxL41dtpRSSg3GcYSLz/HzudUVXHZ+AMeBzQcS3PdsJ6+8EyOR1P44k11FRQUdHR2Z/blz5/LOO+8Qj8c5deoUL7744ojXuP766/n+979P73AxGzduBGw/mTVr1gCwdetWNm/ePAYlOHu5vi11ETAXOIqdj6VBRM4R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\n", - "text/plain": [ - "

" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "palette = {\n", - " \"tuned PPI\": \"darkorange\",\n", - " \"PPI\": \"#83C980\",\n", - " \"classical\": \"cornflowerblue\",\n", - "}\n", - "linewidth = 2\n", - "\n", - "fig, axs = plt.subplots(nrows=1, ncols=2, figsize=(8, 2), sharex=True)\n", - "cvg_ax = axs[0]\n", - "sz_ax = axs[1]\n", - "sns.lineplot(\n", - " ax=cvg_ax,\n", - " data=df,\n", - " x=\"n\",\n", - " y=\"included\",\n", - " linewidth=linewidth,\n", - " errorbar=None,\n", - " hue=\"method\",\n", - " legend=False,\n", - " palette=palette,\n", - " alpha=0.8,\n", - ")\n", - "sns.lineplot(\n", - " ax=sz_ax,\n", - " data=df,\n", - " x=\"n\",\n", - " y=\"width\",\n", - " linewidth=linewidth,\n", - " errorbar=None,\n", - " hue=\"method\",\n", - " legend=True,\n", - " palette=palette,\n", - " alpha=0.8,\n", - ")\n", - "cvg_ax.set_ylabel(\"coverage\")\n", - "cvg_ax.set_ylim([0.5, 1.03])\n", - "cvg_ax.axhline(y=1 - alpha, color=\"#888888\", linestyle=\"dotted\")\n", - "cvg_ax.set_xlabel(\"n\")\n", - "sz_ax.set_ylabel(\"width\")\n", - "sz_ax.legend_.set_title(None)\n", - "sns.despine(top=True, right=True)\n", - "plt.tight_layout()\n", - "os.makedirs(\"./plots\", exist_ok=True)\n", - "plt.savefig(\"./plots/tuned-PPI-alphafold.pdf\")" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.12" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/examples/eff-ppi/tuned-forest.ipynb b/examples/eff-ppi/tuned-forest.ipynb deleted file mode 100644 index ffe1ae3..0000000 --- a/examples/eff-ppi/tuned-forest.ipynb +++ /dev/null @@ -1,284 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "9cacba7c-b3e3-4b6d-a0c0-c0d396cb4faa", - "metadata": {}, - "source": [ - "# Estimating deforestation in the Amazon\n", - "\n", - "The goal is to estimate the fraction of the Amazon rainforest lost between 2000 and 2015. The data contains gold-standard deforestation labels for parcels that were collected through field visits (1), as well as predictions of forest cover based on applying computer vision to satellite imagery (2).\n", - "\n", - "1. E. L. Bullock, C. E. Woodcock, C. Souza Jr, P. Olofsson, Satellite‐based estimates reveal widespread forest degradation in the Amazon. Global Change Biology 26(5), 2956–2969 (2020).\n", - "2. J. O. Sexton, J. X-P. Song, M. Feng, P. Noojipady, A. Anand, C. Huang, D-H. Kim, K. M. Collins, S. Channan, C. DiMiceli, J. R. Townshend, Global, 30-m resolution continuous fields of tree cover: Landsat-based rescaling of MODIS vegetation continuous fields with lidar-based estimates of error. International Journal of Digital Earth 6(5), 427–448 (2013)." - ] - }, - { - "cell_type": "markdown", - "id": "684efc31-fc6e-43e7-9522-bd38ad45afe1", - "metadata": {}, - "source": [ - "### Import necessary packages" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "df3bad0d-8280-4d3b-9950-e456d8dc7328", - "metadata": {}, - "outputs": [], - "source": [ - "%load_ext autoreload\n", - "%autoreload 2\n", - "import os, sys\n", - "\n", - "sys.path.append(os.path.abspath(os.path.join(os.getcwd(), os.pardir)))\n", - "import numpy as np\n", - "import pandas as pd\n", - "from ppi_py.datasets import load_dataset\n", - "from ppi_py import ppi_mean_ci, classical_mean_ci\n", - "from tqdm import tqdm\n", - "from scipy.optimize import brentq\n", - "from utils import *" - ] - }, - { - "cell_type": "markdown", - "id": "5cf90ae6", - "metadata": {}, - "source": [ - "### Import the forest data set\n", - "\n", - "Load the data. The data set contains gold-standard deforestation labels (```Y```) and predicted deforestation labels (```Yhat```)." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "a6da3138", - "metadata": {}, - "outputs": [], - "source": [ - "dataset_folder = \"../data/\"\n", - "data = load_dataset(dataset_folder, \"forest\")\n", - "Y_total = data[\"Y\"]\n", - "Yhat_total = data[\"Yhat\"]" - ] - }, - { - "cell_type": "markdown", - "id": "8969f9db", - "metadata": {}, - "source": [ - "### Problem setup\n", - "\n", - "Specify the error level (```alpha```), range of values for the labeled data set size (```ns```), and number of trials (```num_trials```).\n", - "\n", - "Compute the ground-truth value of the estimand." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "5b3c8f29", - "metadata": {}, - "outputs": [], - "source": [ - "alpha = 0.1\n", - "n_total = Y_total.shape[0] # Total number of labeled examples\n", - "ns = np.linspace(200, 1000, 10).astype(\n", - " int\n", - ") # Test for different numbers of labeled examples\n", - "num_trials = 100\n", - "\n", - "# True mean (computed on all labels)\n", - "true_theta = Y_total.mean()" - ] - }, - { - "cell_type": "markdown", - "id": "83ce18be", - "metadata": {}, - "source": [ - "### Construct intervals\n", - "\n", - "Form confidence intervals for all methods and problem parameters. A dataframe with the following columns is formed:\n", - "1. ```method``` (one of ```PPI```, ```Classical```, and ```tuned PPI```)\n", - "2. ```n``` (labeled data set size, takes values in ```ns```)\n", - "3. ```lower``` (lower endpoint of the confidence interval)\n", - "4. ```upper``` (upper endpoint of the confidence interval)\n", - "5. ```trial``` (index of trial, goes from ```0``` to ```num_trials-1```)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "812f8fd5", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|███████████████████████████████████████████| 10/10 [00:09<00:00, 1.04it/s]\n" - ] - } - ], - "source": [ - "# Run prediction-powered inference and classical inference for many values of n\n", - "results = []\n", - "for i in tqdm(range(ns.shape[0])):\n", - " for j in range(num_trials):\n", - " # Prediction-Powered Inference\n", - " n = ns[i]\n", - " rand_idx = np.random.permutation(n_total)\n", - " _Yhat = Yhat_total[rand_idx[:n]]\n", - " _Y = Y_total[rand_idx[:n]]\n", - " _Yhat_unlabeled = Yhat_total[n:]\n", - "\n", - " ppi_ci = ppi_mean_ci(_Y, _Yhat, _Yhat_unlabeled, lhat=1, alpha=alpha)\n", - " ppi_ci_tuned = ppi_mean_ci(_Y, _Yhat, _Yhat_unlabeled, alpha=alpha)\n", - "\n", - " # Classical interval\n", - " classical_ci = classical_mean_ci(_Y, alpha=alpha)\n", - "\n", - " # Append results\n", - " results += [\n", - " pd.DataFrame(\n", - " [\n", - " {\n", - " \"method\": \"PPI\",\n", - " \"n\": n,\n", - " \"lower\": ppi_ci[0],\n", - " \"upper\": ppi_ci[1],\n", - " \"included\": (ppi_ci[0] <= true_theta)\n", - " & (ppi_ci[1] >= true_theta),\n", - " \"trial\": j,\n", - " }\n", - " ]\n", - " )\n", - " ]\n", - " results += [\n", - " pd.DataFrame(\n", - " [\n", - " {\n", - " \"method\": \"tuned PPI\",\n", - " \"n\": n,\n", - " \"lower\": ppi_ci_tuned[0],\n", - " \"upper\": ppi_ci_tuned[1],\n", - " \"included\": (ppi_ci_tuned[0] <= true_theta)\n", - " & (ppi_ci_tuned[1] >= true_theta),\n", - " \"trial\": j,\n", - " }\n", - " ]\n", - " )\n", - " ]\n", - " results += [\n", - " pd.DataFrame(\n", - " [\n", - " {\n", - " \"method\": \"classical\",\n", - " \"n\": n,\n", - " \"lower\": classical_ci[0],\n", - " \"upper\": classical_ci[1],\n", - " \"included\": (classical_ci[0] <= true_theta)\n", - " & (classical_ci[1] >= true_theta),\n", - " \"trial\": j,\n", - " }\n", - " ]\n", - " )\n", - " ]\n", - "\n", - "df = pd.concat(results, axis=0, ignore_index=True)\n", - "df[\"width\"] = df[\"upper\"] - df[\"lower\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "0dc8f8f9", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "palette = {\n", - " \"tuned PPI\": \"darkorange\",\n", - " \"PPI\": \"#83C980\",\n", - " \"classical\": \"cornflowerblue\",\n", - "}\n", - "linewidth = 2\n", - "\n", - "fig, axs = plt.subplots(nrows=1, ncols=2, figsize=(8, 2), sharex=True)\n", - "cvg_ax = axs[0]\n", - "sz_ax = axs[1]\n", - "sns.lineplot(\n", - " ax=cvg_ax,\n", - " data=df,\n", - " x=\"n\",\n", - " y=\"included\",\n", - " linewidth=linewidth,\n", - " errorbar=None,\n", - " hue=\"method\",\n", - " legend=False,\n", - " palette=palette,\n", - " alpha=0.8,\n", - ")\n", - "sns.lineplot(\n", - " ax=sz_ax,\n", - " data=df,\n", - " x=\"n\",\n", - " y=\"width\",\n", - " linewidth=linewidth,\n", - " errorbar=None,\n", - " hue=\"method\",\n", - " legend=True,\n", - " palette=palette,\n", - " alpha=0.8,\n", - ")\n", - "cvg_ax.set_ylabel(\"coverage\")\n", - "cvg_ax.set_ylim([0.5, 1.03])\n", - "cvg_ax.axhline(y=1 - alpha, color=\"#888888\", linestyle=\"dotted\")\n", - "cvg_ax.set_xlabel(\"n\")\n", - "sz_ax.set_ylabel(\"width\")\n", - "sz_ax.legend_.set_title(None)\n", - "sns.despine(top=True, right=True)\n", - "plt.tight_layout()\n", - "os.makedirs(\"./plots\", exist_ok=True)\n", - "plt.savefig(\"./plots/tuned-PPI-forest.pdf\")" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.12" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/examples/eff-ppi/tuned-galaxies.ipynb b/examples/eff-ppi/tuned-galaxies.ipynb deleted file mode 100644 index d56b741..0000000 --- a/examples/eff-ppi/tuned-galaxies.ipynb +++ /dev/null @@ -1,284 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "9cacba7c-b3e3-4b6d-a0c0-c0d396cb4faa", - "metadata": {}, - "source": [ - "# Galaxy classification\n", - "\n", - "The goal is to determine the demographics of galaxies with spiral arms, which are correlated with star formation in the discs of low-redshift galaxies, and therefore, contribute to the understanding of star formation in the Local Universe. A large citizen science initiative called Galaxy Zoo 2 (1) has collected human annotations of roughly 300000 images of galaxies from the Sloan Digital Sky Survey (2) with the goal of measuring these demographics. The target of inference is the fraction of galaxies with spiral arms. This notebook shows that prediction-powered inference allows for a decrease in the requisite number of human-annotated galaxies by imputing labels via computer vision.\n", - "\n", - "1. K. W. Willett, C. J. Lintott, S. P. Bamford, K. L. Masters, B. D. Simmons, K. R. V. Casteels, E. M. Edmondson, L. F. Fortson, S. Kaviraj, W. C. Keel, T. Melvin, R. C. Nichol, M. J. Raddick, K. Schawinski, R. J. Simpson, R. A. Skibba, A. M. Smith, D. Thomas, Galaxy Zoo 2: detailed morphological classifications for 304 122 galaxies from the Sloan Digital Sky Survey. Monthly Notices of the Royal Astronomical Society 435(4), 2835–2860 (2013).\n", - "2. D. G. York, J. Adelman, J. E. Anderson Jr, S. F. Anderson, J. Annis, N. A. Bahcall, …, N. Yasuda, The Sloan digital sky survey: Technical summary. The Astronomical Journal 120(3), 1579 (2000)." - ] - }, - { - "cell_type": "markdown", - "id": "684efc31-fc6e-43e7-9522-bd38ad45afe1", - "metadata": {}, - "source": [ - "### Import necessary packages" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "df3bad0d-8280-4d3b-9950-e456d8dc7328", - "metadata": {}, - "outputs": [], - "source": [ - "%load_ext autoreload\n", - "%autoreload 2\n", - "import os, sys\n", - "\n", - "sys.path.append(os.path.abspath(os.path.join(os.getcwd(), os.pardir)))\n", - "import numpy as np\n", - "import pandas as pd\n", - "from ppi_py.datasets import load_dataset\n", - "from ppi_py import ppi_mean_ci, classical_mean_ci\n", - "from tqdm import tqdm\n", - "from scipy.optimize import brentq\n", - "from utils import *" - ] - }, - { - "cell_type": "markdown", - "id": "5cf90ae6", - "metadata": {}, - "source": [ - "### Import the forest data set\n", - "\n", - "Load the data. The data set contains gold-standard deforestation labels (```Y```) and predicted deforestation labels (```Yhat```)." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "a6da3138", - "metadata": {}, - "outputs": [], - "source": [ - "dataset_folder = \"../data/\"\n", - "data = load_dataset(dataset_folder, \"galaxies\")\n", - "Y_total = data[\"Y\"]\n", - "Yhat_total = data[\"Yhat\"]" - ] - }, - { - "cell_type": "markdown", - "id": "8969f9db", - "metadata": {}, - "source": [ - "### Problem setup\n", - "\n", - "Specify the error level (```alpha```), range of values for the labeled data set size (```ns```), and number of trials (```num_trials```).\n", - "\n", - "Compute the ground-truth value of the estimand." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "5b3c8f29", - "metadata": {}, - "outputs": [], - "source": [ - "alpha = 0.1\n", - "n_total = Y_total.shape[0] # Total number of labeled examples\n", - "ns = np.linspace(200, 1000, 10).astype(\n", - " int\n", - ") # Test for different numbers of labeled examples\n", - "num_trials = 100\n", - "\n", - "# True mean (computed on all labels)\n", - "true_theta = Y_total.mean()" - ] - }, - { - "cell_type": "markdown", - "id": "83ce18be", - "metadata": {}, - "source": [ - "### Construct intervals\n", - "\n", - "Form confidence intervals for all methods and problem parameters. A dataframe with the following columns is formed:\n", - "1. ```method``` (one of ```PPI```, ```Classical```, and ```tuned PPI```)\n", - "2. ```n``` (labeled data set size, takes values in ```ns```)\n", - "3. ```lower``` (lower endpoint of the confidence interval)\n", - "4. ```upper``` (upper endpoint of the confidence interval)\n", - "5. ```trial``` (index of trial, goes from ```0``` to ```num_trials-1```)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "812f8fd5", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|███████████████████████████████████████████| 10/10 [00:09<00:00, 1.02it/s]\n" - ] - } - ], - "source": [ - "# Run prediction-powered inference and classical inference for many values of n\n", - "results = []\n", - "for i in tqdm(range(ns.shape[0])):\n", - " for j in range(num_trials):\n", - " # Prediction-Powered Inference\n", - " n = ns[i]\n", - " rand_idx = np.random.permutation(n_total)\n", - " _Yhat = Yhat_total[rand_idx[:n]]\n", - " _Y = Y_total[rand_idx[:n]]\n", - " _Yhat_unlabeled = Yhat_total[n:]\n", - "\n", - " ppi_ci = ppi_mean_ci(_Y, _Yhat, _Yhat_unlabeled, lhat=1, alpha=alpha)\n", - " ppi_ci_tuned = ppi_mean_ci(_Y, _Yhat, _Yhat_unlabeled, alpha=alpha)\n", - "\n", - " # Classical interval\n", - " classical_ci = classical_mean_ci(_Y, alpha=alpha)\n", - "\n", - " # Append results\n", - " results += [\n", - " pd.DataFrame(\n", - " [\n", - " {\n", - " \"method\": \"PPI\",\n", - " \"n\": n,\n", - " \"lower\": ppi_ci[0],\n", - " \"upper\": ppi_ci[1],\n", - " \"included\": (ppi_ci[0] <= true_theta)\n", - " & (ppi_ci[1] >= true_theta),\n", - " \"trial\": j,\n", - " }\n", - " ]\n", - " )\n", - " ]\n", - " results += [\n", - " pd.DataFrame(\n", - " [\n", - " {\n", - " \"method\": \"tuned PPI\",\n", - " \"n\": n,\n", - " \"lower\": ppi_ci_tuned[0],\n", - " \"upper\": ppi_ci_tuned[1],\n", - " \"included\": (ppi_ci_tuned[0] <= true_theta)\n", - " & (ppi_ci_tuned[1] >= true_theta),\n", - " \"trial\": j,\n", - " }\n", - " ]\n", - " )\n", - " ]\n", - " results += [\n", - " pd.DataFrame(\n", - " [\n", - " {\n", - " \"method\": \"classical\",\n", - " \"n\": n,\n", - " \"lower\": classical_ci[0],\n", - " \"upper\": classical_ci[1],\n", - " \"included\": (classical_ci[0] <= true_theta)\n", - " & (classical_ci[1] >= true_theta),\n", - " \"trial\": j,\n", - " }\n", - " ]\n", - " )\n", - " ]\n", - "\n", - "df = pd.concat(results, axis=0, ignore_index=True)\n", - "df[\"width\"] = df[\"upper\"] - df[\"lower\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "0dc8f8f9", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "palette = {\n", - " \"tuned PPI\": \"darkorange\",\n", - " \"PPI\": \"#83C980\",\n", - " \"classical\": \"cornflowerblue\",\n", - "}\n", - "linewidth = 2\n", - "\n", - "fig, axs = plt.subplots(nrows=1, ncols=2, figsize=(8, 2), sharex=True)\n", - "cvg_ax = axs[0]\n", - "sz_ax = axs[1]\n", - "sns.lineplot(\n", - " ax=cvg_ax,\n", - " data=df,\n", - " x=\"n\",\n", - " y=\"included\",\n", - " linewidth=linewidth,\n", - " errorbar=None,\n", - " hue=\"method\",\n", - " legend=False,\n", - " palette=palette,\n", - " alpha=0.8,\n", - ")\n", - "sns.lineplot(\n", - " ax=sz_ax,\n", - " data=df,\n", - " x=\"n\",\n", - " y=\"width\",\n", - " linewidth=linewidth,\n", - " errorbar=None,\n", - " hue=\"method\",\n", - " legend=True,\n", - " palette=palette,\n", - " alpha=0.8,\n", - ")\n", - "cvg_ax.set_ylabel(\"coverage\")\n", - "cvg_ax.set_ylim([0.5, 1.03])\n", - "cvg_ax.axhline(y=1 - alpha, color=\"#888888\", linestyle=\"dotted\")\n", - "cvg_ax.set_xlabel(\"n\")\n", - "sz_ax.set_ylabel(\"width\")\n", - "sz_ax.legend_.set_title(None)\n", - "sns.despine(top=True, right=True)\n", - "plt.tight_layout()\n", - "os.makedirs(\"./plots\", exist_ok=True)\n", - "plt.savefig(\"./plots/tuned-PPI-galaxies.pdf\")" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.12" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/ppi_py/ppi.py b/ppi_py/ppi.py index 7339e5c..0e9db40 100644 --- a/ppi_py/ppi.py +++ b/ppi_py/ppi.py @@ -58,8 +58,7 @@ def ppi_mean_pointestimate( lhat=None, coord=None, w=None, - w_unlabeled=None, - one_step=False, + w_unlabeled=None ): """Computes the prediction-powered point estimate of the mean. @@ -71,7 +70,6 @@ def ppi_mean_pointestimate( coord (int, optional): Coordinate for which to optimize lhat. If none, it optimizes the total variance over all coordinates. Must be in {1, ..., d} where d=X.shape[1]. w (ndarray, optional): Sample weights for the labeled data set. Defaults to all ones vector. w_unlabeled (ndarray, optional): Sample weights for the unlabeled data set. Defaults to all ones vector. - one_step (bool, optional): Whether to use the one-step estimation strategy. Defaults to False. Returns: float or ndarray: Prediction-powered point estimate of the mean. @@ -102,14 +100,8 @@ def ppi_mean_pointestimate( grads_hat_unlabeled, inv_hessian, coord=None, - clip=(not one_step), + clip=True, ) - if one_step: - return ppi_pointest - inv_hessian @ ( - lhat * grads_hat_unlabeled.mean(axis=0) - + grads.mean(axis=0) - - lhat * grads_hat.mean(axis=0) - ) return ppi_mean_pointestimate( Y, Yhat, @@ -118,7 +110,6 @@ def ppi_mean_pointestimate( coord=coord, w=w, w_unlabeled=w_unlabeled, - one_step=one_step, ) else: return (w_unlabeled * lhat * Yhat_unlabeled).mean(axis=0) + ( @@ -136,7 +127,6 @@ def ppi_mean_ci( coord=None, w=None, w_unlabeled=None, - one_step=False, ): """Computes the prediction-powered confidence interval for the mean. @@ -150,7 +140,6 @@ def ppi_mean_ci( coord (int, optional): Coordinate for which to optimize lhat. If none, it optimizes the total variance over all coordinates. Must be in {1, ..., d} where d=X.shape[1]. w (ndarray, optional): Sample weights for the labeled data set. w_unlabeled (ndarray, optional): Sample weights for the unlabeled data set. - one_step (bool, optional): Whether to use the one-step estimation strategy. Defaults to False. Returns: tuple: Lower and upper bounds of the prediction-powered confidence interval for the mean. @@ -176,7 +165,6 @@ def ppi_mean_ci( lhat=1, w=w, w_unlabeled=w_unlabeled, - one_step=False, ) grads = w * (Y - ppi_pointest) grads_hat = w * (Yhat - ppi_pointest) @@ -188,7 +176,7 @@ def ppi_mean_ci( grads_hat_unlabeled, inv_hessian, coord=None, - clip=(not one_step), + clip=True, ) return ppi_mean_ci( Y, @@ -198,7 +186,6 @@ def ppi_mean_ci( coord=coord, w=w, w_unlabeled=w_unlabeled, - one_step=one_step, ) ppi_pointest = ppi_mean_pointestimate( @@ -209,7 +196,6 @@ def ppi_mean_ci( coord=coord, w=w, w_unlabeled=w_unlabeled, - one_step=one_step, ) imputed_std = (w_unlabeled * (lhat * Yhat_unlabeled)).std() / np.sqrt(N) @@ -594,7 +580,6 @@ def ppi_ols_pointestimate( coord=None, w=None, w_unlabeled=None, - one_step=False, ): """Computes the prediction-powered point estimate of the OLS coefficients. @@ -608,13 +593,12 @@ def ppi_ols_pointestimate( coord (int, optional): Coordinate for which to optimize lhat. If none, it optimizes the total variance over all coordinates. Must be in {1, ..., d} where d=X.shape[1]. w (ndarray, optional): Sample weights for the labeled data set. w_unlabeled (ndarray, optional): Sample weights for the unlabeled data set. - one_step (bool, optional): Whether to use the one-step estimation strategy. Defaults to False. Returns: theta_pp (ndarray): Prediction-powered point estimate of the OLS coefficients. Notes: - The power-tuning procedure were introduced in the following paper: A. N. Angelopoulos, J. C. Duchi, and T. Zrnic. PPI++: Efficient Prediction Powered Inference. arxiv:, 2023. + The power-tuning procedure was introduced in the following paper: A. N. Angelopoulos, J. C. Duchi, and T. Zrnic. PPI++: Efficient Prediction Powered Inference. arxiv:, 2023. """ n = Y.shape[0] d = X.shape[1] @@ -657,26 +641,19 @@ def ppi_ols_pointestimate( grads_hat_unlabeled, inv_hessian, coord, - clip=(not one_step), + clip=True, + ) + return ppi_ols_pointestimate( + X, + Y, + Yhat, + X_unlabeled, + Yhat_unlabeled, + lhat=lhat, + coord=coord, + w=w, + w_unlabeled=w_unlabeled, ) - if one_step: - return theta_pp - inv_hessian @ ( - lhat * grads_hat_unlabeled.mean(axis=0) - + grads.mean(axis=0) - - lhat * grads_hat.mean(axis=0) - ) - else: - return ppi_ols_pointestimate( - X, - Y, - Yhat, - X_unlabeled, - Yhat_unlabeled, - lhat=lhat, - coord=coord, - w=w, - w_unlabeled=w_unlabeled, - ) else: return theta_pp @@ -693,7 +670,6 @@ def ppi_ols_ci( coord=None, w=None, w_unlabeled=None, - one_step=False, ): """Computes the prediction-powered confidence interval for the OLS coefficients using the PPI++ algorithm from the following paper: A. N. Angelopoulos, J. C. Duchi, and T. Zrnic. PPI++: Efficient Prediction Powered Inference. arxiv:, 2023. @@ -709,7 +685,6 @@ def ppi_ols_ci( coord (int, optional): Coordinate for which to optimize lhat. If none, it optimizes the total variance over all coordinates. Must be in {1, ..., d} where d=X.shape[1]. w (ndarray, optional): Sample weights for the labeled data set. w_unlabeled (ndarray, optional): Sample weights for the unlabeled data set. - one_step (bool, optional): Whether to use the one-step estimation strategy. Defaults to False. Returns: tuple: Lower and upper bounds of the prediction-powered confidence interval for the OLS coefficients. @@ -738,7 +713,6 @@ def ppi_ols_ci( coord=coord, w=w, w_unlabeled=w_unlabeled, - one_step=one_step, ) grads, grads_hat, grads_hat_unlabeled, inv_hessian = _ols_get_stats( ppi_pointest, @@ -759,7 +733,7 @@ def ppi_ols_ci( grads_hat_unlabeled, inv_hessian, coord, - clip=(not one_step), + clip=True, ) return ppi_ols_ci( X, @@ -823,7 +797,6 @@ def ppi_logistic_pointestimate( coord=None, w=None, w_unlabeled=None, - one_step=False, ): """Computes the prediction-powered point estimate of the logistic regression coefficients. @@ -838,7 +811,6 @@ def ppi_logistic_pointestimate( coord (int, optional): Coordinate for which to optimize lhat. If none, it optimizes the total variance over all coordinates. Must be in {1, ..., d} where d=X.shape[1]. w (ndarray, optional): Sample weights for the labeled data set. w_unlabeled (ndarray, optional): Sample weights for the unlabeled data set. - one_step (bool, optional): Whether to use the one-step estimation strategy. Defaults to False. Returns: theta_pp (ndarray): Prediction-powered point estimate of the logistic regression coefficients. @@ -937,174 +909,23 @@ def rectified_logistic_grad(_theta): grads_hat, grads_hat_unlabeled, inv_hessian, - clip=(not one_step), + clip=True, + ) + return ppi_logistic_pointestimate( + X, + Y, + Yhat, + X_unlabeled, + Yhat_unlabeled, + optimizer_options=optimizer_options, + lhat=lhat, + coord=coord, + w=w, + w_unlabeled=w_unlabeled, ) - if one_step: - return ppi_pointest - inv_hessian @ ( - lhat * grads_hat_unlabeled.mean(axis=0) - + grads.mean(axis=0) - - lhat * grads_hat.mean(axis=0) - ) - else: - return ppi_logistic_pointestimate( - X, - Y, - Yhat, - X_unlabeled, - Yhat_unlabeled, - optimizer_options=optimizer_options, - lhat=lhat, - coord=coord, - w=w, - w_unlabeled=w_unlabeled, - ) else: return ppi_pointest - -def edges_true(arr): - for axis in range(arr.ndim): - if arr.take(0, axis=axis).any() or arr.take(-1, axis=axis).any(): - return True - return False - - -def expand_contiguous_trues(grid): - # Find the indices of all "True" values - indices = np.where(grid) - - # Determine the min and max indices along each dimension - min_indices = [np.min(idx) for idx in indices] - max_indices = [np.max(idx) for idx in indices] - - # Expand the min and max indices by 1, but ensure they're within the grid bounds - min_indices = [max(0, idx - 1) for idx in min_indices] - max_indices = [ - min(grid.shape[i] - 1, idx + 1) for i, idx in enumerate(max_indices) - ] - - # Create slices for each dimension - slices = [ - slice(min_idx, max_idx + 1) - for min_idx, max_idx in zip(min_indices, max_indices) - ] - - # Set the expanded region to "True" - grid[tuple(slices)] = True - - return grid - - -def deprecated_ppi_logistic_ci( - X, - Y, - Yhat, - X_unlabeled, - Yhat_unlabeled, - alpha=0.1, - grid_size=200, - grid_limit=800, - max_refinements=10, - grid_radius=1, - grid_relative=False, - optimizer_options=None, -): - """Computes the prediction-powered confidence interval for the logistic regression coefficients. - - This function uses a method of successive refinement, searching over a grid of possible coeffiicents. The grid is centered at the prediction-powered point estimate. The grid is refined until the endpoints of the confidence interval are within the grid radius of the maximum likelihood estimate. - - This method is deprecated in favor of the more efficient `ppi_logistic_ci`. This method is retained for comparison purposes and should not be used in production. - - alpha (float, optional): Error level; the confidence interval will target a coverage of 1 - alpha. Must be in the range (0, 1). - grid_size (int, optional): Number of grid points to initially use in the grid search. - grid_limit (float, optional): Maximum absolute number of grid points. - max_refinements (int, optional): Maximum number of refinements to use in the grid search. - grid_radius (float, optional): Initial radius of the grid search. - grid_relative (bool, optional): Whether to use a relative grid search --- i.e., whether the radius is in units scaled according to the point estimate. - step_size (float, optional): Step size to use in the optimizer. - grad_tol (float, optional): Gradient tolerance to use in the optimizer. - - Returns: - tuple: Lower and upper bounds of the prediction-powered confidence interval for the logistic regression coefficients. - """ - n = Y.shape[0] - d = X.shape[1] - N = Yhat_unlabeled.shape[0] - - ppi_pointest = ppi_logistic_pointestimate( - X, - Y, - Yhat, - X_unlabeled, - Yhat_unlabeled, - optimizer_options=optimizer_options, - ) - if grid_relative: - grid_radius *= ppi_pointest - rectifier = 1 / n * X.T @ (Yhat - Y) - rectifier_std = np.std(X * (Yhat - Y)[:, None], axis=0) - confset = [] - grid_edge_accepted = True - refinements = -1 - while (len(confset) == 0) or grid_edge_accepted: - refinements += 1 - if (refinements > max_refinements) and (len(confset) != 0): - return np.array([-np.infty] * d), np.array([np.infty] * d) - elif refinements > max_refinements: - break - grid_radius *= 2 - grid_size *= 2 # **d - grid_size = min(grid_size, grid_limit) - lower_limits = ppi_pointest - grid_radius * np.ones(d) - upper_limits = ppi_pointest + grid_radius * np.ones(d) - # Construct a meshgrid between lower_limits and upper_limits, each axis having grid_size points - theta_grid = np.stack( - np.meshgrid( - *[ - np.linspace( - lower_limits[i], - upper_limits[i], - int(grid_size ** (1 / d)), - ) - for i in range(d) - ] - ), - axis=0, - ) - orig_theta_grid_shape = theta_grid.shape - theta_grid = theta_grid.reshape(d, -1).T - - mu_theta = expit(X_unlabeled @ theta_grid.T) - grad = 1 / N * X_unlabeled.T @ (mu_theta - Yhat_unlabeled[:, None]) - prederr_std = np.std( - X_unlabeled[:, :, None] - * (mu_theta - Yhat_unlabeled[:, None])[:, None, :], - axis=0, - ) - w = norm.ppf(1 - alpha / (2 * d)) * np.sqrt( - rectifier_std[:, None] ** 2 / n + prederr_std**2 / N - ) - accept = np.all(np.abs(grad + rectifier[:, None]) <= w, axis=0) - if np.any(accept): - accept_grid = expand_contiguous_trues( - accept.reshape(*(orig_theta_grid_shape[1:])) - ) - confset = theta_grid[accept_grid.flatten()] - grid_edge_accepted = edges_true(accept_grid) - else: - grid_edge_accepted = False - if len(confset) == 0: - discretization_width = (2 * grid_radius) / int(grid_size ** (1 / d)) - confset = np.stack( - [ - ppi_pointest - discretization_width, - ppi_pointest + discretization_width, - ], - axis=0, - ) - return confset.min(axis=0), confset.max(axis=0) - - @njit def _logistic_get_stats( pointest, @@ -1194,7 +1015,6 @@ def ppi_logistic_ci( optimizer_options=None, w=None, w_unlabeled=None, - one_step=False, ): """Computes the prediction-powered confidence interval for the logistic regression coefficients using the efficient algorithm. @@ -1213,7 +1033,6 @@ def ppi_logistic_ci( optimizer_options (dict, ooptional): Options to pass to the optimizer. See scipy.optimize.minimize for details. w (ndarray, optional): Weights for the labeled data. If None, it is set to 1. w_unlabeled (ndarray, optional): Weights for the unlabeled data. If None, it is set to 1. - one_step (bool, optional): Whether to use the one-step estimation strategy. Defaults to False. Returns: tuple: Lower and upper bounds of the prediction-powered confidence interval for the logistic regression coefficients. @@ -1262,52 +1081,22 @@ def ppi_logistic_ci( grads_hat, grads_hat_unlabeled, inv_hessian, - clip=(not one_step), + clip=True, + ) + return ppi_logistic_ci( + X, + Y, + Yhat, + X_unlabeled, + Yhat_unlabeled, + alpha=alpha, + optimizer_options=optimizer_options, + alternative=alternative, + lhat=lhat, + coord=coord, + w=w, + w_unlabeled=w_unlabeled, ) - if one_step: - onestep_ppi_pointest = ppi_logistic_pointestimate( - X, - Y, - Yhat, - X_unlabeled, - Yhat_unlabeled, - optimizer_options=optimizer_options, - lhat=lhat, - coord=coord, - w=w, - w_unlabeled=w_unlabeled, - one_step=True, - ) - var_unlabeled = np.cov(lhat * grads_hat_unlabeled.T).reshape(d, d) - - var = np.cov(grads.T - lhat * grads_hat.T).reshape(d, d) - - Sigma_hat = ( - inv_hessian @ (n / N * var_unlabeled + var) @ inv_hessian - ) - - return _zconfint_generic( - onestep_ppi_pointest, - np.sqrt(np.diag(Sigma_hat) / n), - alpha=alpha, - alternative=alternative, - ) - - else: - return ppi_logistic_ci( - X, - Y, - Yhat, - X_unlabeled, - Yhat_unlabeled, - alpha=alpha, - optimizer_options=optimizer_options, - alternative=alternative, - lhat=lhat, - coord=coord, - w=w, - w_unlabeled=w_unlabeled, - ) var_unlabeled = np.cov(lhat * grads_hat_unlabeled.T).reshape(d, d)