The dppca
Shiny app provides an interactive interface for estimating and
visualizing differentially private principal component analysis (PCA)
results. You can explore the example datasets, choose privacy budgets
and estimation methods, and compare available visualizations without
writing R code.
The online application is hosted on Posit Connect
Cloud. It runs separately from this documentation website, so
you do not need to install R or dppca to try the example
analyses.
Use the tabs at the top of the results panel to switch between four analyses.
| Tab | What you can explore |
|---|---|
| PCA | An integrated analysis with scree/PVE, score, loading, variable, and biplot views based on a shared private PCA fit. |
| Loading | Private PC directions displayed as vector, point, or heatmap plots. |
| Scree | Private scree values and proportions of variance explained (PVE), using the clipped, PMWM, or Huber estimators. |
| Score | Private two-dimensional score histograms and synthetic sampled points, using additive and/or sparse histogram methods. Grouped displays are available when group labels are selected. |
For more detail on the methods, see the DP Loading, DP Scree, and DP Score articles.
After an analysis has run, you can adjust supported plot settings to change the display without re-estimating the underlying private quantities. For PCA, the View menu lets you inspect individual plots or the integrated overview.
The app includes three example datasets: gau (synthetic
Gaussian data), gau_g (Gaussian data with group labels),
and vowel (vowel measurements). It also supports
CSV upload through the Data panel.
Use Include non-private comparison only when a non-private reference is appropriate. Ordinary PCA results are not differentially private and should not be released from sensitive data without authorization.
For the R interfaces behind the app, see the Getting Started tutorial and DP PCA Visualization tutorial.
If you prefer to run the application on your own computer, install
dppca and shiny, then launch the bundled
app:
install.packages("shiny")
# Install the current development version of dppca if needed:
# remotes::install_github("yejinjo0220/dppca")
library(dppca)
dppca_app()You can also supply your own data using dppca_app(X) or
dppca_app(X, group = "group"); see dppca_app() for
details.
Online application: yejinjo0220-dppca.share.connect.posit.cloud