xref: /aosp_15_r20/external/rappor/apps/rappor-sim/ui.R (revision 2abb31345f6c95944768b5222a9a5ed3fc68cc00)
1*2abb3134SXin Lilibrary(shiny)
2*2abb3134SXin Li
3*2abb3134SXin LishinyUI(pageWithSidebar(
4*2abb3134SXin Li                        headerPanel("RAPPOR Simulation"),
5*2abb3134SXin Li                        sidebarPanel(
6*2abb3134SXin Li                                     tabsetPanel(
7*2abb3134SXin Li                                                 tabPanel("RAPPOR",
8*2abb3134SXin Li                                                          selectInput("size", "Bloom filter size:",
9*2abb3134SXin Li                                                                      c(4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096),
10*2abb3134SXin Li                                                                      selected = 128),
11*2abb3134SXin Li                                                          selectInput("hashes", "Number of hash functions:",
12*2abb3134SXin Li                                                                      c(1, 2, 4, 8, 16, 32),
13*2abb3134SXin Li                                                                      selected = 2),
14*2abb3134SXin Li                                                          selectInput("instances", "Number of cohorts:",
15*2abb3134SXin Li                                                                      c(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024),
16*2abb3134SXin Li                                                                      selected = 8),
17*2abb3134SXin Li                                                          br(),
18*2abb3134SXin Li                                                          br(),
19*2abb3134SXin Li                                                          sliderInput("N", "Number of samples to generate:",
20*2abb3134SXin Li                                                                      min = 100000, max = 10000000,
21*2abb3134SXin Li                                                                      value = 1000000, step = 100000),
22*2abb3134SXin Li                                                          br(),
23*2abb3134SXin Li                                                          helpText(actionButton("sample", "Rerun Simulations"), align = "center"),
24*2abb3134SXin Li                                                          br(),
25*2abb3134SXin Li                                                          br(),
26*2abb3134SXin Li                                                          helpText("Version 0.1", align = "center"),
27*2abb3134SXin Li                                                          helpText(a("RAPPOR Repository", href="http://github.com/google/rappor"), align = "center")),
28*2abb3134SXin Li                                                 tabPanel("Privacy",
29*2abb3134SXin Li                                                          sliderInput("p", "Probability of reporting noise (p):",
30*2abb3134SXin Li                                                                      min = .01, max = .99, value = .5, step = .01),
31*2abb3134SXin Li                                                          sliderInput("q", "Probability of reporting signal (q):",
32*2abb3134SXin Li                                                                      min = .01, max = .99, value = .75, step = .01),
33*2abb3134SXin Li                                                          sliderInput("f", "Probability of lies (f):",
34*2abb3134SXin Li                                                                      min = 0, max = .99, value = .5, step = .01),
35*2abb3134SXin Li                                                          br(),
36*2abb3134SXin Li                                                          htmlOutput("epsilon"),
37*2abb3134SXin Li                                                          br(),
38*2abb3134SXin Li                                                          helpText("* In addition to p, q and f, the number of hash functions (set in the RAPPOR tab) also effects privacy guarantees."),
39*2abb3134SXin Li                                                          br(),
40*2abb3134SXin Li                                                          br(),
41*2abb3134SXin Li                                                          br()
42*2abb3134SXin Li                                                          ),
43*2abb3134SXin Li                                                 tabPanel("Population",
44*2abb3134SXin Li                                                          sliderInput("nstrs", "Number of strings:",
45*2abb3134SXin Li                                                                      min = 100, max = 10000, value = 300, step = 100),
46*2abb3134SXin Li                                                          br(),
47*2abb3134SXin Li                                                          sliderInput("nonzero", "Proportion of non-zero strings:",
48*2abb3134SXin Li                                                                      min = .1, max = 1, value = 0.5, step = .1),
49*2abb3134SXin Li                                                          br(),
50*2abb3134SXin Li                                                          selectInput("decay", "Decay of non-zero strings",
51*2abb3134SXin Li                                                                      c("Linear", "Exponential", "Constant"),
52*2abb3134SXin Li                                                                      selected = "Exponential"),
53*2abb3134SXin Li                                                          br(),
54*2abb3134SXin Li                                                          conditionalPanel(condition = "input.decay == 'Exponential'",
55*2abb3134SXin Li                                                                           sliderInput("expo", "Rate of exponential decay",
56*2abb3134SXin Li                                                                                       min = 1, max = 200, value = 10, step = 1)),
57*2abb3134SXin Li                                                          sliderInput("background", "Frequency of background strings:",
58*2abb3134SXin Li                                                                      min = 0, max = .2, value = .05, step = .01),
59*2abb3134SXin Li                                                          br(),
60*2abb3134SXin Li                                                          br(),
61*2abb3134SXin Li                                                          br()
62*2abb3134SXin Li                                                 ),
63*2abb3134SXin Li                                                 tabPanel("Decoding",
64*2abb3134SXin Li                                                          sliderInput("alpha", "Alpha - probability of false positive:",
65*2abb3134SXin Li                                                                      min = .01, max = .3, value = .05, step = .01),
66*2abb3134SXin Li                                                          br(),
67*2abb3134SXin Li                                                          selectInput("correction", "Multiple testing correction",
68*2abb3134SXin Li                                                                      c("None", "Bonferroni", "FDR"),
69*2abb3134SXin Li                                                                      selected = "FDR"),
70*2abb3134SXin Li                                                          br(),
71*2abb3134SXin Li                                                          sliderInput("missing", "Proportion of non-zero strings missing from decoding:",
72*2abb3134SXin Li                                                                      min = 0, max = 1, value = 0, step = .1),
73*2abb3134SXin Li                                                          br()
74*2abb3134SXin Li                                                          )
75*2abb3134SXin Li                                     )),
76*2abb3134SXin Li                        mainPanel(
77*2abb3134SXin Li                                  tabsetPanel(
78*2abb3134SXin Li                                              tabPanel("Life of a  Report",
79*2abb3134SXin Li                                                       actionButton("new_user", "New Participant"),
80*2abb3134SXin Li                                                       actionButton("new_value", "New Value"),
81*2abb3134SXin Li                                                       actionButton("new_report", "New Report"),
82*2abb3134SXin Li                                                       plotOutput("example", height = "600px")),
83*2abb3134SXin Li                                              tabPanel("Population", plotOutput("probs", height = "600px")),
84*2abb3134SXin Li                                              tabPanel("Results", helpText(h3("Summary")), htmlOutput("pr"), br(), br(), dataTableOutput("tab")),
85*2abb3134SXin Li                                              tabPanel("True Bits", plotOutput("truth", height = "800px")),
86*2abb3134SXin Li                                              tabPanel("Estimated Bits", plotOutput("ests", height = "800px")),
87*2abb3134SXin Li                                              tabPanel("Estimates vs Truth", plotOutput("ests_truth", height = "600px")),
88*2abb3134SXin Li                                              # tabPanel("Lasso", plotOutput("lasso", height = "600px")),
89*2abb3134SXin Li                                              tabPanel("Residuals", plotOutput("resid", height = "600px"))
90*2abb3134SXin Li                                              )
91*2abb3134SXin Li                                  )
92*2abb3134SXin Li                        ))
93