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