#' Application to visualize results of simulations
#'
#' @param simulation_results Output of the simulations function
#' @param time_results Output of the execution_time function
#'
#' @return shiny app
#'
#' @import shiny
#' @import ggplot2
#'
#' @export
#'
simulation_app <- function(simulation_results, time_results = NULL) {
simulation_results <- dplyr::mutate(simulation_results,
correlation = paste(cor_type, cor_val,
", "),
n_nonzero = as.character(n_nonzero),
signal = as.character(signal))
time_results <- dplyr::mutate(time_results,
correlation = paste(cor_type, cor_val,
", "),
n_nonzero = as.character(n_nonzero),
signal = as.character(signal))
correlations <- unique(simulation_results[["correlation"]])
column_numbers <- unique(simulation_results[["n_variables"]])
observations_numbers <- unique(simulation_results[["n_observations"]])
signal_strengths <- unique(simulation_results[["signal"]])
signal_counts <- unique(simulation_results[["n_nonzero"]])
fdrs <- unique(simulation_results[["FDR"]])
column_choices <- colnames(time_results)
column_choices <- column_choices[!(column_choices %in% c("model", "statistic", "value",
"cor_type", "cor_val"))]
shinyApp(
ui = fluidPage(title = "czesc",
sidebarLayout(
sidebarPanel(id = "HI", label = "HI",
selectInput("groupby", "Group by",
choices = column_choices,
selected = column_choices[1]),
checkboxGroupInput("n_obs", "Observations",
choices = observations_numbers,
selected = observations_numbers[1]),
checkboxGroupInput("n_var", "Variables",
choices = column_numbers,
selected = column_numbers[1]),
checkboxGroupInput("cor", "Correlation",
choices = correlations,
selected = correlations[1]),
checkboxGroupInput("nonzero", "Non-zero parameters",
choices = signal_counts,
selected = signal_counts[1]),
checkboxGroupInput("signal", "Signal strength",
choices = signal_strengths,
selected = signal_strengths[1]),
checkboxGroupInput("fdr", "FDR",
choices = fdrs,
selected = fdrs[1])),
mainPanel(plotOutput("sim_plot"),
plotOutput("time_plot"))
)
),
server = function(input, output) {
sim <- reactive({
dplyr::filter(simulation_results,
correlation %in% input[["cor"]],
FDR %in% input[["fdr"]],
n_observations %in% input[["n_obs"]],
n_variables %in% input[["n_var"]],
signal %in% input[["signal"]],
n_nonzero %in% input[["nonzero"]])
})
output$sim_plot <- renderPlot(
ggplot(sim(), aes_string(x = "model", y = "value",
fill = input[["groupby"]])) +
geom_boxplot() +
facet_wrap(~statistic, scales = "free") +
theme_bw()
)
time <- reactive({
dplyr::filter(time_results,
correlation %in% input[["cor"]],
FDR %in% input[["fdr"]],
n_observations %in% input[["n_obs"]],
n_variables %in% input[["n_var"]],
signal %in% input[["signal"]],
n_nonzero %in% input[["nonzero"]])
})
output$time_plot <- renderPlot(
if(is.null(time_results)) {
ggplot()
} else {
ggplot(time(), aes_string(x = "model", y = "value",
fill = input[["groupby"]])) +
geom_boxplot() +
theme_bw()
}
)
}
)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.