{
  "_id": "6a21b051cd65a98ecbd39347",
  "Package": "dppca",
  "Title": "Differentially Private Principal Component Analysis\nVisualization",
  "Version": "0.1.0",
  "Authors@R": "c(\nperson(\"Yejin\", \"Jo\", email = \"yejinjo0220@gmail.com\", role = c(\"aut\", \"cre\")),\nperson(\"Minwoo\", \"Kim\", email = \"mwkim.stat@gmail.com\", role = c(\"aut\"))\n)",
  "Description": "Provides tools for differentially private principal\ncomponent analysis (PCA) visualization. It includes functions\nfor estimating private principal component directions,\nconstructing private scree and proportion of variance explained\nsummaries, and visualizing two-dimensional PCA score summaries\nusing additive and sparse histogram mechanisms. Group-wise\nscore visualizations and an interactive 'shiny' app are also\nprovided. Private principal component directions are based on\nKim and Jung (2025) <doi:10.1002/sam.70053>. Private scree\nsummaries use mechanisms motivated by Dwork and Roth (2014)\n<doi:10.1561/0400000042>, Ramsay and Spicker (2025)\n<doi:10.48550/arXiv.2501.14095>, and Yu, Ren and Zhou (2024)\n<doi:10.3150/23-BEJ1706>. Private score plot frames use smooth\nsensitivity quantiles from Nissim, Raskhodnikova and Smith\n(2007) <doi:10.1145/1250790.1250803>. Private score histograms\nuse additive and sparse histogram ideas from Wasserman and Zhou\n(2010) <doi:10.1198/jasa.2009.tm08651> and Karwa and Vadhan\n(2018) <doi:10.4230/LIPIcs.ITCS.2018.44>.",
  "License": "MIT + file LICENSE",
  "Encoding": "UTF-8",
  "RoxygenNote": "7.3.3",
  "VignetteBuilder": "knitr",
  "RdMacros": "Rdpack",
  "LazyData": "true",
  "LazyDataCompression": "xz",
  "URL": "https://github.com/yejinjo0220/dppca,\nhttps://yejinjo0220.github.io/dppca/",
  "BugReports": "https://github.com/yejinjo0220/dppca/issues",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-06-04 17:02:22 UTC",
    "User": "root"
  },
  "Author": "Yejin Jo [aut, cre], Minwoo Kim [aut]",
  "Maintainer": "Yejin Jo <yejinjo0220@gmail.com>",
  "Repository": "https://cran.r-universe.dev",
  "Date/Publication": "2026-06-04 14:11:38 UTC",
  "RemoteUrl": "https://github.com/cran/dppca",
  "RemoteRef": "HEAD",
  "RemoteSha": "9185e112b376c68b7aaf77d4ef5a6671138a7b4c",
  "MD5sum": "b5ce8bd1404c9cefa17957efd20759d0",
  "_user": "cran",
  "_type": "src",
  "_file": "dppca_0.1.0.tar.gz",
  "_fileid": "fea40d97a21a3e72bc7f53c62290fd08671a8e748c2b1ab0ac78dbca1e8816f1",
  "_filesize": 3781755,
  "_sha256": "fea40d97a21a3e72bc7f53c62290fd08671a8e748c2b1ab0ac78dbca1e8816f1",
  "_created": "2026-06-04T17:02:22.000Z",
  "_published": "2026-06-04T17:05:21.046Z",
  "_distro": "noble",
  "_jobs": [
    {
      "job": 79571908724,
      "time": 131,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7417918087"
    },
    {
      "job": 79571908679,
      "time": 147,
      "config": "linux-release-x86_64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7417924508"
    },
    {
      "job": 79571337685,
      "time": 178,
      "config": "source",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7417865725"
    },
    {
      "job": 79571908624,
      "time": 123,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7417914718"
    }
  ],
  "_buildurl": "https://github.com/r-universe/cran/actions/runs/26966745660",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_upstream": "https://github.com/cran/dppca",
  "_commit": {
    "id": "9185e112b376c68b7aaf77d4ef5a6671138a7b4c",
    "author": "Yejin Jo <yejinjo0220@gmail.com>",
    "committer": "cran-robot <csardi.gabor+cran@gmail.com>",
    "message": "version 0.1.0\n",
    "time": 1780582298
  },
  "_maintainer": {
    "name": "Yejin Jo",
    "email": "yejinjo0220@gmail.com",
    "login": "yejinjo0220",
    "description": "",
    "uuid": 247485823
  },
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.3.0",
      "role": "Depends"
    },
    {
      "package": "dplyr",
      "role": "Imports"
    },
    {
      "package": "ggplot2",
      "role": "Imports"
    },
    {
      "package": "graphics",
      "role": "Imports"
    },
    {
      "package": "grDevices",
      "role": "Imports"
    },
    {
      "package": "patchwork",
      "role": "Imports"
    },
    {
      "package": "rARPACK",
      "role": "Imports"
    },
    {
      "package": "Rdpack",
      "role": "Imports"
    },
    {
      "package": "rlang",
      "role": "Imports"
    },
    {
      "package": "stats",
      "role": "Imports"
    },
    {
      "package": "VGAM",
      "role": "Imports"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "shiny",
      "role": "Suggests"
    }
  ],
  "_owner": "cran",
  "_selfowned": false,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2026-23",
      "n": 1
    }
  ],
  "_tags": [
    {
      "name": "0.1.0",
      "date": "2026-06-04"
    }
  ],
  "_stars": 0,
  "_contributors": [
    {
      "user": "yejinjo0220",
      "count": 1,
      "uuid": 247485823
    }
  ],
  "_userbio": {
    "uuid": 6899542,
    "type": "organization",
    "name": "cran",
    "description": "Unofficial read-only mirror of all CRAN R packages"
  },
  "_downloads": {
    "count": 0,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/dppca"
  },
  "_devurl": "https://github.com/yejinjo0220/dppca",
  "_pkgdown": "https://yejinjo0220.github.io/dppca/",
  "_rbuild": "4.6.0",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/dppca.html",
    "extra/readme.html",
    "extra/readme.md",
    "manual.pdf"
  ],
  "_cranurl": false,
  "_releases": [
    {
      "version": "0.1.0",
      "date": "2026-06-04"
    }
  ],
  "_exports": [
    "clipped_control",
    "dp_pc_dir",
    "dp_score",
    "dp_score_group",
    "dp_score_plot",
    "dp_score_plot_group",
    "dp_scree",
    "dp_scree_plot",
    "dppca_app",
    "huber_control",
    "pmwm_control"
  ],
  "_datasets": [
    {
      "name": "adult",
      "title": "Adult numeric data",
      "object": "adult",
      "class": [
        "data.frame"
      ],
      "fields": [
        "age",
        "education_num",
        "capital_gain",
        "capital_loss",
        "hours_per_week"
      ],
      "rows": 32561,
      "table": true,
      "tojson": true
    },
    {
      "name": "gau",
      "title": "Five Gaussian clusters",
      "object": "gau",
      "class": [
        "data.frame"
      ],
      "fields": [
        "V1",
        "V2",
        "V3",
        "V4",
        "V5",
        "V6",
        "V7",
        "V8",
        "V9",
        "V10",
        "V11",
        "V12",
        "V13",
        "V14",
        "V15",
        "V16",
        "V17",
        "V18",
        "V19",
        "V20"
      ],
      "rows": 5000,
      "table": true,
      "tojson": true
    },
    {
      "name": "gau_g",
      "title": "Five Gaussian clusters with group labels",
      "object": "gau_g",
      "class": [
        "data.frame"
      ],
      "fields": [
        "V1",
        "V2",
        "V3",
        "V4",
        "V5",
        "V6",
        "V7",
        "V8",
        "V9",
        "V10",
        "V11",
        "V12",
        "V13",
        "V14",
        "V15",
        "V16",
        "V17",
        "V18",
        "V19",
        "V20",
        "group"
      ],
      "rows": 5000,
      "table": true,
      "tojson": true
    }
  ],
  "_help": [
    {
      "page": "adult",
      "title": "Adult numeric data",
      "topics": [
        "adult"
      ]
    },
    {
      "page": "clipped_control",
      "title": "Control options for clipped scree estimation",
      "topics": [
        "clipped_control"
      ]
    },
    {
      "page": "dp_pc_dir",
      "title": "Estimate principal component directions",
      "topics": [
        "dp_pc_dir"
      ]
    },
    {
      "page": "dp_score",
      "title": "Differentially private score histograms",
      "topics": [
        "dp_score"
      ]
    },
    {
      "page": "dp_score_group",
      "title": "Group-wise differentially private score histograms",
      "topics": [
        "dp_score_group"
      ]
    },
    {
      "page": "dp_score_plot",
      "title": "Plot differentially private score histograms",
      "topics": [
        "dp_score_plot"
      ]
    },
    {
      "page": "dp_score_plot_group",
      "title": "Plot group-wise differentially private score histograms",
      "topics": [
        "dp_score_plot_group"
      ]
    },
    {
      "page": "dp_scree",
      "title": "Differentially private scree values",
      "topics": [
        "dp_scree"
      ]
    },
    {
      "page": "dp_scree_plot",
      "title": "Plot differentially private scree estimates",
      "topics": [
        "dp_scree_plot"
      ]
    },
    {
      "page": "dppca_app",
      "title": "Launch the dppca Shiny app",
      "topics": [
        "dppca_app"
      ]
    },
    {
      "page": "gau",
      "title": "Five Gaussian clusters",
      "topics": [
        "gau"
      ]
    },
    {
      "page": "gau_g",
      "title": "Five Gaussian clusters with group labels",
      "topics": [
        "gau_g"
      ]
    },
    {
      "page": "huber_control",
      "title": "Control options for Huber scree estimation",
      "topics": [
        "huber_control"
      ]
    },
    {
      "page": "pmwm_control",
      "title": "Control options for private modified winsorized scree estimation",
      "topics": [
        "pmwm_control"
      ]
    }
  ],
  "_readme": "https://github.com/cran/dppca/raw/HEAD/README.md",
  "_rundeps": [
    "cli",
    "cpp11",
    "dplyr",
    "farver",
    "generics",
    "ggplot2",
    "glue",
    "gtable",
    "isoband",
    "labeling",
    "lattice",
    "lifecycle",
    "magrittr",
    "Matrix",
    "patchwork",
    "pillar",
    "pkgconfig",
    "R6",
    "rARPACK",
    "rbibutils",
    "RColorBrewer",
    "Rcpp",
    "RcppEigen",
    "Rdpack",
    "rlang",
    "RSpectra",
    "S7",
    "scales",
    "tibble",
    "tidyselect",
    "utf8",
    "vctrs",
    "VGAM",
    "viridisLite",
    "withr"
  ],
  "_vignettes": [
    {
      "source": "algorithms.Rmd",
      "filename": "algorithms.html",
      "title": "Algorithms",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Algorithm 1: Private histogram learner",
        "Algorithm 2: Private and robust estimator for (m_2)",
        "Algorithm 3: Unbounded DP upper-quantile estimator",
        "Algorithm 4: Additive DP histogram",
        "Algorithm 5: Sparse DP histogram",
        "Algorithm 6: Group-wise additive DP histogram",
        "Algorithm 7: Group-wise sparse DP histogram",
        "References"
      ],
      "created": "2026-06-04 14:11:38",
      "modified": "2026-06-04 14:11:38",
      "commits": 1
    },
    {
      "source": "dp_score.Rmd",
      "filename": "dp_score.html",
      "title": "DP score plots in dppca",
      "engine": "knitr::rmarkdown",
      "headings": [
        "PC scores",
        "[z_i",
        "[s_i",
        "Overview of the DP score plot",
        "1. Private plotting frame",
        "Private center",
        "[\\widetilde c_1",
        "\\widetilde Q_{0.5}(z_{1,a},\\ldots,z_{n,a}),\\qquad\\widetilde c_2",
        "[\\widetilde c",
        "Private radius",
        "[r_i",
        "|s_i-\\widetilde c|_2",
        "[\\widetilde R",
        "[\\widetilde R_",
        "[F",
        "Numerical safeguard for the private radius",
        "2. Choosing the number of bins",
        "3. Two-dimensional histogram",
        "[c_k",
        "[q_k",
        "Sensitivity of histogram counts",
        "4. Privacy accounting",
        "[(\\epsilon_{\\mathrm{frame}},\\delta_{\\mathrm{frame}})",
        "(\\epsilon/2,\\delta/2),\\qquad(\\epsilon_{\\mathrm{hist}},\\delta_{\\mathrm{hist}})",
        "[(\\epsilon_{\\mathrm{pc}},\\delta_{\\mathrm{pc}})",
        "(\\epsilon_{\\mathrm{frame}},\\delta_{\\mathrm{frame}})",
        "(\\epsilon_{\\mathrm{hist}},\\delta_{\\mathrm{hist}})",
        "Method 1: Additive DP histogram",
        "Method 2: Sparse DP histogram",
        "Group-wise DP score histograms",
        "[c_k^",
        "Example usage",
        "References"
      ],
      "created": "2026-06-04 14:11:38",
      "modified": "2026-06-04 14:11:38",
      "commits": 1
    },
    {
      "source": "dp_scree.Rmd",
      "filename": "dp_scree.html",
      "title": "DP scree in dppca",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Overview",
        "[\\hat\\lambda_\\ell",
        "Scree Estimation in dppca",
        "\\frac{1}{n-1}\\sum_{i=1}^nz_{i\\ell}^2",
        "[\\widetilde{\\lambda}_\\ell",
        "Method 1: Clipped scree estimation",
        "Clipping",
        "[\\hat\\mu_\\ell^",
        "\\frac",
        "Sensitivity",
        "[\\Delta_\\ell\\leq\\frac",
        "DP clipped scree estimate",
        "[\\widetilde\\lambda_\\ell^",
        "[\\xi_\\ell \\sim N(0,\\sigma_\\ell^2)]and[\\sigma_\\ell",
        "\\frac",
        "Parameter",
        "Example usage",
        "Method 2: Huber scree estimation",
        "Huber loss",
        "[\\rho_\\tau(r)",
        "[\\psi_\\tau(r)",
        "\\rho_\\tau'(r)",
        "Huber mean estimator",
        "[\\frac{1}{n}\\sum_{i=1}^n\\psi_\\tau(w_{i\\ell}-\\mu)",
        "Noisy gradient descent",
        "[r_",
        "w_",
        "[g_\\ell^",
        "[\\mu_\\ell^",
        "Sensitivity of one gradient step",
        "DP Huber scree estimate",
        "[\\widetilde\\lambda_\\ell^",
        "Robustification parameter",
        "Other control parameters",
        "Method 3: Private modified winsorized mean scree estimation",
        "Non-private modified winsorized mean",
        "[\\phi_{a,b}(x)",
        "[\\hat\\mu_p",
        "Sample splitting notation",
        "Private quantile estimation",
        "[\\zeta_\\ell",
        "[p",
        "Winsorized mean",
        "[w_",
        "[\\hat\\lambda_\\ell^",
        "[\\Delta_\\ell^",
        "DP PMWM scree estimate",
        "[\\widetilde\\lambda_\\ell^",
        "[\\sigma_\\ell",
        "\\frac",
        "Privacy budget splitting",
        "This can be split as[\\epsilon_\\ell",
        "\\epsilon_{Q,\\ell}+\\epsilon_{M,\\ell},\\qquad\\delta_\\ell",
        "[\\epsilon_",
        "\\epsilon_",
        "Parameters",
        "trim_const, eta: Parameters used to set the practical clipping proportion[p",
        "Post-processing",
        "[\\widetilde",
        "References"
      ],
      "created": "2026-06-04 14:11:38",
      "modified": "2026-06-04 14:11:38",
      "commits": 1
    },
    {
      "source": "pc_direction.Rmd",
      "filename": "pc_direction.html",
      "title": "PC Directions in dppca",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Notation",
        "1. Non-private PC directions",
        "[\\hat\\Sigma",
        "[\\hat V = [\\hat v_1,\\ldots,\\hat v_p],\\quad\\hat\\Lambda",
        "[\\hat v_\\ell",
        "2. DP PC directions",
        "Summary",
        "References"
      ],
      "created": "2026-06-04 14:11:38",
      "modified": "2026-06-04 14:11:38",
      "commits": 1
    },
    {
      "source": "pca_background.Rmd",
      "filename": "pca_background.html",
      "title": "Principal Component Analysis Background",
      "engine": "knitr::rmarkdown",
      "headings": [
        "0. Problem setup",
        "1. Population PCA",
        "First principal component direction",
        "[v_1",
        "\\arg\\max_{|v|_2 = 1}\\operatorname{Var}(v^\\top Y)",
        "Subsequent principal component directions",
        "[v_k",
        "2. Eigenvalue decomposition",
        "Lagrangian formulation",
        "[\\mathcal{L}(v,\\lambda)",
        "v^\\top \\Sigma v",
        "[\\frac",
        "2\\Sigma v - 2\\lambda v",
        "[v^\\top \\Sigma v",
        "v^\\top (\\lambda v)",
        "\\lambda v^\\top v",
        "[\\max_{|v|_2 = 1} \\operatorname{Var}(v^\\top Y)",
        "\\max_{|v|_2 = 1} v^\\top \\Sigma v",
        "[\\lambda_\\ell",
        "v_\\ell^\\top \\Sigma v_\\ell",
        "3. Sample PCA",
        "Let[\\bar X",
        "[\\hat\\Sigma",
        "Sample principal component directions",
        "[\\hat v_1",
        "[\\hat v_\\ell",
        "[\\hat\\lambda_\\ell",
        "4. Principal component score and scree",
        "PC scores",
        "PC Scree values",
        "\\operatorname{Var}(X\\hat v_\\ell)",
        "\\hat v_\\ell^\\top \\hat\\Sigma \\hat v_\\ell",
        "[\\widehat{\\mathrm{PVE}}_\\ell",
        "Relationship between score plots and scree plots",
        "References"
      ],
      "created": "2026-06-04 14:11:38",
      "modified": "2026-06-04 14:11:38",
      "commits": 1
    }
  ],
  "_score": 3.3979400086720375,
  "_indexed": false,
  "_nocasepkg": "dppca",
  "_universes": [
    "cran",
    "yejinjo0220"
  ],
  "_indexurl": "https://yejinjo0220.r-universe.dev/dppca",
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.1.0",
      "date": "2026-06-04T17:04:21.000Z",
      "distro": "noble",
      "commit": "9185e112b376c68b7aaf77d4ef5a6671138a7b4c",
      "fileid": "c2cabb7b651fa6c217f58b8a3d859641700d9df2f3b916ff1f24104307bc8dff",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/26966745660"
    },
    {
      "r": "4.6.0",
      "os": "linux",
      "version": "0.1.0",
      "date": "2026-06-04T17:04:38.000Z",
      "distro": "noble",
      "commit": "9185e112b376c68b7aaf77d4ef5a6671138a7b4c",
      "fileid": "b318a11c1b1fd69cd57051051deb3bc149ea32683d6aa5c7345de7918496b474",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/26966745660"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.1.0",
      "date": "2026-06-04T17:04:42.000Z",
      "commit": "9185e112b376c68b7aaf77d4ef5a6671138a7b4c",
      "fileid": "9e44953145b1eb19b053427af0e83020f14634af386345ba64999d4660d219d8",
      "status": "success",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/26966745660"
    }
  ]
}