{
  "_id": "6ad7a3cf4b18b9008999a0b1",
  "Package": "fairGATE",
  "Title": "Fair Gated Algorithm for Targeted Equity",
  "Version": "1.0.0",
  "Authors@R": "c(\nperson(\"Rhys\", \"Holland\", email = \"rhys.holland@icloud.com\",\nrole = c(\"aut\", \"cre\")),\nperson(\"Raquel\", \"Iniesta\",\nemail = \"raquel.iniesta@kcl.ac.uk\",\nrole = \"aut\")\n)",
  "Description": "Fairness-aware correction of a prediction model for binary\nand continuous outcomes with two or more protected groups and\ntheir intersections. A cross-fitted base learner\n(gradient-boosted trees or a neural network) is fitted without\nthe protected attribute, and a gated mixture of neural experts\nlearns a per-person correction to its score under a fairness\npenalty (a random-effects or variance penalty on\noutcome-stratified group means, or a thresholded worst-group\npenalty on error rates), with a cross-fitted disparity signal,\nan intervention cost, smoothed early stopping, a per-person\nexport of adjustments with bootstrap stability intervals, and\nrouting analyses of which expert corrects whom. Methods draw on\nmixture-of-experts neural networks by Jordan and Jacobs (1994)\n<doi:10.1007/978-1-4471-2097-1_113>, gradient boosting by Chen\nand Guestrin (2016) <doi:10.1145/2939672.2939785>,\ncross-fitting by Chernozhukov et al. (2018)\n<doi:10.1111/ectj.12097>, equalised odds by Hardt, Price and\nSrebro (2016) <doi:10.48550/arXiv.1610.02413>, the\nrandom-effects variance estimator of DerSimonian and Laird\n(1986) <doi:10.1016/0197-2456(86)90046-2>, and personalised\ntreatment prediction for depression by Iniesta, Stahl and\nMcGuffin (2016) <doi:10.1016/j.jpsychires.2016.03.016>.",
  "License": "MIT + file LICENSE",
  "Encoding": "UTF-8",
  "Language": "en-GB",
  "Roxygen": "list(markdown = TRUE)",
  "Config/testthat/edition": "3",
  "VignetteBuilder": "knitr",
  "URL": "https://github.com/rhysholland/FairGATE",
  "BugReports": "https://github.com/rhysholland/FairGATE/issues",
  "SystemRequirements": "Optional 'LibTorch' backend for the neural-network\ncomponents; install via torch::install_torch().",
  "LazyData": "true",
  "Config/roxygen2/version": "8.1.0",
  "Config/pak/sysreqs": "libicu-dev libx11-dev",
  "Repository": "https://rhysholland.r-universe.dev",
  "Date/Publication": "2026-10-20 12:55:57 UTC",
  "RemoteUrl": "https://github.com/rhysholland/fairgate",
  "RemoteRef": "HEAD",
  "RemoteSha": "e9598a45e86b5472388c95aae54cc2c85c734b41",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-10-20 17:20:09 UTC",
    "User": "root"
  },
  "Author": "Rhys Holland [aut, cre],\nRaquel Iniesta [aut]",
  "Maintainer": "Rhys Holland <rhys.holland@icloud.com>",
  "_user": "rhysholland",
  "_type": "src",
  "_file": "fairGATE_1.0.0.tar.gz",
  "_fileid": "https://r2.ropensci.org/c0ae15b0dfcd8c142f6bae70c9802e68552d475b67237bf7fefd51973386901d",
  "_filesize": 453029,
  "_sha256": "c0ae15b0dfcd8c142f6bae70c9802e68552d475b67237bf7fefd51973386901d",
  "_expires": "2027-01-28T17:24:28.000Z",
  "_created": "2026-10-20T17:20:09.000Z",
  "_published": "2026-10-20T17:24:31.231Z",
  "_buildurl": "https://github.com/r-universe/rhysholland/actions/runs/39464174177",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_jobs": [
    {
      "job": 118774801045,
      "time": 208,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "12285206210"
    },
    {
      "job": 118774800899,
      "time": 210,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12285355715"
    },
    {
      "job": 118774801049,
      "time": 204,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "12284252858"
    },
    {
      "job": 118774801186,
      "time": 215,
      "config": "macos-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12284422508"
    },
    {
      "job": 118771285228,
      "time": 405,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12284701418"
    },
    {
      "job": 118774800929,
      "time": 114,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "12284841642"
    },
    {
      "job": 118774801054,
      "time": 114,
      "config": "windows-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "12284207808"
    },
    {
      "job": 118774801010,
      "time": 107,
      "config": "windows-oldrel-x86_64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "12285141593"
    },
    {
      "job": 118774800832,
      "time": 109,
      "config": "windows-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12285280677"
    }
  ],
  "_upstream": "https://github.com/rhysholland/fairgate",
  "_commit": {
    "id": "e9598a45e86b5472388c95aae54cc2c85c734b41",
    "author": "rhysholland <159461101+rhysholland@users.noreply.github.com>",
    "committer": "rhysholland <159461101+rhysholland@users.noreply.github.com>",
    "message": "fairGATE 1.0.0: XGBoost or neural-network base learner, one-call fairgate(), continuous outcomes (CMPD), worst-group penalties, per-person export; CRAN checks pass\n",
    "time": 1792500957
  },
  "_maintainer": {
    "name": "Rhys Holland",
    "email": "rhys.holland@icloud.com",
    "login": "rhysholland",
    "description": "",
    "uuid": 159461101
  },
  "_distro": "resolute",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.1.0",
      "role": "Depends"
    },
    {
      "package": "dplyr",
      "role": "Imports"
    },
    {
      "package": "ggalluvial",
      "role": "Imports"
    },
    {
      "package": "ggplot2",
      "role": "Imports"
    },
    {
      "package": "magrittr",
      "role": "Imports"
    },
    {
      "package": "pROC",
      "role": "Imports"
    },
    {
      "package": "purrr",
      "role": "Imports"
    },
    {
      "package": "readr",
      "role": "Imports"
    },
    {
      "package": "rlang",
      "role": "Imports"
    },
    {
      "package": "stats",
      "role": "Imports"
    },
    {
      "package": "tibble",
      "role": "Imports"
    },
    {
      "package": "tidyr",
      "role": "Imports"
    },
    {
      "package": "tidyselect",
      "role": "Imports"
    },
    {
      "package": "utils",
      "role": "Imports"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    },
    {
      "package": "torch",
      "role": "Suggests"
    },
    {
      "package": "xgboost",
      "version": ">= 3.1.0",
      "role": "Suggests"
    }
  ],
  "_owner": "rhysholland",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2025-44",
      "n": 1
    },
    {
      "week": "2025-45",
      "n": 9
    },
    {
      "week": "2025-50",
      "n": 3
    },
    {
      "week": "2026-02",
      "n": 1
    },
    {
      "week": "2026-38",
      "n": 1
    },
    {
      "week": "2026-43",
      "n": 1
    }
  ],
  "_tags": [
    {
      "name": "fairGATE_Releases",
      "date": "2025-11-05"
    }
  ],
  "_stars": 1,
  "_contributors": [
    {
      "user": "rhysholland",
      "count": 16,
      "uuid": 159461101
    }
  ],
  "_userbio": {
    "uuid": 159461101,
    "type": "user",
    "name": "rhysholland",
    "followers": 0
  },
  "_downloads": {
    "count": 258,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/fairGATE"
  },
  "_devurl": "https://github.com/rhysholland/fairgate",
  "_searchresults": 4,
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/fairGATE.html",
    "extra/manual.pdf",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "LICENSE"
  ],
  "_homeurl": "https://github.com/rhysholland/fairgate",
  "_realowner": "rhysholland",
  "_cranurl": true,
  "_releases": [
    {
      "version": "0.1.0",
      "date": "2025-11-19"
    },
    {
      "version": "0.1.1",
      "date": "2025-12-11"
    }
  ],
  "_exports": [
    "analyse_experts",
    "analyse_gnn_results",
    "export_f360_csv",
    "fairgate",
    "fairgate_base_grid",
    "fairgate_base_learner",
    "fairgate_crossed_penalty",
    "fairgate_crossed_plan",
    "fairgate_disparity_target",
    "fairgate_draw_configs",
    "fairgate_export",
    "fairgate_fair_penalty",
    "fairgate_gate_map",
    "fairgate_group_disparity",
    "fairgate_group_gap_penalty",
    "fairgate_lambda_ladder",
    "fairgate_penalty_from_cells",
    "fairgate_penalty_plan",
    "fairgate_space",
    "fairgate_threshold_penalty",
    "fairgate_threshold_plan",
    "fairgate_tune_base_learner",
    "plot_sankey",
    "prepare_data",
    "train_gnn"
  ],
  "_datasets": [
    {
      "name": "adult_ready_small",
      "title": "Adult ready (small sample)",
      "object": "adult_ready_small",
      "class": [
        "data.frame"
      ],
      "fields": [
        "age",
        "fnlwgt",
        "education_num",
        "sex",
        "capital_gain",
        "capital_loss",
        "hours_per_week",
        "income",
        "workclass_Federal.gov",
        "workclass_Local.gov",
        "workclass_Never.worked",
        "workclass_Private",
        "workclass_Self.emp.inc",
        "workclass_Self.emp.not.inc",
        "workclass_State.gov",
        "workclass_Without.pay",
        "workclass_NA",
        "education_1st.4th",
        "education_5th.6th",
        "education_7th.8th",
        "education_9th",
        "education_10th",
        "education_11th",
        "education_12th",
        "education_Assoc.acdm",
        "education_Assoc.voc",
        "education_Bachelors",
        "education_Doctorate",
        "education_HS.grad",
        "education_Masters",
        "education_Preschool",
        "education_Prof.school",
        "education_Some.college",
        "marital_status_Divorced",
        "marital_status_Married.AF.spouse",
        "marital_status_Married.civ.spouse",
        "marital_status_Married.spouse.absent",
        "marital_status_Never.married",
        "marital_status_Separated",
        "marital_status_Widowed",
        "occupation_Adm.clerical",
        "occupation_Armed.Forces",
        "occupation_Craft.repair",
        "occupation_Exec.managerial",
        "occupation_Farming.fishing",
        "occupation_Handlers.cleaners",
        "occupation_Machine.op.inspct",
        "occupation_Other.service",
        "occupation_Priv.house.serv",
        "occupation_Prof.specialty",
        "occupation_Protective.serv",
        "occupation_Sales",
        "occupation_Tech.support",
        "occupation_Transport.moving",
        "occupation_NA",
        "relationship_Husband",
        "relationship_Not.in.family",
        "relationship_Other.relative",
        "relationship_Own.child",
        "relationship_Unmarried",
        "relationship_Wife",
        "race_Amer.Indian.Eskimo",
        "race_Asian.Pac.Islander",
        "race_Black",
        "race_Other",
        "race_White",
        "native_country_Cambodia",
        "native_country_Canada",
        "native_country_China",
        "native_country_Columbia",
        "native_country_Cuba",
        "native_country_Dominican.Republic",
        "native_country_Ecuador",
        "native_country_El.Salvador",
        "native_country_England",
        "native_country_France",
        "native_country_Germany",
        "native_country_Greece",
        "native_country_Guatemala",
        "native_country_Haiti",
        "native_country_Holand.Netherlands",
        "native_country_Honduras",
        "native_country_Hong",
        "native_country_Hungary",
        "native_country_India",
        "native_country_Iran",
        "native_country_Ireland",
        "native_country_Italy",
        "native_country_Jamaica",
        "native_country_Japan",
        "native_country_Laos",
        "native_country_Mexico",
        "native_country_Nicaragua",
        "native_country_Outlying.US.Guam.USVI.etc.",
        "native_country_Peru",
        "native_country_Philippines",
        "native_country_Poland",
        "native_country_Portugal",
        "native_country_Puerto.Rico",
        "native_country_Scotland",
        "native_country_South",
        "native_country_Taiwan",
        "native_country_Thailand",
        "native_country_Trinadad.Tobago",
        "native_country_United.States",
        "native_country_Vietnam",
        "native_country_Yugoslavia",
        "native_country_NA"
      ],
      "rows": 1000,
      "table": true,
      "tojson": true
    }
  ],
  "_help": [
    {
      "page": "adult_ready_small",
      "title": "Adult ready (small sample)",
      "topics": [
        "adult_ready_small"
      ]
    },
    {
      "page": "analyse_experts",
      "title": "Analyse and Visualise Expert Network Specialisation",
      "topics": [
        "analyse_experts"
      ]
    },
    {
      "page": "analyse_gnn_results",
      "title": "Analyse and Visualise GNN Results",
      "topics": [
        "analyse_gnn_results"
      ]
    },
    {
      "page": "export_f360_csv",
      "title": "Export predictions for IBM Fairness 360",
      "topics": [
        "export_f360_csv"
      ]
    },
    {
      "page": "fairgate",
      "title": "Fit fairGATE in One Call",
      "topics": [
        "fairgate"
      ]
    },
    {
      "page": "fairgate_base_grid",
      "title": "Default Hyperparameter Grids for the Base Learner",
      "topics": [
        "fairgate_base_grid"
      ]
    },
    {
      "page": "fairgate_base_learner",
      "title": "Cross-Fitted Base Learner (XGBoost or Neural Network)",
      "topics": [
        "fairgate_base_learner"
      ]
    },
    {
      "page": "fairgate_crossed_penalty",
      "title": "Crossed Variance-Component Penalty for Intersectional Groups",
      "topics": [
        "fairgate_crossed_penalty"
      ]
    },
    {
      "page": "fairgate_crossed_plan",
      "title": "Cell Structure for Crossed (Intersectional) Variance Components",
      "topics": [
        "fairgate_crossed_plan"
      ]
    },
    {
      "page": "fairgate_disparity_target",
      "title": "Per-Person Disparity-Contribution Target",
      "topics": [
        "fairgate_disparity_target"
      ]
    },
    {
      "page": "fairgate_draw_configs",
      "title": "Draw fairGATE Configurations",
      "topics": [
        "fairgate_draw_configs"
      ]
    },
    {
      "page": "fairgate_export",
      "title": "Per-Person Export of a fairGATE Fit",
      "topics": [
        "fairgate_export"
      ]
    },
    {
      "page": "fairgate_fair_penalty",
      "title": "fairGATE Fairness Penalty from Individual Predictions",
      "topics": [
        "fairgate_fair_penalty"
      ]
    },
    {
      "page": "fairgate_gate_map",
      "title": "Gate Maps: softmax, sparsemax and entmax-1.5",
      "topics": [
        "fairgate_gate_map"
      ]
    },
    {
      "page": "fairgate_group_disparity",
      "title": "Multi-Group Separation Disparity: Per Group, Worst Group and Joint",
      "topics": [
        "fairgate_group_disparity"
      ]
    },
    {
      "page": "fairgate_group_gap_penalty",
      "title": "Worst-Group Conditional Mean Gap Penalty (continuous outcomes)",
      "topics": [
        "fairgate_group_gap_penalty"
      ]
    },
    {
      "page": "fairgate_lambda_ladder",
      "title": "Frontier Ladder of Expert Fairness Weights",
      "topics": [
        "fairgate_lambda_ladder"
      ]
    },
    {
      "page": "fairgate_penalty_from_cells",
      "title": "Between-Group Variance Components for the fairGATE Fairness Penalty",
      "topics": [
        "fairgate_penalty_from_cells"
      ]
    },
    {
      "page": "fairgate_penalty_plan",
      "title": "Cell Structure for the fairGATE Fairness Penalty",
      "topics": [
        "fairgate_penalty_plan"
      ]
    },
    {
      "page": "fairgate_space",
      "title": "fairGATE Search Space and Fixed Settings",
      "topics": [
        "fairgate_space"
      ]
    },
    {
      "page": "fairgate_threshold_penalty",
      "title": "Differentiable Penalty on Thresholded Group Error Rates",
      "topics": [
        "fairgate_threshold_penalty"
      ]
    },
    {
      "page": "fairgate_threshold_plan",
      "title": "Cell Structure for the Thresholded Error-Rate Penalty",
      "topics": [
        "fairgate_threshold_plan"
      ]
    },
    {
      "page": "fairgate_tune_base_learner",
      "title": "Tune the Base Learner on an Inner Split",
      "topics": [
        "fairgate_tune_base_learner"
      ]
    },
    {
      "page": "plot_sankey",
      "title": "Create a Sankey Plot (robust; aggregates to one row per subject)",
      "topics": [
        "plot_sankey"
      ]
    },
    {
      "page": "prepare_data",
      "title": "Prepare Data for GNN Training",
      "topics": [
        "prepare_data"
      ]
    },
    {
      "page": "train_gnn",
      "title": "Train and Evaluate the Gated Neural Network (robust splits + safe ROC)",
      "topics": [
        "train_gnn"
      ]
    }
  ],
  "_readme": "https://github.com/rhysholland/fairgate/raw/HEAD/README.md",
  "_rundeps": [
    "bit",
    "bit64",
    "cli",
    "clipr",
    "cpp11",
    "crayon",
    "dplyr",
    "farver",
    "generics",
    "ggalluvial",
    "ggplot2",
    "glue",
    "gtable",
    "hms",
    "isoband",
    "labeling",
    "lazyeval",
    "lifecycle",
    "magrittr",
    "pillar",
    "pkgconfig",
    "prettyunits",
    "pROC",
    "progress",
    "purrr",
    "R6",
    "RColorBrewer",
    "Rcpp",
    "readr",
    "rlang",
    "S7",
    "scales",
    "stringi",
    "stringr",
    "tibble",
    "tidyr",
    "tidyselect",
    "tzdb",
    "utf8",
    "vctrs",
    "viridisLite",
    "vroom",
    "withr"
  ],
  "_vignettes": [
    {
      "source": "introduction-to-fairGATE.Rmd",
      "filename": "introduction-to-fairGATE.html",
      "title": "Introduction to fairGATE",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Data",
        "Step 1: a cross-fitted base learner",
        "Step 2: fairGATE in one call",
        "Step 3: who was moved, and how reliably",
        "A continuous outcome with the neural-network base learner",
        "Working with the building blocks"
      ],
      "created": "2025-11-05 15:16:49",
      "modified": "2026-10-20 12:55:57",
      "commits": 3
    }
  ],
  "_score": 4.477121254719663,
  "_indexed": true,
  "_nocasepkg": "fairgate",
  "_universes": [
    "rhysholland"
  ],
  "_previous": "0.1.0",
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "1.0.0",
      "date": "2026-10-20T17:23:22.000Z",
      "distro": "resolute",
      "commit": "e9598a45e86b5472388c95aae54cc2c85c734b41",
      "fileid": "https://r2.ropensci.org/1c7b14dfdbd0598183273c26df060a8bb3d77b88a6a3edc9e6458464c9b2118a",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/rhysholland/actions/runs/39464174177"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "1.0.0",
      "date": "2026-10-20T17:23:21.000Z",
      "distro": "resolute",
      "commit": "e9598a45e86b5472388c95aae54cc2c85c734b41",
      "fileid": "https://r2.ropensci.org/b8f3cba43d11461b4d1b7bf5798db14d3bb2ba1372ee42f9e1ce94a3cba4f4e4",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/rhysholland/actions/runs/39464174177"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "1.0.0",
      "date": "2026-10-20T17:22:51.000Z",
      "commit": "e9598a45e86b5472388c95aae54cc2c85c734b41",
      "fileid": "https://r2.ropensci.org/61911c50e63a068ee1698487d43679c3aeedd27a378c3e28ba977833b413bcd4",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/rhysholland/actions/runs/39464174177"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "1.0.0",
      "date": "2026-10-20T17:22:51.000Z",
      "commit": "e9598a45e86b5472388c95aae54cc2c85c734b41",
      "fileid": "https://r2.ropensci.org/8cd4f4285db4fd75d4338fbf4c05c58c8e427222b5245d02b0b8056a0d79853b",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/rhysholland/actions/runs/39464174177"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "1.0.0",
      "date": "2026-10-20T17:22:29.000Z",
      "commit": "e9598a45e86b5472388c95aae54cc2c85c734b41",
      "fileid": "https://r2.ropensci.org/2e92d93ae2012891712306c96c38a2a48c2720472a6eebc733edcc3d72273f79",
      "status": "success",
      "buildurl": "https://github.com/r-universe/rhysholland/actions/runs/39464174177"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "1.0.0",
      "date": "2026-10-20T17:21:37.000Z",
      "commit": "e9598a45e86b5472388c95aae54cc2c85c734b41",
      "fileid": "https://r2.ropensci.org/52c5b60c306557679c3d9b99550bc9f492f6bafb06666dcd990463932c782ed6",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/rhysholland/actions/runs/39464174177"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "1.0.0",
      "date": "2026-10-20T17:21:40.000Z",
      "commit": "e9598a45e86b5472388c95aae54cc2c85c734b41",
      "fileid": "https://r2.ropensci.org/0bb85c02b19cc99eddbf0e7ea4313f944fd439acb6e57321cf6d661a7b686f11",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/rhysholland/actions/runs/39464174177"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "1.0.0",
      "date": "2026-10-20T17:21:35.000Z",
      "commit": "e9598a45e86b5472388c95aae54cc2c85c734b41",
      "fileid": "https://r2.ropensci.org/36e96350ff9a96eca5294cd147dbf15567765219f068c4a3d073e7ae0d85d6c6",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/rhysholland/actions/runs/39464174177"
    }
  ]
}