diff --git a/R/AE_Assess.R b/R/AE_Assess.R index cbd5f3b8a..e375a71a3 100644 --- a/R/AE_Assess.R +++ b/R/AE_Assess.R @@ -25,10 +25,10 @@ #' @return `list` `lData`, a named list with: #' - each data frame in the data pipeline #' - `dfTransformed`, returned by [gsm::Transform_EventCount()] -#' - `dfAnalyzed`, returned by [gsm::Analyze_Poisson()] or [gsm::Analyze_Wilcoxon()] +#' - `dfAnalyzed`, returned by [gsm::Analyze_Poisson()], [gsm::Analyze_Wilcoxon()], or [gsm::Analyze_Identity()] #' - `dfFlagged`, returned by [gsm::Flag()] #' - `dfSummary`, returned by [gsm::Summarize()] -#' - `dfBounds`, returned by [gsm::Analyze_Poisson_PredictBounds()] when strMethod == 'poisson' +#' - `dfBounds`, returned by [gsm::Analyze_Poisson_PredictBounds()] only when strMethod == 'poisson' #' - `list` `lCharts`, a named list with: #' - `scatter`, a ggplot2 object returned by [gsm::Visualize_Scatter()] #' - `barMetric`, a ggplot2 object returned by [gsm::Visualize_Score()] using strType == "metric" @@ -48,7 +48,6 @@ #' ae_assessment_wilcoxon <- AE_Assess(dfInput, strMethod = "wilcoxon") #' #' @importFrom cli cli_alert_success cli_alert_warning cli_h2 cli_text -#' @importFrom purrr map map_dbl #' @importFrom yaml read_yaml #' @importFrom glue glue #' @@ -60,6 +59,8 @@ AE_Assess <- function(dfInput, lMapping = yaml::read_yaml(system.file("mappings", "AE_Assess.yaml", package = "gsm")), strGroup = "Site", bQuiet = TRUE) { + +# data checking ----------------------------------------------------------- stopifnot( "strMethod is not 'poisson', 'wilcoxon', or 'identity'" = strMethod %in% c("poisson", "wilcoxon", "identity"), "strMethod must be length 1" = length(strMethod) == 1, @@ -67,7 +68,6 @@ AE_Assess <- function(dfInput, "bQuiet must be logical" = is.logical(bQuiet) ) - lMapping$dfInput$strGroupCol <- lMapping$dfInput[[glue::glue("str{strGroup}Col")]] lChecks <- CheckInputs( @@ -78,7 +78,7 @@ AE_Assess <- function(dfInput, ) -# set vThreshold if NULL ------------------------------------------------ +# set thresholds and flagging parameters ---------------------------------- if (is.null(vThreshold)) { vThreshold <- switch( strMethod, @@ -88,6 +88,15 @@ AE_Assess <- function(dfInput, ) } + strValueColumnVal <- switch( + strMethod, + poisson = NULL, + wilcoxon = "Estimate", + identity = "Score" + ) + + +# begin running assessment ------------------------------------------------ if (!lChecks$status) { if (!bQuiet) cli::cli_alert_warning("{.fn AE_Assess} did not run because of failed check.") return(list( @@ -98,10 +107,8 @@ AE_Assess <- function(dfInput, }else{ if (!bQuiet) cli::cli_h2("Initializing {.fn AE_Assess}") - ######################################## - ## Save Data pipeline results to lData - ######################################## +# dfTransformed ----------------------------------------------------------- if (!bQuiet) cli::cli_text("Input data has {nrow(dfInput)} rows.") lData <- list() lData$dfTransformed <- gsm::Transform_Rate( @@ -113,7 +120,8 @@ AE_Assess <- function(dfInput, if (!bQuiet) cli::cli_alert_success("{.fn Transform_Rate} returned output with {nrow(lData$dfTransformed)} rows.") -# refactor to only analyze in elseif -------------------------------------- + +# dfAnalyzed -------------------------------------------------------------- if (strMethod == "poisson") { lData$dfAnalyzed <- gsm::Analyze_Poisson(lData$dfTransformed, bQuiet = bQuiet) if (!bQuiet) cli::cli_alert_success("{.fn Analyze_Poisson} returned output with {nrow(lData$dfAnalyzed)} rows.") @@ -127,26 +135,18 @@ AE_Assess <- function(dfInput, } -# only parameter changed for Flag is strValueCol -------------------------- - strValueColumnVal <- switch( - strMethod, - poisson = NULL, - wilcoxon = "Estimate", - identity = "Score" - ) +# dfFlagged --------------------------------------------------------------- lData$dfFlagged <- gsm::Flag(lData$dfAnalyzed, vThreshold = vThreshold, strValueColumn = strValueColumnVal) if (!bQuiet) cli::cli_alert_success("{.fn Flag} returned output with {nrow(lData$dfFlagged)} rows.") + +# dfSummary --------------------------------------------------------------- lData$dfSummary <- gsm::Summarize(lData$dfFlagged) if (!bQuiet) cli::cli_alert_success("{.fn Summarize} returned output with {nrow(lData$dfSummary)} rows.") - ######################################## - ## Save Charts to lCharts - ## - ## - strGroupLabel defaults to strGroup for now - ## - may want to move this out to be more flexible - ######################################## + +# visualizations ---------------------------------------------------------- lCharts <- list() if(!hasName(lData, 'dfBounds')) lData$dfBounds <- NULL @@ -160,6 +160,8 @@ AE_Assess <- function(dfInput, lCharts$barScore <- Visualize_Score(dfFlagged = lData$dfFlagged, strType = "score", vThreshold = vThreshold) if (!bQuiet) cli::cli_alert_success("{.fn Visualize_Score} created a chart.") + +# return data ------------------------------------------------------------- return(list( lData = lData, lCharts = lCharts, diff --git a/R/PD_Assess.R b/R/PD_Assess.R index 22203b0de..fff1abc19 100644 --- a/R/PD_Assess.R +++ b/R/PD_Assess.R @@ -17,27 +17,26 @@ #' - `"poisson"` (default) #' - `"wilcoxon"` #' - `"identity"` -#' @param strKRILabel `character` KRI description. Default: `"PDs/Week"` +#' @param lMapping Column metadata with structure `domain$key`, where `key` contains the name #' @param strGroup `character` Grouping variable. `"Site"` (the default) uses the column named in `mapping$strSiteCol`. Other valid options using the default mapping are `"Study"` and `"CustomGroup"`. -#' @param lTags `list` Assessment tags, a named list of tags describing the assessment that defaults -#' to `list(Assessment = "PD")`. `lTags` is returned as part of the assessment (`lAssess$lTags`) -#' and each tag is added as a column in `lAssess$dfSummary`. -#' @param bChart `logical` Generate data visualization? Default: `TRUE` -#' @param bReturnChecks `logical` Return input checks from [gsm::is_mapping_valid()]? Default: `FALSE` #' @param bQuiet `logical` Suppress warning messages? Default: `TRUE` #' -#' @return `list` Assessment, a named list with: +#' @return `list` `lData`, a named list with: #' - each data frame in the data pipeline -#' - `dfInput` #' - `dfTransformed`, returned by [gsm::Transform_EventCount()] -#' - `dfAnalyzed`, returned by [gsm::Analyze_Poisson()] or [gsm::Analyze_Wilcoxon()] +#' - `dfAnalyzed`, returned by [gsm::Analyze_Poisson()], [gsm::Analyze_Wilcoxon()], or [gsm::Analyze_Identity()] #' - `dfFlagged`, returned by [gsm::Flag()] #' - `dfSummary`, returned by [gsm::Summarize()] -#' - assessment metadata -#' - `strFunctionName` -#' - `lTags` -#' - output(s) -#' - `chart` +#' - `dfBounds`, returned by [gsm::Analyze_Poisson_PredictBounds()] only when strMethod == 'poisson' +#' - `list` `lCharts`, a named list with: +#' - `scatter`, a ggplot2 object returned by [gsm::Visualize_Scatter()] +#' - `barMetric`, a ggplot2 object returned by [gsm::Visualize_Score()] using strType == "metric" +#' - `barScore`, a ggplot2 object returned by [gsm::Visualize_Score()] using strType == "score" +#' - `list` `lChecks`, a named list with: +#' - `dfInput`, a named list returned by [gsm::is_mapping_valid()] +#' - `status`, a boolean returned by [gsm::is_mapping_valid()] +#' - `mapping`, a named list that is provided as an argument to the `lMapping` parameter in [gsm::AE_Assess()] +#' - `spec`, a named list used to define variable specifications #' #' @includeRmd ./man/md/PD_Assess.md #' @includeRmd ./man/md/analyze_rate.md @@ -48,7 +47,6 @@ #' pd_assessment_wilcoxon <- PD_Assess(dfInput, strMethod = "wilcoxon") #' #' @importFrom cli cli_alert_success cli_alert_warning cli_h2 cli_text -#' @importFrom purrr map map_dbl #' @importFrom yaml read_yaml #' @importFrom glue glue #' @@ -57,154 +55,113 @@ PD_Assess <- function(dfInput, vThreshold = NULL, strMethod = "poisson", - strKRILabel = "PDs/Week", + lMapping = yaml::read_yaml(system.file("mappings", "PD_Assess.yaml", package = "gsm")), strGroup = "Site", - lTags = list(Assessment = "PD"), - bChart = TRUE, - bReturnChecks = FALSE, bQuiet = TRUE) { + +# data checking ----------------------------------------------------------- stopifnot( - "dfInput is not a data.frame" = is.data.frame(dfInput), - "dfInput is missing one or more of these columns: SubjectID, Count, Exposure, and Rate" = all(c("SubjectID", "Count", "Exposure", "Rate") %in% names(dfInput)), "strMethod is not 'poisson', 'wilcoxon', or 'identity'" = strMethod %in% c("poisson", "wilcoxon", "identity"), "strMethod must be length 1" = length(strMethod) == 1, - "strKRILabel must be length 1" = length(strKRILabel) == 1, "strGroup must be one of: Site, Study, or CustomGroup" = strGroup %in% c("Site", "Study", "CustomGroup"), - "bChart must be logical" = is.logical(bChart), - "bReturnChecks must be logical" = is.logical(bReturnChecks), "bQuiet must be logical" = is.logical(bQuiet) ) - if (!is.null(lTags)) { - stopifnot( - "lTags is not named" = (!is.null(names(lTags))), - "lTags has unnamed elements" = all(names(lTags) != ""), - "lTags cannot contain elements named: 'GroupID', 'GroupLabel', 'N', 'KRI', 'KRILabel', 'Score', 'ScoreLabel', or 'Flag'" = !names(lTags) %in% - c( - "GroupID", - "GroupLabel", - "N", - "KRI", - "KRILabel", - "Score", - "ScoreLabel", - "Flag" - ) - ) - - if (any(unname(purrr::map_dbl(lTags, ~ length(.))) > 1)) { - lTags <- purrr::map(lTags, ~ paste(.x, collapse = ", ")) - } - } + lMapping$dfInput$strGroupCol <- lMapping$dfInput[[glue::glue("str{strGroup}Col")]] - lAssess <- list( - strFunctionName = deparse(sys.call()[1]), - lTags = lTags, - dfInput = dfInput + lChecks <- CheckInputs( + context = "PD_Assess", + dfs = list(dfInput = dfInput), + mapping = lMapping, + bQuiet = bQuiet ) - mapping <- yaml::read_yaml(system.file("mappings", "AE_Assess.yaml", package = "gsm")) - mapping$dfInput$strGroupCol <- mapping$dfInput[[glue::glue("str{strGroup}Col")]] +# set thresholds and flagging parameters ---------------------------------- + if (is.null(vThreshold)) { + vThreshold <- switch( + strMethod, + poisson = c(-5, 5), + wilcoxon = c(0.0001, NA), + identity = c(0.000895, 0.003059) + ) + } - stopifnot( - "`strGroup` not found in mapping" = glue::glue("str{strGroup}Col") %in% names(mapping$dfInput), - "`strGroupCol` not found in dfInput" = mapping$dfInput$strGroupCol %in% names(dfInput) + strValueColumnVal <- switch( + strMethod, + poisson = NULL, + wilcoxon = "Estimate", + identity = "Score" ) - checks <- CheckInputs( - context = "PD_Assess", - dfs = list(dfInput = lAssess$dfInput), - mapping = mapping, - bQuiet = bQuiet - ) - if (checks$status) { +# begin running assessment ------------------------------------------------ + if (!lChecks$status) { + if (!bQuiet) cli::cli_alert_warning("{.fn PD_Assess} did not run because of failed check.") + return(list( + lData = NULL, + lCharts = NULL, + lChecks = lChecks + )) + } else { if (!bQuiet) cli::cli_h2("Initializing {.fn PD_Assess}") - if (!bQuiet) cli::cli_text("Input data has {nrow(lAssess$dfInput)} rows.") - - lAssess$dfTransformed <- gsm::Transform_EventCount( - lAssess$dfInput, - strGroupCol = mapping$dfInput$strGroupCol, - strCountCol = "Count", - strExposureCol = "Exposure", - strKRILabel = strKRILabel + +# dfTransformed ----------------------------------------------------------- + if (!bQuiet) cli::cli_text("Input data has {nrow(dfInput)} rows.") + lData <- list() + + lData$dfTransformed <- gsm::Transform_Rate( + dfInput = dfInput, + strGroupCol = lMapping$dfInput$strGroupCol, + strNumeratorCol = "Count", + strDenominatorCol = "Exposure" ) - if (!bQuiet) cli::cli_alert_success("{.fn Transform_EventCount} returned output with {nrow(lAssess$dfTransformed)} rows.") + if (!bQuiet) cli::cli_alert_success("{.fn Transform_Rate} returned output with {nrow(lData$dfTransformed)} rows.") + +# dfAnalyzed -------------------------------------------------------------- if (strMethod == "poisson") { - if (is.null(vThreshold)) { - vThreshold <- c(-5, 5) - } else { - stopifnot( - "vThreshold is not numeric" = is.numeric(vThreshold), - "vThreshold for Poisson contains NA values" = all(!is.na(vThreshold)), - "vThreshold is not length 2" = length(vThreshold) == 2 - ) - } - - lAssess$dfAnalyzed <- gsm::Analyze_Poisson(lAssess$dfTransformed, bQuiet = bQuiet) - if (!bQuiet) cli::cli_alert_success("{.fn Analyze_Poisson} returned output with {nrow(lAssess$dfAnalyzed)} rows.") - - lAssess$dfFlagged <- gsm::Flag(lAssess$dfAnalyzed, vThreshold = vThreshold) - if (!bQuiet) cli::cli_alert_success("{.fn Flag} returned output with {nrow(lAssess$dfFlagged)} rows.") - - lAssess$dfSummary <- gsm::Summarize(lAssess$dfFlagged, lTags = lTags) - if (!bQuiet) cli::cli_alert_success("{.fn Summarize} returned output with {nrow(lAssess$dfSummary)} rows.") + lData$dfAnalyzed <- gsm::Analyze_Poisson(lData$dfTransformed, bQuiet = bQuiet) + if (!bQuiet) cli::cli_alert_success("{.fn Analyze_Poisson} returned output with {nrow(lData$dfAnalyzed)} rows.") + lData$dfBounds <- gsm::Analyze_Poisson_PredictBounds(lData$dfTransformed, vThreshold = vThreshold, bQuiet = bQuiet) } else if (strMethod == "wilcoxon") { - if (is.null(vThreshold)) { - vThreshold <- c(0.0001, NA) - } else { - stopifnot( - "vThreshold is not numeric" = is.numeric(vThreshold), - "Lower limit (first element) for Wilcoxon vThreshold is not between 0 and 1" = vThreshold[1] < 1 & vThreshold[1] > 0, - "Upper limit (second element) for Wilcoxon vThreshold is not NA" = is.na(vThreshold[2]), - "vThreshold is not length 2" = length(vThreshold) == 2 - ) - } - - lAssess$dfAnalyzed <- gsm::Analyze_Wilcoxon(lAssess$dfTransformed, "KRI", bQuiet = bQuiet) - if (!bQuiet) cli::cli_alert_success("{.fn Analyze_Wilcoxon} returned output with {nrow(lAssess$dfAnalyzed)} rows.") - - lAssess$dfFlagged <- gsm::Flag(lAssess$dfAnalyzed, vThreshold = vThreshold, strValueColumn = "Estimate") - if (!bQuiet) cli::cli_alert_success("{.fn Flag} returned output with {nrow(lAssess$dfFlagged)} rows.") - - lAssess$dfSummary <- gsm::Summarize(lAssess$dfFlagged, lTags = lTags) - if (!bQuiet) cli::cli_alert_success("{.fn Summarize} returned output with {nrow(lAssess$dfSummary)} rows.") + lData$dfAnalyzed <- gsm::Analyze_Wilcoxon(lData$dfTransformed, bQuiet = bQuiet) + if (!bQuiet) cli::cli_alert_success("{.fn Analyze_Wilcoxon} returned output with {nrow(lData$dfAnalyzed)} rows.") } else if (strMethod == "identity") { - if (is.null(vThreshold)) { - vThreshold <- c(0.000895, 0.003059) - } else { - stopifnot( - "vThreshold is not numeric" = is.numeric(vThreshold), - "vThreshold for Identity contains NA values" = all(!is.na(vThreshold)), - "vThreshold is not length 2" = length(vThreshold) == 2 - ) - } - - lAssess$dfAnalyzed <- gsm::Analyze_Identity(lAssess$dfTransformed, bQuiet = bQuiet) - if (!bQuiet) cli::cli_alert_success("{.fn Analyze_Identity} returned output with {nrow(lAssess$dfAnalyzed)} rows.") - - lAssess$dfFlagged <- gsm::Flag(lAssess$dfAnalyzed, vThreshold = vThreshold) - if (!bQuiet) cli::cli_alert_success("{.fn Flag} returned output with {nrow(lAssess$dfFlagged)} rows.") - - lAssess$dfSummary <- gsm::Summarize(lAssess$dfFlagged, lTags = lTags) - if (!bQuiet) cli::cli_alert_success("{.fn Summarize} returned output with {nrow(lAssess$dfSummary)} rows.") + lData$dfAnalyzed <- gsm::Analyze_Identity(lData$dfTransformed) + if (!bQuiet) cli::cli_alert_success("{.fn Analyze_Identity} returned output with {nrow(lData$dfAnalyzed)} rows.") } - if (bChart) { - if (strMethod == "poisson") { - lAssess$dfBounds <- gsm::Analyze_Poisson_PredictBounds(lAssess$dfTransformed, vThreshold = vThreshold, bQuiet = bQuiet) - lAssess$chart <- gsm::Visualize_Scatter(lAssess$dfFlagged, lAssess$dfBounds) - if (!bQuiet) cli::cli_alert_success("{.fn Visualize_Scatter} created a chart.") - } else { - lAssess$chart <- gsm::Visualize_Scatter(lAssess$dfFlagged) - if (!bQuiet) cli::cli_alert_success("{.fn Visualize_Scatter} created a chart.") - } - } - } else { - if (!bQuiet) cli::cli_alert_warning("{.fn PD_Assess} did not run because of failed check.") - } - if (bReturnChecks) lAssess$lChecks <- checks - return(lAssess) +# dfFlagged --------------------------------------------------------------- + lData$dfFlagged <- gsm::Flag(lData$dfAnalyzed, vThreshold = vThreshold, strValueColumn = strValueColumnVal) + if (!bQuiet) cli::cli_alert_success("{.fn Flag} returned output with {nrow(lData$dfFlagged)} rows.") + + +# dfSummary --------------------------------------------------------------- + lData$dfSummary <- gsm::Summarize(lData$dfFlagged) + if (!bQuiet) cli::cli_alert_success("{.fn Summarize} returned output with {nrow(lData$dfSummary)} rows.") + + +# visualizations ---------------------------------------------------------- + lCharts <- list() + + if(!hasName(lData, 'dfBounds')) lData$dfBounds <- NULL + + lCharts$scatter <- gsm::Visualize_Scatter(dfFlagged = lData$dfFlagged, dfBounds = lData$dfBounds, strGroupLabel = strGroup) + if (!bQuiet) cli::cli_alert_success("{.fn Visualize_Scatter} created a chart.") + + lCharts$barMetric <- Visualize_Score(dfFlagged = lData$dfFlagged, strType = "metric") + if (!bQuiet) cli::cli_alert_success("{.fn Visualize_Score} created a chart.") + + lCharts$barScore <- Visualize_Score(dfFlagged = lData$dfFlagged, strType = "score", vThreshold = vThreshold) + if (!bQuiet) cli::cli_alert_success("{.fn Visualize_Score} created a chart.") + + +# return data ------------------------------------------------------------- + return(list( + lData = lData, + lCharts = lCharts, + lChecks = lChecks + )) + } } diff --git a/man/AE_Assess.Rd b/man/AE_Assess.Rd index bdfad019d..93b2de069 100644 --- a/man/AE_Assess.Rd +++ b/man/AE_Assess.Rd @@ -40,10 +40,10 @@ of the column.} \item each data frame in the data pipeline \itemize{ \item \code{dfTransformed}, returned by \code{\link[=Transform_EventCount]{Transform_EventCount()}} -\item \code{dfAnalyzed}, returned by \code{\link[=Analyze_Poisson]{Analyze_Poisson()}} or \code{\link[=Analyze_Wilcoxon]{Analyze_Wilcoxon()}} +\item \code{dfAnalyzed}, returned by \code{\link[=Analyze_Poisson]{Analyze_Poisson()}}, \code{\link[=Analyze_Wilcoxon]{Analyze_Wilcoxon()}}, or \code{\link[=Analyze_Identity]{Analyze_Identity()}} \item \code{dfFlagged}, returned by \code{\link[=Flag]{Flag()}} \item \code{dfSummary}, returned by \code{\link[=Summarize]{Summarize()}} -\item \code{dfBounds}, returned by \code{\link[=Analyze_Poisson_PredictBounds]{Analyze_Poisson_PredictBounds()}} when strMethod == 'poisson' +\item \code{dfBounds}, returned by \code{\link[=Analyze_Poisson_PredictBounds]{Analyze_Poisson_PredictBounds()}} only when strMethod == 'poisson' } \item \code{list} \code{lCharts}, a named list with: \itemize{ diff --git a/man/PD_Assess.Rd b/man/PD_Assess.Rd index 1bab2b9aa..7ea2888af 100644 --- a/man/PD_Assess.Rd +++ b/man/PD_Assess.Rd @@ -8,11 +8,8 @@ PD_Assess( dfInput, vThreshold = NULL, strMethod = "poisson", - strKRILabel = "PDs/Week", + lMapping = yaml::read_yaml(system.file("mappings", "PD_Assess.yaml", package = "gsm")), strGroup = "Site", - lTags = list(Assessment = "PD"), - bChart = TRUE, - bReturnChecks = FALSE, bQuiet = TRUE ) } @@ -30,39 +27,35 @@ signed-rank test (\code{strMethod} = "wilcoxon"), and \code{c(0.000895, 0.003059 \item \code{"identity"} }} -\item{strKRILabel}{\code{character} KRI description. Default: \code{"PDs/Week"}} +\item{lMapping}{Column metadata with structure \code{domain$key}, where \code{key} contains the name} \item{strGroup}{\code{character} Grouping variable. \code{"Site"} (the default) uses the column named in \code{mapping$strSiteCol}. Other valid options using the default mapping are \code{"Study"} and \code{"CustomGroup"}.} -\item{lTags}{\code{list} Assessment tags, a named list of tags describing the assessment that defaults -to \code{list(Assessment = "PD")}. \code{lTags} is returned as part of the assessment (\code{lAssess$lTags}) -and each tag is added as a column in \code{lAssess$dfSummary}.} - -\item{bChart}{\code{logical} Generate data visualization? Default: \code{TRUE}} - -\item{bReturnChecks}{\code{logical} Return input checks from \code{\link[=is_mapping_valid]{is_mapping_valid()}}? Default: \code{FALSE}} - \item{bQuiet}{\code{logical} Suppress warning messages? Default: \code{TRUE}} } \value{ -\code{list} Assessment, a named list with: +\code{list} \code{lData}, a named list with: \itemize{ \item each data frame in the data pipeline \itemize{ -\item \code{dfInput} \item \code{dfTransformed}, returned by \code{\link[=Transform_EventCount]{Transform_EventCount()}} -\item \code{dfAnalyzed}, returned by \code{\link[=Analyze_Poisson]{Analyze_Poisson()}} or \code{\link[=Analyze_Wilcoxon]{Analyze_Wilcoxon()}} +\item \code{dfAnalyzed}, returned by \code{\link[=Analyze_Poisson]{Analyze_Poisson()}}, \code{\link[=Analyze_Wilcoxon]{Analyze_Wilcoxon()}}, or \code{\link[=Analyze_Identity]{Analyze_Identity()}} \item \code{dfFlagged}, returned by \code{\link[=Flag]{Flag()}} \item \code{dfSummary}, returned by \code{\link[=Summarize]{Summarize()}} +\item \code{dfBounds}, returned by \code{\link[=Analyze_Poisson_PredictBounds]{Analyze_Poisson_PredictBounds()}} only when strMethod == 'poisson' } -\item assessment metadata +\item \code{list} \code{lCharts}, a named list with: \itemize{ -\item \code{strFunctionName} -\item \code{lTags} +\item \code{scatter}, a ggplot2 object returned by \code{\link[=Visualize_Scatter]{Visualize_Scatter()}} +\item \code{barMetric}, a ggplot2 object returned by \code{\link[=Visualize_Score]{Visualize_Score()}} using strType == "metric" +\item \code{barScore}, a ggplot2 object returned by \code{\link[=Visualize_Score]{Visualize_Score()}} using strType == "score" } -\item output(s) +\item \code{list} \code{lChecks}, a named list with: \itemize{ -\item \code{chart} +\item \code{dfInput}, a named list returned by \code{\link[=is_mapping_valid]{is_mapping_valid()}} +\item \code{status}, a boolean returned by \code{\link[=is_mapping_valid]{is_mapping_valid()}} +\item \code{mapping}, a named list that is provided as an argument to the \code{lMapping} parameter in \code{\link[=AE_Assess]{AE_Assess()}} +\item \code{spec}, a named list used to define variable specifications } } }