diff --git a/.Rbuildignore b/.Rbuildignore index daeb43c4cbe47396f54a1134ee6ac7d1aa8e64a0..e0fa3f49ff3b0e20f022e14e7650a47f80433a41 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -3,6 +3,7 @@ ^.travis.yml$ ^data-raw$ ^deployment$ -^code.json$ ^LICENSE.md$ +^code.json$ ^DISCLAIMER.md$ +^revisions.txt$ \ No newline at end of file diff --git a/DESCRIPTION b/DESCRIPTION index 9075bcc647174f27cd4c06ae7d1cd25c10df59ef..3126920f50d17cb45098bb319143f62caab39cf0 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Package: GenEst -Title: Generalized Fatality Estimator -Version: 1.0.0 -Date: 2018-10-10 +Title: Generalized Mortality Estimator +Version: 1.1.1 +Date: 2018-11-19 Authors@R: c( person("Daniel", "Dalthorp", , "ddalthorp@usgs.gov", c("aut", "cre")), person("Juniper", "Simonis", , "simonis@dapperstats.com", "aut"), @@ -12,15 +12,14 @@ Authors@R: c( person("Robert", "Wolpert", , "wolpert@stat.duke.edu", "aut"), person("Jared", "Studyvin", , "jstudyvin@west-inc.com", "aut"), person("Franzi", "Korner-Nievergelt", , "fraenzi.korner@oikostat.ch", "aut")) -Description: A tool for estimating mortality from searcher efficiency, carcass - persistence, search schedule, and carcass observation data. +Description: Command-line and 'shiny' GUI implementation of the GenEst models for estimating bird and bat mortality at wind and solar power facilities, following Dalthorp, et al. (2018) <https://pubs.usgs.gov/tm/7a2/tm7a2.pdf>. Depends: R (>= 3.5.0) License: CC0 Encoding: UTF-8 LazyData: true Imports: - corpus, cbinom (>= 1.3), + corpus, DT, gsl, gtools, @@ -41,3 +40,4 @@ Suggests: VignetteBuilder: knitr LinkingTo: Rcpp + diff --git a/DISCLAIMER.md b/DISCLAIMER.md index 0b76be8607da557341b993281b7f04cc5aa72183..7ad2ce0e8cb19e2465f15556b54f9105c726b192 100644 --- a/DISCLAIMER.md +++ b/DISCLAIMER.md @@ -1,10 +1,8 @@ -This software has been approved for release by the U.S. Geological -Survey (USGS). Although the software has been subjected to rigorous -review, the USGS reserves the right to update the software as needed -pursuant to further analysis and review. No warranty, expressed or -implied, is made by the USGS or the U.S. Government as to the -functionality of the software and related material nor shall the fact of -release constitute any such warranty. Furthermore, the software is -released on condition that neither the USGS nor the U.S. Government shall -be held liable for any damages resulting from its authorized or -unauthorized use. +This software is preliminary or provisional and is subject to revision. It is +being provided to meet the need for timely best science. The software has not +received final approval by the U.S. Geological Survey (USGS). No warranty, +expressed or implied, is made by the USGS or the U.S. Government as to the +functionality of the software and related material nor shall the fact of release +constitute any such warranty. The software is provided on the condition that +neither the USGS nor the U.S. Government shall be held liable for any damages +resulting from the authorized or unauthorized use of the software. diff --git a/NAMESPACE b/NAMESPACE index 5a506cfc62abf8c0924f2cb6e6c1b235e074fa51..362061f3580bbaf132aac546b4db15ab099ab953 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -38,6 +38,7 @@ export(GenEstGUIauthors) export(GenEstInlineCSS) export(GenEstLicense) export(GenEstLogos) +export(GenEstServer) export(GenEstShinyJS) export(GenEstUI) export(GeneralInputSidebar) @@ -71,6 +72,7 @@ export(checkComponents) export(checkDate) export(checkSpecificModelCP) export(checkSpecificModelSE) +export(classText) export(clearNotifications) export(combinePreds) export(combinePredsAcrossModels) @@ -87,7 +89,6 @@ export(cpmSetSizeFail) export(cpmSetSizeFailRemove) export(cpmSetSpecCPCellPlot) export(cpmSize) -export(createReactiveValues) export(createvtext) export(dataDownloadWidget) export(dataInputPanel) @@ -110,11 +111,12 @@ export(downloadTable) export(downloadgFig) export(downloadsPanel) export(estM) +export(estText) export(estg) export(estgGeneric) export(estgGenericSize) +export(eventReaction) export(expandModelSetCP) -export(ftpLink) export(gMainPanel) export(gPanel) export(gSidebar) @@ -122,6 +124,7 @@ export(gettingStartedContent) export(gettingStartedPanel) export(helpPanel) export(initialOutput) +export(initialReactiveValues) export(isNeverDecreasing) export(kFixedWidget) export(kFixedWidgetHeader) @@ -196,17 +199,24 @@ export(prettyModTabCP) export(prettyModTabSE) export(prettySplitTab) export(rcp) +export(reNULL) +export(reVal) +export(reaction) +export(reactionMessageDone) +export(reactionMessageRun) export(readCSV) export(refMod) export(removeCols) +export(renderDTns) export(rpk) export(runGenEst) export(selectData) export(selectedDataPanel) export(setFigH) export(setFigW) -export(setkFillNeed) +export(setNotSuspending) export(setkFix) +export(setkNeed) export(simpleMplot) export(sizeCols) export(small) @@ -221,108 +231,15 @@ export(u) export(ul) export(updateColNames_size) export(updateSizeclasses) -export(update_input_clear_all) -export(update_input_cols_CP_preds) -export(update_input_cols_SE_obs) -export(update_input_cols_SE_preds) -export(update_input_cols_fta) -export(update_input_cols_ltp) -export(update_input_data_CO) -export(update_input_data_CO_clear) -export(update_input_data_CP) -export(update_input_data_CP_clear) -export(update_input_data_DWP) -export(update_input_data_DWP_clear) -export(update_input_data_SE) -export(update_input_data_SE_clear) -export(update_input_data_SS) -export(update_input_data_SS_clear) -export(update_input_outsc_CP) -export(update_input_outsc_SE) -export(update_input_run_CP) -export(update_input_run_CP_clear) -export(update_input_run_M) -export(update_input_run_M_clear) -export(update_input_run_SE) -export(update_input_run_SE_clear) -export(update_input_run_g) -export(update_input_run_g_clear) -export(update_input_sizeCol) -export(update_input_split_M_clear) -export(update_input_useSSdata) -export(update_output_SS) -export(update_output_clear_all) -export(update_output_cols_CP) -export(update_output_cols_SE) -export(update_output_data_CO) -export(update_output_data_CO_clear) -export(update_output_data_CP) -export(update_output_data_CP_clear) -export(update_output_data_DWP) -export(update_output_data_DWP_clear) -export(update_output_data_SE) -export(update_output_data_SE_clear) -export(update_output_data_SS) -export(update_output_data_SS_clear) -export(update_output_outdls_CP) -export(update_output_outpk_SE) -export(update_output_outsc_CP) -export(update_output_outsc_SE) -export(update_output_outsc_g) -export(update_output_run_CP) -export(update_output_run_CP_clear) -export(update_output_run_M) -export(update_output_run_M_clear) -export(update_output_run_SE) -export(update_output_run_SE_clear) -export(update_output_run_g) -export(update_output_run_g_clear) -export(update_output_sizeCol) -export(update_output_split_M) -export(update_output_split_M_clear) -export(update_output_transpose_split) -export(update_rv_clear_all) -export(update_rv_cols_CP_preds) -export(update_rv_cols_SE_obs) -export(update_rv_cols_SE_preds) -export(update_rv_cols_fta) -export(update_rv_cols_ltp) -export(update_rv_data_CO) -export(update_rv_data_CO_clear) -export(update_rv_data_CP) -export(update_rv_data_CP_clear) -export(update_rv_data_DWP) -export(update_rv_data_DWP_clear) -export(update_rv_data_SE) -export(update_rv_data_SE_clear) -export(update_rv_data_SS) -export(update_rv_data_SS_clear) -export(update_rv_outdls_CP) -export(update_rv_outpk_SE) -export(update_rv_outsc_CP) -export(update_rv_outsc_SE) -export(update_rv_outsc_g) -export(update_rv_run_CP) -export(update_rv_run_CP_clear) -export(update_rv_run_M) -export(update_rv_run_M_clear) -export(update_rv_run_SE) -export(update_rv_run_SE_clear) -export(update_rv_run_g) -export(update_rv_run_g_clear) -export(update_rv_sizeCol) -export(update_rv_split_M) -export(update_rv_split_M_clear) -export(update_rv_transpose_split) -export(update_rv_useSSdata) -export(update_rv_useSSinputs) +export(update_input) +export(update_output) +export(update_rv) export(updatesizeCol) export(widgetMaker) importFrom(DT,dataTableOutput) importFrom(DT,datatable) importFrom(DT,renderDataTable) importFrom(Rcpp,sourceCpp) -importFrom(cbinom,rcbinom) importFrom(corpus,print.corpus_frame) importFrom(grDevices,dev.off) importFrom(grDevices,devAskNewPage) @@ -340,7 +257,6 @@ importFrom(graphics,points) importFrom(graphics,polygon) importFrom(graphics,rect) importFrom(graphics,text) -importFrom(gsl,hyperg_2F1) importFrom(htmltools,HTML) importFrom(htmltools,a) importFrom(htmltools,br) @@ -353,16 +269,6 @@ importFrom(htmltools,img) importFrom(htmltools,p) importFrom(htmltools,tags) importFrom(lubridate,is.Date) -importFrom(matrixStats,colCounts) -importFrom(matrixStats,colMaxs) -importFrom(matrixStats,rowCounts) -importFrom(matrixStats,rowCumprods) -importFrom(matrixStats,rowCumsums) -importFrom(matrixStats,rowDiffs) -importFrom(matrixStats,rowMaxs) -importFrom(matrixStats,rowProds) -importFrom(matrixStats,rowQuantiles) -importFrom(mvtnorm,rmvnorm) importFrom(shiny,actionButton) importFrom(shiny,checkboxGroupInput) importFrom(shiny,checkboxInput) @@ -426,13 +332,7 @@ importFrom(stats,runif) importFrom(stats,terms) importFrom(stats,update.formula) importFrom(stats,weighted.mean) -importFrom(sticky,sticky) -importFrom(survival,Surv) -importFrom(survival,dsurvreg) -importFrom(survival,psurvreg) importFrom(survival,strata) -importFrom(survival,survfit) -importFrom(survival,survreg) importFrom(utils,combn) importFrom(utils,packageDescription) importFrom(utils,read.csv) diff --git a/R/GenEst.R b/R/GenEst.R index 05f3e51144b6b2221d6ce5a59642b73048b586ed..9e301c11eeb7d5a137d27b5bee6e7d4c166c4fee 100644 --- a/R/GenEst.R +++ b/R/GenEst.R @@ -1,16 +1,11 @@ #' @useDynLib GenEst, .registration = TRUE -#' @importFrom cbinom rcbinom #' @importFrom corpus print.corpus_frame #' @importFrom DT dataTableOutput renderDataTable datatable #' @importFrom graphics axis box hist lines mtext par plot plot.new points #' polygon rect text #' @importFrom grDevices dev.off devAskNewPage png rgb -#' @importFrom gsl hyperg_2F1 #' @importFrom htmltools a br code div em h3 h4 HTML img p tags #' @importFrom lubridate is.Date -#' @importFrom matrixStats colCounts colMaxs rowCumprods rowMaxs rowProds -#' rowCumsums rowDiffs rowQuantiles rowCounts -#' @importFrom mvtnorm rmvnorm #' @importFrom Rcpp sourceCpp #' @importFrom shiny actionButton checkboxInput checkboxGroupInput column #' conditionalPanel downloadButton downloadHandler fileInput fluidRow @@ -24,8 +19,7 @@ #' @importFrom stats .getXlevels approxfun as.formula delete.response density #' formula median model.matrix na.omit optim pgamma pnorm qnorm quantile #' reformulate rnorm runif terms update.formula weighted.mean -#' @importFrom sticky sticky -#' @importFrom survival dsurvreg psurvreg strata Surv survfit survreg +#' @importFrom survival strata #' @importFrom utils combn packageDescription read.csv read.csv2 write.csv #' zip #' @@ -34,10 +28,16 @@ #' #' @description This package is designed to analyze searcher efficiency, #' carcass persistence, search schedule, and carcass observation data for -#' the estimation of bird and bat mortality at wind and solar power facilities. +#' the estimation of bird and bat mortality at wind and solar power +#' facilities. #' #' @name GenEst #' +#' @section Information: +#' \code{browseVignettes("GenEst")}\cr +#' \code{packageDescription("GenEst")}\cr +#' \code{disclaimers()}\cr +#' #' @section Data sets: #' \code{\link{mock}}\cr #' \code{\link{wind_cleared}}\cr @@ -53,7 +53,8 @@ #' (\code{pk}) and carcass persistence (\code{cp}) parameters} #' \item{\code{\link{estM}}}{estimate mortality given \code{pkm}, \code{cpm} #' and data} -#' \item{\code{\link{calcSplits}}}{split mortality estimates by subcategories} +#' \item{\code{\link{calcSplits}}}{split mortality estimates by +#' subcategories} #' \item{\code{plot}}{S3 function for \code{\link[=plot.pkm]{pkm}}, #' \code{\link[=plot.pkmSet]{pkmSet}}, \code{\link[=plot.cpm]{cpm}}, #' \code{\link[=plot.cpmSet]{cpmSet}}, \code{\link[=plot.estM]{estM}}, @@ -67,9 +68,10 @@ #' \code{\link[=summary.gGeneric]{gGeneric}}, #' \code{\link[=summary.gGenericSize]{gGenericSize}} objects} #' \item{\code{\link{aicc}}}{S3 function for extracting models' AICc values -#' from \code{\link{pkm}}, \code{\link[=pkm]{pkmSet}}, \code{\link[=pkm]{pkmSize}}, -#' \code{\link[=pkm]{pkmSetSize}}, \code{\link{cpm}}, \code{\link[=cpm]{cpmSet}}, -#' \code{\link[=cpm]{cpmSize}}, and \code{\link[=cpm]{cpmSetSize}} objects} +#' from \code{\link{pkm}}, \code{\link[=pkm]{pkmSet}}, +#' \code{\link[=pkm]{pkmSize}}, \code{\link[=pkm]{pkmSetSize}}, +#' \code{\link{cpm}}, \code{\link[=cpm]{cpmSet}}, +#' \code{\link[=cpm]{cpmSize}}, and \code{\link[=cpm]{cpmSetSize}} objects} #' \item{\code{\link{estgGeneric}}, \code{\link{estgGenericSize}}}{estimate #' detection probability (g) for given searcher efficiency and carcass #' persistence model} @@ -82,7 +84,8 @@ #' \code{\link{alogit}}, \code{\link{logit}}\cr #' \code{\link{Ecbinom}}\cr #' \code{\link{pkLogLik}}, \code{\link{cpLogLik}}\cr -#' \code{\link{calcRate}}, \code{\link{calcTsplit}}, \code{\link{ltranspose}}\cr +#' \code{\link{calcRate}}, \code{\link{calcTsplit}}, +#' \code{\link{ltranspose}}\cr #' #' @section Potentially useful editing functions: #' \code{\link{prepSS}}\cr @@ -98,12 +101,7 @@ #' \code{\link{tidyModelSetCP}}\cr #' \code{\link{tidyModelSetSE}}\cr #' -#' @section Information: -#' \code{browseVignettes("GenEst")}\cr -#' \code{packageDescription("GenEst")}\cr -#' \code{disclaimers()}\cr -#' -#' @section Other functions (primary associated with the GUI): +#' @section Other functions (primarily associated with the GUI): #' \code{\link{aboutContent}}\cr #' \code{\link{aboutPanel}}\cr #' \code{\link{analysisPanel}}\cr @@ -127,7 +125,7 @@ #' \code{\link{cpmSetSpecCPCellPlot}}\cr #' \code{\link{CPPanel}}\cr #' \code{\link{CPSidebar}}\cr -#' \code{\link{createReactiveValues}}\cr +#' \code{\link{initialReactiveValues}}\cr #' \code{\link{createvtext}}\cr #' \code{\link{dataDownloadWidget}}\cr #' \code{\link{dataInputPanel}}\cr @@ -151,7 +149,6 @@ #' \code{\link{downloadTable}}\cr #' \code{\link{DWPCols}}\cr #' \code{\link{expandModelSetCP}}\cr -#' \code{\link{ftpLink}}\cr #' \code{\link{GeneralInputSidebar}}\cr #' \code{\link{GeneralInputsPanel}}\cr #' \code{\link{GenEstAcknowledgements}}\cr @@ -249,7 +246,7 @@ #' \code{\link{SESidebar}}\cr #' \code{\link{setFigH}}\cr #' \code{\link{setFigW}}\cr -#' \code{\link{setkFillNeed}}\cr +#' \code{\link{setkNeed}}\cr #' \code{\link{setkFix}}\cr #' \code{\link{simpleMplot}}\cr #' \code{\link{sizeCols}}\cr @@ -260,101 +257,9 @@ #' \code{\link{trueLength}}\cr #' \code{\link{u}}\cr #' \code{\link{ul}}\cr -#' \code{\link{update_input_clear_all}}\cr -#' \code{\link{update_input_cols_CP_preds}}\cr -#' \code{\link{update_input_cols_fta}}\cr -#' \code{\link{update_input_cols_ltp}}\cr -#' \code{\link{update_input_cols_SE_obs}}\cr -#' \code{\link{update_input_cols_SE_preds}}\cr -#' \code{\link{update_input_data_CO}}\cr -#' \code{\link{update_input_data_CO_clear}}\cr -#' \code{\link{update_input_data_CP}}\cr -#' \code{\link{update_input_data_CP_clear}}\cr -#' \code{\link{update_input_data_DWP}}\cr -#' \code{\link{update_input_data_DWP_clear}}\cr -#' \code{\link{update_input_data_SE}}\cr -#' \code{\link{update_input_data_SE_clear}}\cr -#' \code{\link{update_input_data_SS}}\cr -#' \code{\link{update_input_data_SS_clear}}\cr -#' \code{\link{update_input_outsc_CP}}\cr -#' \code{\link{update_input_outsc_SE}}\cr -#' \code{\link{update_input_run_CP}}\cr -#' \code{\link{update_input_run_CP_clear}}\cr -#' \code{\link{update_input_run_g}}\cr -#' \code{\link{update_input_run_g_clear}}\cr -#' \code{\link{update_input_run_M}}\cr -#' \code{\link{update_input_run_M_clear}}\cr -#' \code{\link{update_input_run_SE}}\cr -#' \code{\link{update_input_run_SE_clear}}\cr -#' \code{\link{update_input_sizeCol}}\cr -#' \code{\link{update_input_split_M_clear}}\cr -#' \code{\link{update_input_useSSdata}}\cr -#' \code{\link{update_output_clear_all}}\cr -#' \code{\link{update_output_cols_CP}}\cr -#' \code{\link{update_output_cols_SE}}\cr -#' \code{\link{update_output_data_CO}}\cr -#' \code{\link{update_output_data_CO_clear}}\cr -#' \code{\link{update_output_data_CP}}\cr -#' \code{\link{update_output_data_CP_clear}}\cr -#' \code{\link{update_output_data_DWP}}\cr -#' \code{\link{update_output_data_DWP_clear}}\cr -#' \code{\link{update_output_data_SE}}\cr -#' \code{\link{update_output_data_SE_clear}}\cr -#' \code{\link{update_output_data_SS}}\cr -#' \code{\link{update_output_data_SS_clear}}\cr -#' \code{\link{update_output_outdls_CP}}\cr -#' \code{\link{update_output_outpk_SE}}\cr -#' \code{\link{update_output_outsc_CP}}\cr -#' \code{\link{update_output_outsc_g}}\cr -#' \code{\link{update_output_outsc_SE}}\cr -#' \code{\link{update_output_run_CP}}\cr -#' \code{\link{update_output_run_CP_clear}}\cr -#' \code{\link{update_output_run_g}}\cr -#' \code{\link{update_output_run_g_clear}}\cr -#' \code{\link{update_output_run_M}}\cr -#' \code{\link{update_output_run_M_clear}}\cr -#' \code{\link{update_output_run_SE}}\cr -#' \code{\link{update_output_run_SE_clear}}\cr -#' \code{\link{update_output_sizeCol}}\cr -#' \code{\link{update_output_split_M}}\cr -#' \code{\link{update_output_split_M_clear}}\cr -#' \code{\link{update_output_SS}}\cr -#' \code{\link{update_output_transpose_split}}\cr -#' \code{\link{update_rv_clear_all}}\cr -#' \code{\link{update_rv_cols_CP_preds}}\cr -#' \code{\link{update_rv_cols_fta}}\cr -#' \code{\link{update_rv_cols_ltp}}\cr -#' \code{\link{update_rv_cols_SE_obs}}\cr -#' \code{\link{update_rv_cols_SE_preds}}\cr -#' \code{\link{update_rv_data_CO}}\cr -#' \code{\link{update_rv_data_CO_clear}}\cr -#' \code{\link{update_rv_data_CP}}\cr -#' \code{\link{update_rv_data_CP_clear}}\cr -#' \code{\link{update_rv_data_DWP}}\cr -#' \code{\link{update_rv_data_DWP_clear}}\cr -#' \code{\link{update_rv_data_SE}}\cr -#' \code{\link{update_rv_data_SE_clear}}\cr -#' \code{\link{update_rv_data_SS}}\cr -#' \code{\link{update_rv_data_SS_clear}}\cr -#' \code{\link{update_rv_outdls_CP}}\cr -#' \code{\link{update_rv_outpk_SE}}\cr -#' \code{\link{update_rv_outsc_CP}}\cr -#' \code{\link{update_rv_outsc_g}}\cr -#' \code{\link{update_rv_outsc_SE}}\cr -#' \code{\link{update_rv_run_CP}}\cr -#' \code{\link{update_rv_run_CP_clear}}\cr -#' \code{\link{update_rv_run_g}}\cr -#' \code{\link{update_rv_run_g_clear}}\cr -#' \code{\link{update_rv_run_M}}\cr -#' \code{\link{update_rv_run_M_clear}}\cr -#' \code{\link{update_rv_run_SE}}\cr -#' \code{\link{update_rv_run_SE_clear}}\cr -#' \code{\link{update_rv_sizeCol}}\cr -#' \code{\link{update_rv_split_M}}\cr -#' \code{\link{update_rv_split_M_clear}}\cr -#' \code{\link{update_rv_transpose_split}}\cr -#' \code{\link{update_rv_useSSdata}}\cr -#' \code{\link{update_rv_useSSinputs}}\cr +#' \code{\link{update_input}}\cr +#' \code{\link{update_output}}\cr +#' \code{\link{update_rv}}\cr #' \code{\link{updateColNames_size}}\cr #' \code{\link{updateSizeclasses}}\cr #' \code{\link{updatesizeCol}}\cr diff --git a/R/app_content.R b/R/app_content.R index 6cc0247ea06794ea5c76e64d0cde2dd978f36464..3fb9ebe485940a629e003d1c5d413423043333f8 100644 --- a/R/app_content.R +++ b/R/app_content.R @@ -1,3 +1,31 @@ +#' @title Create the version text for GenEst +#' +#' @description Create a text string of the version number and date +#' +#' @param type "Full" or "Short" or "Name" or "NameDate" +#' +#' @return version text +#' +#' @export +#' +createvtext <- function(type = "Full"){ + vnumber <- packageDescription("GenEst", fields = "Version") + vdate <- packageDescription("GenEst", fields = "Date") + if (type == "Full"){ + vtext <- paste0("This is version ", vnumber, " (", vdate, ")") + } + if (type == "Short"){ + vtext <- paste0("v", vnumber) + } + if (type == "Name"){ + vtext <- paste0("GenEst ", "v", vnumber) + } + if (type == "NameDate"){ + vtext <- paste0("GenEst ", "v", vnumber, " (", vdate, ")") + } + return(vtext) +} + #' @title Create the Content for the Getting Started Pabel #' #' @description Create the HTML code for the Help Getting Started main panel, @@ -40,12 +68,6 @@ gettingStartedContent <- function(){ desired---click the ", code("Mortality Estimation"), " tab") ), br(), - p("Further details can be found in the user guide and a technical manual - that describes the statistical models at ", - a("code.usgs.gov", - href = "https://code.usgs.gov/ecosystems/GenEst/tags/1.0.0") - ), - br(), p("Example data sets are available in comma-separated (.csv) files that may be downloaded under the ", code("Downloads"), " tab. ") ) @@ -71,11 +93,6 @@ aboutContent <- function(){ column(10, offset = 0, br(), h3(createvtext("NameDate")), - h4(a("User Guide", href = ftpLink("UserGuide"), target = "_blank")), - h4(a("GenEst Statistical Models", href = ftpLink("Models"), - target = "_blank" - ) - ), GenEstAuthors(), GenEstGUIauthors(), GenEstLicense(), @@ -97,7 +114,7 @@ aboutContent <- function(){ GenEstAuthors <- function(){ HTML( paste0(br(), - b("Authors:"), + b("Authors: "), "Daniel Dalthorp ", a("(USGS)", href = "https://www.USGS.gov", target = "_blank"), ", Juniper Simonis ", @@ -112,7 +129,7 @@ GenEstAuthors <- function(){ ", Jeffrey Mintz ", a("(USGS)", href = "https://www.USGS.gov", target = "_blank"), ", Robert Wolpert ", - a("(Duke)", href = "http://www2.stat.duke.edu/~rlw/", target = "_blank"), + a("(Duke)", href = "http://www2.stat.duke.edu/~rlw", target = "_blank"), ", Jared Studyvin ", a("(WEST)", href = "https://www.west-inc.com", target = "_blank"), ", and Franzi Korner-Nievergelt ", @@ -306,25 +323,25 @@ disclaimersContent <- function(appType = "base"){ #' @export #' disclaimerUSGS <- function(){ -# "This software is preliminary or provisional and is subject to revision. -# It is being provided to meet the need for timely best science. The -# software has not received final approval by the U.S. Geological Survey -# (USGS). No warranty, expressed or implied, is made by the USGS or the U.S. -# Government as to the functionality of the software and related material -# nor shall the fact of release constitute any such warranty. The software -# is provided on the condition that neither the USGS nor the U.S. Government -# shall be held liable for any damages resulting from the authorized or -# unauthorized use of the software." - "This software has been approved for release by the U.S. Geological - Survey (USGS). Although the software has been subjected to rigorous - review, the USGS reserves the right to update the software as needed - pursuant to further analysis and review. No warranty, expressed or - implied, is made by the USGS or the U.S. Government as to the - functionality of the software and related material nor shall the fact of - release constitute any such warranty. Furthermore, the software is - released on condition that neither the USGS nor the U.S. Government shall - be held liable for any damages resulting from its authorized or - unauthorized use." + "This software is preliminary or provisional and is subject to revision. + It is being provided to meet the need for timely best science. The + software has not received final approval by the U.S. Geological Survey + (USGS). No warranty, expressed or implied, is made by the USGS or the U.S. + Government as to the functionality of the software and related material + nor shall the fact of release constitute any such warranty. The software + is provided on the condition that neither the USGS nor the U.S. Government + shall be held liable for any damages resulting from the authorized or + unauthorized use of the software." +# "This software has been approved for release by the U.S. Geological +# Survey (USGS). Although the software has been subjected to rigorous +# review, the USGS reserves the right to update the software as needed +# pursuant to further analysis and review. No warranty, expressed or +# implied, is made by the USGS or the U.S. Government as to the +# functionality of the software and related material nor shall the fact of +# release constitute any such warranty. Furthermore, the software is +# released on condition that neither the USGS nor the U.S. Government shall +# be held liable for any damages resulting from its authorized or +# unauthorized use." } #' @rdname disclaimersContent @@ -375,27 +392,3 @@ disclaimerWEST <- function(appType){ damages.") out } - -#' @title Create a Link to the FTP-Housed Document of Interest -#' -#' @description The GenEst User Guide and Models Document live on the USGS -#' FTP and can be linked to, rather than stored in the app. This function -#' provides the link of interest. -#' -#' @param doc "UserGuide" or "Models". -#' -#' @return Character element of the link to the document. -#' -#' @export -#' -ftpLink <- function(doc = "UserGuide"){ - if (!doc %in% c("UserGuide", "Models")){ - stop(paste0("doc ", doc, " not supported.")) - } - mainLink <- "ftp://ftpext.usgs.gov/pub/wr/or/corvallis/Dalthorp/" - if (doc == "UserGuide"){ - paste0(mainLink, "GenEst_User_Guide%200.2.0.pdf") - } else if (doc == "Models"){ - paste0(mainLink, "GenEst_Statistical_Models.pdf") - } -} diff --git a/R/app_download_functions.R b/R/app_download_functions.R index fe9b5df4c0376094823b09848a3bcec3ba1a5b9d..3673952b4bafc71b01f91ca2be68fd9efe1fdbce 100644 --- a/R/app_download_functions.R +++ b/R/app_download_functions.R @@ -146,8 +146,8 @@ downloadTable <- function(filename, tablename, csvformat){ #' @description Handle the downloading of a data set #' #' @param set the name of the data set to download -#' @param csvformat Format of .csv files to download. For comma field separator -#' and period decimal separator, use \code{csvformat = NULL} or "". +#' @param csvformat Format of .csv files to download. For comma field +#' separator and period decimal separator, use \code{csvformat = NULL} or "". #' For semicolon field separator and comma decimal separator, use #' \code{csvformat = 2}. #' @return a download handler function @@ -155,8 +155,13 @@ downloadTable <- function(filename, tablename, csvformat){ #' @export #' downloadData <- function(set, csvformat = NULL){ - fpre <- switch(set, "mock" = "", "powerTower" = "solar_", "PV" = "solar_", - "trough" = "solar_", "cleared" = "wind_", "RP" = "wind_", "RPbat" = "wind_") + fpre <- switch(set, "mock" = "", + "powerTower" = "solar_", + "PV" = "solar_", + "trough" = "solar_", + "cleared" = "wind_", + "RP" = "wind_", + "RPbat" = "wind_") filename <- paste0(fpre, set, ".zip") exob <- get(paste0(fpre, set)) pth <- tempdir() diff --git a/R/app_input_update_functions.R b/R/app_input_update_functions.R deleted file mode 100644 index 2285dc8917fe23baece78eb0fc17f7e1a5fd73a8..0000000000000000000000000000000000000000 --- a/R/app_input_update_functions.R +++ /dev/null @@ -1,682 +0,0 @@ -#' @title Update the inputs when everything is cleared out -#' -#' @description Update the inputs when everything is cleared -#' -#' @param rv reactive values list -#' -#' @param session session -#' -#' @export -#' -update_input_clear_all <- function(rv, session){ - update_input_data_SE_clear(rv, session) - update_input_data_CP_clear(rv, session) - update_input_data_DWP_clear(rv, session) - update_input_data_SS_clear(rv, session) - update_input_data_CO_clear(rv, session) -} - -#' @title Update the inputs when SE data are read in -#' -#' @description Update the inputs when the SE data file is input -#' -#' @param rv reactive values list -#' -#' @param session session -#' -#' @export -#' -update_input_data_SE <- function(rv, session){ - updateSelectizeInput(session, "preds_SE", choices = rv$colNames_SE_preds) - updateSelectizeInput(session, "obsCols_SE", choices = rv$colNames_SE_obs) - updateSelectizeInput(session, "sizeCol", choices = rv$colNames_size, - selected = rv$sizeCol - ) - updateTabsetPanel(session, "LoadedDataViz", "Searcher Efficiency") - - if (rv$nsizeclasses > 1){ - updateSelectizeInput(session, "DWPCol", selected = " ") - } -} - -#' @title Update the inputs when SE data are cleared out -#' -#' @description Update the inputs when the SE data file input is cleared -#' -#' @param rv reactive values list -#' -#' @param session session -#' -#' @export -#' -update_input_data_SE_clear <- function(rv, session){ - - reset("file_SE") - reset("preds_SE") - reset("obsCols_SE") - reset("outSEp") - reset("outSEk") - reset("outsizeclassSE") - reset("kFill") - reset("DWPCol") - reset("split_SS") - reset("split_CO") - reset("modelChoices_SE1") - reset("outsizeclassg") - - updateSelectizeInput(session, "preds_SE", choices = "") - updateSelectizeInput(session, "obsCols_SE", choices = "") - scc <- rv$colNames_size - if (is.null(scc)){ - scc <- "" - } - scs <- rv$sizeCol - if (is.null(scc)){ - scs <- "" - } - updateSelectizeInput(session, "sizeCol", choices = scc, selected = scs) - updateSelectizeInput(session, "modelChoices_SE1", choices = "") - updateSelectizeInput(session, "split_SS", choices = "") - updateSelectizeInput(session, "split_CO", choices = "") - updateSelectizeInput(session, "outSEp", choices = "") - updateSelectizeInput(session, "outSEk", choices = "") - updateSelectizeInput(session, "outsizeclassSE", choices = "") - updateSelectizeInput(session, "outsizeclassg", choices = "") - -} - - -#' @title Update the inputs when CP data are read in -#' -#' @description Update the inputs when the CP data file is input -#' -#' @param rv reactive values list -#' -#' @param session session -#' -#' @export -#' -update_input_data_CP <- function(rv, session){ - updateSelectizeInput(session, "preds_CP", choices = rv$colNames_CP_preds) - updateSelectizeInput(session, "ltp", choices = rv$colNames_CP_ltp) - updateSelectizeInput(session, "fta", choices = rv$colNames_CP_fta) - updateSelectizeInput(session, "sizeCol", choices = rv$colNames_size, - selected = rv$sizeCol - ) - updateTabsetPanel(session, "LoadedDataViz", "Carcass Persistence") -} - -#' @title Update the inputs when CP data are cleared out -#' -#' @description Update the inputs when the CP data file input is cleared -#' -#' @param rv reactive values list -#' -#' @param session session -#' -#' @export -#' -update_input_data_CP_clear <- function(rv, session){ - - reset("file_CP") - reset("preds_CP") - reset("ltp") - reset("fta") - reset("modelChoices_CP1") - reset("outCPl") - reset("outCPs") - reset("outCPdist") - reset("outsizeclassCP") - updateSelectizeInput(session, "preds_CP", choices = "") - updateSelectizeInput(session, "ltp", choices = "") - updateSelectizeInput(session, "fta", choices = "") - scc <- rv$colNames_size - if (is.null(scc)){ - scc <- "" - } - scs <- rv$sizeCol - if (is.null(scc)){ - scs <- "" - } - updateSelectizeInput(session, "sizeCol", choices = scc, selected = scs) - updateSelectizeInput(session, "modelChoices_CP1", choices = "") - updateSelectizeInput(session, "outCPl", choices = "") - updateSelectizeInput(session, "outCPs", choices = "") - updateSelectizeInput(session, "outCPdist", choices = "") - updateSelectizeInput(session, "outsizeclassCP", choices = "") - - reset("split_SS") - reset("split_CO") - reset("outsizeclassg") - updateSelectizeInput(session, "split_SS", choices = "") - updateSelectizeInput(session, "split_CO", choices = "") - updateSelectizeInput(session, "outsizeclassg", choices = "") - -} - -#' @title Update the inputs when SS data are read in -#' -#' @description Update the inputs when the SS data file is input -#' -#' @param rv reactive values list -#' -#' @param session session -#' -#' @export -#' -update_input_data_SS <- function(rv, session){ - updateTabsetPanel(session, "LoadedDataViz", "Search Schedule") -} - -#' @title Update the inputs when SS data are cleared out -#' -#' @description Update the inputs when the SS data file input is cleared -#' -#' @param rv reactive values list -#' -#' @param session session -#' -#' @export -#' -update_input_data_SS_clear <- function(rv, session){ - reset("file_SS") - reset("gSearchInterval") - reset("gSearchMax") - reset("split_SS") - reset("split_CO") - updateSelectizeInput(session, "split_SS", choices = "") - updateSelectizeInput(session, "split_CO", choices = "") -} - -#' @title Update the inputs when DWP data are read in -#' -#' @description Update the inputs when the DWP data file is input -#' -#' @param rv reactive values list -#' -#' @param session session -#' -#' @export -#' -update_input_data_DWP <- function(rv, session){ - updateSelectizeInput(session, "DWPCol", choices = rv$colNames_DWP) - if (length(rv$colNames_DWP) == 1){ - updateSelectizeInput(session, "DWPCol", selected = rv$colNames_DWP) - } - if (rv$nsizeclasses > 1){ - updateSelectizeInput(session, "DWPCol", selected = rv$colNames_DWP[1]) - } - updateTabsetPanel(session, "LoadedDataViz", "Density Weighted Proportion") -} - -#' @title Update the inputs when DWP data are cleared out -#' -#' @description Update the inputs when the DWP data file input is cleared -#' -#' @param rv reactive values list -#' -#' @param session session -#' -#' @export -#' -update_input_data_DWP_clear <- function(rv, session){ - reset("file_DWP") - reset("DWPCol") - updateSelectizeInput(session, "DWPCol", choices = "") - reset("split_SS") - reset("split_CO") - updateSelectizeInput(session, "split_SS", choices = "") - updateSelectizeInput(session, "split_CO", choices = "") -} - -#' @title Update the inputs when CO data are read in -#' -#' @description Update the inputs when the CO data file is input -#' -#' @param rv reactive values list -#' -#' @param session session -#' -#' @export -#' -update_input_data_CO <- function(rv, session){ - updateSelectizeInput(session, "COdate", choices = rv$colNames_COdates) - if (length(rv$colNames_COdates) == 1){ - updateSelectizeInput(session, "COdate", - choices = rv$colNames_COdates, selected = rv$colNames_COdates - ) - } - updateSelectizeInput(session, "sizeCol", choices = rv$colNames_size, - selected = rv$sizeCol - ) - updateTabsetPanel(session, "LoadedDataViz", "Carcass Observations") -} - -#' @title Update the inputs when CO data are cleared out -#' -#' @description Update the inputs when the CO data file input is cleared -#' -#' @param rv reactive values list -#' -#' @param session session -#' -#' @export -#' -update_input_data_CO_clear <- function(rv, session){ - - reset("file_CO") - reset("COdate") - - scc <- rv$colNames_size - if (is.null(scc)){ - scc <- "" - } - scs <- rv$sizeCol - if (is.null(scc)){ - scs <- "" - } - updateSelectizeInput(session, "sizeCol", choices = scc, selected = scs) - updateSelectizeInput(session, "COdate", choices = "") - reset("split_SS") - reset("split_CO") - updateSelectizeInput(session, "split_SS", choices = "") - updateSelectizeInput(session, "split_CO", choices = "") -} - -#' @title Update the inputs when the size class column is selected -#' -#' @description Update the inputs when the SE data file is input -#' -#' @param rv reactive values list -#' -#' @param input input list -#' -#' @param session session -#' -#' @export -#' -update_input_sizeCol <- function(rv, input, session){ - updateSelectizeInput(session, "preds_SE", choices = rv$colNames_SE_preds, - selected = input$preds_SE) - updateSelectizeInput(session, "obsCols_SE", choices = rv$colNames_SE_obs, - selected = input$obsCols_SE) - updateSelectizeInput(session, "ltp", choices = rv$colNames_CP_nosel, - selected = input$ltp) - updateSelectizeInput(session, "fta", choices = rv$colNames_CP_nosel, - selected = input$fta) - updateSelectizeInput(session, "preds_CP", choices = rv$colNames_CP_preds, - selected = input$preds_CP) - updateSelectizeInput(session, "DWPCol", choices = rv$colNames_DWP, - selected = rv$DWPCol) - updateSelectizeInput(session, "sizeCol", choices = rv$colNames_size, - selected = rv$sizeCol - ) -} - -#' @title Update the predictor options when SE observation columns are -#' selected -#' -#' @description Update the inputs when the SE observation columns are selected -#' -#' @param rv reactive values list -#' -#' @param session session -#' -#' @export -#' -update_input_cols_SE_obs <- function(rv, session){ - updateSelectizeInput(session, "preds_SE", choices = rv$colNames_SE_preds, - selected = rv$preds_SE) - updateSelectizeInput(session, "obsCols_SE", choices = rv$colNames_SE_obs, - selected = rv$obsCols_SE) - updateSelectizeInput(session, "sizeCol", choices = rv$colNames_size, - selected = rv$sizeCol - ) -} - -#' @title Update the observation options when SE predictor columns are -#' selected -#' -#' @description Update the inputs when the SE predictor columns are selected -#' -#' @param rv reactive values list -#' -#' @param session session -#' -#' @export -#' -update_input_cols_SE_preds <- function(rv, session){ - updateSelectizeInput(session, "obsCols_SE", choices = rv$colNames_SE_obs, - selected = rv$obsCols_SE) - updateSelectizeInput(session, "preds_SE", choices = rv$colNames_SE_preds, - selected = rv$preds_SE) - updateSelectizeInput(session, "sizeCol", choices = rv$colNames_size, - selected = rv$sizeCol - ) -} - -#' @title Update the predictor options and First Time Absent options when the -#' Last Time Present column is selected -#' -#' @description Update the inputs when the Last Time Present column is -#' selected -#' -#' @param rv reactive values list -#' -#' @param session session -#' -#' @export -#' -update_input_cols_ltp <- function(rv, session){ - updateSelectizeInput(session, "fta", choices = rv$colNames_fta, - selected = rv$fta) - updateSelectizeInput(session, "ltp", choices = rv$colNames_ltp, - selected = rv$ltp) - updateSelectizeInput(session, "preds_CP", choices = rv$colNames_CP_preds, - selected = rv$preds_CP) - updateSelectizeInput(session, "sizeCol", choices = rv$colNames_size, - selected = rv$sizeCol - ) -} - -#' @title Update the predictor options and Last Time Present options when the -#' First Time Absent column is selected -#' -#' @description Update the inputs when the First Time Absent column is -#' selected -#' -#' @param rv reactive values list -#' -#' @param session session -#' -#' @export -#' -update_input_cols_fta <- function(rv, session){ - updateSelectizeInput(session, "fta", choices = rv$colNames_fta, - selected = rv$fta) - updateSelectizeInput(session, "ltp", choices = rv$colNames_ltp, - selected = rv$ltp) - updateSelectizeInput(session, "preds_CP", choices = rv$colNames_CP_preds, - selected = rv$preds_CP) - updateSelectizeInput(session, "sizeCol", choices = rv$colNames_size, - selected = rv$sizeCol - ) -} - -#' @title Update the observation options when CP predictor columns are -#' selected -#' -#' @description Update the inputs when the CP predictor columns are selected -#' -#' @param rv reactive values list -#' -#' @param session session -#' -#' @export -#' -update_input_cols_CP_preds <- function(rv, session){ - updateSelectizeInput(session, "fta", choices = rv$colNames_fta, - selected = rv$fta) - updateSelectizeInput(session, "ltp", choices = rv$colNames_ltp, - selected = rv$ltp) - updateSelectizeInput(session, "preds_CP", choices = rv$colNames_CP_preds, - selected = rv$preds_CP) - updateSelectizeInput(session, "sizeCol", choices = rv$colNames_size, - selected = rv$sizeCol - ) -} - -#' @title Update the SE output dropdown selections when the model is run -#' -#' @description Update the SE output dropdown selections when the model is run -#' -#' @param rv reactive values list -#' -#' @param session session -#' -#' @export -#' -update_input_run_SE <- function(rv, session){ - updateTabsetPanel(session, "analyses_SE", "Model Comparison") - updateSelectizeInput(session, "outSEp", choices = rv$modNames_SEp) - updateSelectizeInput(session, "outSEk", choices = rv$modNames_SEk) - updateSelectizeInput(session, "outsizeclassSE", choices = rv$sizeclasses) - - updateSelectizeInput(session, "DWPCol", choices = rv$colNames_DWP, - selected = rv$DWPCol) - if (length(rv$colNames_DWP) == 1){ - updateSelectizeInput(session, "DWPCol", selected = rv$colNames_DWP) - } - - reset("outsizeclassg") - reset("gSearchInterval") - reset("gSearchMax") - updateSelectizeInput(session, "split_SS", choices = "") - updateSelectizeInput(session, "split_CO", choices = "") - updateSelectizeInput(session, "outsizeclassg", choices = "") -} - - -#' @title Update the inputs when SE model is cleared -#' -#' @description Update the inputs when the SE model is cleared -#' -#' @param rv reactive values list -#' -#' @param session session -#' -#' @export -#' -update_input_run_SE_clear <- function(rv, session){ - reset("outSEp") - reset("outSEk") - reset("outsizeclassSE") - reset("kFill") - reset("DWPCol") - reset("split_SS") - reset("split_CO") - reset("modelChoices_SE1") - reset("outsizeclassg") - - updateSelectizeInput(session, "modelChoices_SE1", choices = "") - updateSelectizeInput(session, "split_SS", choices = "") - updateSelectizeInput(session, "split_CO", choices = "") - updateSelectizeInput(session, "outSEp", choices = "") - updateSelectizeInput(session, "outSEk", choices = "") - updateSelectizeInput(session, "outsizeclassSE", choices = "") - updateSelectizeInput(session, "outsizeclassg", choices = "") - - -} - -#' @title Update the SE output dropdown selections when the size class is -#' chosen -#' -#' @description Update the SE output dropdown selections when the size -#' class is chosen -#' -#' @param rv reactive values list -#' -#' @param session session -#' -#' @export -#' -update_input_outsc_SE <- function(rv, session){ - updateSelectizeInput(session, "outSEp", choices = rv$modNames_SEp) - updateSelectizeInput(session, "outSEk", choices = rv$modNames_SEk) -} - -#' @title Update the CP output dropdown selections when the model is run -#' -#' @description Update the CP output dropdown selections when the model is run -#' -#' @param rv reactive values list -#' -#' @param session session -#' -#' @export -#' -update_input_run_CP <- function(rv, session){ - updateTabsetPanel(session, "analyses_CP", "Model Comparison") - updateSelectizeInput(session, "outCPl", choices = rv$modNames_CPl) - updateSelectizeInput(session, "outCPs", choices = rv$modNames_CPs) - updateSelectizeInput(session, "outCPdist", choices = rv$modNames_CPdist) - updateSelectizeInput(session, "outsizeclassCP", choices = rv$sizeclasses) - - reset("outsizeclassg") - reset("gSearchInterval") - reset("gSearchMax") - updateSelectizeInput(session, "split_SS", choices = "") - updateSelectizeInput(session, "split_CO", choices = "") - updateSelectizeInput(session, "outsizeclassg", choices = "") -} - -#' @title Update the inputs when CP model is cleared -#' -#' @description Update the inputs when the CP model is cleared -#' -#' @param rv reactive values list -#' -#' @param session session -#' -#' @export -#' -update_input_run_CP_clear <- function(rv, session){ - reset("outCPl") - reset("outCPs") - reset("outCPdist") - reset("outsizeclassCP") - reset("split_SS") - reset("split_CO") - reset("modelChoices_CP1") - reset("outsizeclassg") - - updateSelectizeInput(session, "modelChoices_CP1", choices = "") - updateSelectizeInput(session, "split_SS", choices = "") - updateSelectizeInput(session, "split_CO", choices = "") - updateSelectizeInput(session, "outCPl", choices = "") - updateSelectizeInput(session, "outCPs", choices = "") - updateSelectizeInput(session, "outCPdist", choices = "") - updateSelectizeInput(session, "outsizeclassCP", choices = "") - updateSelectizeInput(session, "outsizeclassg", choices = "") -} - -#' @title Update the CP output dropdown selections when the size class is -#' chosen -#' -#' @description Update the CP output dropdown selections when the size -#' class is chosen -#' -#' @param rv reactive values list -#' -#' @param session session -#' -#' @export -#' -update_input_outsc_CP <- function(rv, session){ - updateSelectizeInput(session, "outCPl", choices = rv$modNames_CPl) - updateSelectizeInput(session, "outCPs", choices = rv$modNames_CPs) - updateSelectizeInput(session, "outCPdist", choices = rv$modNames_CPdist) -} - -#' @title Update the SS average dropdown selections when the SS data are used -#' -#' @description Update the SS average dropdown selections when the SS data -#' are used -#' -#' @param rv reactive values list -#' -#' @param session session -#' -#' @export -#' -update_input_useSSdata <- function(rv, session){ - if (!is.na(rv$SStemp[1])){ - updateNumericInput(session, "gSearchInterval", value = rv$avgSI) - updateNumericInput(session, "gSearchMax", value = max(rv$SS)) - } -} - -#' @title Update the g output dropdown selections when the model is run -#' -#' @description Update the g output dropdown selections when the model is run -#' -#' @param rv reactive values list -#' -#' @param session session -#' -#' @export -#' -update_input_run_g <- function(rv, session){ - updateSelectizeInput(session, "outsizeclassg", choices = rv$sizeclasses_g) - updateTabsetPanel(session, "analyses_g", "Summary") -} - - -#' @title Update the inputs when g model is cleared -#' -#' @description Update the inputs when the g model is cleared -#' -#' @param rv reactive values list -#' -#' @param session session -#' -#' @export -#' -update_input_run_g_clear <- function(rv, session){ - reset("outsizeclassg") - updateSelectizeInput(session, "outsizeclassg", choices = "") - -} - -#' @title Update the M output dropdown selections and the Fraction Surveyed -#' when the model is run -#' -#' @description Update the M output dropdown selections and the Fraction -#' Surveyed when the model is run -#' -#' @param rv reactive values list -#' -#' @param session session -#' -#' @export -#' -update_input_run_M <- function(rv, session){ - updateNumericInput(session, "frac", value = rv$frac) - updateSelectizeInput(session, "split_SS", choices = rv$colNames_SS_nosel) - updateSelectizeInput(session, "split_CO", choices = rv$colNames_CO) -} - -#' @title Update the inputs when M model is cleared -#' -#' @description Update the inputs when the M model is cleared -#' -#' @param rv reactive values list -#' -#' @param session session -#' -#' @export -#' -update_input_run_M_clear <- function(rv, session){ - reset("split_SS") - reset("split_CO") - updateSelectizeInput(session, "split_SS", choices = "") - updateSelectizeInput(session, "split_CO", choices = "") -} - -#' @title Update the inputs when M split is cleared -#' -#' @description Update the inputs when the M split is cleared -#' -#' @param rv reactive values list -#' -#' @param session session -#' -#' @export -#' -update_input_split_M_clear <- function(rv, session){ - reset("split_SS") - reset("split_CO") - updateSelectizeInput(session, "split_SS", choices = rv$colNames_SS_nosel) - updateSelectizeInput(session, "split_CO", choices = rv$colNames_CO) -} diff --git a/R/app_msg_functions.R b/R/app_msg_functions.R index 9c9f5bc3bdfc51dc8b8e24abbbec4c9c49b36bb7..d6deb511151c34ae448938ab03720bb2079ee7da 100644 --- a/R/app_msg_functions.R +++ b/R/app_msg_functions.R @@ -17,24 +17,28 @@ msgList <- function(){ #' #' @param msgs message list #' +#' @param clear logical indicator if clearing should happen. +#' #' @export #' #' -clearNotifications <- function(msgs = msgList()){ - if (!is.null(msgs$ModSE)){ - removeNotification(msgs$ModSE) - } - if (!is.null(msgs$ModCP)){ - removeNotification(msgs$ModCP) - } - if (!is.null(msgs$ModM)){ - removeNotification(msgs$ModM) - } - if (!is.null(msgs$SS)){ - removeNotification(msgs$SS) - } - if (!is.null(msgs$Modg)){ - removeNotification(msgs$Modg) +clearNotifications <- function(msgs = msgList(), clear = TRUE){ + if(clear){ + if (!is.null(msgs$ModSE)){ + removeNotification(msgs$ModSE) + } + if (!is.null(msgs$ModCP)){ + removeNotification(msgs$ModCP) + } + if (!is.null(msgs$ModM)){ + removeNotification(msgs$ModM) + } + if (!is.null(msgs$SS)){ + removeNotification(msgs$SS) + } + if (!is.null(msgs$Modg)){ + removeNotification(msgs$Modg) + } } } @@ -53,9 +57,7 @@ clearNotifications <- function(msgs = msgList()){ #' @export #' msgModRun <- function(msgs, modelType, clear = TRUE){ - if (clear){ - clearNotifications(msgs) - } + clearNotifications(msgs, clear) msg <- NULL if (modelType == "SE"){ msg <- ("Running Searcher Efficiency Model") @@ -76,7 +78,7 @@ msgModRun <- function(msgs, modelType, clear = TRUE){ #' @title Create a model done message #' -#' @description Produces a SE or CP model-done notification +#' @description Produces a model-done notification #' #' @param msgs message list #' @@ -91,9 +93,7 @@ msgModRun <- function(msgs, modelType, clear = TRUE){ #' @export #' msgModDone <- function(msgs, rv, type = "SE", clear = TRUE){ - if (clear){ - clearNotifications(msgs) - } + clearNotifications(msgs, clear) if (type == "SE"){ if (any(is.na(rv$kFixed[rv$kFixedChoice]))){ return(msgModFail(rv$mods_SE_og, "SE", "NA_kFixed")) @@ -118,34 +118,24 @@ msgModDone <- function(msgs, rv, type = "SE", clear = TRUE){ } if (type == "M"){ if (is.null(rv$M)){ - if (length(na.omit(rv$kCheck)) != length(rv$kCheck)){ - return(msgModFail(rv$gGeneric, "M", "NA_kFill")) - } else if (any(rv$kFill < 0 | rv$kFill > 1)){ - return(msgModFail(rv$gGeneric, "M", "NA_kFill")) - } if (!is.null(rv$fracNote)){ return(msgFracNote(rv$fracNote)) - } - if (is.null(rv$M)){ + } else { return(msgModFail(rv$M, "M")) } } - if (type == "split"){ - if (rv$nsplit_CO + rv$nsplit_SS > 2 | rv$nsplit_SS > 1){ - return(msgSplitFail("setup")) - } - if (is.null(rv$Msplit)){ - return(msgSplitFail("run")) - } + } + if (type == "split"){ + if (rv$nsplit_CO + rv$nsplit_SS > 2 | rv$nsplit_SS > 1){ + return(msgSplitFail("setup")) + } + if (is.null(rv$Msplit)){ + return(msgSplitFail("run")) } } if (type == "g"){ if ((is.null(rv$gGeneric))){ - if (length(na.omit(rv$kCheck_g)) != length(rv$kCheck_g)){ - return(msgModFail(rv$gGeneric, "g", "NA_kFill")) - } else if (any(rv$kFill_g < 0 | rv$kFill_g > 1)){ - return(msgModFail(rv$gGeneric, "g", "NA_kFill")) - } else if (is.null(rv$gGeneric[[1]])){ + if (is.null(rv$gGeneric[[1]])){ return(msgModFail(rv$gGeneric, "g")) } } @@ -307,7 +297,7 @@ msgModFail <- function(mods, type = "SE", special = NULL){ } else if (special == "size_k"){ msg <- "Some size classes had no successful models. Consider a fixed k." } else if (special == "NA_kFixed"){ - msg <- "kFixed check box selected but no value entered." + msg <- "Fixed k check box selected but no or invalid value entered." } } if (type == "g"){ diff --git a/R/app_output_update_functions.R b/R/app_output_update_functions.R deleted file mode 100644 index e6853a217cb149f927892b004365f7c77467f75a..0000000000000000000000000000000000000000 --- a/R/app_output_update_functions.R +++ /dev/null @@ -1,1135 +0,0 @@ -#' @title Update the reactive value list when everything is cleared out -#' -#' @description Update the rv list when everything is cleared -#' -#' @param rv reactive values list -#' -#' @param output output list -#' -#' @return an updated output list -#' -#' @export -#' -update_output_clear_all <- function(rv, output){ - output <- update_output_data_SE_clear(rv, output) - output <- update_output_data_CP_clear(rv, output) - output <- update_output_data_DWP_clear(rv, output) - output <- update_output_data_SS_clear(rv, output) - output <- update_output_data_CO_clear(rv, output) - return(output) -} - -#' @title Update the output list upon initiation of the app -#' -#' @description Update the output list when the app is started -#' -#' @param rv reactive values list -#' -#' @param output output list -#' -#' @return an updated output list -#' -#' @export -#' -initialOutput <- function(rv, output){ - output$SStext <- renderText(rv$SStext) - - output$download_RP <- downloadData("RP") - output$download_RPbat <- downloadData("RPbat") - output$download_cleared <- downloadData("cleared") - output$download_powerTower <- downloadData("powerTower") - output$download_PV <- downloadData("PV") - output$download_trough <- downloadData("trough") - output$download_mock <- downloadData("mock") - -# output$download_RP2 <- downloadData("RP", csvformat = 2) -# output$download_RPbat2 <- downloadData("RPbat", csvformat = 2) -# output$download_cleared2 <- downloadData("cleared", csvformat = 2) -# output$download_powerTower2 <- downloadData("powerTower", csvformat = 2) -# output$download_PV2 <- downloadData("PV", csvformat = 2) -# output$download_trough2 <- downloadData("trough", csvformat = 2) -# output$download_mock2 <- downloadData("mock", csvformat = 2) - - - output$kFillNeed <- renderText("no") - outputOptions(output, "kFillNeed", suspendWhenHidden = FALSE) - - return(output) -} - -#' @title Update the output list when SE data are read in -#' -#' @description Update the output list when the SE data file is input -#' -#' @param rv reactive values list -#' -#' @param output output list -#' -#' @return an updated output list -#' -#' @export -#' -update_output_data_SE <- function(rv, output){ - output <- update_output_data_SE_clear(rv, output) - output$data_SE <- renderDataTable(datatable(rv$data_SE), server = FALSE) - output$filename_SE <- renderText(paste0("File: ", rv$filename_SE)) - outputOptions(output, "filename_SE", suspendWhenHidden = FALSE) - return(output) -} - -#' @title Update the output list when SE data are cleared -#' -#' @description Update the output list when the SE data file input is cleared -#' -#' @param rv reactive values list -#' -#' @param output output list -#' -#' @return an updated output list -#' -#' @export -#' -update_output_data_SE_clear <- function(rv, output){ - output$data_SE <- NULL - output$filename_SE <- NULL - output$selected_SE <- NULL - output$SEModDone <- NULL - output$kFillNeed <- setkFillNeed(rv) - output$DWPNeed <- NULL - output$AICcTab_SE <- NULL - output$modTab_SE <- NULL - output$fig_SE <- NULL - output$sizeclasses_SE <- NULL - output$modelMenu_SE <- NULL - output$sizeclass_SE1 <- NULL - output$sizeclass_SE2 <- NULL - output$sizeclass_SE3 <- NULL - output$sizeclass_SEyn <- NULL - outputOptions(output, "AICcTab_SE", suspendWhenHidden = FALSE) - outputOptions(output, "fig_SE", suspendWhenHidden = FALSE) - outputOptions(output, "modTab_SE", suspendWhenHidden = FALSE) - outputOptions(output, "SEModDone", suspendWhenHidden = FALSE) - outputOptions(output, "sizeclasses_SE", suspendWhenHidden = FALSE) - outputOptions(output, "filename_SE", suspendWhenHidden = FALSE) - output$text_SE_est <- NULL - outputOptions(output, "text_SE_est", suspendWhenHidden = FALSE) - outputOptions(output, "kFillNeed", suspendWhenHidden = FALSE) - - output$fig_M <- NULL - output$table_M <- NULL - output$MModDone <- NULL - outputOptions(output, "MModDone", suspendWhenHidden = FALSE) - - output$table_g <- NULL - output$fig_g <- NULL - output$gModDone <- NULL - output$sizeclass_gyn <- NULL - output$sizeclass_g1 <- NULL - output$sizeclass_g2 <- NULL - - outputOptions(output, "gModDone", suspendWhenHidden = FALSE) - outputOptions(output, "sizeclass_gyn", suspendWhenHidden = FALSE) - outputOptions(output, "fig_g", suspendWhenHidden = FALSE) - outputOptions(output, "table_g", suspendWhenHidden = FALSE) - outputOptions(output, "fig_M", suspendWhenHidden = FALSE) - return(output) -} - -#' @title Update the output list when CP data are read in -#' -#' @description Update the output list when the CP data file is input -#' -#' @param rv reactive values list -#' -#' @param output output list -#' -#' @return an updated output list -#' -#' @export -#' -update_output_data_CP <- function(rv, output){ - output <- update_output_data_CP_clear(rv, output) - output$data_CP <- renderDataTable(datatable(rv$data_CP), server = FALSE) - output$filename_CP <- renderText(paste0("File: ", rv$filename_CP)) - outputOptions(output, "filename_CP", suspendWhenHidden = FALSE) - return(output) -} - -#' @title Update the output list when CP data are cleared -#' -#' @description Update the output list when the CP data file input is cleared -#' -#' @param rv reactive values list -#' -#' @param output output list -#' -#' @return an updated output list -#' -#' @export -#' -update_output_data_CP_clear <- function(rv, output){ - output$data_CP <- NULL - output$filename_CP <- NULL - outputOptions(output, "filename_CP", suspendWhenHidden = FALSE) - output$selected_CP <- NULL - output$CPModDone <- NULL - output$AICcTab_CP <- NULL - output$modTab_CP <- NULL - output$fig_CP <- NULL - output$sizeclasses_CP <- NULL - output$modelMenu_CP <- NULL - output$sizeclass_CP1 <- NULL - output$sizeclass_CP2 <- NULL - output$sizeclass_CP3 <- NULL - output$sizeclass_CPyn <- NULL - output$text_CP_est <- NULL - outputOptions(output, "text_CP_est", suspendWhenHidden = FALSE) - - outputOptions(output, "AICcTab_CP", suspendWhenHidden = FALSE) - outputOptions(output, "fig_CP", suspendWhenHidden = FALSE) - outputOptions(output, "modTab_CP", suspendWhenHidden = FALSE) - outputOptions(output, "CPModDone", suspendWhenHidden = FALSE) - outputOptions(output, "sizeclasses_CP", suspendWhenHidden = FALSE) - - output$fig_M <- NULL - output$table_M <- NULL - output$MModDone <- NULL - outputOptions(output, "MModDone", suspendWhenHidden = FALSE) - - output$table_g <- NULL - output$fig_g <- NULL - output$gModDone <- NULL - output$sizeclass_gyn <- NULL - output$sizeclass_g1 <- NULL - output$sizeclass_g2 <- NULL - - outputOptions(output, "gModDone", suspendWhenHidden = FALSE) - outputOptions(output, "sizeclass_gyn", suspendWhenHidden = FALSE) - outputOptions(output, "fig_g", suspendWhenHidden = FALSE) - outputOptions(output, "table_g", suspendWhenHidden = FALSE) - outputOptions(output, "fig_M", suspendWhenHidden = FALSE) - - return(output) -} - - - -#' @title Update the output list when SS data are read in -#' -#' @description Update the output list when the SS data file is input -#' -#' @param rv reactive values list -#' -#' @param output output list -#' -#' @return an updated output list -#' -#' @export -#' -update_output_data_SS <- function(rv, output){ - output <- update_output_data_SS_clear(rv, output) - output$data_SS <- renderDataTable(datatable(rv$data_SS), server = FALSE) - outputOptions(output, "data_SS", suspendWhenHidden = FALSE) - return(output) -} - -#' @title Update the output list when SS data are cleared -#' -#' @description Update the output list when the SS data file input is cleared -#' -#' @param rv reactive values list -#' -#' @param output output list -#' -#' @return an updated output list -#' -#' @export -#' -update_output_data_SS_clear <- function(rv, output){ - output$data_SS <- NULL - - output$fig_M <- NULL - output$table_M <- NULL - output$MModDone <- NULL - outputOptions(output, "MModDone", suspendWhenHidden = FALSE) - outputOptions(output, "fig_M", suspendWhenHidden = FALSE) - - output$table_g <- NULL - output$fig_g <- NULL - output$gModDone <- NULL - output$sizeclass_gyn <- NULL - output$sizeclass_g1 <- NULL - output$sizeclass_g2 <- NULL - - outputOptions(output, "data_SS", suspendWhenHidden = FALSE) - outputOptions(output, "gModDone", suspendWhenHidden = FALSE) - outputOptions(output, "sizeclass_gyn", suspendWhenHidden = FALSE) - outputOptions(output, "fig_g", suspendWhenHidden = FALSE) - outputOptions(output, "table_g", suspendWhenHidden = FALSE) - outputOptions(output, "fig_M", suspendWhenHidden = FALSE) - return(output) -} - -#' @title Update the output list when DWP data are read in -#' -#' @description Update the output list when the DWP data file is input -#' -#' @param rv reactive values list -#' -#' @param output output list -#' -#' @return an updated output list -#' -#' @export -#' -update_output_data_DWP <- function(rv, output){ - output <- update_output_data_DWP_clear(rv, output) - output$data_DWP <- renderDataTable(datatable(rv$data_DWP), server = FALSE) - outputOptions(output, "data_DWP", suspendWhenHidden = FALSE) - return(output) -} - - -#' @title Update the output list when DWP data are cleared -#' -#' @description Update the output list when the DWP data file input is cleared -#' -#' @param rv reactive values list -#' -#' @param output output list -#' -#' @return an updated output list -#' -#' @export -#' -update_output_data_DWP_clear <- function(rv, output){ - output$data_DWP <- NULL - output$fig_M <- NULL - output$table_M <- NULL - output$MModDone <- NULL - outputOptions(output, "data_DWP", suspendWhenHidden = FALSE) - outputOptions(output, "MModDone", suspendWhenHidden = FALSE) - outputOptions(output, "fig_M", suspendWhenHidden = FALSE) - return(output) -} - -#' @title Update the output list when CO data are read in -#' -#' @description Update the output list when the CO data file is input -#' -#' @param rv reactive values list -#' -#' @param output output list -#' -#' @return an updated output list -#' -#' @export -#' -update_output_data_CO <- function(rv, output){ - output <- update_output_data_CO_clear(rv, output) - output$data_CO <- renderDataTable(datatable(rv$data_CO), server = FALSE) - outputOptions(output, "data_CO", suspendWhenHidden = FALSE) - return(output) -} - -#' @title Update the output list when CO data are cleared -#' -#' @description Update the output list when the CO data file input is cleared -#' -#' @param rv reactive values list -#' -#' @param output output list -#' -#' @return an updated output list -#' -#' @export -#' -update_output_data_CO_clear <- function(rv, output){ - output$data_CO <- NULL - output$fig_M <- NULL - output$table_M <- NULL - output$MModDone <- NULL - outputOptions(output, "MModDone", suspendWhenHidden = FALSE) - outputOptions(output, "data_CO", suspendWhenHidden = FALSE) - outputOptions(output, "fig_M", suspendWhenHidden = FALSE) - return(output) -} - -#' @title Update the selected CP and SE data when a size class column is -#' selected -#' -#' @description Update the output tables when the size class column is -#' selected -#' -#' @param rv reactive values list -#' -#' @param output output list -#' -#' @return an updated output list -#' -#' @export -#' -update_output_sizeCol <- function(rv, output){ - if (!is.null(rv$obsCols_SE)){ - selectedCols <- c(rv$obsCols_SE, rv$sizeCol, rv$preds_SE) - selectedData <- selectData(rv$data_SE, selectedCols) - output$selected_SE <- renderDataTable(datatable(selectedData), server = FALSE) - } - if (!is.null(c(rv$ltp, rv$fta))){ - obsColsSelected <- c(rv$ltp, rv$fta) - selectedCols <- c(obsColsSelected, rv$sizeCol, rv$preds_CP) - selectedData <- selectData(rv$data_CP, selectedCols) - output$selected_CP <- renderDataTable(datatable(selectedData), server = FALSE) - } - - isolate({ - output$kFixedInput <- kFixedWidget(rv$sizeclasses_k) - }) - - return(output) -} - -#' @title Update the selected SE data when a column is selected -#' -#' @description Update the output table when the SE columns are selected -#' -#' @param rv reactive values list -#' -#' @param output output list -#' -#' @return an updated output list -#' -#' @export -#' -update_output_cols_SE <- function(rv, output){ - selectedCols <- c(rv$obsCols_SE, rv$sizeCol, rv$preds_SE) - if (!is.null(rv$data_SE)){ - selectedData <- selectData(rv$data_SE, selectedCols) - output$selected_SE <- renderDataTable(datatable(selectedData), server = FALSE) - } - return(output) -} - -#' @title Update the selected CP data when a column is selected -#' -#' @description Update the output table when the CP columns are selected -#' -#' @param rv reactive values list -#' -#' @param output output list -#' -#' @return an updated output list -#' -#' @export -#' -update_output_cols_CP <- function(rv, output){ - selectedCols <- c(rv$ltp, rv$fta, rv$sizeCol, rv$preds_CP) - selectedData <- selectData(rv$data_CP, selectedCols) - output$selected_CP <- renderDataTable(datatable(selectedData), server = FALSE) - return(output) -} - -#' @title Update the output when an SE model has been run -#' -#' @description Update the output table when an SE model has been run -#' -#' @param rv reactive values list -#' -#' @param output output list -#' -#' @return an updated output list -#' -#' @export -#' -update_output_run_SE <- function(rv, output){ - output$text_SE_est <- NULL - - if (!all(unlist(pkmSetSizeFail(rv$mods_SE))) && - !any(unlist(lapply(rv$mods_SE_og, pkmSetAllFail)))){ - - output$SEModDone <- renderText("OK") - output$kFillNeed <- setkFillNeed(rv) - if (length(rv$sizeclasses) == 1){ - output$DWPNeed <- renderText("yes") - } else{ - output$DWPNeed <- renderText("no") - } - outputOptions(output, "SEModDone", suspendWhenHidden = FALSE) - outputOptions(output, "kFillNeed", suspendWhenHidden = FALSE) - outputOptions(output, "DWPNeed", suspendWhenHidden = FALSE) - - output$AICcTab_SE <- renderDataTable({rv$AICcTab_SE}) - output$modTab_SE <- renderDataTable({rv$modTabPretty_SE}) - output$fig_SE <- renderPlot({ - plot(rv$modSet_SE, specificModel = rv$best_SE, - app = TRUE) - }, height = rv$figH_SE, width = rv$figW_SE) - - isolate({ - output$sizeclasses_SE <- prepSizeclassText(rv$sizeclasses_SE) - outputOptions(output, "sizeclasses_SE", suspendWhenHidden = FALSE) - output$modelMenu_SE <- modelSelectionWidget(rv$mods_SE, "SE") - }) - - preText <- paste0("Size class: ", rv$sizeclass_SE) - if (length(rv$sizeclasses_SE) == 1){ - preText <- "" - } - - output$text_SE_est <- renderText(paste0( - "Table shows median estimates and ", 100 * rv$CL, "% confidence intervals")) - - scText <- renderText(preText) - output$sizeclass_SE1 <- scText - output$sizeclass_SE2 <- scText - output$sizeclass_SE3 <- scText - - if (length(rv$sizeclasses_SE) == 1){ - output$sizeclass_SEyn <- renderText("NO") - } else{ - output$sizeclass_SEyn <- renderText("YES") - } - outputOptions(output, "sizeclass_SEyn", suspendWhenHidden = FALSE) - - output$dlSEest <- downloadTable("SE_estimates.csv", rv$modTabDL_SE, rv$csvformat) - output$dlSEAICc <- downloadTable("SE_AICc.csv", rv$AICcTab_SE, rv$csvformat) - output$dlSEfig <- downloadSEFig(rv) - - outputOptions(output, "text_SE_est", suspendWhenHidden = FALSE) - - } - - - output$fig_M <- NULL - output$table_M <- NULL - output$MModDone <- NULL - outputOptions(output, "MModDone", suspendWhenHidden = FALSE) - - output$table_g <- NULL - output$fig_g <- NULL - output$gModDone <- NULL - output$sizeclass_gyn <- NULL - output$sizeclass_g1 <- NULL - output$sizeclass_g2 <- NULL - - outputOptions(output, "gModDone", suspendWhenHidden = FALSE) - outputOptions(output, "sizeclass_gyn", suspendWhenHidden = FALSE) - outputOptions(output, "fig_g", suspendWhenHidden = FALSE) - outputOptions(output, "table_g", suspendWhenHidden = FALSE) - outputOptions(output, "fig_M", suspendWhenHidden = FALSE) - - - return(output) -} - -#' @title Update the output list when SE model is cleared -#' -#' @description Update the output list when the SE model is cleared -#' -#' @param rv reactive values list -#' -#' @param output output list -#' -#' @return an updated output list -#' -#' @export -#' -update_output_run_SE_clear <- function(rv, output){ - output$SEModDone <- NULL - output$kFillNeed <- setkFillNeed(rv) - output$DWPNeed <- NULL - output$AICcTab_SE <- NULL - output$modTab_SE <- NULL - output$fig_SE <- NULL - output$sizeclasses_SE <- NULL - output$modelMenu_SE <- NULL - output$sizeclass_SE1 <- NULL - output$sizeclass_SE2 <- NULL - output$sizeclass_SE3 <- NULL - output$sizeclass_SEyn <- NULL - outputOptions(output, "AICcTab_SE", suspendWhenHidden = FALSE) - outputOptions(output, "fig_SE", suspendWhenHidden = FALSE) - outputOptions(output, "modTab_SE", suspendWhenHidden = FALSE) - outputOptions(output, "SEModDone", suspendWhenHidden = FALSE) - outputOptions(output, "sizeclasses_SE", suspendWhenHidden = FALSE) - output$text_SE_est <- NULL - outputOptions(output, "text_SE_est", suspendWhenHidden = FALSE) - - output$fig_M <- NULL - output$table_M <- NULL - - output$MModDone <- NULL - outputOptions(output, "MModDone", suspendWhenHidden = FALSE) - - output$table_g <- NULL - output$fig_g <- NULL - output$gModDone <- NULL - output$sizeclass_gyn <- NULL - output$sizeclass_g1 <- NULL - output$sizeclass_g2 <- NULL - - - outputOptions(output, "gModDone", suspendWhenHidden = FALSE) - outputOptions(output, "sizeclass_gyn", suspendWhenHidden = FALSE) - outputOptions(output, "fig_g", suspendWhenHidden = FALSE) - outputOptions(output, "table_g", suspendWhenHidden = FALSE) - outputOptions(output, "fig_M", suspendWhenHidden = FALSE) - outputOptions(output, "kFillNeed", suspendWhenHidden = FALSE) - - return(output) -} - -#' @title Update the SE output when a size class is chosen -#' -#' @description Update the SE output when a size class is chosen -#' -#' @param rv reactive values list -#' -#' @param output output list -#' -#' @return an updated output list -#' -#' @export -#' -update_output_outsc_SE <- function(rv, output){ - if (length(rv$mods_SE) > 0){ - output$AICcTab_SE <- renderDataTable({rv$AICcTab_SE}) - output$modTab_SE <- renderDataTable({rv$modTabPretty_SE}) - output$fig_SE <- renderPlot({ - plot(rv$modSet_SE, specificModel = rv$best_SE, - app = TRUE) - }, height = rv$figH_SE, width = rv$figW_SE) - - preText <- paste0("Size class: ", rv$sizeclass_SE) - if (length(rv$sizeclasses_SE) == 1){ - preText <- "" - } - scText <- renderText(preText) - output$sizeclass_SE1 <- scText - output$sizeclass_SE2 <- scText - output$sizeclass_SE3 <- scText - - output$dlSEest <- downloadTable("SE_estimates.csv", rv$modTabDL_SE, rv$csvformat) - output$dlSEAICc <- downloadTable("SE_AICc.csv", rv$AICcTab_SE, rv$csvformat) - output$dlSEfig <- downloadSEFig(rv) - } - return(output) -} - -#' @title Update the SE output when a p or k equation is chosen -#' -#' @description Update the SE output when a p or k equation is chosen -#' -#' @param rv reactive values list -#' -#' @param output output list -#' -#' @return an updated output list -#' -#' @export -#' -update_output_outpk_SE <- function(rv, output){ - if (length(rv$mods_SE) > 0){ - output$fig_SE <- renderPlot({ - tryCatch( - plot(rv$modSet_SE, specificModel = rv$outSEpk, - app = TRUE), - error = function(x){plotNA()} - ) - }, height = rv$figH_SE, width = rv$figW_SE) - output$dlSEfig <- downloadSEFig(rv) - if (!is.null(rv$modTab_SE)){ - output$modTab_SE <- renderDataTable({rv$modTabPretty_SE}) - output$dlSEest <- downloadTable("SE_estimates.csv", rv$modTabDL_SE, rv$csvformat) - } - } - return(output) -} - -#' @title Update the output when an CP model has been run -#' -#' @description Update the output table when an CP model has been run -#' -#' @param rv reactive values list -#' -#' @param output output list -#' -#' @return an updated output list -#' -#' @export -#' -update_output_run_CP <- function(rv, output){ - - output$text_CP_est <- NULL - - if (!all(unlist(cpmSetSizeFail(rv$mods_CP)))){ - - output$CPModDone <- renderText("OK") - outputOptions(output, "CPModDone", suspendWhenHidden = FALSE) - - output$AICcTab_CP <- renderDataTable({rv$AICcTab_CP}) - output$modTab_CP <- renderDataTable({rv$modTabPretty_CP}) - output$fig_CP <- renderPlot({ - plot(rv$modSet_CP, specificModel = rv$best_CP, - app = TRUE) - }, height = rv$figH_CP, width = rv$figW_CP) - - isolate({ - output$sizeclasses_CP <- prepSizeclassText(rv$sizeclasses_CP) - outputOptions(output, "sizeclasses_CP", suspendWhenHidden = FALSE) - output$modelMenu_CP <- modelSelectionWidget(rv$mods_CP, "CP") - }) - - output$text_CP_est <- renderText(paste0( - "Table shows median estimates and ", - 100 * rv$CL, "% confidence intervals for location and scale")) - - preText <- paste0("Size class: ", rv$sizeclass_CP) - if (length(rv$sizeclasses_CP) == 1){ - preText <- "" - } - scText <- renderText(preText) - output$sizeclass_CP1 <- scText - output$sizeclass_CP2 <- scText - output$sizeclass_CP3 <- scText - - if (length(rv$sizeclasses_CP) == 1){ - output$sizeclass_CPyn <- renderText("NO") - } else{ - output$sizeclass_CPyn <- renderText("YES") - } - outputOptions(output, "sizeclass_CPyn", suspendWhenHidden = FALSE) - - - output$dlCPest <- downloadTable("CP_estimates.csv", rv$modTabDL_CP, rv$csvformat) - output$dlCPAICc <- downloadTable("CP_AICc.csv", rv$AICcTab_CP, rv$csvformat) - output$dlCPfig <- downloadCPFig(rv) - } - - outputOptions(output, "text_CP_est", suspendWhenHidden = FALSE) - - output$fig_M <- NULL - output$table_M <- NULL - output$MModDone <- NULL - outputOptions(output, "MModDone", suspendWhenHidden = FALSE) - - output$table_g <- NULL - output$fig_g <- NULL - output$gModDone <- NULL - output$sizeclass_gyn <- NULL - output$sizeclass_g1 <- NULL - output$sizeclass_g2 <- NULL - - outputOptions(output, "gModDone", suspendWhenHidden = FALSE) - outputOptions(output, "sizeclass_gyn", suspendWhenHidden = FALSE) - outputOptions(output, "fig_g", suspendWhenHidden = FALSE) - outputOptions(output, "table_g", suspendWhenHidden = FALSE) - outputOptions(output, "fig_M", suspendWhenHidden = FALSE) - - return(output) -} - -#' @title Update the output list when CP model is cleared -#' -#' @description Update the output list when the CP model is cleared -#' -#' @param rv reactive values list -#' -#' @param output output list -#' -#' @return an updated output list -#' -#' @export -#' -update_output_run_CP_clear <- function(rv, output){ - output$CPModDone <- NULL - output$AICcTab_CP <- NULL - output$modTab_CP <- NULL - output$fig_CP <- NULL - output$sizeclasses_CP <- NULL - output$modelMenu_CP <- NULL - output$sizeclass_CP1 <- NULL - output$sizeclass_CP2 <- NULL - output$sizeclass_CP3 <- NULL - output$sizeclass_CPyn <- NULL - output$dlCPest <- NULL - output$dlCPAICc <- NULL - output$dlCPfig <- NULL - outputOptions(output, "AICcTab_CP", suspendWhenHidden = FALSE) - outputOptions(output, "fig_CP", suspendWhenHidden = FALSE) - outputOptions(output, "modTab_CP", suspendWhenHidden = FALSE) - outputOptions(output, "CPModDone", suspendWhenHidden = FALSE) - outputOptions(output, "sizeclasses_CP", suspendWhenHidden = FALSE) - output$text_CP_est <- NULL - outputOptions(output, "text_CP_est", suspendWhenHidden = FALSE) - - output$fig_M <- NULL - output$table_M <- NULL - output$MModDone <- NULL - outputOptions(output, "MModDone", suspendWhenHidden = FALSE) - outputOptions(output, "fig_M", suspendWhenHidden = FALSE) - - output$table_g <- NULL - output$fig_g <- NULL - output$gModDone <- NULL - output$sizeclass_gyn <- NULL - output$sizeclass_g1 <- NULL - output$sizeclass_g2 <- NULL - - outputOptions(output, "gModDone", suspendWhenHidden = FALSE) - outputOptions(output, "sizeclass_gyn", suspendWhenHidden = FALSE) - outputOptions(output, "fig_g", suspendWhenHidden = FALSE) - outputOptions(output, "table_g", suspendWhenHidden = FALSE) - - return(output) -} - -#' @title Update the CP output when a size class is chosen -#' -#' @description Update the CP output when a size class is chosen -#' -#' @param rv reactive values list -#' -#' @param output output list -#' -#' @return an updated output list -#' -#' @export -#' -update_output_outsc_CP <- function(rv, output){ - if (length(rv$mods_CP) > 0){ - output$modTab_CP <- renderDataTable(datatable(rv$modTabPretty_CP), - server = FALSE) - output$fig_CP <- renderPlot({ - plot(rv$modSet_CP, specificModel = rv$best_CP, - app = TRUE) - }, height = rv$figH_CP, width = rv$figW_CP) - - preText <- paste0("Size class: ", rv$sizeclass_CP) - if (length(rv$sizeclasses_CP) == 1){ - preText <- "" - } - scText <- renderText(preText) - output$sizeclass_CP1 <- scText - output$sizeclass_CP2 <- scText - output$sizeclass_CP3 <- scText - - output$dlCPest <- downloadTable("CP_estimates.csv", rv$modTabDL_CP, rv$csvformat) - output$dlCPAICc <- downloadTable("CP_AICc.csv", rv$AICcTab_CP, rv$csvformat) - output$dlCPfig <- downloadCPFig(rv) - } - return(output) -} - -#' @title Update the CP output when a distribuition or l or s equation is -#' chosen -#' -#' @description Update the SE output when a distribution or l or s equation is -#' chosen -#' -#' @param rv reactive values list -#' -#' @param output output list -#' -#' @return an updated output list -#' -#' @export -#' -update_output_outdls_CP <- function(rv, output){ - if (length(rv$mods_CP) > 0){ - output$modTab_CP <- renderDataTable(datatable(rv$modTabPretty_CP), - server = FALSE) - output$fig_CP <- renderPlot({ - tryCatch( - plot(rv$modSet_CP, specificModel = rv$outCPdlsfig, - app = TRUE), - error = function(x){plotNA()} - ) - }, height = rv$figH_CP, width = rv$figW_CP) - output$dlCPest <- downloadTable("CP_estimates.csv", rv$modTabDL_CP, rv$csvformat) - output$dlCPfig <- downloadCPFig(rv) - - if (!is.null(rv$modTab_CP)){ - output$modTab_CP <- renderDataTable({rv$modTabPretty_CP}) - output$dlCPest <- downloadTable("CP_estimates.csv", rv$modTabDL_CP, rv$csvformat) - } - - } - return(output) -} - -#' @title Update the SS text output when the SS is updated -#' -#' @description Update the SS text output when the SS is updated -#' -#' @param rv reactive values list -#' -#' @param output output list -#' -#' @return an updated output list -#' -#' @export -#' -update_output_SS <- function(rv, output){ - output$SStext <- renderText(rv$SStext) - return(output) -} - -#' @title Update the output when a generic g model has been run -#' -#' @description Update the output table when a generic g model has been run -#' -#' @param rv reactive values list -#' -#' @param output output list -#' -#' @return an updated output list -#' -#' @export -#' -update_output_run_g <- function(rv, output){ - - if (!is.null(rv$gGeneric[[1]])){ - summaryTab <- summary(rv$gGeneric[[1]], CL = rv$CL) - output$table_g <- renderDataTable(summaryTab) - output$fig_g <- renderPlot({ - tryCatch( - plot(rv$gGeneric[[1]], CL = rv$CL), - error = function(x){plot(1,1)}, - warning = function(x){plot(1,1)} - ) - }, height = rv$figH_g, width = rv$figW_g) - output$gModDone <- renderText("OK") - outputOptions(output, "gModDone", suspendWhenHidden = FALSE) - - if (length(rv$sizeclasses_SE) == 1){ - output$sizeclass_gyn <- renderText("NO") - } else{ - output$sizeclass_gyn <- renderText("YES") - } - outputOptions(output, "sizeclass_gyn", suspendWhenHidden = FALSE) - - preText <- paste0("Size class: ", rv$sizeclass_g) - if (length(rv$sizeclasses_g) == 1){ - preText <- "" - } - scText <- renderText(preText) - output$sizeclass_g1 <- scText - output$sizeclass_g2 <- scText - - output$dlgtab <- downloadTable("g_estimates.csv", summaryTab, rv$csvformat) - output$dlgfig <- downloadgFig(rv, 1) - } - return(output) -} - - -#' @title Update the output list when g model is cleared -#' -#' @description Update the output list when the g model is cleared -#' -#' @param rv reactive values list -#' -#' @param output output list -#' -#' @return an updated output list -#' -#' @export -#' -update_output_run_g_clear <- function(rv, output){ - output$table_g <- NULL - output$fig_g <- NULL - output$gModDone <- NULL - output$sizeclass_gyn <- NULL - output$sizeclass_g1 <- NULL - output$sizeclass_g2 <- NULL - outputOptions(output, "gModDone", suspendWhenHidden = FALSE) - outputOptions(output, "sizeclass_gyn", suspendWhenHidden = FALSE) - outputOptions(output, "fig_g", suspendWhenHidden = FALSE) - outputOptions(output, "table_g", suspendWhenHidden = FALSE) - return(output) -} - -#' @title Update the output when a generic g size class is chosen -#' -#' @description Update the output table when a generic g size class is chosen -#' -#' @param rv reactive values list -#' -#' @param output output list -#' -#' @return an updated output list -#' -#' @export -#' -update_output_outsc_g <- function(rv, output){ - - if (class(rv$gGeneric[[rv$sizeclass_g]])[1] == "gGeneric"){ - summaryTab <- summary(rv$gGeneric[[rv$sizeclass_g]], CL = rv$CL) - output$table_g <- renderDataTable(summaryTab) - output$fig_g <- renderPlot({ - tryCatch( - plot(rv$gGeneric[[rv$sizeclass_g]], CL = rv$CL), - error = function(x){plot(1,1)}, - warning = function(x){plot(1,1)} - ) - }, height = rv$figH_g, width = rv$figW_g) - output$gModDone <- renderText("OK") - outputOptions(output, "gModDone", suspendWhenHidden = FALSE) - - preText <- paste0("Size class: ", rv$sizeclass_g) - if (length(rv$sizeclasses_g) == 1){ - preText <- "" - } - scText <- renderText(preText) - output$sizeclass_g1 <- scText - output$sizeclass_g2 <- scText - - output$dlgtab <- downloadTable("g_estimates.csv", summaryTab, rv$csvformat) - output$dlgfig <- downloadgFig(rv, rv$sizeclass_g) - } - return(output) -} - -#' @title Update the output when an M model has been run -#' -#' @description Update the output table when an M model has been run -#' -#' @param rv reactive values list -#' -#' @param output output list -#' -#' @return an updated output list -#' -#' @export -#' -update_output_run_M <- function(rv, output){ - - if (!is.null(rv$Msplit)){ - output$MModDone <- renderText("OK") - outputOptions(output, "MModDone", suspendWhenHidden = FALSE) - - output$fig_M <- renderPlot({plot(rv$Msplit, CL = rv$CL)}, - height = rv$figH_M, width = rv$figW_M - ) - summaryTab <- prettySplitTab(summary(rv$Msplit, CL = rv$CL)) - output$table_M <- renderDataTable(datatable(summaryTab)) - output$dlMtab <- downloadTable("M_table.csv", summaryTab, rv$csvformat) - output$dlMfig <- downloadMFig(rv) - } - return(output) -} - -#' @title Update the output list when M model is cleared -#' -#' @description Update the output list when the M model is cleared -#' -#' @param rv reactive values list -#' -#' @param output output list -#' -#' @return an updated output list -#' -#' @export -#' -update_output_run_M_clear <- function(rv, output){ - output$fig_M <- NULL - output$table_M <- NULL - output$MModDone <- NULL - outputOptions(output, "MModDone", suspendWhenHidden = FALSE) - outputOptions(output, "fig_M", suspendWhenHidden = FALSE) - - return(output) -} - -#' @title Update the output when M has been split -#' -#' @description Update the output table when M has been split -#' -#' @param rv reactive values list -#' -#' @param output output list -#' -#' @return an updated output list -#' -#' @export -#' -update_output_split_M <- function(rv, output){ - - if (is.null(rv$Msplit)){ - output$fig_M <- renderPlot({ - tryCatch(plot(rv$M, CL = rv$CL), - error = function(x){plotNA()} - ) - }, height = rv$figH_M, width = rv$figW_M) - output$dlMfig <- downloadMFig(rv, split = FALSE) - - } else{ - output$fig_M <- renderPlot({ - tryCatch(plot(rv$Msplit, CL = rv$CL), - error = function(x){plotNA("split")} - ) - }, height = rv$figH_M, width = rv$figW_M - ) - summaryTab <- prettySplitTab(summary(rv$Msplit, CL = rv$CL)) - output$table_M <- renderDataTable(datatable(summaryTab)) - output$dlMtab <- downloadTable("M_table.csv", summaryTab, rv$csvformat) - output$dlMfig <- downloadMFig(rv) - } - output$MSplitDone <- renderText("OK") - outputOptions(output, "MSplitDone", suspendWhenHidden = FALSE) - output$nMSplits <- renderText(as.character(rv$nsplit_CO + rv$nsplit_SS)) - outputOptions(output, "nMSplits", suspendWhenHidden = FALSE) - return(output) -} - - - -#' @title Update the output list when M split is cleared -#' -#' @description Update the output list when the M split is cleared -#' -#' @param rv reactive values list -#' -#' @param output output list -#' -#' @return an updated output list -#' -#' @export -#' -update_output_split_M_clear <- function(rv, output){ - - output <- update_output_run_M(rv, output) - output$MSplitDone <- NULL - outputOptions(output, "MSplitDone", suspendWhenHidden = FALSE) - output$nMSplits <- renderText(as.character(0)) - outputOptions(output, "nMSplits", suspendWhenHidden = FALSE) - return(output) -} - -#' @title Update the output when the M split is transposed -#' -#' @description Update the output when the M split is transposed -#' -#' @param rv reactive values list -#' -#' @param output output list -#' -#' @return an updated output list -#' -#' @export -#' -update_output_transpose_split <- function(rv, output){ - - if (!is.null(rv$Msplit)){ - output$fig_M <- renderPlot({ - tryCatch(plot(rv$Msplit, CL = rv$CL), - error = function(x){plotNA("split")} - ) - }, height = rv$figH_M, width = rv$figW_M - ) - output$dlMfig <- downloadMFig(rv, TRUE, TRUE) - - } - return(output) -} diff --git a/R/app_output_utilities.R b/R/app_output_utilities.R index 18b98bdb1e0a14ac3347494876461a83c9c28c4f..0d8bc2b8feed29040f3a38a969bf73b06db1a5ed 100644 --- a/R/app_output_utilities.R +++ b/R/app_output_utilities.R @@ -1,4 +1,140 @@ +#' @title Prepare class text header +#' +#' @description Depending on the classes, prepare the header text. +#' +#' @param rv Reactive values list for the GenEst GUI. +#' +#' @param type Model type, either "SE" or "CP" or "g". +#' +#' @return Rendered text ready for export to \code{output} list. +#' +#' @export +#' +classText <- function(rv, type = "SE"){ + out <- "" + if (type == "SE"){ + if (length(rv$sizeclasses_SE) > 1){ + out <- paste0("Size class: ", rv$sizeclass_SE) + } + } + if (type == "CP"){ + if (length(rv$sizeclasses_CP) > 1){ + out <- paste0("Size class: ", rv$sizeclass_CP) + } + } + if (type == "g"){ + if (length(rv$sizeclasses_g) > 1){ + out <- paste0("Size class: ", rv$sizeclass_g) + } + } + renderText(out) +} + +#' @title Prepare the text for the estimation table +#' +#' @description Depending on the model type and CL, prepare the header text. +#' +#' @param rv Reactive values list for the GenEst GUI. +#' +#' @param type Model type, either "SE" or "CP". +#' +#' @return Rendered text ready for export to \code{output} list. +#' +#' @export +#' +estText <- function(rv, type = "SE"){ + out <- NULL + if (type == "SE"){ + out <- paste0("Table shows median estimates and ", 100 * rv$CL, + "% confidence intervals") + } + if (type == "CP"){ + out <- paste0("Table shows median estimates and ", 100 * rv$CL, + "% confidence intervals for location and scale") + } + renderText(out) +} + +#' @title Render a data table without server-side processing +#' +#' @description Simply render the data table without server-side processing. +#' +#' @param x HTML \code{datatable} widget output from +#' \code{\link[DT]{datatable}}. +#' +#' @return Rendered \code{x}. +#' +#' @export +#' +renderDTns <- function(x){ + renderDataTable(x, server = FALSE) +} +#' @title (Re)set outputOptions to not suspending for given elements +#' +#' @description Utility function for clearing and setting purposes. +#' +#' @param output \code{output} list to have elements \code{dontSuspend} +#' (re)set to having \code{suspendWhenHidden = FALSE}. +#' +#' @param dontSuspend Names of elements in \code{output} to (re)set to +#' having \code{suspendWhenHidden = FALSE}. +#' +#' @export +#' +setNotSuspending <- function(output, dontSuspend){ + for(i in 1:length(dontSuspend)){ + outputOptions(output, dontSuspend[i], suspendWhenHidden = FALSE) + } +} + +#' @title Reset values of a list to NULL +#' +#' @description Utility function for clearing and setting purposes. +#' +#' @param x \code{list} object to have elements \code{toNULL} reset to +#' \code{NULL}. +#' +#' @param toNULL Names of elements in \code{x} to reset to \code{NULL}. +#' +#' @return Updated \code{x}. +#' +#' @export +#' +reNULL <- function(x, toNULL){ + for(i in 1:length(toNULL)){ + x[[toNULL[i]]] <- NULL + } + x +} + +#' @title Update the output list upon initiation of the app +#' +#' @description Update the output list when the app is initialized. +#' +#' @param rv Reactive values list for the GenEst GUI. +#' +#' @param output \code{output} list for the GenEst GUI. +#' +#' @return Updated \code{output} list. +#' +#' @export +#' +initialOutput <- function(rv, output){ + output$SStext <- renderText(rv$SStext) + + output$download_RP <- downloadData("RP") + output$download_RPbat <- downloadData("RPbat") + output$download_cleared <- downloadData("cleared") + output$download_powerTower <- downloadData("powerTower") + output$download_PV <- downloadData("PV") + output$download_trough <- downloadData("trough") + output$download_mock <- downloadData("mock") + output$kNeed <- renderText("no") + outputOptions(output, "kNeed", suspendWhenHidden = FALSE) + + return(output) +} #' @title Set Figure width and height based on the number of cells #' #' @description Convenience functions for determining the needed figure sizes. diff --git a/R/app_panels.R b/R/app_panels.R index faf3735b0136ea20d458fbe26c5782b91e1bff97..08dd578ca6817e852fbbba30925faad61973f37c 100644 --- a/R/app_panels.R +++ b/R/app_panels.R @@ -22,7 +22,7 @@ dataTabPanel <- function(dataType){ "CP" = "Carcass Persistence", "SS" = "Search Schedule", "DWP" = "Density Weighted Proportion", - "CO" = "Carcass Observation") + "CO" = "Carcass Observations") TableName <- switch(dataType, "SE" = "data_SE", "CP" = "data_CP", "SS" = "data_SS", @@ -55,12 +55,12 @@ selectedDataPanel <- function(modType){ "CP" = "Selected Data", "g" = "Schedule") Condition1 <- switch(modType, - "SE" = "input.obsCols_SE == null", + "SE" = "input.obsSE == null", "CP" = "input.ltp == null | input.fta == null", "g" = NULL) Condition2 <- switch(modType, "SE" = "output.filename_SE != null & - input.obsCols_SE != null", + input.obsSE != null", "CP" = "output.filename_CP != null & input.ltp != null & input.fta != null", "g" = NULL) @@ -124,42 +124,42 @@ modelOutputPanel <- function(outType){ Condition <- switch(outType, "SEFigures" = - c("output.fig_SE == null", + c("output.SEModDone == null", "output.SEModDone == 'OK'", "1 == 1"), "SEEstimates" = - c("output.modTab_SE == null", + c("output.SEModDone == null", "output.SEModDone == 'OK'", "1 == 1"), "SEModComparison" = - c("output.AICcTab_SE == null", + c("output.SEModDone == null", "output.SEModDone == 'OK'", "1 == 1"), "SEModSelection" = - c("output.modelMenu_SE == null", + c("output.SEModDone == null", "output.SEModDone == 'OK'", "1 == 1"), "CPFigures" = - c("output.fig_CP == null", + c("output.CPModDone == null", "output.CPModDone == 'OK'", "1 == 1"), "CPEstimates" = - c("output.modTab_CP == null", + c("output.CPModDone == null", "output.CPModDone == 'OK'", "1 == 1"), "CPModComparison" = - c("output.AICcTab_CP == null", + c("output.CPModDone == null", "output.CPModDone == 'OK'", "1 == 1"), "CPModSelection" = - c("output.modelMenu_CP == null", + c("output.CPModDone == null", "output.CPModDone == 'OK'", "1 == 1"), "MFigures" = c("input.modelChoices_SE1 == null | input.modelChoices_CP1 == null | output.sizeclasses_SE != output.sizeclasses_CP", - "output.fig_M == null & + "output.MModDone == null & input.modelChoices_SE1 != null & input.modelChoices_CP1 != null & output.sizeclasses_SE == output.sizeclasses_CP", @@ -168,17 +168,17 @@ modelOutputPanel <- function(outType){ c("input.modelChoices_SE1 == null | input.modelChoices_CP1 == null | output.sizeclasses_SE != output.sizeclasses_CP", - "output.fig_M == null & + "output.MModDone == null & input.modelChoices_SE1 != null & input.modelChoices_CP1 != null & output.sizeclasses_SE == output.sizeclasses_CP", "output.MModDone == 'OK'"), "gFigures" = - c("output.fig_g == null", + c("output.gModDone == null", "output.gModDone == 'OK'", "1 == 1"), "gSummary" = - c("output.table_g == null", + c("output.gModDone == null", "output.gModDone == 'OK'", "1 == 1") ) @@ -256,9 +256,9 @@ modelOutputPanel <- function(outType){ "MFigures" = list( em("Fitted SE and CP models must be selected before - detection probability can be estimated. Return to the Model - Selection tabs under Searcher Efficiency and Carcass - Persistence."), + detection probability can be estimated. Return to the + Model Selection tabs under Searcher Efficiency and + Carcass Persistence."), em("Run estimate to view figure"), list(plotOutput("fig_M", inline = TRUE), br(), br(), downloadButton("dlMfig", "Download") diff --git a/R/app_rv_update_functions.R b/R/app_rv_update_functions.R deleted file mode 100644 index 75125b7da9e4636e134edf0de6f81979ded714e3..0000000000000000000000000000000000000000 --- a/R/app_rv_update_functions.R +++ /dev/null @@ -1,1542 +0,0 @@ -#' @title Update the reactive value list when everything is cleared out -#' -#' @description Update the rv list when everything is cleared -#' -#' @param rv reactive values list -#' -#' @param input input list -#' -#' @return an updated reactive values list -#' -#' @export -#' -update_rv_clear_all <- function(rv, input){ - rv <- update_rv_data_SE_clear(rv, input) - rv <- update_rv_data_CP_clear(rv, input) - rv <- update_rv_data_DWP_clear(rv, input) - rv <- update_rv_data_SS_clear(rv, input) - rv <- update_rv_data_CO_clear(rv, input) - return(rv) -} - -#' @title Update the reactive value list when SE data are read in -#' -#' @description Update the rv list when the SE data file is input -#' -#' @param rv reactive values list -#' -#' @param input input list -#' -#' @return an updated reactive values list -#' -#' @export -#' -update_rv_data_SE <- function(rv, input){ - rv <- update_rv_data_SE_clear(rv, input) - rv$data_SE <- readCSV(input$file_SE$datapath) -# rv$csvformat <- ifelse(grepl(";", readLines(input$file_SE$datapath, 1)), 2, "") - rv$filename_SE <- input$file_SE$name - rv$colNames_SE <- colnames(rv$data_SE) - rv$colNames_SE_preds <- predsCols(rv$data_SE) - rv$colNames_SE_preds0 <- predsCols(rv$data_SE) - rv$colNames_SE_obs <- obsCols_SE(rv$data_SE) - rv$colNames_SE_obs0 <- obsCols_SE(rv$data_SE) - rv$colNames_size <- updateColNames_size(rv) - rv$colNames_size0 <- updateColNames_size(rv) - rv$sizeCol <- updatesizeCol(input$sizeCol, rv$colNames_size) - rv$colNames_SE_obs <- removeCols(rv$colNames_SE_obs, rv$sizeCol) - rv$colNames_SE_preds <- removeCols(rv$colNames_SE_preds, rv$sizeCol) - return(rv) -} - -#' @title Update the reactive value list when SE data are cleared out -#' -#' @description Update the rv list when the SE data file input is cleared -#' -#' @param rv reactive values list -#' -#' @param input input list -#' -#' @return an updated reactive values list -#' -#' @export -#' -update_rv_data_SE_clear <- function(rv, input){ - rv$data_SE <- NULL - rv$filename_SE <- NULL - rv$colNames_SE <- NULL - rv$colNames_SE_preds <- NULL - rv$colNames_SE_preds0 <- NULL - rv$colNames_SE_obs <- NULL - rv$colNames_SE_obs0 <- NULL - rv$colNames_size <- updateColNames_size(rv) - rv$colNames_size0 <- updateColNames_size(rv) - rv$sizeCol <- updatesizeCol(input$sizeCol, rv$colNames_size) - rv$colNames_SE_obs <- NULL - rv$colNames_SE_preds <- NULL - rv$toRemove_SE_obs <- NULL - rv$toRemove_SE_preds <- NULL - rv$sizeclass_SE <- NULL - rv$obsCols_SE <- NULL - rv$preds_SE <- NULL - rv$predictors_SE <- NULL - rv$formula_p <- NULL - rv$formula_k <- NULL - rv$kFixedChoice <- NULL - rv$kFixed <- NULL - rv$mods_SE <- NULL - rv$mods_SE_og <- NULL - rv$sizeclasses_SE <- NULL - rv$outSEpk <- NULL - rv$AICcTab_SE <- NULL - rv$modOrder_SE <- NULL - rv$modNames_SE <- NULL - rv$modNames_SEp <- NULL - rv$modNames_SEk <- NULL - rv$modSet_SE <- NULL - rv$best_SE <- NULL - rv$modTab_SE <- NULL - rv$modTabPretty_SE <- NULL - rv$modTabDL_SE <- NULL - rv$figH_SE <- 800 - rv$figW_SE <- 800 - rv$kFill <- NULL - - rv$M <- NULL - rv$Msplit <- NULL - rv$unitCol <- NULL - rv$sizeCol_M <- NULL - rv$SEmodToUse <- NULL - rv$split_CO <- NULL - rv$split_SS <- NULL - rv$nsplit_CO <- 0 - rv$nsplit_SS <- 0 - rv$figH_M <- 600 - rv$figW_M <- 800 - - rv$SS <- seq(0, 364, 7) - rv$SStemp <- NULL - rv$SStext <- paste(seq(0, 364, 7), collapse = ", ") - rv$avgSI <- NULL - rv$gSearchInterval <- 7 - rv$gSearchMax <- 364 - rv$colNames_SS_sel <- NULL - rv$colNames_SS_nosel <- NULL - - rv$kFill_g <- NULL - rv$sizeclasses_g <- NULL - rv$nsizeclasses_g <- NULL - rv$gGeneric <- NULL - rv$SEmodToUse_g <- NULL - rv$figH_g <- 400 - rv$figW_g <- 800 - - rv$toRemove_sizeCol <- c(rv$obsCols_SE, rv$preds_SE, rv$ltp, rv$fta, - rv$preds_CP) - rv$colNames_size <- removeCols(rv$colNames_size0, rv$toRemove_sizeCol) - - return(rv) -} - - -#' @title Update the reactive value list when CP data are read in -#' -#' @description Update the rv list when the CP data file is input -#' -#' @param rv reactive values list -#' -#' @param input input list -#' -#' @return an updated reactive values list -#' -#' @export -#' -update_rv_data_CP <- function(rv, input){ - rv <- update_rv_data_CP_clear(rv, input) -# rv$csvformat <- ifelse(grepl(";", readLines(input$file_CP$datapath, 1)), 2, "") - rv$data_CP <- readCSV(input$file_CP$datapath) - rv$filename_CP <- input$file_CP$name - rv$colNames_CP <- colnames(rv$data_CP) - rv$colNames_CP_preds <- predsCols(rv$data_CP) - rv$colNames_CP_preds0 <- predsCols(rv$data_CP) - rv$colNames_fta <- obsCols_fta(rv$data_CP) - rv$colNames_ltp <- obsCols_ltp(rv$data_CP) - rv$colNames_fta0 <- obsCols_fta(rv$data_CP) - rv$colNames_ltp0 <- obsCols_ltp(rv$data_CP) - rv$colNames_size <- updateColNames_size(rv) - rv$colNames_size0 <- updateColNames_size(rv) - rv$sizeCol <- updatesizeCol(input$sizeCol, rv$colNames_size) - rv$colNames_CP_fta <- removeCols(rv$colNames_fta, rv$sizeCol) - rv$colNames_CP_ltp <- removeCols(rv$colNames_ltp, rv$sizeCol) - rv$colNames_CP_preds <- removeCols(rv$colNames_CP_preds, rv$sizeCol) - return(rv) -} - -#' @title Update the reactive value list when CP data are cleared out -#' -#' @description Update the rv list when the CP data file input is cleared -#' -#' @param rv reactive values list -#' -#' @param input input list -#' -#' @return an updated reactive values list -#' -#' @export -#' -update_rv_data_CP_clear <- function(rv, input){ - - rv$data_CP <- NULL - rv$filename_CP <- NULL - rv$colNames_CP <- NULL - rv$colNames_CP_preds <- NULL - rv$colNames_CP_preds0 <- NULL - rv$colNames_fta <- NULL - rv$colNames_fta0 <- NULL - rv$colNames_ltp <- NULL - rv$colNames_ltp0 <- NULL - rv$colNames_size <- updateColNames_size(rv) - rv$colNames_size0 <- updateColNames_size(rv) - rv$sizeCol <- updatesizeCol(input$sizeCol, rv$colNames_size) - - rv$colNames_fta <- NULL - rv$colNames_ltp <- NULL - rv$colNames_CP_preds <- NULL - rv$toRemove_fta <- NULL - rv$toRemove_ltp <- NULL - rv$toRemove_CP_preds <- NULL - - rv$sizeclass_CP <- NULL - rv$ltp <- NULL - rv$fta <- NULL - rv$preds_CP <- NULL - - rv$dist <- NULL - rv$predictors_CP <- NULL - rv$formula_l <- NULL - rv$formula_s <- NULL - - rv$mods_CP <- NULL - rv$mods_CP_og <- NULL - rv$sizeclasses_CP <- NULL - - rv$AICcTab_CP <- NULL - rv$modOrder_CP <- NULL - rv$modNames_CP <- NULL - rv$modNames_CPl <- NULL - rv$modNames_CPs <- NULL - rv$modNames_CPdist <- NULL - rv$modSet_CP <- NULL - rv$best_CP <- NULL - - rv$modTab_CP <- NULL - rv$modTabPretty_CP <- NULL - rv$modTabDL_CP <- NULL - rv$figH_CP <- 800 - rv$figW_CP <- 800 - - rv$toRemove_sizeCol <- c(rv$obsCols_SE, rv$preds_SE, rv$ltp, rv$fta, - rv$preds_CP) - rv$colNames_size <- removeCols(rv$colNames_size0, rv$toRemove_sizeCol) - - rv$M <- NULL - rv$Msplit <- NULL - rv$unitCol <- NULL - rv$sizeCol_M <- NULL - rv$CPmodToUse <- NULL - rv$split_CO <- NULL - rv$split_SS <- NULL - rv$nsplit_CO <- 0 - rv$nsplit_SS <- 0 - rv$figH_M <- 600 - rv$figW_M <- 800 - - rv$SS <- seq(0, 364, 7) - rv$SStemp <- NULL - rv$SStext <- paste(seq(0, 364, 7), collapse = ", ") - rv$avgSI <- NULL - rv$gSearchInterval <- 7 - rv$gSearchMax <- 364 - rv$colNames_SS_sel <- NULL - rv$colNames_SS_nosel <- NULL - - rv$kFill_g <- NULL - rv$sizeclasses_g <- NULL - rv$nsizeclasses_g <- NULL - rv$gGeneric <- NULL - rv$CPmodToUse_g <- NULL - rv$figH_g <- 400 - rv$figW_g <- 800 - - return(rv) -} - - -#' @title Update the reactive value list when SS data are read in -#' -#' @description Update the rv list when the SS data file is input -#' -#' @param rv reactive values list -#' -#' @param input input list -#' -#' @return an updated reactive values list -#' -#' @export -#' -update_rv_data_SS <- function(rv, input){ - rv <- update_rv_data_SS_clear(rv, input) -# rv$csvformat <- ifelse(grepl(";", readLines(input$file_SS$datapath, 1)), 2, "") - rv$data_SS <- readCSV(input$file_SS$datapath) - rv$colNames_SS <- colnames(rv$data_SS) - return(rv) -} - -#' @title Update the reactive value list when SS data are cleared out -#' -#' @description Update the rv list when the SS data file input is cleared -#' -#' @param rv reactive values list -#' -#' @param input input list -#' -#' @return an updated reactive values list -#' -#' @export -#' -update_rv_data_SS_clear <- function(rv, input){ - rv$data_SS <- NULL - rv$colNames_SS <- NULL - rv$SS <- seq(0, 364, 7) - rv$SStemp <- NULL - rv$SStext <- paste(seq(0, 364, 7), collapse = ", ") - rv$avgSI <- NULL - rv$gSearchInterval <- 7 - rv$gSearchMax <- 364 - rv$colNames_SS_sel <- NULL - rv$colNames_SS_nosel <- NULL - rv$M <- NULL - rv$Msplit <- NULL - rv$unitCol <- NULL - rv$sizeCol_M <- NULL - rv$split_CO <- NULL - rv$split_SS <- NULL - rv$nsplit_CO <- 0 - rv$nsplit_SS <- 0 - rv$figH_M <- 600 - rv$figW_M <- 800 - rv$kFill_g <- NULL - rv$sizeclasses_g <- NULL - rv$nsizeclasses_g <- NULL - rv$gGeneric <- NULL - rv$SEmodToUse_g <- NULL - rv$figH_g <- 400 - rv$figW_g <- 800 - return(rv) -} - -#' @title Update the reactive value list when DWP data are read in -#' -#' @description Update the rv list when the DWP data file is input -#' -#' @param rv reactive values list -#' -#' @param input input list -#' -#' @return an updated reactive values list -#' -#' @export -#' -update_rv_data_DWP <- function(rv, input){ - rv <- update_rv_data_DWP_clear(rv, input) -# rv$csvformat <- ifelse(grepl(";", readLines(input$file_DWP$datapath, 1)), 2, "") - rv$data_DWP <- readCSV(input$file_DWP$datapath) - rv$colNames_DWP <- DWPCols(rv$data_DWP) - return(rv) -} - -#' @title Update the reactive value list when DWP data are cleared out -#' -#' @description Update the rv list when the DWP data file input is cleared -#' -#' @param rv reactive values list -#' -#' @param input input list -#' -#' @return an updated reactive values list -#' -#' @export -#' -update_rv_data_DWP_clear <- function(rv, input){ - rv$data_DWP <- NULL - rv$colNames_DWP <- NULL - rv$M <- NULL - rv$Msplit <- NULL - rv$unitCol <- NULL - rv$sizeCol_M <- NULL - rv$split_CO <- NULL - rv$split_SS <- NULL - rv$nsplit_CO <- 0 - rv$nsplit_SS <- 0 - rv$figH_M <- 600 - rv$figW_M <- 800 - return(rv) -} - - -#' @title Update the reactive value list when CO data are read in -#' -#' @description Update the rv list when the CO data file is input -#' -#' @param rv reactive values list -#' -#' @param input input list -#' -#' @return an updated reactive values list -#' -#' @export -#' -update_rv_data_CO <- function(rv, input){ - rv <- update_rv_data_CO_clear(rv, input) -# rv$csvformat <- ifelse(grepl(";", readLines(input$file_CO$datapath, 1)), 2, "") - rv$data_CO <- readCSV(input$file_CO$datapath) - rv$colNames_CO <- colnames(rv$data_CO) - rv$colNames_COdates <- dateCols(rv$data_CO) - rv$colNames_size <- updateColNames_size(rv) - rv$colNames_size0 <- updateColNames_size(rv) - - rv$sizeCol <- updatesizeCol(input$sizeCol, rv$colNames_size) - return(rv) -} - -#' @title Update the reactive value list when CO data are cleared out -#' -#' @description Update the rv list when the CO data file input is cleared -#' -#' @param rv reactive values list -#' -#' @param input input list -#' -#' @return an updated reactive values list -#' -#' @export -#' -update_rv_data_CO_clear <- function(rv, input){ - rv$data_CO <- NULL - rv$colNames_CO <- NULL - rv$colNames_COdates <- NULL - rv$colNames_size <- updateColNames_size(rv) - rv$colNames_size0 <- updateColNames_size(rv) - - rv$sizeCol <- updatesizeCol(input$sizeCol, rv$colNames_size) - rv$toRemove_sizeCol <- c(rv$obsCols_SE, rv$preds_SE, rv$ltp, rv$fta, - rv$preds_CP) - rv$colNames_size <- removeCols(rv$colNames_size0, rv$toRemove_sizeCol) - - rv$M <- NULL - rv$Msplit <- NULL - rv$unitCol <- NULL - rv$sizeCol_M <- NULL - rv$SEmodToUse <- NULL - rv$split_CO <- NULL - rv$split_SS <- NULL - rv$nsplit_CO <- 0 - rv$nsplit_SS <- 0 - rv$figH_M <- 600 - rv$figW_M <- 800 - return(rv) -} - -#' @title Update the reactive value list when a size class column is selected -#' -#' @description Update the rv list when the size class column is selected -#' -#' @param rv reactive values list -#' -#' @param input input list -#' -#' @return an updated reactive values list -#' -#' @export -#' -update_rv_sizeCol <- function(rv, input){ - rv$sizeCol <- input$sizeCol - rv$obsCols_SE <- input$obsCols_SE - rv$preds_SE <- input$preds_SE - rv$ltp <- input$ltp - rv$fta <- input$fta - rv$preds_CP <- input$preds_CP - rv$toRemove_SE_preds <- c(rv$obsCols_SE, rv$sizeCol) - rv$colNames_SE_preds <- removeCols(rv$colNames_SE_preds0, - rv$toRemove_SE_preds) - rv$toRemove_SE_obs <- c(rv$preds_SE, rv$sizeCol) - rv$colNames_SE_obs <- removeCols(rv$colNames_SE_obs0, rv$toRemove_SE_obs) - rv$toRemove_ltp <- c(rv$preds_CP, rv$fta, rv$sizeCol) - rv$colNames_ltp <- removeCols(rv$colNames_ltp0, rv$toRemove_ltp) - rv$toRemove_fta <- c(rv$preds_CP, rv$ltp, rv$sizeCol) - rv$colNames_fta <- removeCols(rv$colNames_fta0, rv$toRemove_fta) - rv$toRemove_CP_preds <- c(rv$ltp, rv$fta, rv$sizeCol) - rv$colNames_CP_preds <- removeCols(rv$colNames_CP_preds0, - rv$toRemove_CP_preds) - - scCol <- input$sizeCol - sizeclasses <- unique(c(rv$data_SE[ , scCol], rv$data_CP[ , scCol])) - rv$nsizeclasses <- length(sizeclasses) - rv$sizeclasses_k <- sizeclasses - rv$nsizeclasses_k <- length(sizeclasses) - - if (rv$nsizeclasses > 1 & is.null(rv$DWPCol)){ - rv$DWPCol <- sizeclasses[1] - } - if (rv$nsizeclasses == 0){ - rv$sizeclasses_k <- "" - rv$nsizeclasses_k <- 1 - rv$DWPCol <- NULL - } - - return(rv) -} - -#' @title Update the reactive value list when an SE observation column is -#' selected -#' -#' @description Update the rv list when an SE observation column is selected -#' -#' @param rv reactive values list -#' -#' @param input input list -#' -#' @return an updated reactive values list -#' -#' @export -#' -update_rv_cols_SE_obs <- function(rv, input){ - rv$sizeCol <- input$sizeCol - rv$obsCols_SE <- input$obsCols_SE - rv$preds_SE <- input$preds_SE - rv$ltp <- input$ltp - rv$fta <- input$fta - rv$preds_CP <- input$preds_CP - rv$toRemove_SE_preds <- c(rv$obsCols_SE, rv$sizeCol) - rv$colNames_SE_preds <- removeCols(rv$colNames_SE_preds0, - rv$toRemove_SE_preds) - rv$toRemove_sizeCol <- c(rv$obsCols_SE, rv$preds_SE, rv$ltp, rv$fta, - rv$preds_CP) - rv$colNames_size <- removeCols(rv$colNames_size0, rv$toRemove_sizeCol) - return(rv) -} - -#' @title Update the reactive value list when an SE predictor column is -#' selected -#' -#' @description Update the rv list when an SE predictor column is selected -#' -#' @param rv reactive values list -#' -#' @param input input list -#' -#' @return an updated reactive values list -#' -#' @export -#' -update_rv_cols_SE_preds <- function(rv, input){ - rv$sizeCol <- input$sizeCol - rv$obsCols_SE <- input$obsCols_SE - rv$preds_SE <- input$preds_SE - rv$ltp <- input$ltp - rv$fta <- input$fta - rv$preds_CP <- input$preds_CP - rv$toRemove_SE_obs <- c(rv$preds_SE, rv$sizeCol) - rv$colNames_SE_obs <- removeCols(rv$colNames_SE_obs0, rv$toRemove_SE_obs) - rv$toRemove_sizeCol <- c(rv$obsCols_SE, rv$preds_SE, rv$ltp, rv$fta, - rv$preds_CP) - rv$colNames_size <- removeCols(rv$colNames_size0, rv$toRemove_sizeCol) - - return(rv) -} - -#' @title Update the reactive value list when a CP Last Time Present column is -#' selected -#' -#' @description Update the rv list when a CP Last Time Present column is -#' selected -#' -#' @param rv reactive values list -#' -#' @param input input list -#' -#' @return an updated reactive values list -#' -#' @export -#' -update_rv_cols_ltp <- function(rv, input){ - rv$sizeCol <- input$sizeCol - rv$obsCols_SE <- input$obsCols_SE - rv$preds_SE <- input$preds_SE - rv$ltp <- input$ltp - rv$fta <- input$fta - rv$preds_CP <- input$preds_CP - rv$toRemove_fta <- c(rv$preds_CP, rv$ltp, rv$sizeCol) - rv$toRemove_CP_preds <- c(rv$ltp, rv$fta, rv$sizeCol) - rv$colNames_fta <- removeCols(rv$colNames_fta0, rv$toRemove_fta) - rv$colNames_CP_preds <- removeCols(rv$colNames_CP_preds0, - rv$toRemove_CP_preds) - rv$toRemove_sizeCol <- c(rv$obsCols_SE, rv$preds_SE, rv$ltp, rv$fta, - rv$preds_CP) - rv$colNames_size <- removeCols(rv$colNames_size0, rv$toRemove_sizeCol) - - return(rv) -} - -#' @title Update the reactive value list when a CP First Time Absent column is -#' selected -#' -#' @description Update the rv list when a CP First Time Absent column is -#' selected -#' -#' @param rv reactive values list -#' -#' @param input input list -#' -#' @return an updated reactive values list -#' -#' @export -#' -update_rv_cols_fta <- function(rv, input){ - rv$sizeCol <- input$sizeCol - rv$obsCols_SE <- input$obsCols_SE - rv$preds_SE <- input$preds_SE - rv$ltp <- input$ltp - rv$fta <- input$fta - rv$preds_CP <- input$preds_CP - rv$toRemove_ltp <- c(rv$preds_CP, rv$fta, rv$sizeCol) - rv$toRemove_CP_preds <- c(rv$ltp, rv$fta, rv$sizeCol) - rv$colNames_ltp <- removeCols(rv$colNames_ltp0, rv$toRemove_ltp) - rv$colNames_CP_preds <- removeCols(rv$colNames_CP_preds0, - rv$toRemove_CP_preds) - rv$toRemove_sizeCol <- c(rv$obsCols_SE, rv$preds_SE, rv$ltp, rv$fta, - rv$preds_CP) - rv$colNames_size <- removeCols(rv$colNames_size0, rv$toRemove_sizeCol) - - return(rv) -} - -#' @title Update the reactive value list when a CP predictor column is -#' selected -#' -#' @description Update the rv list when a CP predictor column is selected -#' -#' @param rv reactive values list -#' -#' @param input input list -#' -#' @return an updated reactive values list -#' -#' @export -#' -update_rv_cols_CP_preds <- function(rv, input){ - rv$sizeCol <- input$sizeCol - rv$obsCols_SE <- input$obsCols_SE - rv$preds_SE <- input$preds_SE - rv$ltp <- input$ltp - rv$fta <- input$fta - rv$preds_CP <- input$preds_CP - rv$toRemove_ltp <- c(rv$preds_CP, rv$fta, rv$sizeCol) - rv$colNames_ltp <- removeCols(rv$colNames_ltp0, rv$toRemove_ltp) - rv$toRemove_fta <- c(rv$preds_CP, rv$ltp, rv$sizeCol) - rv$colNames_fta <- removeCols(rv$colNames_fta0, rv$toRemove_fta) - rv$toRemove_sizeCol <- c(rv$obsCols_SE, rv$preds_SE, rv$ltp, rv$fta, - rv$preds_CP) - rv$colNames_size <- removeCols(rv$colNames_size0, rv$toRemove_sizeCol) - - return(rv) -} - -#' @title Run the SE Models -#' -#' @description Use the inputs to run the SE models requested by the UI -#' -#' @param rv the reactive values list -#' -#' @param input the input list -#' -#' @return an updated reactive values list -#' -#' @export -#' -update_rv_run_SE <- function(rv, input){ - - rv$M <- NULL - rv$Msplit <- NULL - rv$unitCol <- NULL - rv$sizeCol_M <- NULL - rv$SEmodToUse <- NULL - rv$split_CO <- NULL - rv$split_SS <- NULL - rv$nsplit_CO <- 0 - rv$nsplit_SS <- 0 - rv$figH_M <- 600 - rv$figW_M <- 800 - - rv$SS <- seq(0, 364, 7) - rv$SStemp <- NULL - rv$SStext <- paste(seq(0, 364, 7), collapse = ", ") - rv$avgSI <- NULL - rv$gSearchInterval <- 7 - rv$gSearchMax <- 364 - rv$colNames_SS_sel <- NULL - rv$colNames_SS_nosel <- NULL - - rv$kFill_g <- NULL - rv$sizeclasses_g <- NULL - rv$nsizeclasses_g <- NULL - rv$gGeneric <- NULL - rv$SEmodToUse_g <- NULL - rv$figH_g <- 400 - rv$figW_g <- 800 - - for (sci in 1:rv$nsizeclasses_k){ - rv$kFixed[sci] <- input[[sprintf("kFixed_val_%d", sci)]] - rv$kFixedChoice[sci] <- input[[sprintf("kFixed_yn_%d", sci)]] - } - names(rv$kFixed) <- rv$sizeclasses_k - - names(rv$kFixedChoice) <- rv$sizeclasses_k - rv$kFixed <- setkFix(rv$kFixedChoice, rv$kFixed) - - if (any(is.na(as.numeric(rv$kFixed[rv$kFixedChoice]) == 1))){ - return(rv) - } - if (any(rv$kFixed[rv$kFixedChoice] < 0 | rv$kFixed[rv$kFixedChoice] > 1)){ - return(rv) - } - - rv$obsCols_SE <- input$obsCols_SE - rv$preds_SE <- input$preds_SE - rv$predictors_SE <- prepPredictors(rv$preds_SE) - rv$formula_p <- formula(paste0("p~", rv$predictors_SE)) - rv$formula_k <- formula(paste0("k~", rv$predictors_SE)) - - rv$CL <- input$CL - rv$sizeCol <- input$sizeCol - rv$mods_SE <- suppressWarnings( - pkmSize(formula_p = rv$formula_p, - formula_k = rv$formula_k, data = rv$data_SE, - obsCol = rv$obsCols_SE, sizeCol = rv$sizeCol, - kFixed = rv$kFixed, kInit = 0.7, - CL = rv$CL, quiet = TRUE, allCombos = TRUE) - ) - rv$mods_SE_og <- rv$mods_SE - rv$mods_SE <- pkmSetSizeFailRemove(rv$mods_SE) - if (!all(unlist(pkmSetSizeFail(rv$mods_SE))) && - !any(unlist(lapply(rv$mods_SE_og, pkmSetAllFail)))){ - rv$sizeclasses <- updateSizeclasses(rv$data_SE, rv$sizeCol) - rv$sizeclasses_SE <- rv$sizeclasses - rv$sizeclass <- pickSizeclass(rv$sizeclasses, input$outsizeclassSE) - rv$sizeclass_SE <- rv$sizeclass - rv$AICcTab_SE <- aicc(rv$mods_SE[[rv$sizeclass_SE]], quiet = TRUE, app = TRUE) - rv$modOrder_SE <- as.numeric(row.names(rv$AICcTab_SE)) - rv$modNames_SE <- names(rv$mods_SE[[rv$sizeclass_SE]])[rv$modOrder_SE] - rv$modNames_SEp <- modNameSplit(rv$modNames_SE, 1) - rv$modNames_SEk <- modNameSplit(rv$modNames_SE, 2) - rv$modSet_SE <- rv$mods_SE[[rv$sizeclass_SE]] - rv$best_SE <- (names(rv$modSet_SE)[rv$modOrder_SE])[1] - rv$modTab_SE <- rv$mods_SE[[rv$sizeclass_SE]][[rv$best_SE]]$cell_pk - rv$modTabPretty_SE <- prettyModTabSE(rv$modTab_SE, rv$CL) - rv$modTabDL_SE <- dlModTabSE(rv$modTab_SE, rv$CL) - rv$figH_SE <- setFigH(rv$modSet_SE) - rv$figW_SE <- setFigW(rv$modSet_SE) - } - - - - return(rv) -} - -#' @title Update the reactive value list when SE model is cleared -#' -#' @description Update the rv list when the SE model is cleared -#' -#' @param rv reactive values list -#' -#' @param input input list -#' -#' @return an updated reactive values list -#' -#' @export -#' -update_rv_run_SE_clear <- function(rv, input){ - rv$predictors_SE <- NULL - rv$formula_p <- NULL - rv$formula_k <- NULL - - rv$mods_SE <- NULL - rv$mods_SE_og <- NULL - rv$sizeclasses_SE <- NULL - rv$outSEpk <- NULL - rv$AICcTab_SE <- NULL - rv$modOrder_SE <- NULL - rv$modNames_SE <- NULL - rv$modNames_SEp <- NULL - rv$modNames_SEk <- NULL - rv$modSet_SE <- NULL - rv$best_SE <- NULL - rv$modTab_SE <- NULL - rv$modTabPretty_SE <- NULL - rv$modTabDL_SE <- NULL - rv$figH_SE <- 800 - rv$figW_SE <- 800 - rv$kFill <- NULL - - rv$M <- NULL - rv$Msplit <- NULL - rv$unitCol <- NULL - rv$sizeCol_M <- NULL - rv$SEmodToUse <- NULL - rv$split_CO <- NULL - rv$split_SS <- NULL - rv$nsplit_CO <- 0 - rv$nsplit_SS <- 0 - rv$figH_M <- 600 - rv$figW_M <- 800 - - rv$SS <- seq(0, 364, 7) - rv$SStemp <- NULL - rv$SStext <- paste(seq(0, 364, 7), collapse = ", ") - rv$avgSI <- NULL - rv$gSearchInterval <- 7 - rv$gSearchMax <- 364 - rv$colNames_SS_sel <- NULL - rv$colNames_SS_nosel <- NULL - - rv$kFill_g <- NULL - rv$sizeclasses_g <- NULL - rv$nsizeclasses_g <- NULL - rv$gGeneric <- NULL - rv$SEmodToUse_g <- NULL - rv$figH_g <- 400 - rv$figW_g <- 800 - - rv$toRemove_sizeCol <- c(rv$obsCols_SE, rv$preds_SE, rv$ltp, rv$fta, - rv$preds_CP) - rv$colNames_size <- removeCols(rv$colNames_size0, rv$toRemove_sizeCol) - - return(rv) -} - - -#' @title Update the SE reactive values when the size class is chosen -#' -#' @description Update the SE reactive values when the size class is chosen -#' -#' @param rv the reactive values list -#' -#' @param input the input list -#' -#' @return an updated reactive values list -#' -#' @export -#' -update_rv_outsc_SE <- function(rv, input){ - if (length(rv$mods_SE) > 0){ - rv$sizeclass <- pickSizeclass(rv$sizeclasses, input$outsizeclassSE) - rv$sizeclass_SE <- rv$sizeclass - rv$AICcTab_SE <- aicc(rv$mods_SE[[rv$sizeclass_SE]], quiet = TRUE, app = TRUE) - rv$modOrder_SE <- as.numeric(row.names(rv$AICcTab_SE)) - rv$modNames_SE <- names(rv$mods_SE[[rv$sizeclass_SE]])[rv$modOrder_SE] - rv$modNames_SEp <- modNameSplit(rv$modNames_SE, 1) - rv$modNames_SEk <- modNameSplit(rv$modNames_SE, 2) - rv$modSet_SE <- rv$mods_SE[[rv$sizeclass_SE]] - rv$best_SE <- (names(rv$modSet_SE)[rv$modOrder_SE])[1] - rv$modTab_SE <- rv$mods_SE[[rv$sizeclass_SE]][[rv$best_SE]]$cell_pk - rv$modTabPretty_SE <- prettyModTabSE(rv$modTab_SE, rv$CL) - rv$modTabDL_SE <- dlModTabSE(rv$modTab_SE, rv$CL) - rv$figH_SE <- setFigH(rv$modSet_SE) - rv$figW_SE <- setFigW(rv$modSet_SE) - } - return(rv) -} - -#' @title Update the SE reactive values when a p or k model is chosen -#' -#' @description Update the SE reactive values when a p or k model is chosen -#' -#' @param rv the reactive values list -#' -#' @param input the input list -#' -#' @return an updated reactive values list -#' -#' @export -#' -update_rv_outpk_SE <- function(rv, input){ - if (length(rv$mods_SE) > 0){ - rv$outSEpk <- modNamePaste(c(input$outSEp, input$outSEk)) - rv$modSet_SE <- rv$mods_SE[[rv$sizeclass]] - - if (rv$outSEpk %in% names(rv$modSet_SE)){ - rv$modTab_SE <- rv$modSet_SE[[rv$outSEpk]]$cell_pk - rv$modTabPretty_SE <- prettyModTabSE(rv$modTab_SE, rv$CL) - rv$modTabDL_SE <- dlModTabSE(rv$modTab_SE, rv$CL) - } else { - rv$modTab_SE <- NULL - holder <- data.frame(msg = "Selected model was not successfully fit.") - rv$modTabPretty_SE <- holder - rv$modTabDL_SE <- holder - } - } - return(rv) -} - -#' @title Run the CP Models -#' -#' @description Use the inputs to run the CP models requested by the UI -#' -#' @param rv the reactive values list -#' -#' @param input the input list -#' -#' @return an updated reactive values list -#' -#' @export -#' -update_rv_run_CP <- function(rv, input){ - - rv$ltp <- input$ltp - rv$fta <- input$fta - rv$preds_CP <- input$preds_CP - rv$dist <- input$dist - rv$nsim <- input$nsim - rv$CL <- input$CL - rv$sizeCol <- input$sizeCol - rv$predictors_CP <- prepPredictors(rv$preds_CP) - rv$formula_l <- formula(paste("l~", rv$predictors_CP, sep = "")) - rv$formula_s <- formula(paste("s~", rv$predictors_CP, sep = "")) - - rv$mods_CP <- suppressWarnings( - cpmSize(formula_l = rv$formula_l, - formula_s = rv$formula_s, data = rv$data_CP, - left = rv$ltp, right = rv$fta, dist = rv$dist, - sizeCol = rv$sizeCol, CL = rv$CL, quiet = TRUE, - allCombos = TRUE - ) - ) - rv$mods_CP_og <- rv$mods_CP - rv$mods_CP <- cpmSetSizeFailRemove(rv$mods_CP) - - if (!all(unlist(cpmSetSizeFail(rv$mods_CP)))){ - rv$sizeclasses <- updateSizeclasses(rv$data_CP, rv$sizeCol) - rv$sizeclasses_CP <- rv$sizeclasses - rv$sizeclass <- pickSizeclass(rv$sizeclasses, input$outsizeclassCP) - rv$sizeclass_CP <- rv$sizeclass - rv$AICcTab_CP <- aicc(rv$mods_CP[[rv$sizeclass_CP]], quiet = TRUE, app = TRUE) - rv$AICcTab_CP[ , "Scale Formula"] <- gsub("NULL", "", - rv$AICcTab_CP[ , "Scale Formula"] - ) - rv$modOrder_CP <- as.numeric(row.names(rv$AICcTab_CP)) - rv$modNames_CP <- names(rv$mods_CP[[rv$sizeclass_CP]])[rv$modOrder_CP] - rv$modNames_CPdist <- modNameSplit(rv$modNames_CP, 1) - rv$modNames_CPl <- modNameSplit(rv$modNames_CP, 2) - rv$modNames_CPs <- modNameSplit(rv$modNames_CP, 3) - rv$modSet_CP <- rv$mods_CP[[rv$sizeclass_CP]] - rv$best_CP <- (names(rv$modSet_CP)[rv$modOrder_CP])[1] - rv$modTab_CP <- list( - ls = rv$mods_CP[[rv$sizeclass_CP]][[rv$best_CP]]$cell_ls, - desc = rv$mods_CP[[rv$sizeclass_CP]][[rv$best_CP]]$cell_desc - ) - rv$modTabPretty_CP <- prettyModTabCP(rv$modTab_CP, rv$CL) - rv$modTabDL_CP <- dlModTabCP(rv$modTab_CP, rv$CL) - rv$best_CP <- gsub("NULL", "s ~ 1", rv$best_CP) - rv$figH_CP <- setFigH(rv$modSet_CP, "CP") - rv$figW_CP <- setFigW(rv$modSet_CP) - } - - rv$M <- NULL - rv$Msplit <- NULL - rv$unitCol <- NULL - rv$sizeCol_M <- NULL - rv$SEmodToUse <- NULL - rv$split_CO <- NULL - rv$split_SS <- NULL - rv$nsplit_CO <- 0 - rv$nsplit_SS <- 0 - rv$figH_M <- 600 - rv$figW_M <- 800 - - rv$SS <- seq(0, 364, 7) - rv$SStemp <- NULL - rv$SStext <- paste(seq(0, 364, 7), collapse = ", ") - rv$avgSI <- NULL - rv$gSearchInterval <- 7 - rv$gSearchMax <- 364 - rv$colNames_SS_sel <- NULL - rv$colNames_SS_nosel <- NULL - - rv$kFill_g <- NULL - rv$sizeclasses_g <- NULL - rv$nsizeclasses_g <- NULL - rv$gGeneric <- NULL - rv$SEmodToUse_g <- NULL - rv$figH_g <- 400 - rv$figW_g <- 800 - - return(rv) -} - -#' @title Update the reactive value list when CP model is cleared -#' -#' @description Update the rv list when the CP model is cleared -#' -#' @param rv reactive values list -#' -#' @param input input list -#' -#' @return an updated reactive values list -#' -#' @export -#' -update_rv_run_CP_clear <- function(rv, input){ - rv$dist <- NULL - rv$predictors_CP <- NULL - rv$formula_l <- NULL - rv$formula_s <- NULL - - rv$mods_CP <- NULL - rv$mods_CP_og <- NULL - rv$sizeclasses_CP <- NULL - - rv$AICcTab_CP <- NULL - rv$modOrder_CP <- NULL - rv$modNames_CP <- NULL - rv$modNames_CPl <- NULL - rv$modNames_CPs <- NULL - rv$modNames_CPdist <- NULL - rv$modSet_CP <- NULL - rv$best_CP <- NULL - - rv$modTab_CP <- NULL - rv$modTabPretty_CP <- NULL - rv$modTabDL_CP <- NULL - rv$figH_CP <- 800 - rv$figW_CP <- 800 - - - rv$M <- NULL - rv$Msplit <- NULL - rv$unitCol <- NULL - rv$sizeCol_M <- NULL - rv$SEmodToUse <- NULL - rv$split_CO <- NULL - rv$split_SS <- NULL - rv$nsplit_CO <- 0 - rv$nsplit_SS <- 0 - rv$figH_M <- 600 - rv$figW_M <- 800 - - rv$SS <- seq(0, 364, 7) - rv$SStemp <- NULL - rv$SStext <- paste(seq(0, 364, 7), collapse = ", ") - rv$avgSI <- NULL - rv$gSearchInterval <- 7 - rv$gSearchMax <- 364 - rv$colNames_SS_sel <- NULL - rv$colNames_SS_nosel <- NULL - - rv$kFill_g <- NULL - rv$sizeclasses_g <- NULL - rv$nsizeclasses_g <- NULL - rv$gGeneric <- NULL - rv$SEmodToUse_g <- NULL - rv$figH_g <- 400 - rv$figW_g <- 800 - - rv$toRemove_sizeCol <- c(rv$obsCols_SE, rv$preds_SE, rv$ltp, rv$fta, - rv$preds_CP) - rv$colNames_size <- removeCols(rv$colNames_size0, rv$toRemove_sizeCol) - - return(rv) -} - -#' @title Update the SE reactive values when the size class is chosen -#' -#' @description Update the SE reactive values when the size class is chosen -#' -#' @param rv the reactive values list -#' -#' @param input the input list -#' -#' @return an updated reactive values list -#' -#' @export -#' -update_rv_outsc_CP <- function(rv, input){ - if (length(rv$mods_CP) > 0){ - rv$sizeclass <- pickSizeclass(rv$sizeclasses, input$outsizeclassCP) - rv$sizeclass_CP <- rv$sizeclass - rv$AICcTab_CP <- aicc(rv$mods_CP[[rv$sizeclass_CP]], quiet = TRUE, app = TRUE) - rv$modOrder_CP <- as.numeric(row.names(rv$AICcTab_CP)) - rv$modNames_CP <- names(rv$mods_CP[[rv$sizeclass_CP]])[rv$modOrder_CP] - rv$modNames_CPdist <- modNameSplit(rv$modNames_CP, 1) - rv$modNames_CPl <- modNameSplit(rv$modNames_CP, 2) - rv$modNames_CPs <- modNameSplit(rv$modNames_CP, 3) - rv$modSet_CP <- rv$mods_CP[[rv$sizeclass_CP]] - rv$best_CP <- (names(rv$modSet_CP)[rv$modOrder_CP])[1] - rv$modTab_CP <- list( - ls = rv$mods_CP[[rv$sizeclass_CP]][[rv$best_CP]]$cell_ls, - desc = rv$mods_CP[[rv$sizeclass_CP]][[rv$best_CP]]$cell_desc - ) - rv$modTabPretty_CP <- prettyModTabCP(rv$modTab_CP, rv$CL) - rv$modTabDL_CP <- dlModTabCP(rv$modTab_CP, rv$CL) - rv$figH_CP <- setFigH(rv$modSet_CP, "CP") - rv$figW_CP <- setFigW(rv$modSet_CP) - rv$best_CP <- gsub("NULL", "s ~ 1", rv$best_CP) - } - return(rv) -} - -#' @title Update the CP reactive values when a distribution or l or s model -#' is chosen -#' -#' @description Update the CP reactive values when a distribution or l or s -#' model is chosen -#' -#' @param rv the reactive values list -#' -#' @param input the input list -#' -#' @return an updated reactive values list -#' -#' @export -#' -update_rv_outdls_CP <- function(rv, input){ - if (length(rv$mods_CP) > 0){ - rv$CPdls <- c(input$outCPdist, input$outCPl, input$outCPs) - rv$outCPdlsfig <- modNamePaste(rv$CPdls, "CP") - rv$outCPdlstab <- modNamePaste(rv$CPdls, "CP", tab = TRUE) - rv$modSet_CP <- rv$mods_CP[[rv$sizeclass]] - - if (rv$outCPdlstab %in% names(rv$modSet_CP)){ - rv$modTab_CP <- - - rv$modTab_CP <- list(ls = rv$modSet_CP[[rv$outCPdlstab]]$cell_ls, - desc = rv$modSet_CP[[rv$outCPdlstab]]$cell_desc - ) - rv$modTabPretty_CP <- prettyModTabCP(rv$modTab_CP, rv$CL) - rv$modTabDL_CP <- dlModTabCP(rv$modTab_CP, rv$CL) - } else { - rv$modTab_CP <- NULL - holder <- data.frame(msg = "Selected model was not successfully fit.") - rv$modTabPretty_CP <- holder - rv$modTabDL_CP <- holder - } - } - return(rv) -} - -#' @title Update the SS reactive values when the SS are chosen -#' -#' @description Update the SS reactive values when the SS are chosen -#' -#' @param rv the reactive values list -#' -#' @return an updated reactive values list -#' -#' @export -#' -update_rv_useSSdata <- function(rv){ - rv$SS <- NULL - rv$SStemp <- tryCatch(averageSS(rv$data_SS), error = function(x){NA}) - if (!is.na(rv$SStemp[1])){ - rv$SS <- rv$SStemp - rv$avgSI <- mean(diff(rv$SS[-length(rv$SS)])) - rv$SStext <- paste(rv$SS, collapse = ", ") - } - return(rv) -} - -#' @title Update the SS reactive values when the average SS is chosen -#' -#' @description Update the SS reactive values when the average SS is chosen -#' -#' @param rv the reactive values list -#' -#' @param input the input list -#' -#' @return an updated reactive values list -#' -#' @export -#' -update_rv_useSSinputs <- function(rv, input){ - rv$SStemp <- NA - rv$gSearchInterval <- input$gSearchInterval - rv$gSearchMax <- input$gSearchMax - if (rv$gSearchInterval > 0){ - rv$SStemp <- seq(0, rv$gSearchMax, by = rv$gSearchInterval) - } - if (any(is.na(rv$SStemp)) || any(rv$SStemp < 0) | any(rv$SStemp %% 1 != 0)){ - rv$SStemp <- NA - } - if (!is.na(rv$SStemp[1])){ - rv$SS <- seq(0, rv$gSearchMax, by = rv$gSearchInterval) - if (max(rv$SS) != rv$gSearchMax){ - rv$SS <- c(rv$SS, rv$gSearchMax) - } - rv$SStext <- paste(rv$SS, collapse = ", ") - } - return(rv) -} - -#' @title Run the g Model -#' -#' @description Use the inputs to run the g model requested by the UI -#' -#' @param rv the reactive values list -#' -#' @param input the input list -#' -#' @return an updated reactive values list -#' -#' @export -#' -update_rv_run_g <- function(rv, input){ - rv$gGeneric <- NULL - rv$CL <- input$CL - rv$kFill_g <- NA - - if (length(rv$obsCols_SE) == 1 & any(is.na(rv$kFixed))){ - rv$kCheck_g <- rep(NA, rv$nsizeclasses_k) - counter <- 1 - for (sci in 1:rv$nsizeclasses_k){ - if (is.na(rv$kFixed[sci])){ - rv$kFill_g[sci] <- input[[sprintf("kFill_g_%d", counter)]] - rv$kCheck_g[sci] <- input[[sprintf("kFill_g_%d", counter)]] - counter <- counter + 1 - } else{ - rv$kCheck_g[sci] <- rv$kFixed[sci] - } - } - names(rv$kFill_g) <- rv$sizeclasses_k - rv$kFill_g <- na.omit(rv$kFill_g) - if (length(na.omit(rv$kCheck_g)) != length(rv$kCheck_g)){ - return(rv) - } - if (any(rv$kFill_g < 0 |rv$kFill_g > 1)){ - return(rv) - } - } - - rv$sizeclasses_g <- rv$sizeclasses - rv$nsizeclasses_g <- length(rv$sizeclasses_g) - if (length(rv$nsizeclasses_g) == 1){ - if (is.null(rv$sizeclasses_g)){ - rv$sizeclasses_g <- "all" - rv$nsizeclasses_g <- 1 - } - } - - rv$nsim <- input$nsim - rv$gGeneric <- vector("list", length = rv$nsizeclasses_g) - for (sci in 1:rv$nsizeclasses_g){ - - rv$SEmodToUse_g <- input[[sprintf("modelChoices_SE%d", sci)]] - rv$CPmodToUse_g <- input[[sprintf("modelChoices_CP%d", sci)]] - rv$SEmodToUse_g <- gsub("~ constant", "~ 1", rv$SEmodToUse_g) - rv$CPmodToUse_g <- gsub("~ constant", "~ 1", rv$CPmodToUse_g) - - if (!grepl("s ~", rv$CPmodToUse_g)){ - rv$CPmodToUse_g <- paste(rv$CPmodToUse_g, "; NULL", sep = "") - } - rv$CPmodToUse_g <- paste("dist: ", rv$CPmodToUse_g, sep = "") - - rv$gGeneric[[sci]] <- tryCatch( - estgGeneric(nsim = rv$nsim, days = rv$SS, - model_SE = rv$mods_SE[[sci]][[rv$SEmodToUse_g]], - model_CP = rv$mods_CP[[sci]][[rv$CPmodToUse_g]] - - ), - error = function(x){NULL} - ) - } - names(rv$gGeneric) <- rv$sizeclasses_g - rv$sizeclass_g <- rv$sizeclasses_g[1] - return(rv) -} - -#' @title Update the reactive value list when g model is cleared -#' -#' @description Update the rv list when the g model is cleared -#' -#' @param rv reactive values list -#' -#' @param input input list -#' -#' @return an updated reactive values list -#' -#' @export -#' -update_rv_run_g_clear <- function(rv, input){ - rv$kFill_g <- NULL - rv$sizeclasses_g <- NULL - rv$nsizeclasses_g <- NULL - rv$gGeneric <- NULL - rv$SEmodToUse_g <- NULL - rv$figH_g <- 400 - rv$figW_g <- 800 - - return(rv) -} - -#' @title Update the g reactive values when the size class is chosen -#' -#' @description Update the g reactive values when the size class is chosen -#' -#' @param rv the reactive values list -#' -#' @param input the input list -#' -#' @return an updated reactive values list -#' -#' @export -#' -update_rv_outsc_g <- function(rv, input){ - rv$sizeclass_g <- pickSizeclass(rv$sizeclasses_g, input$outsizeclassg) - rv$CL <- input$CL - return(rv) -} - -#' @title Run the M Model -#' -#' @description Use the inputs to run the M model requested by the UI -#' -#' @param rv the reactive values list -#' -#' @param input the input list -#' -#' @return an updated reactive values list -#' -#' @export -#' -update_rv_run_M <- function(rv, input){ - - rv$M <- NULL - rv$kFill <- NA - if (length(rv$obsCols_SE) == 1 & any(is.na(rv$kFixed))){ - rv$kCheck <- rep(NA, rv$nsizeclasses_k) - counter <- 1 - for (sci in 1:rv$nsizeclasses_k){ - if (is.na(rv$kFixed[sci])){ - rv$kFill[sci] <- input[[sprintf("kFill_%d", counter)]] - rv$kCheck[sci] <- input[[sprintf("kFill_%d", counter)]] - counter <- counter + 1 - } else{ - rv$kCheck[sci] <- rv$kFixed[sci] - } - } - names(rv$kFill) <- rv$sizeclasses_k - rv$kFill <- na.omit(rv$kFill) - if (length(na.omit(rv$kCheck)) != length(rv$kCheck)){ - return(rv) - } - if (any(rv$kFill < 0 |rv$kFill > 1)){ - return(rv) - } - } - - rv$nsizeclasses <- length(rv$sizeclasses) - if (length(rv$nsizeclasses) == 1){ - if (is.null(rv$sizeclasses)){ - rv$sizeclasses <- "all" - } - } - rv$COdate <- input$COdate - rv$nsim <- input$nsim - rv$frac <- input$frac - if (rv$frac < 0.01 | rv$frac > 1){ - return(rv) - } - - rv$SEmodToUse <- rep(NA, rv$nsizeclasses) - rv$CPmodToUse <- rep(NA, rv$nsizeclasses) - - if (length(rv$SEmodToUse) != length(rv$CPmodToUse)){ - return(rv) - } - for (sci in 1:rv$nsizeclasses){ - rv$SEmodToUse[sci] <- input[[sprintf("modelChoices_SE%d", sci)]] - rv$CPmodToUse[sci] <- input[[sprintf("modelChoices_CP%d", sci)]] - if (!grepl("s ~", rv$CPmodToUse[sci])){ - rv$CPmodToUse[sci] <- paste(rv$CPmodToUse[sci], "; NULL", sep = "") - } - rv$CPmodToUse[sci] <- paste("dist: ", rv$CPmodToUse[sci], sep = "") - } - rv$SEmodToUse <- gsub("~ constant", "~ 1", rv$SEmodToUse) - rv$CPmodToUse <- gsub("~ constant", "~ 1", rv$CPmodToUse) - names(rv$SEmodToUse) <- rv$sizeclasses - names(rv$CPmodToUse) <- rv$sizeclasses - - rv$models_SE <- tryCatch( - trimSetSize(rv$mods_SE, rv$SEmodToUse), - error = function(x){NULL} - ) - rv$models_CP <- tryCatch( - trimSetSize(rv$mods_CP, rv$CPmodToUse), - error = function(x){NULL} - ) - - if(any(c(is.null(rv$models_SE), is.null(rv$models_CP)))){ - rv$M <- NULL - return(rv) - } - - if (rv$nsizeclasses > 1){ - rv$DWPCol <- NULL - rv$sizeCol_M <- rv$sizeCol - } else { - rv$DWPCol <- input$DWPCol - rv$sizeCol_M <- NULL - rv$models_SE <- rv$models_SE[[1]] - rv$models_CP <- rv$models_CP[[1]] - } - rv$CL <- input$CL - - rv$M <- tryCatch( - estM(data_CO = rv$data_CO, data_SS = rv$data_SS, rv$data_DWP, - frac = rv$frac, model_SE = rv$models_SE, - model_CP = rv$models_CP, - COdate = rv$COdate, DWPCol = rv$DWPCol, - sizeCol = rv$sizeCol_M, nsim = rv$nsim, - max_intervals = 8 - ), error = function(x){NULL} - ) - - if (!is.null(rv$M)){ - rv$Msplit <- tryCatch( - calcSplits(M = rv$M, - split_SS = NULL, split_CO = NULL, - data_SS = rv$data_SS, data_CO = rv$data_CO - ), error = function(x){NULL}, warning = function(x){NULL} - ) - rv$unitCol <- intersect(rv$colNames_CO, rv$colNames_DWP) - rv$colNames_SS_sel <- colnames(rv$data_SS) %in% rv$data_CO[ , rv$unitCol] - rv$colNames_SS_nosel <- rv$colNames_SS[rv$colNames_SS_sel == FALSE] - } - - return(rv) -} - -#' @title Update the reactive value list when M model is cleared -#' -#' @description Update the rv list when the M model is cleared -#' -#' @param rv reactive values list -#' -#' @param input input list -#' -#' @return an updated reactive values list -#' -#' @export -#' -update_rv_run_M_clear <- function(rv, input){ - rv$M <- NULL - rv$Msplit <- NULL - rv$unitCol <- NULL - rv$sizeCol_M <- NULL - rv$SEmodToUse <- NULL - rv$split_CO <- NULL - rv$split_SS <- NULL - rv$nsplit_CO <- 0 - rv$nsplit_SS <- 0 - rv$figH_M <- 600 - rv$figW_M <- 800 - return(rv) -} - - - -#' @title Update the M reactive values when M is split -#' -#' @description Update the M reactive values when M is split -#' -#' @param rv the reactive values list -#' -#' @param input the input list -#' -#' @return an updated reactive values list -#' -#' @export -#' -update_rv_split_M <- function(rv, input){ - rv$Msplit <- NULL - rv$split_CO <- input$split_CO - rv$split_SS <- input$split_SS - rv$nsplit_CO <- length(rv$split_CO) - rv$nsplit_SS <- length(rv$split_SS) - rv$COdate <- input$COdate - - rv$Msplit <- tryCatch( - calcSplits(M = rv$M, - split_SS = rv$split_SS, split_CO = rv$split_CO, - data_SS = rv$data_SS, data_CO = rv$data_CO - ), error = function(x){NULL}, warning = function(x){NULL} - ) - if (!is.null(rv$Msplit)){ - rv$figH_M <- 600 - if (length(attr(rv$Msplit, "vars")) > 1){ - rv$figH_M <- max(600, 300 * length(rv$Msplit)) - } - } - return(rv) -} - -#' @title Update the reactive value list when M split is cleared -#' -#' @description Update the rv list when the M split is cleared -#' -#' @param rv reactive values list -#' -#' @param input input list -#' -#' @return an updated reactive values list -#' -#' @export -#' -update_rv_split_M_clear <- function(rv, input){ - rv$split_CO <- NULL - rv$split_SS <- NULL - rv$nsplit_CO <- 0 - rv$nsplit_SS <- 0 - rv$figH_M <- 600 - rv$figW_M <- 800 - rv$Msplit <- NULL - - if (!is.null(rv$M)){ - rv$Msplit <- tryCatch( - calcSplits(M = rv$M, - split_SS = NULL, split_CO = NULL, - data_SS = rv$data_SS, data_CO = rv$data_CO - ), error = function(x){NULL}, warning = function(x){NULL} - ) - rv$unitCol <- intersect(rv$colNames_CO, rv$colNames_DWP) - rv$colNames_SS_sel <- colnames(rv$data_SS) %in% rv$data_CO[ , rv$unitCol] - rv$colNames_SS_nosel <- rv$colNames_SS[rv$colNames_SS_sel == FALSE] - } - - return(rv) -} - -#' @title Update the M reactive values when M split is transposed -#' -#' @description Update the M reactive values when M split is transposed -#' -#' @param rv the reactive values list -#' -#' @return an updated reactive values list -#' -#' @export -#' -update_rv_transpose_split <- function(rv){ - if (rv$nsplit_CO + rv$nsplit_SS == 2){ - rv$Msplit <- transposeSplits(rv$Msplit) - } - return(rv) -} \ No newline at end of file diff --git a/R/app_server.R b/R/app_server.R new file mode 100644 index 0000000000000000000000000000000000000000..5a4ba633c4a2eb24eeda5d1ead6a87be323b2d44 --- /dev/null +++ b/R/app_server.R @@ -0,0 +1,227 @@ +#' @title The GenEst server definition function +#' +#' @description This suite of functions defines the server-side program for +#' the GenEst user interface (UI). See the "GenEst Graphic User Interface" +#' vignette for a more complete detailing of the codebase underlying +#' the GenEst UI. \cr \cr \code{GenEstServer}: main server function +#' expressed within the application. +#' +#' @details \code{GenEstServer} is used as the main server function, and is +#' therefore included in the \code{server.R} script of the app. This +#' function is not used in a standard R function sense, in that it does +#' not return a value and is not used on its own to have side effects. +#' The code of the function has two parts: +#' \enumerate{ +#' \item preamble that defines all the necessary variables and options +#' \item \code{\link[shiny]{observeEvent}} calls, one for each event in +#' the application. Each call to \code{\link[shiny]{observeEvent}} +#' includes the \code{eventExpr} (event expression) as the first +#' argument and the \code{handlerExpr} (handler expression) as the +#' second argument, which is an evaluated (via \code{\link[base]{eval}}) +#' block of code returned from \code{reaction} for the specific +#' event, as well as any other control switch arguments needed (such as +#' \code{ignoreNULL}). +#' } +#' +#' @param input \code{input} list for the GenEst GUI. +#' +#' @param output \code{output} list for the GenEst GUI. +#' +#' @param session Environment for the GenEst GUI. +#' +#' @export +#' +GenEstServer <- function(input, output, session){ + + rv <- initialReactiveValues() + output <- initialOutput(rv, output) + msgs <- msgList() + options(htmlwidgets.TOJSON_ARGS = list(na = 'string')) + options(DT.options = list(pageLength = 25)) + + observeEvent(input$clear_all, eval(reaction("clear_all"))) + observeEvent(input$file_SE, eval(reaction("file_SE"))) + observeEvent(input$file_SE_clear, eval(reaction("file_SE_clear"))) + observeEvent(input$file_CP, eval(reaction("file_CP"))) + observeEvent(input$file_CP_clear, eval(reaction("file_CP_clear"))) + observeEvent(input$file_SS, eval(reaction("file_SS"))) + observeEvent(input$file_SS_clear, eval(reaction("file_SS_clear"))) + observeEvent(input$file_DWP, eval(reaction("file_DWP"))) + observeEvent(input$file_DWP_clear, eval(reaction("file_DWP_clear"))) + observeEvent(input$file_CO, eval(reaction("file_CO"))) + observeEvent(input$file_CO_clear, eval(reaction("file_CO_clear"))) + + observeEvent(input$class, eval(reaction("class")), ignoreNULL = FALSE) + + observeEvent(input$obsSE, eval(reaction("obsSE")), ignoreNULL = FALSE) + observeEvent(input$predsSE, eval(reaction("predsSE")), ignoreNULL = FALSE) + observeEvent(input$run_SE, eval(reaction("run_SE"))) + observeEvent(input$run_SE_clear, eval(reaction("run_SE_clear"))) + observeEvent(input$outSEclass, eval(reaction("outSEclass"))) + observeEvent(input$outSEp, eval(reaction("outSEp"))) + observeEvent(input$outSEk, eval(reaction("outSEk"))) + + observeEvent(input$ltp, eval(reaction("ltp")), ignoreNULL = FALSE) + observeEvent(input$fta, eval(reaction("fta")), ignoreNULL = FALSE) + observeEvent(input$predsCP, eval(reaction("predsCP")), ignoreNULL = FALSE) + observeEvent(input$run_CP, eval(reaction("run_CP"))) + observeEvent(input$run_CP_clear, eval(reaction("run_CP_clear"))) + observeEvent(input$outCPclass, eval(reaction("outCPclass"))) + observeEvent(input$outCPdist, eval(reaction("outCPdist"))) + observeEvent(input$outCPl, eval(reaction("outCPl"))) + observeEvent(input$outCPs, eval(reaction("outCPs"))) + + observeEvent(input$run_M, eval(reaction("run_M"))) + observeEvent(input$run_M_clear, eval(reaction("run_M_clear"))) + observeEvent(input$split_M, eval(reaction("split_M"))) + observeEvent(input$split_M_clear, eval(reaction("split_M_clear"))) + observeEvent(input$transpose_split, eval(reaction("transpose_split"))) + + observeEvent(input$useSSdata, eval(reaction("useSSdata"))) + observeEvent(input$useSSinputs, eval(reaction("useSSinputs"))) + observeEvent(input$run_g, eval(reaction("run_g"))) + observeEvent(input$run_g_clear, eval(reaction("run_g_clear"))) + observeEvent(input$outgclass, eval(reaction("outgclass"))) + +} + +#' @rdname GenEstServer +#' +#' @description \code{reaction}: creates a handler expression to be +#' used by \code{\link[shiny]{observeEvent}} within \code{GenEstServer}, +#' which includes the call to \code{eventReaction} (the function that +#' manages the reaction once the code is evaluated), any message generation +#' or handling, and the enclosing curly braces. Calls +#' \code{reactionMessageRun} and \code{reactionMessageDone} to create the +#' event-specific reaction expression message components. +#' +#' @param eventName Character name of the event. One of "clear_all", +#' "file_SE", "file_SE_clear", "file_CP", "file_CP_clear", "file_SS", +#' "file_SS_clear", "file_DWP", "file_DWP_clear", "file_CO", +#' "file_CO_clear", "class", "obsSE", "predsSE", "run_SE", "run_SE_clear", +#' "outSEclass", "outSEp", "outSEk", "ltp", "fta", "predsCP", "run_CP", +#' "run_CP_clear", "outCPclass", "outCPdist", "outCPl", "outCPs", +#' "run_M", "run_M_clear", "split_M", "split_M_clear", "transpose_split", +#' "useSSdata", "useSSinputs", "run_g", "run_g_clear", or "outgclass". +#' +#' @return \code{reaction}: An object of type +#' "\code{\link[base]{expression}}" returned from +#' \code{\link[base]{parse}} using the \code{text} argument. This is a +#' parsed but unevaluated expression, ready to be evaluated by +#' \code{\link[base]{eval}}. +#' +#' @export +#' +reaction <- function(eventName){ + + eventOptions <- c("clear_all", "file_SE", "file_SE_clear", "file_CP", + "file_CP_clear", "file_SS", "file_SS_clear", "file_DWP", + "file_DWP_clear", "file_CO", "file_CO_clear", "class", + "obsSE", "predsSE", "run_SE", "run_SE_clear", + "outSEclass", "outSEp", "outSEk", "ltp", "fta", "predsCP", + "run_CP", "run_CP_clear", "outCPclass", "outCPdist", + "outCPl", "outCPs", "run_M", "run_M_clear", "split_M", + "split_M_clear", "transpose_split", "useSSdata", + "useSSinputs", "run_g", "run_g_clear", "outgclass") + + if (missing(eventName) || (eventName %in% eventOptions) == FALSE){ + stop("eventName missing or not in list of available eventNames") + } + + reactFun <- 'eventReaction' + reactArgs <- paste0('"', eventName, '", rv, input, output, session') + reactText <- paste0(reactFun, '(', reactArgs, ')') + reactMsgRun <- reactionMessageRun(eventName) + reactMsgDone <- reactionMessageDone(eventName) + + reactextFull <- c("{", reactMsgRun, reactText, reactMsgDone, "}") + + return(parse(text = reactextFull)) +} + +#' @rdname GenEstServer +#' +#' @description \code{reactionMessageRun}: Creates the message for model +#' running, or clears the existing notifications if desired. +#' +#' @return \code{reactionMessageRun}: Reaction running message expression, as +#' a character string. +#' +#' @export +#' +reactionMessageRun <- function(eventName){ + clearEvents <- c("clear_all", "file_SE_clear", "file_CP_clear", + "file_SS_clear", "file_DWP_clear", "file_CO_clear", + "run_SE_clear", "run_CP_clear", "run_g_clear", + "run_M_clear", "split_M_clear") + reactMsg <- NULL + if (eventName == "run_SE"){ + reactMsg <- 'msgs$ModSE <<- msgModRun(msgs, "SE")' + } + if (eventName == "run_CP"){ + reactMsg <- 'msgs$ModCP <<- msgModRun(msgs, "CP")' + } + if (eventName == "run_g"){ + reactMsg <- 'msgs$Modg <<- msgModRun(msgs, "g")' + } + if (eventName == "run_M"){ + reactMsg <- 'msgs$ModM <<- msgModRun(msgs, "M")' + } + if (eventName %in% clearEvents){ + reactMsg <- 'clearNotifications(msgs)' + } + reactMsg +} + +#' @rdname GenEstServer +#' +#' @description \code{reactionMessageDone}: Creates the message for model +#' done running. +#' +#' @return \code{reactionMessageDone}: Reaction done message expression, as +#' a character string. +#' +#' @export +#' +reactionMessageDone <- function(eventName){ + reactMsg <- NULL + if (eventName == "run_SE"){ + reactMsg <- 'msgs$ModSE <<- msgModDone(msgs, rv, "SE")' + } + if (eventName == "run_CP"){ + reactMsg <- 'msgs$ModCP <<- msgModDone(msgs, rv, "CP")' + } + if (eventName == "run_g"){ + reactMsg <- 'msgs$Modg <<- msgModDone(msgs, rv, "g")' + } + if (eventName == "run_M"){ + reactMsg <- 'msgs$ModM <<- msgModDone(msgs, rv, "M")' + } + if (eventName == "split_M"){ + reactMsg <- 'msgs$ModM <<- msgModDone(msgs, rv, "split")' + } + + if (eventName == "useSSdata"){ + reactMsg <- 'msgs$SS <<- msgSSavgFail(msgs, rv)' + } + if (eventName == "useSSinputs"){ + reactMsg <- 'msgs$SS <<- msgSSinputFail(msgs, rv)' + } + reactMsg +} + +#' @rdname GenEstServer +#' +#' @description \code{eventReaction}: Manages the running of the update +#' functions for rv, output, and input, based on the \code{eventName}. +#' +#' @param rv Reactive values list for the GenEst GUI. +#' +#' @export +#' +eventReaction <- function(eventName, rv, input, output, session){ + rv <- update_rv(eventName, rv, input) + output <- update_output(eventName, rv, output) + update_input(eventName, rv, input, session) +} + diff --git a/R/app_table_functions.R b/R/app_table_functions.R index 327c331ca8e1757a7e224c3b18e7e15fb2ad1440..07859fbdd83eedddd1f3edf154ec513a93026dbf 100644 --- a/R/app_table_functions.R +++ b/R/app_table_functions.R @@ -1,4 +1,4 @@ -#' @title Create the pretty versi10/8/2018 5:06:59 PMon of the Searcher Efficiency model table +#' @title Create the pretty version of the Searcher Efficiency model table #' #' @description Format a reader-friendly version of the parameter table from #' a Searcher Efficiency model, based on confidence level of interest @@ -70,7 +70,8 @@ dlModTabSE <- function(modTab, CL = 0.90){ lo <- 100 * (1 - CL) / 2 up <- 100 - 100 * (1 - CL) / 2 coltypes <- c("Median", paste0(lo, "%"), paste0(up, "%")) - colnames(out) <- c("Cell", "n", paste0("p ", coltypes), paste0("k ", coltypes)) + colnames(out) <- c("Cell", "n", paste0("p ", coltypes), + paste0("k ", coltypes)) return(out) } @@ -177,7 +178,8 @@ prettySplitTab <- function(splitSummary){ out <- cbind(rep(names(splitSummary), each = dim(splitSummary[[1]])[1]), rownames(out), out) rownames(out) <- NULL - colnames(out) <- c(attr(splitSummary, "vars")[2:1], colnames(splitSummary[[1]])) + colnames(out) <- c(attr(splitSummary, "vars")[2:1], + colnames(splitSummary[[1]])) } else { if (!is.matrix(splitSummary)){ splitSummary <- t(as.matrix(splitSummary)) diff --git a/R/app_ui.R b/R/app_ui.R index dcb6b33ea6f2d903cc2432d40391783031f35c6c..22ab38b55d6225e77e143bdd68202e308c44bc53 100644 --- a/R/app_ui.R +++ b/R/app_ui.R @@ -148,7 +148,7 @@ GeneralInputSidebar <- function(){ sidebarPanel(width = 3, modelInputWidget("nsim"), modelInputWidget("CL"), - modelInputWidget("sizeCol") + modelInputWidget("class") ) } @@ -185,8 +185,8 @@ SESidebar <- function(){ sidebarPanel(width = 3, b(u(big("Model Inputs:"))), br(), br(), - modelInputWidget("obsCols_SE"), - modelInputWidget("preds_SE"), + modelInputWidget("obsSE"), + modelInputWidget("predsSE"), modelInputWidget("kFixedInput"), modelRunWidget("SE"), modelOutputWidget("SE") @@ -253,7 +253,7 @@ CPSidebar <- function(){ br(), br(), modelInputWidget("ltp"), modelInputWidget("fta"), - modelInputWidget("preds_CP"), + modelInputWidget("predsCP"), modelInputWidget("dist"), modelRunWidget("CP"), modelOutputWidget("CP") @@ -420,7 +420,13 @@ gMainPanel <- function(){ #' @export #' helpPanel <- function(appType = "base"){ - tabPanel("Help", + tabPanel("Help", + h5(br(), "For help, see: ", + a("GenEst User Guide", + href = "https://doi.org/10.3133/tm7C19", target = "_blank"), " and ", + a("GenEst Statistical Models", + href = " https://doi.org/10.3133/tm7A2", target = "_blank")), + br(), tabsetPanel( gettingStartedPanel(), downloadsPanel(), diff --git a/R/app_ui_utilities.R b/R/app_ui_utilities.R index 96e8571f618b7af25e4f2af723550c77690f3254..99dd31b53d96a7e2d38b51fe562bbf4758cea2d1 100644 --- a/R/app_ui_utilities.R +++ b/R/app_ui_utilities.R @@ -139,27 +139,25 @@ GenEstInlineCSS <- function(...){ "#nsim" = "margin-bottom: 15px", "#CL" = "margin-bottom: 15px", "#sizeCol" = "margin-bottom: 15px", - "#obsCols_SE" = "margin-bottom: 15px", - "#preds_SE" = "margin-bottom: 15px", + "#obsSE" = "margin-bottom: 15px", + "#predsSE" = "margin-bottom: 15px", "#ltp" = "margin-bottom: 15px", "#fta" = "margin-bottom: 15px", - "#preds_CP" = "margin-bottom: 15px", + "#predsCP" = "margin-bottom: 15px", "#frac" = "margin-bottom: 15px", "#useSSinputs" = "margin-bottom: 20px", "#gSearchInterval" = "margin-bottom: 15px", - "#kFill" = "margin-bottom: 15px", "#gSearchMax" = "margin-bottom: 20px", - "#kFill_g" = "margin-bottom: 15px", "#useSSdata" = "margin-bottom: 15px", - "#runMod_SE" = "margin-bottom: 10px", - "#runMod_CP" = "margin-bottom: 10px", - "#runMod_M" = "margin-bottom: 10px", - "#splitM" = "margin-bottom: 10px", - "#runMod_g" = "margin-bottom: 10px", - "#runMod_SE_clear" = "margin-bottom: 20px", - "#runMod_CP_clear" = "margin-bottom: 20px", - "#runMod_M_clear" = "margin-bottom: 20px", - "#runMod_g_clear" = "margin-bottom: 20px", + "#run_SE" = "margin-bottom: 10px", + "#run_CP" = "margin-bottom: 10px", + "#run_M" = "margin-bottom: 10px", + "#split_M" = "margin-bottom: 10px", + "#run_g" = "margin-bottom: 10px", + "#run_SE_clear" = "margin-bottom: 20px", + "#run_CP_clear" = "margin-bottom: 20px", + "#run_M_clear" = "margin-bottom: 20px", + "#run_g_clear" = "margin-bottom: 20px", "#split_CO" = "margin-bottom: 15px" ), ... ) diff --git a/R/app_update_input.R b/R/app_update_input.R new file mode 100644 index 0000000000000000000000000000000000000000..0ec43dff058e58b3d169a9c88e5ea043f7ca5e62 --- /dev/null +++ b/R/app_update_input.R @@ -0,0 +1,409 @@ +#' @title Update the inputs when an event occurs +#' +#' @description When an event occurs in the GenEst GUI, the input values may +#' need to be updated. This function contains all of the possible updates +#' based on the event options (or lacks any updates if the event doesn't +#' require any). +#' +#' @param eventName Character name of the event. One of "clear_all", +#' "file_SE", "file_SE_clear", "file_CP", "file_CP_clear", "file_SS", +#' "file_SS_clear", "file_DWP", "file_DWP_clear", "file_CO", +#' "file_CO_clear", "class", "obsSE", "predsSE", "run_SE", "run_SE_clear", +#' "outSEclass", "outSEp", "outSEk", "ltp", "fta", "predsCP", "run_CP", +#' "run_CP_clear", "outCPclass", "outCPdist", "outCPl", "outCPs", +#' "run_M", "run_M_clear", "split_M", "split_M_clear", "transpose_split", +#' "useSSdata", "useSSinputs", "run_g", "run_g_clear", or "outgclass". +#' +#' @param rv Reactive values list for the GenEst GUI. +#' +#' @param input \code{input} list for the GenEst GUI. +#' +#' @param session Environment for the GenEst GUI. +#' +#' @export +#' +update_input <- function(eventName, rv, input, session){ + + eventOptions <- c("clear_all", "file_SE", "file_SE_clear", "file_CP", + "file_CP_clear", "file_SS", "file_SS_clear", "file_DWP", + "file_DWP_clear", "file_CO", "file_CO_clear", "class", + "obsSE", "predsSE", "run_SE", "run_SE_clear", + "outSEclass", "outSEp", "outSEk", "ltp", "fta", "predsCP", + "run_CP", "run_CP_clear", "outCPclass", "outCPdist", + "outCPl", "outCPs", "run_M", "run_M_clear", "split_M", + "split_M_clear", "transpose_split", "useSSdata", + "useSSinputs", "run_g", "run_g_clear", "outgclass") + + if (missing(eventName) || (eventName %in% eventOptions) == FALSE){ + stop("eventName missing or not in list of available eventNames") + } + + + if(eventName == "clear_all"){ + toReset <- c("file_SE", "predsSE", "obsSE", "outSEp", "outSEk", + "outSEclass", "DWPCol", "split_SS", "split_CO", + "modelChoices_SE1", "outgclass","file_CP", "predsCP", "ltp", + "fta", "outCPl", "outCPs", "outCPdist", "outCPclass", + "modelChoices_CP1", "file_SS", "gSearchInterval", + "gSearchMax", "file_DWP", "file_CO", "COdate") + lapply(toReset, reset) + + scc <- rv$colNames_size + if (is.null(scc)){ + scc <- "" + } + scs <- rv$sizeCol + if (is.null(scc)){ + scs <- "" + } + updateSelectizeInput(session, "predsSE", choices = "") + updateSelectizeInput(session, "obsSE", choices = "") + updateSelectizeInput(session, "class", choices = scc, selected = scs) + updateSelectizeInput(session, "modelChoices_SE1", choices = "") + updateSelectizeInput(session, "split_SS", choices = "") + updateSelectizeInput(session, "split_CO", choices = "") + updateSelectizeInput(session, "outSEp", choices = "") + updateSelectizeInput(session, "outSEk", choices = "") + updateSelectizeInput(session, "outSEclass", choices = "") + updateSelectizeInput(session, "outgclass", choices = "") + updateSelectizeInput(session, "predsCP", choices = "") + updateSelectizeInput(session, "ltp", choices = "") + updateSelectizeInput(session, "fta", choices = "") + updateSelectizeInput(session, "modelChoices_CP1", choices = "") + updateSelectizeInput(session, "outCPl", choices = "") + updateSelectizeInput(session, "outCPs", choices = "") + updateSelectizeInput(session, "outCPdist", choices = "") + updateSelectizeInput(session, "outCPclass", choices = "") + updateSelectizeInput(session, "COdate", choices = "") + +} + + if (eventName == "file_SE"){ + updateSelectizeInput(session, "predsSE", choices = rv$colNames_SE_preds) + updateSelectizeInput(session, "obsSE", choices = rv$colNames_SE_obs) + updateSelectizeInput(session, "class", choices = rv$colNames_size, + selected = rv$sizeCol + ) + updateTabsetPanel(session, "LoadedDataViz", "Searcher Efficiency") + + if (rv$nsizeclasses > 1){ + updateSelectizeInput(session, "DWPCol", selected = " ") + } + } + + if (eventName == "file_SE_clear"){ + + toReset <- c("file_SE", "predsSE", "obsSE", "outSEp", "outSEk", + "outSEclass", "DWPCol", "split_SS", "split_CO", + "modelChoices_SE1", "outgclass") + lapply(toReset, reset) + + scc <- rv$colNames_size + scs <- rv$sizeCol + if (is.null(scc)){ + scs <- "" + scc <- "" + } + updateSelectizeInput(session, "predsSE", choices = "") + updateSelectizeInput(session, "obsSE", choices = "") + updateSelectizeInput(session, "class", choices = scc, selected = scs) + updateSelectizeInput(session, "modelChoices_SE1", choices = "") + updateSelectizeInput(session, "split_SS", choices = "") + updateSelectizeInput(session, "split_CO", choices = "") + updateSelectizeInput(session, "outSEp", choices = "") + updateSelectizeInput(session, "outSEk", choices = "") + updateSelectizeInput(session, "outSEclass", choices = "") + updateSelectizeInput(session, "outgclass", choices = "") + updateSelectizeInput(session, "DWPCol", choices = "") + + } + + if (eventName == "file_CP"){ + updateSelectizeInput(session, "predsCP", choices = rv$colNames_CP_preds) + updateSelectizeInput(session, "ltp", choices = rv$colNames_CP_ltp) + updateSelectizeInput(session, "fta", choices = rv$colNames_CP_fta) + updateSelectizeInput(session, "class", choices = rv$colNames_size, + selected = rv$sizeCol + ) + updateTabsetPanel(session, "LoadedDataViz", "Carcass Persistence") + } + + + if (eventName == "file_CP_clear"){ + + toReset <- c("file_CP", "predsCP", "ltp", "fta", "outCPl", "outCPs", + "outCPdist", "outCPclass", "modelChoices_CP1", + "split_SS", "split_CO", "outgclass") + lapply(toReset, reset) + + scc <- rv$colNames_size + scs <- rv$sizeCol + if (is.null(scc)){ + scs <- "" + scc <- "" + } + updateSelectizeInput(session, "predsCP", choices = "") + updateSelectizeInput(session, "ltp", choices = "") + updateSelectizeInput(session, "fta", choices = "") + updateSelectizeInput(session, "class", choices = scc, selected = scs) + updateSelectizeInput(session, "modelChoices_CP1", choices = "") + updateSelectizeInput(session, "outCPl", choices = "") + updateSelectizeInput(session, "outCPs", choices = "") + updateSelectizeInput(session, "outCPdist", choices = "") + updateSelectizeInput(session, "outCPclass", choices = "") + updateSelectizeInput(session, "split_SS", choices = "") + updateSelectizeInput(session, "split_CO", choices = "") + updateSelectizeInput(session, "outgclass", choices = "") + } + + if (eventName == "file_SS"){ + updateTabsetPanel(session, "LoadedDataViz", "Search Schedule") + } + + if (eventName == "file_SS_clear"){ + + toReset <- c("file_SS", "gSearchInterval", "gSearchMax", + "split_SS", "split_CO", "outgclass") + lapply(toReset, reset) + + updateSelectizeInput(session, "split_SS", choices = "") + updateSelectizeInput(session, "split_CO", choices = "") + updateSelectizeInput(session, "outgclass", choices = "") + } + + if (eventName == "file_DWP"){ + updateSelectizeInput(session, "DWPCol", choices = rv$colNames_DWP) + if (length(rv$colNames_DWP) == 1){ + updateSelectizeInput(session, "DWPCol", selected = rv$colNames_DWP) + } + if (rv$nsizeclasses > 1){ + updateSelectizeInput(session, "DWPCol", selected = rv$colNames_DWP[1]) + } + updateTabsetPanel(session, "LoadedDataViz", "Density Weighted Proportion") + } + + if (eventName == "file_DWP_clear"){ + + toReset <- c("file_DWP", "DWPCol", "split_SS", "split_CO") + lapply(toReset, reset) + + updateSelectizeInput(session, "DWPCol", choices = "") + updateSelectizeInput(session, "split_SS", choices = "") + updateSelectizeInput(session, "split_CO", choices = "") + } + + if (eventName == "file_CO"){ + updateSelectizeInput(session, "COdate", choices = rv$colNames_COdates) + if (length(rv$colNames_COdates) == 1){ + updateSelectizeInput(session, "COdate", + choices = rv$colNames_COdates, selected = rv$colNames_COdates + ) + } + updateSelectizeInput(session, "sizeCol", choices = rv$colNames_size, + selected = rv$sizeCol + ) + updateTabsetPanel(session, "LoadedDataViz", "Carcass Observations") + } + + if (eventName == "file_CO_clear"){ + + toReset <- c("file_CO", "COdate", "split_SS", "split_CO") + lapply(toReset, reset) + + scc <- rv$colNames_size + scs <- rv$sizeCol + if (is.null(scc)){ + scs <- "" + scc <- "" + } + updateSelectizeInput(session, "COdate", choices = "") + updateSelectizeInput(session, "split_SS", choices = "") + updateSelectizeInput(session, "split_CO", choices = "") + } + + + if (eventName == "class"){ + updateSelectizeInput(session, "predsSE", choices = rv$colNames_SE_preds, + selected = input$predsSE) + updateSelectizeInput(session, "obsSE", choices = rv$colNames_SE_obs, + selected = input$obsSE) + updateSelectizeInput(session, "ltp", choices = rv$colNames_CP_nosel, + selected = input$ltp) + updateSelectizeInput(session, "fta", choices = rv$colNames_CP_nosel, + selected = input$fta) + updateSelectizeInput(session, "predsCP", choices = rv$colNames_CP_preds, + selected = input$predsCP) + updateSelectizeInput(session, "DWPCol", choices = rv$colNames_DWP, + selected = rv$DWPCol) + updateSelectizeInput(session, "class", choices = rv$colNames_size, + selected = rv$sizeCol + ) + } + + if (eventName == "obsSE"){ + updateSelectizeInput(session, "predsSE", choices = rv$colNames_SE_preds, + selected = rv$preds_SE) + updateSelectizeInput(session, "obsSE", choices = rv$colNames_SE_obs, + selected = rv$obsCols_SE) + updateSelectizeInput(session, "class", choices = rv$colNames_size, + selected = rv$sizeCol + ) + } + + if (eventName == "predsSE"){ + updateSelectizeInput(session, "obsSE", choices = rv$colNames_SE_obs, + selected = rv$obsCols_SE) + updateSelectizeInput(session, "predsSE", choices = rv$colNames_SE_preds, + selected = rv$preds_SE) + updateSelectizeInput(session, "class", choices = rv$colNames_size, + selected = rv$sizeCol + ) + } + + if (eventName == "ltp"){ + updateSelectizeInput(session, "fta", choices = rv$colNames_fta, + selected = rv$fta) + updateSelectizeInput(session, "ltp", choices = rv$colNames_ltp, + selected = rv$ltp) + updateSelectizeInput(session, "predsCP", choices = rv$colNames_CP_preds, + selected = rv$preds_CP) + updateSelectizeInput(session, "class", choices = rv$colNames_size, + selected = rv$sizeCol + ) + } + + if (eventName == "fta"){ + updateSelectizeInput(session, "fta", choices = rv$colNames_fta, + selected = rv$fta) + updateSelectizeInput(session, "ltp", choices = rv$colNames_ltp, + selected = rv$ltp) + updateSelectizeInput(session, "predsCP", choices = rv$colNames_CP_preds, + selected = rv$preds_CP) + updateSelectizeInput(session, "class", choices = rv$colNames_size, + selected = rv$sizeCol + ) + } + + if (eventName == "predsCP"){ + updateSelectizeInput(session, "fta", choices = rv$colNames_fta, + selected = rv$fta) + updateSelectizeInput(session, "ltp", choices = rv$colNames_ltp, + selected = rv$ltp) + updateSelectizeInput(session, "predsCP", choices = rv$colNames_CP_preds, + selected = rv$preds_CP) + updateSelectizeInput(session, "class", choices = rv$colNames_size, + selected = rv$sizeCol + ) + } + + if (eventName == "run_SE"){ + updateTabsetPanel(session, "analyses_SE", "Model Comparison") + updateSelectizeInput(session, "outSEp", choices = rv$modNames_SEp) + updateSelectizeInput(session, "outSEk", choices = rv$modNames_SEk) + updateSelectizeInput(session, "outSEclass", choices = rv$sizeclasses) + + updateSelectizeInput(session, "DWPCol", choices = rv$colNames_DWP, + selected = rv$DWPCol) + if (length(rv$colNames_DWP) == 1){ + updateSelectizeInput(session, "DWPCol", selected = rv$colNames_DWP) + } + + reset("outgclass") + reset("gSearchInterval") + reset("gSearchMax") + updateSelectizeInput(session, "split_SS", choices = "") + updateSelectizeInput(session, "split_CO", choices = "") + updateSelectizeInput(session, "outgclass", choices = "") + } + + if (eventName == "run_SE_clear"){ + toReset <- c("outSEp", "outSEk", "outsizeclassSE", "DWPCol", + "split_SS", "split_CO", "modelChoices_SE1", "outgclass") + lapply(toReset, reset) + updateSelectizeInput(session, "modelChoices_SE1", choices = "") + updateSelectizeInput(session, "split_SS", choices = "") + updateSelectizeInput(session, "split_CO", choices = "") + updateSelectizeInput(session, "outSEp", choices = "") + updateSelectizeInput(session, "outSEk", choices = "") + updateSelectizeInput(session, "outSEclass", choices = "") + updateSelectizeInput(session, "outgclass", choices = "") + } + + if (eventName == "outSEclass"){ + updateSelectizeInput(session, "outSEp", choices = rv$modNames_SEp) + updateSelectizeInput(session, "outSEk", choices = rv$modNames_SEk) + } + + if (eventName == "run_CP"){ + toReset <- c("outgclass", "gSearchInterval", "gSearchMax") + lapply(toReset, reset) + updateTabsetPanel(session, "analyses_CP", "Model Comparison") + updateSelectizeInput(session, "outCPl", choices = rv$modNames_CPl) + updateSelectizeInput(session, "outCPs", choices = rv$modNames_CPs) + updateSelectizeInput(session, "outCPdist", choices = rv$modNames_CPdist) + updateSelectizeInput(session, "outCPclass", choices = rv$sizeclasses) + updateSelectizeInput(session, "split_SS", choices = "") + updateSelectizeInput(session, "split_CO", choices = "") + updateSelectizeInput(session, "outgclass", choices = "") + } + + if (eventName == "run_CP_clear"){ + toReset <- c("outCPl", "outCPs", "outCPdist", "outsizeclassCP", + "split_SS", "split_CO", "modelChoices_CP1", "outgclass", + "gSearchInterval", "gSearchMax") + lapply(toReset, reset) + updateSelectizeInput(session, "modelChoices_CP1", choices = "") + updateSelectizeInput(session, "split_SS", choices = "") + updateSelectizeInput(session, "split_CO", choices = "") + updateSelectizeInput(session, "outCPl", choices = "") + updateSelectizeInput(session, "outCPs", choices = "") + updateSelectizeInput(session, "outCPdist", choices = "") + updateSelectizeInput(session, "outCPclass", choices = "") + updateSelectizeInput(session, "outgclass", choices = "") + } + + if (eventName == "outCPclass"){ + updateSelectizeInput(session, "outCPl", choices = rv$modNames_CPl) + updateSelectizeInput(session, "outCPs", choices = rv$modNames_CPs) + updateSelectizeInput(session, "outCPdist", choices = rv$modNames_CPdist) + } + + if (eventName == "useSSdata"){ + if (!is.na(rv$SStemp[1])){ + updateNumericInput(session, "gSearchInterval", value = rv$avgSI) + updateNumericInput(session, "gSearchMax", value = max(rv$SS)) + } + } + + if (eventName == "run_g"){ + updateSelectizeInput(session, "outgclass", choices = rv$sizeclasses_g) + updateTabsetPanel(session, "analyses_g", "Summary") + } + + if (eventName == "run_g_clear"){ + reset("outgclass") + updateSelectizeInput(session, "outgclass", choices = "") + } + + if (eventName == "run_M"){ + updateNumericInput(session, "frac", value = rv$frac) + updateSelectizeInput(session, "split_SS", choices = rv$colNames_SS_nosel) + updateSelectizeInput(session, "split_CO", choices = rv$colNames_CO) + } + + if (eventName == "run_M_clear"){ + reset("split_SS") + reset("split_CO") + updateSelectizeInput(session, "split_SS", choices = "") + updateSelectizeInput(session, "split_CO", choices = "") + } + + + if (eventName == "split_M_clear"){ + reset("split_SS") + reset("split_CO") + updateSelectizeInput(session, "split_SS", choices = rv$colNames_SS_nosel) + updateSelectizeInput(session, "split_CO", choices = rv$colNames_CO) + } +} + diff --git a/R/app_update_output.R b/R/app_update_output.R new file mode 100644 index 0000000000000000000000000000000000000000..edbf5c50ad7440a943422a434c0b8021c232b128 --- /dev/null +++ b/R/app_update_output.R @@ -0,0 +1,548 @@ +#' @title Update the outputs when an event occurs +#' +#' @description When an event occurs in the GenEst GUI, the output values may +#' need to be updated. This function contains all of the possible updates +#' based on the event options (or lacks any updates if the event doesn't +#' require any). +#' +#' @param eventName Character name of the event. One of "clear_all", +#' "file_SE", "file_SE_clear", "file_CP", "file_CP_clear", "file_SS", +#' "file_SS_clear", "file_DWP", "file_DWP_clear", "file_CO", +#' "file_CO_clear", "class", "obsSE", "predsSE", "run_SE", "run_SE_clear", +#' "outSEclass", "outSEp", "outSEk", "ltp", "fta", "predsCP", "run_CP", +#' "run_CP_clear", "outCPclass", "outCPdist", "outCPl", "outCPs", +#' "run_M", "run_M_clear", "split_M", "split_M_clear", "transpose_split", +#' "useSSdata", "useSSinputs", "run_g", "run_g_clear", or "outgclass". +#' +#' @param rv Reactive values list for the GenEst GUI. +#' +#' @param output \code{output} list for the GenEst GUI. +#' +#' @return Updated \code{output} list. +#' +#' @export +#' +update_output <- function(eventName, rv, output){ + + eventOptions <- c("clear_all", "file_SE", "file_SE_clear", "file_CP", + "file_CP_clear", "file_SS", "file_SS_clear", "file_DWP", + "file_DWP_clear", "file_CO", "file_CO_clear", "class", + "obsSE", "predsSE", "run_SE", "run_SE_clear", + "outSEclass", "outSEp", "outSEk", "ltp", "fta", "predsCP", + "run_CP", "run_CP_clear", "outCPclass", "outCPdist", + "outCPl", "outCPs", "run_M", "run_M_clear", "split_M", + "split_M_clear", "transpose_split", "useSSdata", + "useSSinputs", "run_g", "run_g_clear", "outgclass") + + if (missing(eventName) || (eventName %in% eventOptions) == FALSE){ + stop("eventName missing or not in list of available eventNames") + } + + if (eventName == "clear_all"){ + toNULL <- c("data_SE", "filename_SE", "selected_SE", "SEModDone", + "DWPNeed", "AICcTab_SE", "modTab_SE", "fig_SE", + "sizeclasses_SE", "modelMenu_SE", "sizeclass_SE1", + "sizeclass_SE2", "sizeclass_SE3", "sizeclass_SEyn", + "text_SE_est", "data_CP", "filename_CP", "selected_CP", + "CPModDone", "AICcTab_CP", "modTab_CP", "fig_CP", + "sizeclasses_CP", "modelMenu_CP", "sizeclass_CP1", + "sizeclass_CP2", "sizeclass_CP3", "sizeclass_CPyn", + "text_CP_est", "fig_M", "table_M", "MModDone", "table_g", + "fig_g", "gModDone", "sizeclass_gyn", "sizeclass_g1", + "sizeclass_g2", "data_SS", "data_DWP", "data_CO") + output <- reNULL(output, toNULL) + output$kNeed <- setkNeed(rv) + dontSuspend <- c("SEModDone", + "sizeclasses_SE", "filename_SE", "text_SE_est", + "kNeed", "MModDone", "gModDone", + "sizeclass_gyn", + "filename_SE", "filename_CP", "text_CP_est", + "CPModDone", + "sizeclasses_CP", "data_SS", "data_DWP", "data_CO") + setNotSuspending(output, dontSuspend) + } + + if (eventName == "file_SE" | eventName == "file_SE_clear"){ + toNULL <- c("data_SE", "filename_SE", "selected_SE", "SEModDone", + "DWPNeed", "AICcTab_SE", "modTab_SE", "fig_SE", + "sizeclasses_SE", "modelMenu_SE", "sizeclass_SE1", + "sizeclass_SE2", "sizeclass_SE3", "sizeclass_SEyn", + "text_SE_est", "fig_M", "table_M", "MModDone", "table_g", + "fig_g", "gModDone", "sizeclass_gyn", "sizeclass_g1", + "sizeclass_g2") + output <- reNULL(output, toNULL) + output$kNeed <- setkNeed(rv) + if (eventName == "file_SE"){ + output$data_SE <- renderDTns(datatable(rv$data_SE)) + output$filename_SE <- renderText(paste0("File: ", rv$filename_SE)) + } + dontSuspend <- c("SEModDone", "sizeclasses_SE", "filename_SE", + "text_SE_est", "kNeed", "MModDone", "gModDone", + "sizeclass_gyn") + setNotSuspending(output, dontSuspend) + } + + if (eventName == "file_CP" | eventName == "file_CP_clear"){ + toNULL <- c("data_CP", "filename_CP", "selected_CP", "CPModDone", + "AICcTab_CP", "modTab_CP", "fig_CP", + "sizeclasses_CP", "modelMenu_CP", "sizeclass_CP1", + "sizeclass_CP2", "sizeclass_CP3", "sizeclass_CPyn", + "text_CP_est", "fig_M", "table_M", "MModDone", "table_g", + "fig_g", "gModDone", "sizeclass_gyn", "sizeclass_g1", + "sizeclass_g2") + output <- reNULL(output, toNULL) + if (eventName == "file_CP"){ + output$data_CP <- renderDTns(datatable(rv$data_CP)) + output$filename_CP <- renderText(paste0("File: ", rv$filename_CP)) + } + dontSuspend <- c("CPModDone", "sizeclasses_CP", "filename_CP", + "text_CP_est", "MModDone", "gModDone", + "sizeclass_gyn") + setNotSuspending(output, dontSuspend) + } + + if (eventName == "file_SS" | eventName == "file_SS_clear"){ + toNULL <- c("data_SS", "fig_M", "table_M", "MModDone", "table_g", + "fig_g", "gModDone", "sizeclass_gyn", "sizeclass_g1", + "sizeclass_g2") + output <- reNULL(output, toNULL) + if (eventName == "file_SS"){ + output$data_SS <- renderDTns(datatable(rv$data_SS)) + } + dontSuspend <- c("data_SS", "MModDone", "gModDone", "sizeclass_gyn") + setNotSuspending(output, dontSuspend) + } + + if (eventName == "file_DWP" | eventName == "file_DWP_clear"){ + toNULL <- c("data_DWP", "fig_M", "table_M", "MModDone") + output <- reNULL(output, toNULL) + if (eventName == "file_DWP"){ + output$data_DWP <- renderDTns(datatable(rv$data_DWP)) + } + dontSuspend <- c("data_DWP", "MModDone") + setNotSuspending(output, dontSuspend) + } + + if (eventName == "file_CO" | eventName == "file_CO_clear"){ + toNULL <- c("data_CO", "fig_M", "table_M", "MModDone") + output <- reNULL(output, toNULL) + if (eventName == "file_CO"){ + output$data_CO <- renderDTns(datatable(rv$data_CO)) + } + dontSuspend <- c("data_CO", "MModDone") + setNotSuspending(output, dontSuspend) + } + + if (eventName == "class"){ + if (!is.null(rv$obsCols_SE)){ + selectedCols <- c(rv$obsCols_SE, rv$sizeCol, rv$preds_SE) + selectedData <- selectData(rv$data_SE, selectedCols) + output$selected_SE <- renderDTns(datatable(selectedData)) + } + if (!is.null(c(rv$ltp, rv$fta))){ + obsColsSelected <- c(rv$ltp, rv$fta) + selectedCols <- c(obsColsSelected, rv$sizeCol, rv$preds_CP) + selectedData <- selectData(rv$data_CP, selectedCols) + output$selected_CP <- renderDTns(datatable(selectedData)) + } + output$kFixedInput <- kFixedWidget(rv$sizeclasses_k) + } + + if (eventName == "obsSE"){ + selectedCols <- c(rv$obsCols_SE, rv$sizeCol, rv$preds_SE) + if (!is.null(rv$data_SE)){ + selectedData <- selectData(rv$data_SE, selectedCols) + output$selected_SE <- renderDTns(datatable(selectedData)) + } + } + + if (eventName == "predsSE"){ + selectedCols <- c(rv$obsCols_SE, rv$sizeCol, rv$preds_SE) + if (!is.null(rv$data_SE)){ + selectedData <- selectData(rv$data_SE, selectedCols) + output$selected_SE <- renderDTns(datatable(selectedData)) + } + } + + if (eventName == "fta"){ + selectedCols <- c(rv$ltp, rv$fta, rv$sizeCol, rv$preds_CP) + selectedData <- selectData(rv$data_CP, selectedCols) + output$selected_CP <- renderDTns(datatable(selectedData)) + } + + if (eventName == "ltp"){ + selectedCols <- c(rv$ltp, rv$fta, rv$sizeCol, rv$preds_CP) + selectedData <- selectData(rv$data_CP, selectedCols) + output$selected_CP <- renderDTns(datatable(selectedData)) + } + + if (eventName == "predsCP"){ + selectedCols <- c(rv$ltp, rv$fta, rv$sizeCol, rv$preds_CP) + selectedData <- selectData(rv$data_CP, selectedCols) + output$selected_CP <- renderDTns(datatable(selectedData)) + } + + if (eventName == "run_SE"){ + output$kNeed <- setkNeed(rv) + output$DWPNeed <- renderText("yes") + toNULL <- c("SEModDone", "AICcTab_SE", "modTab_SE", "fig_SE", + "sizeclasses_SE", "modelMenu_SE", "sizeclass_SE1", + "sizeclass_SE2", "sizeclass_SE3", "sizeclass_SEyn", + "text_SE_est", "fig_M", "table_M", "MModDone", "table_g", + "fig_g", "gModDone", "sizeclass_gyn", "sizeclass_g1", + "sizeclass_g2") + output <- reNULL(output, toNULL) + if (!all(unlist(pkmSetSizeFail(rv$mods_SE))) && + !any(unlist(lapply(rv$mods_SE_og, pkmSetAllFail)))){ + output$SEModDone <- renderText("OK") + output$kNeed <- setkNeed(rv) + if (length(rv$sizeclasses) == 1){ + output$DWPNeed <- renderText("yes") + } else{ + output$DWPNeed <- renderText("no") + } + output$AICcTab_SE <- renderDataTable({rv$AICcTab_SE}) + output$modTab_SE <- renderDataTable({rv$modTabPretty_SE}) + output$fig_SE <- renderPlot({ + plot(rv$modSet_SE, specificModel = rv$best_SE, + app = TRUE) + }, height = rv$figH_SE, width = rv$figW_SE) + + output$sizeclasses_SE <- prepSizeclassText(rv$sizeclasses_SE) + output$modelMenu_SE <- modelSelectionWidget(rv$mods_SE, "SE") + + output$sizeclass_SE1 <- classText(rv, "SE") + output$sizeclass_SE2 <- classText(rv, "SE") + output$sizeclass_SE3 <- classText(rv, "SE") + output$text_SE_est <- estText(rv, "SE") + + if (length(rv$sizeclasses_SE) == 1){ + output$sizeclass_SEyn <- renderText("NO") + } else{ + output$sizeclass_SEyn <- renderText("YES") + } + + output$dlSEest <- downloadTable("SE_estimates.csv", rv$modTabDL_SE, + rv$csvformat) + output$dlSEAICc <- downloadTable("SE_AICc.csv", rv$AICcTab_SE, + rv$csvformat) + output$dlSEfig <- downloadSEFig(rv) + } + dontSuspend <- c("text_SE_est", "MModDone", "gModDone", "sizeclass_gyn", + "SEModDone", "kNeed", "DWPNeed", "sizeclasses_SE", + "sizeclass_SEyn") + setNotSuspending(output, dontSuspend) + } + + if (eventName == "run_SE_clear"){ + output$kNeed <- setkNeed(rv) + output$DWPNeed <- renderText("yes") + toNULL <- c("SEModDone", "AICcTab_SE", "modTab_SE", "fig_SE", + "sizeclasses_SE", "modelMenu_SE", "sizeclass_SE1", + "sizeclass_SE2", "sizeclass_SE3", "sizeclass_SEyn", + "text_SE_est", "fig_M", "table_M", "MModDone", "table_g", + "fig_g", "gModDone", "sizeclass_gyn", "sizeclass_g1", + "sizeclass_g2") + output <- reNULL(output, toNULL) + dontSuspend <- c("SEModDone", "sizeclasses_SE", "text_SE_est", + "kNeed", "MModDone", "gModDone", + "sizeclass_gyn") + setNotSuspending(output, dontSuspend) + } + + if (eventName == "outSEclass"){ + if (length(rv$mods_SE) > 0){ + output$AICcTab_SE <- renderDataTable({rv$AICcTab_SE}) + output$modTab_SE <- renderDataTable({rv$modTabPretty_SE}) + output$fig_SE <- renderPlot({ + plot(rv$modSet_SE, specificModel = rv$best_SE, + app = TRUE) + }, height = rv$figH_SE, width = rv$figW_SE) + + output$sizeclass_SE1 <- classText(rv, "SE") + output$sizeclass_SE2 <- classText(rv, "SE") + output$sizeclass_SE3 <- classText(rv, "SE") + + output$dlSEest <- downloadTable("SE_estimates.csv", rv$modTabDL_SE, + rv$csvformat) + output$dlSEAICc <- downloadTable("SE_AICc.csv", rv$AICcTab_SE, + rv$csvformat) + output$dlSEfig <- downloadSEFig(rv) + } + } + + if (eventName == "outSEp" | eventName == "outSEk"){ + if (length(rv$mods_SE) > 0){ + output$fig_SE <- renderPlot({ + tryCatch( + plot(rv$modSet_SE, specificModel = rv$outSEpk, + app = TRUE), + error = function(x){plotNA()} + ) + }, height = rv$figH_SE, width = rv$figW_SE) + output$dlSEfig <- downloadSEFig(rv) + if (!is.null(rv$modTab_SE)){ + output$modTab_SE <- renderDataTable({rv$modTabPretty_SE}) + output$dlSEest <- downloadTable("SE_estimates.csv", rv$modTabDL_SE, + rv$csvformat) + } + } + } + + if (eventName == "run_CP"){ + toNULL <- c("CPModDone", "AICcTab_CP", "modTab_CP", "fig_CP", + "sizeclasses_CP", "modelMenu_CP", "sizeclass_CP1", + "sizeclass_CP2", "sizeclass_CP3", "sizeclass_CPyn", + "text_CP_est", "dlCPest", "dlCPAICc", "dlCPfig", + "fig_M", "table_M", "MModDone", "table_g", + "fig_g", "gModDone", "sizeclass_gyn", "sizeclass_g1", + "sizeclass_g2") + output <- reNULL(output, toNULL) + if (!all(unlist(cpmSetSizeFail(rv$mods_CP)))){ + output$CPModDone <- renderText("OK") + output$AICcTab_CP <- renderDataTable({rv$AICcTab_CP}) + output$modTab_CP <- renderDataTable({rv$modTabPretty_CP}) + output$fig_CP <- renderPlot({ + plot(rv$modSet_CP, specificModel = rv$best_CP, + app = TRUE) + }, height = rv$figH_CP, width = rv$figW_CP) + output$sizeclasses_CP <- prepSizeclassText(rv$sizeclasses_CP) + output$modelMenu_CP <- modelSelectionWidget(rv$mods_CP, "CP") + + output$text_CP_est <- estText(rv, "CP") + output$sizeclass_CP1 <- classText(rv, "CP") + output$sizeclass_CP2 <- classText(rv, "CP") + output$sizeclass_CP3 <- classText(rv, "CP") + + if (length(rv$sizeclasses_CP) == 1){ + output$sizeclass_CPyn <- renderText("NO") + } else{ + output$sizeclass_CPyn <- renderText("YES") + } + + output$dlCPest <- downloadTable("CP_estimates.csv", rv$modTabDL_CP, + rv$csvformat) + output$dlCPAICc <- downloadTable("CP_AICc.csv", rv$AICcTab_CP, + rv$csvformat) + output$dlCPfig <- downloadCPFig(rv) + } + dontSuspend <- c("CPModDone", "sizeclasses_CP", "sizeclass_CPyn", + "text_CP_est", "MModDone", "gModDone", "sizeclass_gyn") + setNotSuspending(output, dontSuspend) + } + + if (eventName == "run_CP_clear"){ + toNULL <- c("CPModDone", "AICcTab_CP", "modTab_CP", "fig_CP", + "sizeclasses_CP", "modelMenu_CP", "sizeclass_CP1", + "sizeclass_CP2", "sizeclass_CP3", "sizeclass_CPyn", + "text_CP_est", "dlCPest", "dlCPAICc", "dlCPfig", + "fig_M", "table_M", "MModDone", "table_g", + "fig_g", "gModDone", "sizeclass_gyn", "sizeclass_g1", + "sizeclass_g2") + output <- reNULL(output, toNULL) + dontSuspend <- c("CPModDone", "sizeclasses_CP", "sizeclass_CPyn", + "text_CP_est", "MModDone", "gModDone", "sizeclass_gyn") + setNotSuspending(output, dontSuspend) + } + + if (eventName == "outCPclass"){ + if (length(rv$mods_CP) > 0){ + output$modTab_CP <- renderDTns(datatable(rv$modTabPretty_CP)) + output$fig_CP <- renderPlot({ + plot(rv$modSet_CP, specificModel = rv$best_CP, + app = TRUE) + }, height = rv$figH_CP, width = rv$figW_CP) + + preText <- paste0("Size class: ", rv$sizeclass_CP) + output$sizeclass_CP1 <- classText(rv, "CP") + output$sizeclass_CP2 <- classText(rv, "CP") + output$sizeclass_CP3 <- classText(rv, "CP") + + output$dlCPest <- downloadTable("CP_estimates.csv", rv$modTabDL_CP, + rv$csvformat) + output$dlCPAICc <- downloadTable("CP_AICc.csv", rv$AICcTab_CP, + rv$csvformat) + output$dlCPfig <- downloadCPFig(rv) + } + } + + if (eventName %in% c("outCPdist", "outCPl", "outCPs")){ + if (length(rv$mods_CP) > 0){ + output$modTab_CP <- renderDTns(datatable(rv$modTabPretty_CP)) + output$fig_CP <- renderPlot({ + tryCatch( + plot(rv$modSet_CP, specificModel = rv$outCPdlsfig, + app = TRUE), + error = function(x){plotNA()} + ) + }, height = rv$figH_CP, width = rv$figW_CP) + output$dlCPest <- downloadTable("CP_estimates.csv", rv$modTabDL_CP, + rv$csvformat) + output$dlCPfig <- downloadCPFig(rv) + + if (!is.null(rv$modTab_CP)){ + output$modTab_CP <- renderDataTable({rv$modTabPretty_CP}) + output$dlCPest <- downloadTable("CP_estimates.csv", rv$modTabDL_CP, + rv$csvformat) + } + } + } + + if (eventName == "useSSdata" | eventName == "useSSinputs"){ + output$SStext <- renderText(rv$SStext) + } + + if (eventName == "run_g"){ + toNULL <- c("table_g", "fig_g", "gModDone", "sizeclass_gyn", + "sizeclass_g1", "sizeclass_g2") + output <- reNULL(output, toNULL) + if (!is.null(rv$gGeneric[[1]])){ + summaryTab <- summary(rv$gGeneric[[1]], CL = rv$CL) + output$table_g <- renderDataTable(summaryTab) + output$fig_g <- renderPlot({ + tryCatch( + plot(rv$gGeneric[[1]], CL = rv$CL), + error = function(x){plot(1,1)}, + warning = function(x){plot(1,1)} + ) + }, height = rv$figH_g, width = rv$figW_g) + output$gModDone <- renderText("OK") + if (length(rv$sizeclasses_SE) == 1){ + output$sizeclass_gyn <- renderText("NO") + } else{ + output$sizeclass_gyn <- renderText("YES") + } + + output$sizeclass_g1 <- classText(rv, "g") + output$sizeclass_g2 <- classText(rv, "g") + + output$dlgtab <- downloadTable("g_estimates.csv", summaryTab, + rv$csvformat) + output$dlgfig <- downloadgFig(rv, 1) + } + dontSuspend <- c("gModDone", "sizeclass_gyn") + setNotSuspending(output, dontSuspend) + } + + if (eventName == "run_g_clear"){ + toNULL <- c("table_g", "fig_g", "gModDone", "sizeclass_gyn", + "sizeclass_g1", "sizeclass_g2") + output <- reNULL(output, toNULL) + dontSuspend <- c("gModDone", "sizeclass_gyn") + setNotSuspending(output, dontSuspend) + } + + if (eventName == "outgclass"){ + if (class(rv$gGeneric[[rv$sizeclass_g]])[1] == "gGeneric"){ + summaryTab <- summary(rv$gGeneric[[rv$sizeclass_g]], CL = rv$CL) + output$table_g <- renderDataTable(summaryTab) + output$fig_g <- renderPlot({ + tryCatch( + plot(rv$gGeneric[[rv$sizeclass_g]], CL = rv$CL), + error = function(x){plot(1,1)}, + warning = function(x){plot(1,1)} + ) + }, height = rv$figH_g, width = rv$figW_g) + output$gModDone <- renderText("OK") + outputOptions(output, "gModDone", suspendWhenHidden = FALSE) + + preText <- paste0("Size class: ", rv$sizeclass_g) + if (length(rv$sizeclasses_g) == 1){ + preText <- "" + } + scText <- renderText(preText) + output$sizeclass_g1 <- scText + output$sizeclass_g2 <- scText + + output$dlgtab <- downloadTable("g_estimates.csv", summaryTab, + rv$csvformat) + output$dlgfig <- downloadgFig(rv, rv$sizeclass_g) + } + } + + if (eventName == "run_M"){ + toNULL <- c("fig_M", "table_M", "MModDone") + output <- reNULL(output, toNULL) + if (!is.null(rv$Msplit)){ + output$MModDone <- renderText("OK") + output$fig_M <- renderPlot({plot(rv$Msplit, CL = rv$CL)}, + height = rv$figH_M, width = rv$figW_M + ) + summaryTab <- prettySplitTab(summary(rv$Msplit, CL = rv$CL)) + output$table_M <- renderDataTable(datatable(summaryTab)) + output$dlMtab <- downloadTable("M_table.csv", summaryTab, rv$csvformat) + output$dlMfig <- downloadMFig(rv) + } + outputOptions(output, "MModDone", suspendWhenHidden = FALSE) + } + + if (eventName == "run_M_clear"){ + toNULL <- c("fig_M", "table_M", "MModDone") + output <- reNULL(output, toNULL) + outputOptions(output, "MModDone", suspendWhenHidden = FALSE) + } + + if (eventName == "split_M"){ + + if (is.null(rv$Msplit)){ + output$fig_M <- renderPlot({ + tryCatch(plot(rv$M, CL = rv$CL), + error = function(x){plotNA()} + ) + }, height = rv$figH_M, width = rv$figW_M) + output$dlMfig <- downloadMFig(rv, split = FALSE) + + } else{ + output$fig_M <- renderPlot({ + tryCatch(plot(rv$Msplit, CL = rv$CL), + error = function(x){plotNA("split")} + ) + }, height = rv$figH_M, width = rv$figW_M + ) + summaryTab <- prettySplitTab(summary(rv$Msplit, CL = rv$CL)) + output$table_M <- renderDataTable(datatable(summaryTab)) + output$dlMtab <- downloadTable("M_table.csv", summaryTab, + rv$csvformat) + output$dlMfig <- downloadMFig(rv) + } + output$MSplitDone <- renderText("OK") + output$nMSplits <- renderText( + as.character(rv$nsplit_CO + rv$nsplit_SS)) + outputOptions(output, "nMSplits", suspendWhenHidden = FALSE) + outputOptions(output, "MSplitDone", suspendWhenHidden = FALSE) + } + + if (eventName == "split_M_clear"){ + + if (!is.null(rv$Msplit)){ + output$MModDone <- renderText("OK") + outputOptions(output, "MModDone", suspendWhenHidden = FALSE) + + output$fig_M <- renderPlot({plot(rv$Msplit, CL = rv$CL)}, + height = rv$figH_M, width = rv$figW_M + ) + summaryTab <- prettySplitTab(summary(rv$Msplit, CL = rv$CL)) + output$table_M <- renderDataTable(datatable(summaryTab)) + output$dlMtab <- downloadTable("M_table.csv", summaryTab, rv$csvformat) + output$dlMfig <- downloadMFig(rv) + } + + output$MSplitDone <- NULL + output$nMSplits <- renderText(as.character(0)) + outputOptions(output, "MSplitDone", suspendWhenHidden = FALSE) + outputOptions(output, "nMSplits", suspendWhenHidden = FALSE) + } + + if (eventName == "transpose_split"){ + if (!is.null(rv$Msplit)){ + output$fig_M <- renderPlot({ + tryCatch(plot(rv$Msplit, CL = rv$CL), + error = function(x){plotNA("split")} + ) + }, height = rv$figH_M, width = rv$figW_M + ) + output$dlMfig <- downloadMFig(rv, TRUE, TRUE) + } + } + return(output) +} \ No newline at end of file diff --git a/R/app_update_rv.R b/R/app_update_rv.R new file mode 100644 index 0000000000000000000000000000000000000000..ca83ed5ad918d97292e5281096e11f4a86fedef6 --- /dev/null +++ b/R/app_update_rv.R @@ -0,0 +1,933 @@ +#' @title Update the reactive value list when an event occurs +#' +#' @description When an event occurs in the GenEst GUI, the reactive values +#' need to be updated. This function contains all of the possible updates +#' based on the event options. +#' +#' @param eventName Character name of the event. One of "clear_all", +#' "file_SE", "file_SE_clear", "file_CP", "file_CP_clear", "file_SS", +#' "file_SS_clear", "file_DWP", "file_DWP_clear", "file_CO", +#' "file_CO_clear", "class", "obsSE", "predsSE", "run_SE", "run_SE_clear", +#' "outSEclass", "outSEp", "outSEk", "ltp", "fta", "predsCP", "run_CP", +#' "run_CP_clear", "outCPclass", "outCPdist", "outCPl", "outCPs", +#' "run_M", "run_M_clear", "split_M", "split_M_clear", "transpose_split", +#' "useSSdata", "useSSinputs", "run_g", "run_g_clear", or "outgclass". +#' +#' @param rv Reactive values list for the GenEst GUI, created by +#' \code{\link{initialReactiveValues}}, which calls +#' \code{\link[shiny]{reactiveValues}} +#' +#' @param input \code{input} list for the GenEst GUI. +#' +#' @return Updated \code{rv} list. +#' +#' @export +#' +update_rv <- function(eventName, rv, input){ + + eventOptions <- c("clear_all", "file_SE", "file_SE_clear", "file_CP", + "file_CP_clear", "file_SS", "file_SS_clear", "file_DWP", + "file_DWP_clear", "file_CO", "file_CO_clear", "class", + "obsSE", "predsSE", "run_SE", "run_SE_clear", + "outSEclass", "outSEp", "outSEk", "ltp", "fta", "predsCP", + "run_CP", "run_CP_clear", "outCPclass", "outCPdist", + "outCPl", "outCPs", "run_M", "run_M_clear", "split_M", + "split_M_clear", "transpose_split", "useSSdata", + "useSSinputs", "run_g", "run_g_clear", "outgclass") + + if (missing(eventName) || (eventName %in% eventOptions) == FALSE){ + stop("eventName missing or not in list of available eventNames") + } + + if (eventName == "clear_all"){ + toNULL <- c("data_SE", "filename_SE", "colNames_SE", "colNames_SE_preds", + "colNames_SE_preds0", "colNames_SE_obs", "colNames_SE_obs0", + "toRemove_SE_obs", "toRemove_SE_preds", "sizeclass_SE", + "obsCols_SE", "preds_SE", "predictors_SE", "formula_p", + "formula_k", "kFixedChoice", "kFixed", "mods_SE", + "mods_SE_og", "sizeclasses_SE", "outSEpk", "AICcTab_SE", + "modOrder_SE", "modNames_SE", "modNames_SEp", "modNames_SEk", + "modSet_SE", "best_SE", "modTab_SE", "modTabPretty_SE", + "modTabDL_SE", "SStemp", "avgSI", "colNames_ss_sel", + "colNames_ss_nosel", "M", "Msplit", "unitCol", "sizeCol_M", + "split_CO", "split_SS", "SEmodToUse", + "sizeclasses_g", "nsizeclasses_g", "gGeneric", "SEmodToUse_g", + "data_CP", "filename_CP", "colNames_CP", "colNames_CP_preds", + "colNames_CP_preds0", "colNames_fta", "colNames_fta0", + "colNames_ltp", "colNames_ltp0", "colNames_CP_preds", + "toRemove_fta", "toRemove_ltp", "toRemove_CP_preds", + "sizeclass_CP", "ltp", "fta", "preds_CP", "dist", + "predictors_CP", "formula_l", "formula_s", "mods_CP", + "mods_CP_og", "sizeclasses_CP", "AICcTab_CP", "modOrder_CP", + "modNames_CP", "modNames_CPl", "modNames_CPs", + "modNames_CPdist", "modSet_CP", "best_CP", "modTab_CP", + "modTabPretty_CP", "modTabDL_CP", "CPmodToUse", + "sizeclasses_g", "nsizeclasses_g", "gGeneric", "CPmodToUse_g", + "data_SS", "colNames_SS", "data_DWP", "colNames_DWP", + "data_CO", "colNames_CO", "colNames_COdates") + rv <- reNULL(rv, toNULL) + + toReVal <- c("nsplit_CO", "nsplit_SS", "figH_M", "figW_M", "figH_g", + "figW_g", "figH_SE", "figW_SE", "SS", "SStext", + "gSearchInterval", "gSearchMax", "figH_CP", "figW_CP") + rv <- reVal(rv, toReVal) + rv$colNames_size <- updateColNames_size(rv) + rv$colNames_size0 <- updateColNames_size(rv) + rv$sizeCol <- updatesizeCol(input$class, rv$colNames_size) + rv$toRemove_sizeCol <- c(rv$obsCols_SE, rv$preds_SE, rv$ltp, rv$fta, + rv$preds_CP) + rv$colNames_size <- removeCols(rv$colNames_size0, rv$toRemove_sizeCol) + + } + + if (eventName == "file_SE"){ + toNULL <- c("data_SE", "filename_SE", "colNames_SE", "colNames_SE_preds", + "colNames_SE_preds0", "colNames_SE_obs", "colNames_SE_obs0", + "toRemove_SE_obs", "toRemove_SE_preds", "sizeclass_SE", + "obsCols_SE", "preds_SE", "predictors_SE", "formula_p", + "formula_k", "kFixedChoice", "kFixed", "mods_SE", + "mods_SE_og", "sizeclasses_SE", "outSEpk", "AICcTab_SE", + "modOrder_SE", "modNames_SE", "modNames_SEp", "modNames_SEk", + "modSet_SE", "best_SE", "modTab_SE", "modTabPretty_SE", + "modTabDL_SE", "SStemp", "avgSI", "colNames_ss_sel", + "colNames_ss_nosel", "M", "Msplit", "unitCol", "sizeCol_M", + "split_CO", "split_SS", "SEmodToUse", + "sizeclasses_g", "nsizeclasses_g", "gGeneric", "SEmodToUse_g") + rv <- reNULL(rv, toNULL) + + toReVal <- c("nsplit_CO", "nsplit_SS", "figH_M", "figW_M", "figH_g", + "figW_g", "figH_SE", "figW_SE", "SS", "SStext", + "gSearchInterval", "gSearchMax") + rv <- reVal(rv, toReVal) + rv$colNames_size <- updateColNames_size(rv) + rv$colNames_size0 <- updateColNames_size(rv) + rv$sizeCol <- updatesizeCol(input$class, rv$colNames_size) + rv$toRemove_sizeCol <- c(rv$obsCols_SE, rv$preds_SE, rv$ltp, rv$fta, + rv$preds_CP) + rv$colNames_size <- removeCols(rv$colNames_size0, rv$toRemove_sizeCol) + + rv$data_SE <- readCSV(input$file_SE$datapath) + rv$filename_SE <- input$file_SE$name + rv$colNames_SE <- colnames(rv$data_SE) + rv$colNames_SE_preds <- predsCols(rv$data_SE) + rv$colNames_SE_preds0 <- predsCols(rv$data_SE) + rv$colNames_SE_obs <- obsCols_SE(rv$data_SE) + rv$colNames_SE_obs0 <- obsCols_SE(rv$data_SE) + rv$colNames_size <- updateColNames_size(rv) + rv$colNames_size0 <- updateColNames_size(rv) + rv$sizeCol <- updatesizeCol(input$class, rv$colNames_size) + rv$colNames_SE_obs <- removeCols(rv$colNames_SE_obs, rv$sizeCol) + rv$colNames_SE_preds <- removeCols(rv$colNames_SE_preds, rv$sizeCol) + } + + if (eventName == "file_SE_clear"){ + toNULL <- c("data_SE", "filename_SE", "colNames_SE", "colNames_SE_preds", + "colNames_SE_preds0", "colNames_SE_obs", "colNames_SE_obs0", + "toRemove_SE_obs", "toRemove_SE_preds", "sizeclass_SE", + "obsCols_SE", "preds_SE", "predictors_SE", "formula_p", + "formula_k", "kFixedChoice", "kFixed", "mods_SE", + "mods_SE_og", "sizeclasses_SE", "outSEpk", "AICcTab_SE", + "modOrder_SE", "modNames_SE", "modNames_SEp", "modNames_SEk", + "modSet_SE", "best_SE", "modTab_SE", "modTabPretty_SE", + "modTabDL_SE", "SStemp", "avgSI", "colNames_ss_sel", + "colNames_ss_nosel", "M", "Msplit", "unitCol", "sizeCol_M", + "split_CO", "split_SS", "SEmodToUse", + "sizeclasses_g", "nsizeclasses_g", "gGeneric", "SEmodToUse_g") + rv <- reNULL(rv, toNULL) + + toReVal <- c("nsplit_CO", "nsplit_SS", "figH_M", "figW_M", "figH_g", + "figW_g", "figH_SE", "figW_SE", "SS", "SStext", + "gSearchInterval", "gSearchMax") + rv <- reVal(rv, toReVal) + rv$colNames_size <- updateColNames_size(rv) + rv$colNames_size0 <- updateColNames_size(rv) + rv$sizeCol <- updatesizeCol(input$class, rv$colNames_size) + rv$toRemove_sizeCol <- c(rv$obsCols_SE, rv$preds_SE, rv$ltp, rv$fta, + rv$preds_CP) + rv$colNames_size <- removeCols(rv$colNames_size0, rv$toRemove_sizeCol) + } + + if (eventName == "file_CP"){ + toNULL <- c("data_CP", "filename_CP", "colNames_CP", "colNames_CP_preds", + "colNames_CP_preds0", "colNames_fta", "colNames_fta0", + "colNames_ltp", "colNames_ltp0", "colNames_CP_preds", + "toRemove_fta", "toRemove_ltp", "toRemove_CP_preds", + "sizeclass_CP", "ltp", "fta", "preds_CP", "dist", + "predictors_CP", "formula_l", "formula_s", "mods_CP", + "mods_CP_og", "sizeclasses_CP", "AICcTab_CP", "modOrder_CP", + "modNames_CP", "modNames_CPl", "modNames_CPs", + "modNames_CPdist", "modSet_CP", "best_CP", "modTab_CP", + "modTabPretty_CP", "modTabDL_CP", "SStemp", "avgSI", + "colNames_ss_sel", "colNames_ss_nosel", "M", "Msplit", + "unitCol", "sizeCol_M", "split_CO", "split_SS", + "CPmodToUse", "sizeclasses_g", "nsizeclasses_g", "gGeneric", + "CPmodToUse_g") + rv <- reNULL(rv, toNULL) + rv$toRemove_sizeCol <- c(rv$obsCols_SE, rv$preds_SE, rv$ltp, rv$fta, + rv$preds_CP) + rv$colNames_size <- removeCols(rv$colNames_size0, rv$toRemove_sizeCol) + rv$colNames_size <- updateColNames_size(rv) + rv$colNames_size0 <- updateColNames_size(rv) + rv$sizeCol <- updatesizeCol(input$class, rv$colNames_size) + toReVal <- c("nsplit_CO", "nsplit_SS", "figH_M", "figW_M", "figH_g", + "figW_g", "figH_CP", "figW_CP", "SS", "SStext", + "gSearchInterval", "gSearchMax") + rv <- reVal(rv, toReVal) + + rv$data_CP <- readCSV(input$file_CP$datapath) + rv$filename_CP <- input$file_CP$name + rv$colNames_CP <- colnames(rv$data_CP) + rv$colNames_CP_preds <- predsCols(rv$data_CP) + rv$colNames_CP_preds0 <- predsCols(rv$data_CP) + rv$colNames_fta <- obsCols_fta(rv$data_CP) + rv$colNames_ltp <- obsCols_ltp(rv$data_CP) + rv$colNames_fta0 <- obsCols_fta(rv$data_CP) + rv$colNames_ltp0 <- obsCols_ltp(rv$data_CP) + rv$colNames_size <- updateColNames_size(rv) + rv$colNames_size0 <- updateColNames_size(rv) + rv$sizeCol <- updatesizeCol(input$class, rv$colNames_size) + rv$colNames_CP_fta <- removeCols(rv$colNames_fta, rv$sizeCol) + rv$colNames_CP_ltp <- removeCols(rv$colNames_ltp, rv$sizeCol) + rv$colNames_CP_preds <- removeCols(rv$colNames_CP_preds, rv$sizeCol) + } + + if (eventName == "file_CP_clear"){ + toNULL <- c("data_CP", "filename_CP", "colNames_CP", "colNames_CP_preds", + "colNames_CP_preds0", "colNames_fta", "colNames_fta0", + "colNames_ltp", "colNames_ltp0", "colNames_CP_preds", + "toRemove_fta", "toRemove_ltp", "toRemove_CP_preds", + "sizeclass_CP", "ltp", "fta", "preds_CP", "dist", + "predictors_CP", "formula_l", "formula_s", "mods_CP", + "mods_CP_og", "sizeclasses_CP", "AICcTab_CP", "modOrder_CP", + "modNames_CP", "modNames_CPl", "modNames_CPs", + "modNames_CPdist", "modSet_CP", "best_CP", "modTab_CP", + "modTabPretty_CP", "modTabDL_CP", "SStemp", "avgSI", + "colNames_ss_sel", "colNames_ss_nosel", "M", "Msplit", + "unitCol", "sizeCol_M", "split_CO", "split_SS", + "CPmodToUse", "sizeclasses_g", "nsizeclasses_g", "gGeneric", + "CPmodToUse_g") + rv <- reNULL(rv, toNULL) + rv$toRemove_sizeCol <- c(rv$obsCols_SE, rv$preds_SE, rv$ltp, rv$fta, + rv$preds_CP) + rv$colNames_size <- removeCols(rv$colNames_size0, rv$toRemove_sizeCol) + rv$colNames_size <- updateColNames_size(rv) + rv$colNames_size0 <- updateColNames_size(rv) + rv$sizeCol <- updatesizeCol(input$class, rv$colNames_size) + toReVal <- c("nsplit_CO", "nsplit_SS", "figH_M", "figW_M", "figH_g", + "figW_g", "figH_CP", "figW_CP", "SS", "SStext", + "gSearchInterval", "gSearchMax") + rv <- reVal(rv, toReVal) + } + + if (eventName == "file_SS"){ + toNULL <- c("data_SS", "colNames_SS", "SStemp", "avgSI", + "colNames_ss_sel", "colNames_ss_nosel", "M", "Msplit", + "unitCol", "sizeCol_M", "split_CO", "split_SS", + "sizeclasses_g", "nsizeclasses_g", "gGeneric", "SEmodToUse_g") + rv <- reNULL(rv, toNULL) + toReVal <- c("nsplit_CO", "nsplit_SS", "figH_M", "figW_M", "figH_g", + "figW_g", "SS", "SStext", "gSearchInterval", "gSearchMax") + rv <- reVal(rv, toReVal) + rv$data_SS <- readCSV(input$file_SS$datapath) + rv$colNames_SS <- colnames(rv$data_SS) + } + + + if (eventName == "file_SS_clear"){ + toNULL <- c("data_SS", "colNames_SS", "SStemp", "avgSI", + "colNames_ss_sel", "colNames_ss_nosel", "M", "Msplit", + "unitCol", "sizeCol_M", "split_CO", "split_SS", + "sizeclasses_g", "nsizeclasses_g", "gGeneric", "SEmodToUse_g") + rv <- reNULL(rv, toNULL) + toReVal <- c("nsplit_CO", "nsplit_SS", "figH_M", "figW_M", "figH_g", + "figW_g", "SS", "SStext", "gSearchInterval", "gSearchMax") + rv <- reVal(rv, toReVal) + } + + if (eventName == "file_DWP"){ + toNULL <- c("data_DWP", "colNames_DWP", "M", "Msplit", "unitCol", + "sizeCol_M", "split_CO", "split_SS") + rv <- reNULL(rv, toNULL) + toReVal <- c("nsplit_CO", "nsplit_SS", "figH_M", "figW_M") + rv <- reVal(rv, toReVal) + rv$data_DWP <- readCSV(input$file_DWP$datapath) + rv$colNames_DWP <- DWPCols(rv$data_DWP) + } + + + if (eventName == "file_DWP_clear"){ + toNULL <- c("data_DWP", "colNames_DWP", "M", "Msplit", "unitCol", + "sizeCol_M", "split_CO", "split_SS") + rv <- reNULL(rv, toNULL) + toReVal <- c("nsplit_CO", "nsplit_SS", "figH_M", "figW_M") + rv <- reVal(rv, toReVal) + } + + if (eventName == "file_CO"){ + + toNULL <- c("data_CO", "colNames_CO", "colNames_COdates", "M", "Msplit", + "unitCol", "sizeCol_M", "SEmodToUse", "split_CO", "split_SS") + rv <- reNULL(rv, toNULL) + rv$colNames_size <- updateColNames_size(rv) + rv$colNames_size0 <- updateColNames_size(rv) + rv$sizeCol <- updatesizeCol(input$class, rv$colNames_size) + rv$toRemove_sizeCol <- c(rv$obsCols_SE, rv$preds_SE, rv$ltp, rv$fta, + rv$preds_CP) + rv$colNames_size <- removeCols(rv$colNames_size0, rv$toRemove_sizeCol) + toReVal <- c("nsplit_CO", "nsplit_SS", "figH_M", "figW_M") + rv <- reVal(rv, toReVal) + rv$data_CO <- readCSV(input$file_CO$datapath) + rv$colNames_CO <- colnames(rv$data_CO) + rv$colNames_COdates <- dateCols(rv$data_CO) + rv$colNames_size <- updateColNames_size(rv) + rv$colNames_size0 <- updateColNames_size(rv) + rv$sizeCol <- updatesizeCol(input$class, rv$colNames_size) + } + + + if (eventName == "file_CO_clear"){ + toNULL <- c("data_CO", "colNames_CO", "colNames_COdates", "M", "Msplit", + "unitCol", "sizeCol_M", "SEmodToUse", "split_CO", "split_SS") + rv <- reNULL(rv, toNULL) + rv$colNames_size <- updateColNames_size(rv) + rv$colNames_size0 <- updateColNames_size(rv) + rv$sizeCol <- updatesizeCol(input$class, rv$colNames_size) + rv$toRemove_sizeCol <- c(rv$obsCols_SE, rv$preds_SE, rv$ltp, rv$fta, + rv$preds_CP) + rv$colNames_size <- removeCols(rv$colNames_size0, rv$toRemove_sizeCol) + toReVal <- c("nsplit_CO", "nsplit_SS", "figH_M", "figW_M") + rv <- reVal(rv, toReVal) + } + + + if (eventName == "class"){ + rv$sizeCol <- input$class + rv$obsCols_SE <- input$obsSE + rv$preds_SE <- input$predsSE + rv$ltp <- input$ltp + rv$fta <- input$fta + rv$preds_CP <- input$predsCP + rv$toRemove_SE_preds <- c(rv$obsCols_SE, rv$sizeCol) + rv$colNames_SE_preds <- removeCols(rv$colNames_SE_preds0, + rv$toRemove_SE_preds) + rv$toRemove_SE_obs <- c(rv$preds_SE, rv$sizeCol) + rv$colNames_SE_obs <- removeCols(rv$colNames_SE_obs0, rv$toRemove_SE_obs) + rv$toRemove_ltp <- c(rv$preds_CP, rv$fta, rv$sizeCol) + rv$colNames_ltp <- removeCols(rv$colNames_ltp0, rv$toRemove_ltp) + rv$toRemove_fta <- c(rv$preds_CP, rv$ltp, rv$sizeCol) + rv$colNames_fta <- removeCols(rv$colNames_fta0, rv$toRemove_fta) + rv$toRemove_CP_preds <- c(rv$ltp, rv$fta, rv$sizeCol) + rv$colNames_CP_preds <- removeCols(rv$colNames_CP_preds0, + rv$toRemove_CP_preds) + scCol <- input$class + sizeclasses <- unique(c(rv$data_SE[ , scCol], rv$data_CP[ , scCol])) + rv$nsizeclasses <- length(sizeclasses) + rv$sizeclasses_k <- sizeclasses + rv$nsizeclasses_k <- length(sizeclasses) + if (rv$nsizeclasses > 1 & is.null(rv$DWPCol)){ + rv$DWPCol <- sizeclasses[1] + } + if (rv$nsizeclasses == 0){ + rv$sizeclasses_k <- "" + rv$nsizeclasses_k <- 1 + rv$DWPCol <- NULL + } + } + + if (eventName == "obsSE"){ + rv$sizeCol <- input$class + rv$obsCols_SE <- input$obsSE + rv$preds_SE <- input$predsSE + rv$ltp <- input$ltp + rv$fta <- input$fta + rv$preds_CP <- input$predsCP + rv$toRemove_SE_preds <- c(rv$obsCols_SE, rv$sizeCol) + rv$colNames_SE_preds <- removeCols(rv$colNames_SE_preds0, + rv$toRemove_SE_preds) + rv$toRemove_sizeCol <- c(rv$obsCols_SE, rv$preds_SE, rv$ltp, rv$fta, + rv$preds_CP) + rv$colNames_size <- removeCols(rv$colNames_size0, rv$toRemove_sizeCol) + } + + + if (eventName == "predsSE"){ + rv$sizeCol <- input$class + rv$obsCols_SE <- input$obsSE + rv$preds_SE <- input$predsSE + rv$ltp <- input$ltp + rv$fta <- input$fta + rv$preds_CP <- input$predsCP + rv$toRemove_SE_obs <- c(rv$preds_SE, rv$sizeCol) + rv$colNames_SE_obs <- removeCols(rv$colNames_SE_obs0, rv$toRemove_SE_obs) + rv$toRemove_sizeCol <- c(rv$obsCols_SE, rv$preds_SE, rv$ltp, rv$fta, + rv$preds_CP) + rv$colNames_size <- removeCols(rv$colNames_size0, rv$toRemove_sizeCol) + } + + + if (eventName == "ltp"){ + rv$sizeCol <- input$class + rv$obsCols_SE <- input$obsSE + rv$preds_SE <- input$predsSE + rv$ltp <- input$ltp + rv$fta <- input$fta + rv$preds_CP <- input$predsCP + rv$toRemove_fta <- c(rv$preds_CP, rv$ltp, rv$sizeCol) + rv$toRemove_CP_preds <- c(rv$ltp, rv$fta, rv$sizeCol) + rv$colNames_fta <- removeCols(rv$colNames_fta0, rv$toRemove_fta) + rv$colNames_CP_preds <- removeCols(rv$colNames_CP_preds0, + rv$toRemove_CP_preds) + rv$toRemove_sizeCol <- c(rv$obsCols_SE, rv$preds_SE, rv$ltp, rv$fta, + rv$preds_CP) + rv$colNames_size <- removeCols(rv$colNames_size0, rv$toRemove_sizeCol) + } + + if (eventName == "fta"){ + rv$sizeCol <- input$class + rv$obsCols_SE <- input$obsSE + rv$preds_SE <- input$predsSE + rv$ltp <- input$ltp + rv$fta <- input$fta + rv$preds_CP <- input$predsCP + rv$toRemove_ltp <- c(rv$preds_CP, rv$fta, rv$sizeCol) + rv$toRemove_CP_preds <- c(rv$ltp, rv$fta, rv$sizeCol) + rv$colNames_ltp <- removeCols(rv$colNames_ltp0, rv$toRemove_ltp) + rv$colNames_CP_preds <- removeCols(rv$colNames_CP_preds0, + rv$toRemove_CP_preds) + rv$toRemove_sizeCol <- c(rv$obsCols_SE, rv$preds_SE, rv$ltp, rv$fta, + rv$preds_CP) + rv$colNames_size <- removeCols(rv$colNames_size0, rv$toRemove_sizeCol) + } + + + if (eventName == "predsCP"){ + rv$sizeCol <- input$class + rv$obsCols_SE <- input$obsE + rv$preds_SE <- input$predsSE + rv$ltp <- input$ltp + rv$fta <- input$fta + rv$preds_CP <- input$predsCP + rv$toRemove_ltp <- c(rv$preds_CP, rv$fta, rv$sizeCol) + rv$colNames_ltp <- removeCols(rv$colNames_ltp0, rv$toRemove_ltp) + rv$toRemove_fta <- c(rv$preds_CP, rv$ltp, rv$sizeCol) + rv$colNames_fta <- removeCols(rv$colNames_fta0, rv$toRemove_fta) + rv$toRemove_sizeCol <- c(rv$obsCols_SE, rv$preds_SE, rv$ltp, rv$fta, + rv$preds_CP) + rv$colNames_size <- removeCols(rv$colNames_size0, rv$toRemove_sizeCol) + } + + + if (eventName == "run_SE"){ + toNULL <- c("predictors_SE", "formula_p", "formula_k", "outSEpk", + "mods_SE", "mods_SE_og", "sizeclasses_SE", "AICcTab_SE", + "modOrder_SE", "modNames_SE", "modNames_SEp", "modNames_SEk", + "modSet_SE", "best_SE", "modTab_SE", + "modTabPretty_SE", "modTabDL_SE", "M", "Msplit", "unitCol", + "sizeCol_M", "SEmodToUse", "split_CO", "split_SS", + "SStemp", "avgSI", "colNames_SS_sel", "colNames_SS_nosel", + "sizeclasses_g", "nsizeclasses_g", "gGeneric", + "SEmodToUse_g") + rv <- reNULL(rv, toNULL) + toReVal <- c("nsplit_CO", "nsplit_SS", "SS", "gSearchInterval", + "gSearchMax", "SStext", "figH_SE", "figW_SE", "figH_M", + "figW_M", "figH_g", "figW_g") + rv <- reVal(rv, toReVal) + + for (sci in 1:rv$nsizeclasses_k){ + rv$kFixed[sci] <- input[[sprintf("kFixed_val_%d", sci)]] + rv$kFixedChoice[sci] <- input[[sprintf("kFixed_yn_%d", sci)]] + } + names(rv$kFixed) <- rv$sizeclasses_k + + names(rv$kFixedChoice) <- rv$sizeclasses_k + rv$kFixed <- setkFix(rv$kFixedChoice, rv$kFixed) + + if (any(is.na(as.numeric(rv$kFixed[rv$kFixedChoice]) == 1))){ + return(rv) + } + if (any(rv$kFixed[rv$kFixedChoice] < 0 | rv$kFixed[rv$kFixedChoice] > 1)){ + return(rv) + } + + rv$obsCols_SE <- input$obsSE + rv$preds_SE <- input$predsSE + rv$predictors_SE <- prepPredictors(rv$preds_SE) + rv$formula_p <- formula(paste0("p~", rv$predictors_SE)) + rv$formula_k <- formula(paste0("k~", rv$predictors_SE)) + + rv$CL <- input$CL + rv$sizeCol <- input$class + rv$mods_SE <- suppressWarnings( + pkmSize(formula_p = rv$formula_p, + formula_k = rv$formula_k, data = rv$data_SE, + obsCol = rv$obsCols_SE, sizeCol = rv$sizeCol, + kFixed = rv$kFixed, kInit = 0.7, + CL = rv$CL, quiet = TRUE, allCombos = TRUE) + ) + rv$mods_SE_og <- rv$mods_SE + rv$mods_SE <- pkmSetSizeFailRemove(rv$mods_SE) + if (!all(unlist(pkmSetSizeFail(rv$mods_SE))) && + !any(unlist(lapply(rv$mods_SE_og, pkmSetAllFail)))){ + rv$sizeclasses <- updateSizeclasses(rv$data_SE, rv$sizeCol) + rv$sizeclasses_SE <- rv$sizeclasses + rv$sizeclass <- pickSizeclass(rv$sizeclasses, input$outSEclass) + rv$sizeclass_SE <- rv$sizeclass + rv$AICcTab_SE <- aicc(rv$mods_SE[[rv$sizeclass_SE]], quiet = TRUE, + app = TRUE) + rv$modOrder_SE <- as.numeric(row.names(rv$AICcTab_SE)) + rv$modNames_SE <- names(rv$mods_SE[[rv$sizeclass_SE]])[rv$modOrder_SE] + rv$modNames_SEp <- modNameSplit(rv$modNames_SE, 1) + rv$modNames_SEk <- modNameSplit(rv$modNames_SE, 2) + rv$modSet_SE <- rv$mods_SE[[rv$sizeclass_SE]] + rv$best_SE <- (names(rv$modSet_SE)[rv$modOrder_SE])[1] + rv$modTab_SE <- rv$mods_SE[[rv$sizeclass_SE]][[rv$best_SE]]$cell_pk + rv$modTabPretty_SE <- prettyModTabSE(rv$modTab_SE, rv$CL) + rv$modTabDL_SE <- dlModTabSE(rv$modTab_SE, rv$CL) + rv$figH_SE <- setFigH(rv$modSet_SE) + rv$figW_SE <- setFigW(rv$modSet_SE) + } + } + + + if (eventName == "run_SE_clear"){ + toNULL <- c("predictors_SE", "formula_p", "formula_k", "outSEpk", + "mods_SE", "mods_SE_og", "sizeclasses_SE", "AICcTab_SE", + "modOrder_SE", "modNames_SE", "modNames_SEp", "modNames_SEk", + "modSet_SE", "best_SE", "modTab_SE", + "modTabPretty_SE", "modTabDL_SE", "M", "Msplit", "unitCol", + "sizeCol_M", "SEmodToUse", "split_CO", "split_SS", + "SStemp", "avgSI", "colNames_SS_sel", "colNames_SS_nosel", + "sizeclasses_g", "nsizeclasses_g", "gGeneric", + "SEmodToUse_g") + rv <- reNULL(rv, toNULL) + toReVal <- c("nsplit_CO", "nsplit_SS", "SS", "gSearchInterval", + "gSearchMax", "SStext", "figH_SE", "figW_SE", "figH_M", + "figW_M", "figH_g", "figW_g") + rv <- reVal(rv, toReVal) + + rv$toRemove_sizeCol <- c(rv$obsCols_SE, rv$preds_SE, rv$ltp, rv$fta, + rv$preds_CP) + rv$colNames_size <- removeCols(rv$colNames_size0, rv$toRemove_sizeCol) + } + + if (eventName == "outSEclass"){ + if (length(rv$mods_SE) > 0){ + rv$sizeclass <- pickSizeclass(rv$sizeclasses, input$outSEclass) + rv$sizeclass_SE <- rv$sizeclass + rv$AICcTab_SE <- aicc(rv$mods_SE[[rv$sizeclass_SE]], quiet = TRUE, + app = TRUE) + rv$modOrder_SE <- as.numeric(row.names(rv$AICcTab_SE)) + rv$modNames_SE <- names(rv$mods_SE[[rv$sizeclass_SE]])[rv$modOrder_SE] + rv$modNames_SEp <- modNameSplit(rv$modNames_SE, 1) + rv$modNames_SEk <- modNameSplit(rv$modNames_SE, 2) + rv$modSet_SE <- rv$mods_SE[[rv$sizeclass_SE]] + rv$best_SE <- (names(rv$modSet_SE)[rv$modOrder_SE])[1] + rv$modTab_SE <- rv$mods_SE[[rv$sizeclass_SE]][[rv$best_SE]]$cell_pk + rv$modTabPretty_SE <- prettyModTabSE(rv$modTab_SE, rv$CL) + rv$modTabDL_SE <- dlModTabSE(rv$modTab_SE, rv$CL) + rv$figH_SE <- setFigH(rv$modSet_SE) + rv$figW_SE <- setFigW(rv$modSet_SE) + } + } + + if (eventName == "outSEp"| eventName == "outSEk"){ + if (length(rv$mods_SE) > 0){ + rv$outSEpk <- modNamePaste(c(input$outSEp, input$outSEk)) + rv$modSet_SE <- rv$mods_SE[[rv$sizeclass]] + if (rv$outSEpk %in% names(rv$modSet_SE)){ + rv$modTab_SE <- rv$modSet_SE[[rv$outSEpk]]$cell_pk + rv$modTabPretty_SE <- prettyModTabSE(rv$modTab_SE, rv$CL) + rv$modTabDL_SE <- dlModTabSE(rv$modTab_SE, rv$CL) + } else { + rv$modTab_SE <- NULL + holder <- data.frame(msg = "Selected model was not successfully fit.") + rv$modTabPretty_SE <- holder + rv$modTabDL_SE <- holder + } + } + } + + if (eventName == "run_CP"){ + toNULL <- c("dist", "predictors_CP", "formula_l", "formula_s", + "mods_CP", "mods_CP_og", "sizeclasses_CP", "AICcTab_CP", + "modOrder_CP", "modNames_CP", "modNames_CPl", "modNames_CPs", + "modNames_CPdist", "modSet_CP", "best_CP", "modTab_CP", + "modTabPretty_CP", "modTabDL_CP", "M", "Msplit", "unitCol", + "sizeCol_M", "SEmodToUse", "split_CO", "split_SS", + "SStemp", "avgSI", "colNames_SS_sel", "colNames_SS_nosel", + "sizeclasses_g", "nsizeclasses_g", "gGeneric", + "SEmodToUse_g") + rv <- reNULL(rv, toNULL) + toReVal <- c("nsplit_CO", "nsplit_SS", "SS", "gSearchInterval", + "gSearchMax", "SStext", "figH_CP", "figW_CP", "figH_M", + "figW_M", "figH_g", "figW_g") + rv <- reVal(rv, toReVal) + rv$ltp <- input$ltp + rv$fta <- input$fta + rv$preds_CP <- input$predsCP + rv$dist <- input$dist + rv$nsim <- input$nsim + rv$CL <- input$CL + rv$sizeCol <- input$class + rv$predictors_CP <- prepPredictors(rv$preds_CP) + rv$formula_l <- formula(paste("l~", rv$predictors_CP, sep = "")) + rv$formula_s <- formula(paste("s~", rv$predictors_CP, sep = "")) + + rv$mods_CP <- suppressWarnings( + cpmSize(formula_l = rv$formula_l, + formula_s = rv$formula_s, data = rv$data_CP, + left = rv$ltp, right = rv$fta, dist = rv$dist, + sizeCol = rv$sizeCol, CL = rv$CL, quiet = TRUE, + allCombos = TRUE + ) + ) + rv$mods_CP_og <- rv$mods_CP + rv$mods_CP <- cpmSetSizeFailRemove(rv$mods_CP) + + if (!all(unlist(cpmSetSizeFail(rv$mods_CP)))){ + rv$sizeclasses <- updateSizeclasses(rv$data_CP, rv$sizeCol) + rv$sizeclasses_CP <- rv$sizeclasses + rv$sizeclass <- pickSizeclass(rv$sizeclasses, input$outCPclass) + rv$sizeclass_CP <- rv$sizeclass + rv$AICcTab_CP <- aicc(rv$mods_CP[[rv$sizeclass_CP]], quiet = TRUE, + app = TRUE) + rv$AICcTab_CP[ , "Scale Formula"] <- gsub("NULL", "", + rv$AICcTab_CP[ , "Scale Formula"] + ) + rv$modOrder_CP <- as.numeric(row.names(rv$AICcTab_CP)) + rv$modNames_CP <- names(rv$mods_CP[[rv$sizeclass_CP]])[rv$modOrder_CP] + rv$modNames_CPdist <- modNameSplit(rv$modNames_CP, 1) + rv$modNames_CPl <- modNameSplit(rv$modNames_CP, 2) + rv$modNames_CPs <- modNameSplit(rv$modNames_CP, 3) + rv$modSet_CP <- rv$mods_CP[[rv$sizeclass_CP]] + rv$best_CP <- (names(rv$modSet_CP)[rv$modOrder_CP])[1] + rv$modTab_CP <- list( + ls = rv$mods_CP[[rv$sizeclass_CP]][[rv$best_CP]]$cell_ls, + desc = rv$mods_CP[[rv$sizeclass_CP]][[rv$best_CP]]$cell_desc + ) + rv$modTabPretty_CP <- prettyModTabCP(rv$modTab_CP, rv$CL) + rv$modTabDL_CP <- dlModTabCP(rv$modTab_CP, rv$CL) + rv$best_CP <- gsub("NULL", "s ~ 1", rv$best_CP) + rv$figH_CP <- setFigH(rv$modSet_CP, "CP") + rv$figW_CP <- setFigW(rv$modSet_CP) + } + } + + if (eventName == "run_CP_clear"){ + toNULL <- c("dist", "predictors_CP", "formula_l", "formula_s", + "mods_CP", "mods_CP_og", "sizeclasses_CP", "AICcTab_CP", + "modOrder_CP", "modNames_CP", "modNames_CPl", "modNames_CPs", + "modNames_CPdist", "modSet_CP", "best_CP", "modTab_CP", + "modTabPretty_CP", "modTabDL_CP", "M", "Msplit", "unitCol", + "sizeCol_M", "SEmodToUse", "split_CO", "split_SS", + "SStemp", "avgSI", "colNames_SS_sel", "colNames_SS_nosel", + "sizeclasses_g", "nsizeclasses_g", "gGeneric", + "SEmodToUse_g") + rv <- reNULL(rv, toNULL) + toReVal <- c("nsplit_CO", "nsplit_SS", "SS", "gSearchInterval", + "gSearchMax", "SStext", "figH_CP", "figW_CP", "figH_M", + "figW_M", "figH_g", "figW_g") + rv <- reVal(rv, toReVal) + + rv$toRemove_sizeCol <- c(rv$obsCols_SE, rv$preds_SE, rv$ltp, rv$fta, + rv$preds_CP) + rv$colNames_size <- removeCols(rv$colNames_size0, rv$toRemove_sizeCol) + } + + if (eventName == "outCPclass"){ + if (length(rv$mods_CP) > 0){ + rv$sizeclass <- pickSizeclass(rv$sizeclasses, input$outCPclass) + rv$sizeclass_CP <- rv$sizeclass + rv$AICcTab_CP <- aicc(rv$mods_CP[[rv$sizeclass_CP]], quiet = TRUE, + app = TRUE) + rv$modOrder_CP <- as.numeric(row.names(rv$AICcTab_CP)) + rv$modNames_CP <- names(rv$mods_CP[[rv$sizeclass_CP]])[rv$modOrder_CP] + rv$modNames_CPdist <- modNameSplit(rv$modNames_CP, 1) + rv$modNames_CPl <- modNameSplit(rv$modNames_CP, 2) + rv$modNames_CPs <- modNameSplit(rv$modNames_CP, 3) + rv$modSet_CP <- rv$mods_CP[[rv$sizeclass_CP]] + rv$best_CP <- (names(rv$modSet_CP)[rv$modOrder_CP])[1] + rv$modTab_CP <- list( + ls = rv$mods_CP[[rv$sizeclass_CP]][[rv$best_CP]]$cell_ls, + desc = rv$mods_CP[[rv$sizeclass_CP]][[rv$best_CP]]$cell_desc + ) + rv$modTabPretty_CP <- prettyModTabCP(rv$modTab_CP, rv$CL) + rv$modTabDL_CP <- dlModTabCP(rv$modTab_CP, rv$CL) + rv$figH_CP <- setFigH(rv$modSet_CP, "CP") + rv$figW_CP <- setFigW(rv$modSet_CP) + rv$best_CP <- gsub("NULL", "s ~ 1", rv$best_CP) + } + } + + if (eventName %in% c("outCPdist", "outCPl", "outCPs")){ + if (length(rv$mods_CP) > 0){ + rv$CPdls <- c(input$outCPdist, input$outCPl, input$outCPs) + rv$outCPdlsfig <- modNamePaste(rv$CPdls, "CP") + rv$outCPdlstab <- modNamePaste(rv$CPdls, "CP", tab = TRUE) + rv$modSet_CP <- rv$mods_CP[[rv$sizeclass]] + + if (rv$outCPdlstab %in% names(rv$modSet_CP)){ + rv$modTab_CP <- list(ls = rv$modSet_CP[[rv$outCPdlstab]]$cell_ls, + desc = rv$modSet_CP[[rv$outCPdlstab]]$cell_desc + ) + rv$modTabPretty_CP <- prettyModTabCP(rv$modTab_CP, rv$CL) + rv$modTabDL_CP <- dlModTabCP(rv$modTab_CP, rv$CL) + } else { + rv$modTab_CP <- NULL + holder <- data.frame(msg = "Selected model was not successfully fit.") + rv$modTabPretty_CP <- holder + rv$modTabDL_CP <- holder + } + } + } + + if (eventName == "useSSdata"){ + rv$SS <- NULL + rv$SStemp <- tryCatch(averageSS(rv$data_SS), error = function(x){NA}) + if (!is.na(rv$SStemp[1])){ + rv$SS <- rv$SStemp + rv$avgSI <- mean(diff(rv$SS[-length(rv$SS)])) + rv$SStext <- paste(rv$SS, collapse = ", ") + } + } + + if (eventName == "useSSinputs"){ + rv$SStemp <- NA + rv$gSearchInterval <- input$gSearchInterval + rv$gSearchMax <- input$gSearchMax + if (rv$gSearchInterval > 0 & rv$gSearchMax > 0){ + rv$SStemp <- seq(0, rv$gSearchMax, by = rv$gSearchInterval) + } + if (rv$gSearchMax %% 1 != 0){ + rv$SStemp <- NA + } + if (any(is.na(rv$SStemp)) || any(rv$SStemp < 0) | + any(rv$SStemp %% 1 != 0)){ + rv$SStemp <- NA + } + if (!is.na(rv$SStemp[1])){ + rv$SS <- seq(0, rv$gSearchMax, by = rv$gSearchInterval) + if (max(rv$SS) != rv$gSearchMax){ + rv$SS <- c(rv$SS, rv$gSearchMax) + } + rv$SStext <- paste(rv$SS, collapse = ", ") + } + } + + if (eventName == "run_g"){ + rv$CL <- input$CL + toNULL <- c("sizeclasses_g", "gGeneric", "SEmodToUse_g") + rv <- reNULL(rv, toNULL) + toReVal <- c("figH_g", "figW_g") + rv <- reVal(rv, toReVal) + + if (length(rv$obsCols_SE) == 1 & any(is.na(rv$kFixed))){ + rv$kCheck_g <- rep(NA, rv$nsizeclasses_k) + counter <- 1 + for (sci in 1:rv$nsizeclasses_k){ + rv$kCheck_g[sci] <- rv$kFixed[sci] + } + if (length(na.omit(rv$kCheck_g)) != length(rv$kCheck_g)){ + return(rv) + } + } + + rv$sizeclasses_g <- rv$sizeclasses + rv$nsizeclasses_g <- length(rv$sizeclasses_g) + if (length(rv$nsizeclasses_g) == 1){ + if (is.null(rv$sizeclasses_g)){ + rv$sizeclasses_g <- "all" + rv$nsizeclasses_g <- 1 + } + } + + rv$nsim <- input$nsim + rv$gGeneric <- vector("list", length = rv$nsizeclasses_g) + for (sci in 1:rv$nsizeclasses_g){ + rv$SEmodToUse_g <- input[[sprintf("modelChoices_SE%d", sci)]] + rv$CPmodToUse_g <- input[[sprintf("modelChoices_CP%d", sci)]] + rv$SEmodToUse_g <- gsub("~ constant", "~ 1", rv$SEmodToUse_g) + rv$CPmodToUse_g <- gsub("~ constant", "~ 1", rv$CPmodToUse_g) + + if (!grepl("s ~", rv$CPmodToUse_g)){ + rv$CPmodToUse_g <- paste(rv$CPmodToUse_g, "; NULL", sep = "") + } + rv$CPmodToUse_g <- paste("dist: ", rv$CPmodToUse_g, sep = "") + + rv$gGeneric[[sci]] <- tryCatch( + estgGeneric(nsim = rv$nsim, days = rv$SS, + model_SE = rv$mods_SE[[sci]][[rv$SEmodToUse_g]], + model_CP = rv$mods_CP[[sci]][[rv$CPmodToUse_g]] + ), + error = function(x){NULL} + ) + } + names(rv$gGeneric) <- rv$sizeclasses_g + rv$sizeclass_g <- rv$sizeclasses_g[1] + } + + if (eventName == "run_g_clear"){ + toNULL <- c("sizeclasses_g", "gGeneric", "SEmodToUse_g") + rv <- reNULL(rv, toNULL) + toReVal <- c("figH_g", "figW_g") + rv <- reVal(rv, toReVal) + } + + if (eventName == "outgclass"){ + rv$sizeclass_g <- pickSizeclass(rv$sizeclasses_g, input$outgclass) + rv$CL <- input$CL + } + + if (eventName == "run_M"){ + + toNULL <- c("M", "Msplit", "unitCol", "sizeCol_M", "SEmodToUse", + "split_CO", "split_SS") + rv <- reNULL(rv, toNULL) + toReVal <- c("nsplit_CO", "nsplit_SS", "figH_M", "figW_M") + rv <- reVal(rv, toReVal) + if (length(rv$obsCols_SE) == 1 & any(is.na(rv$kFixed))){ + rv$kCheck <- rep(NA, rv$nsizeclasses_k) + counter <- 1 + for (sci in 1:rv$nsizeclasses_k){ + rv$kCheck[sci] <- rv$kFixed[sci] + } + if (length(na.omit(rv$kCheck)) != length(rv$kCheck)){ + return(rv) + } + } + + rv$nsizeclasses <- length(rv$sizeclasses) + if (length(rv$nsizeclasses) == 1){ + if (is.null(rv$sizeclasses)){ + rv$sizeclasses <- "all" + } + } + rv$COdate <- input$COdate + rv$nsim <- input$nsim + rv$frac <- input$frac + if (rv$frac < 0.01 | rv$frac > 1){ + return(rv) + } + + rv$SEmodToUse <- rep(NA, rv$nsizeclasses) + rv$CPmodToUse <- rep(NA, rv$nsizeclasses) + + if (length(rv$SEmodToUse) != length(rv$CPmodToUse)){ + return(rv) + } + for (sci in 1:rv$nsizeclasses){ + rv$SEmodToUse[sci] <- input[[sprintf("modelChoices_SE%d", sci)]] + rv$CPmodToUse[sci] <- input[[sprintf("modelChoices_CP%d", sci)]] + if (!grepl("s ~", rv$CPmodToUse[sci])){ + rv$CPmodToUse[sci] <- paste(rv$CPmodToUse[sci], "; NULL", sep = "") + } + rv$CPmodToUse[sci] <- paste("dist: ", rv$CPmodToUse[sci], sep = "") + } + rv$SEmodToUse <- gsub("~ constant", "~ 1", rv$SEmodToUse) + rv$CPmodToUse <- gsub("~ constant", "~ 1", rv$CPmodToUse) + names(rv$SEmodToUse) <- rv$sizeclasses + names(rv$CPmodToUse) <- rv$sizeclasses + + rv$models_SE <- tryCatch( + trimSetSize(rv$mods_SE, rv$SEmodToUse), + error = function(x){NULL} + ) + rv$models_CP <- tryCatch( + trimSetSize(rv$mods_CP, rv$CPmodToUse), + error = function(x){NULL} + ) + if(any(c(is.null(rv$models_SE), is.null(rv$models_CP)))){ + rv$M <- NULL + return(rv) + } + + if (rv$nsizeclasses > 1){ + rv$DWPCol <- NULL + rv$sizeCol_M <- rv$sizeCol + } else { + rv$DWPCol <- input$DWPCol + rv$sizeCol_M <- NULL + rv$models_SE <- rv$models_SE[[1]] + rv$models_CP <- rv$models_CP[[1]] + } + rv$CL <- input$CL + rv$M <- tryCatch( + estM(data_CO = rv$data_CO, data_SS = rv$data_SS, data_DWP = rv$data_DWP, + frac = rv$frac, model_SE = rv$models_SE, + model_CP = rv$models_CP, + COdate = rv$COdate, DWPCol = rv$DWPCol, + sizeCol = rv$sizeCol_M, nsim = rv$nsim, + max_intervals = 8 + ), error = function(x){NULL} + ) + if (!is.null(rv$M)){ + rv$Msplit <- tryCatch( + calcSplits(M = rv$M, + split_SS = NULL, split_CO = NULL, + data_SS = rv$data_SS, data_CO = rv$data_CO + ), error = function(x){NULL}, warning = function(x){NULL} + ) + rv$unitCol <- intersect(rv$colNames_CO, rv$colNames_DWP) + rv$colNames_SS_sel <- colnames(rv$data_SS) %in% rv$data_CO[ ,rv$unitCol] + rv$colNames_SS_nosel <- rv$colNames_SS[rv$colNames_SS_sel == FALSE] + } + } + + if (eventName == "run_M_clear"){ + toNULL <- c("M", "Msplit", "unitCol", "sizeCol_M", "SEmodToUse", + "split_CO", "split_SS") + rv <- reNULL(rv, toNULL) + toReVal <- c("nsplit_CO", "nsplit_SS", "figH_M", "figW_M") + rv <- reVal(rv, toReVal) + } + + if (eventName == "split_M"){ + toNULL <- c("split_CO", "split_SS", "Msplit") + rv <- reNULL(rv, toNULL) + toReVal <- c("nsplit_CO", "nsplit_SS", "figH_M", "figW_M") + rv$split_CO <- input$split_CO + rv$split_SS <- input$split_SS + rv$nsplit_CO <- length(rv$split_CO) + rv$nsplit_SS <- length(rv$split_SS) + rv$COdate <- input$COdate + + rv$Msplit <- tryCatch( + calcSplits(M = rv$M, + split_SS = rv$split_SS, split_CO = rv$split_CO, + data_SS = rv$data_SS, data_CO = rv$data_CO + ), error = function(x){NULL}, warning = function(x){NULL} + ) + if (!is.null(rv$Msplit)){ + rv$figH_M <- 600 + if (length(attr(rv$Msplit, "vars")) > 1){ + rv$figH_M <- max(600, 300 * length(rv$Msplit)) + } + } + } + + if (eventName == "split_M_clear"){ + toNULL <- c("split_CO", "split_SS", "Msplit") + rv <- reNULL(rv, toNULL) + toReVal <- c("nsplit_CO", "nsplit_SS", "figH_M", "figW_M") + rv <- reVal(rv, toReVal) + if (!is.null(rv$M)){ + rv$Msplit <- tryCatch( + calcSplits(M = rv$M, + split_SS = NULL, split_CO = NULL, + data_SS = rv$data_SS, data_CO = rv$data_CO + ), error = function(x){NULL}, warning = function(x){NULL} + ) + rv$unitCol <- intersect(rv$colNames_CO, rv$colNames_DWP) + rv$colNames_SS_sel <- colnames(rv$data_SS) %in% rv$data_CO[ ,rv$unitCol] + rv$colNames_SS_nosel <- rv$colNames_SS[rv$colNames_SS_sel == FALSE] + } + } + + if (eventName == "transpose_split"){ + if (rv$nsplit_CO + rv$nsplit_SS == 2){ + rv$Msplit <- transposeSplits(rv$Msplit) + } + } + + return(rv) +} \ No newline at end of file diff --git a/R/app_utility_functions.R b/R/app_utilities.R similarity index 91% rename from R/app_utility_functions.R rename to R/app_utilities.R index f201589016ff3dd4440475844698bfd9dff86c3e..4cd68578c4049908e6fbcaab627ac3715105aded 100644 --- a/R/app_utility_functions.R +++ b/R/app_utilities.R @@ -1,712 +1,747 @@ -#' @title Create the version text for GenEst -#' -#' @description Create a text string of the version number and date -#' -#' @param type "Full" or "Short" or "Name" or "NameDate" -#' -#' @return version text -#' -#' @export -#' -createvtext <- function(type = "Full"){ - vnumber <- packageDescription("GenEst", fields = "Version") - vdate <- packageDescription("GenEst", fields = "Date") - if (type == "Full"){ - vtext <- paste0("This is version ", vnumber, " (", vdate, ")") - } - if (type == "Short"){ - vtext <- paste0("v", vnumber) - } - if (type == "Name"){ - vtext <- paste0("GenEst ", "v", vnumber) - } - if (type == "NameDate"){ - vtext <- paste0("GenEst ", "v", vnumber, " (", vdate, ")") - } - return(vtext) -} - -#' @title Read in csv files in either format -#' -#' @description Handle reading in of a csv that is either comma-decimal or -#' semicolon-comma separation style -#' -#' @param path file path -#' -#' @return read in data table -#' -#' @export -#' -readCSV <- function(path){ - ef <- function(x){"_BAD_READ_"} - out1 <- tryCatch(read.csv(path, stringsAsFactors = FALSE), - error = ef, warning = ef) - - out2 <- tryCatch(read.csv2(path, stringsAsFactors = FALSE), - error = ef, warning = ef) - if (is.null(attr(out1, "class")) & is.null(attr(out2, "class"))){ - stop("File not found or not formatted as a .csv") - } - if ("data.frame" %in% attr(out1, "class")){ - if (is.null(attr(out2, "class"))){ - return(out1) - } - if ("data.frame" %in% attr(out2, "class")){ - if (ncol(out2) == 1){ - return(out1) - } - } - } - if ("data.frame" %in% attr(out2, "class")){ - if (is.null(attr(out1, "class"))){ - return(out2) - } - if ("data.frame" %in% attr(out1, "class")){ - if (ncol(out1) == 1){ - return(out2) - } - } - } - return(out1) -} - -#' @title Prepare predictors based on inputs -#' -#' @description Prepare predictor inputs from the app for use in the model -#' function -#' -#' @param preds predictors, as input to the app -#' -#' @return prepared predictors (or 1 if no predictors) -#' -#' @export -#' -prepPredictors <- function(preds = NULL){ - - out <- paste(preds, collapse = "*") - if (is.null(preds)){ - out <- 1 - } - return(out) -} - -#' @title Create the kFillNeed text -#' -#' @description Based on the number of observation columns, create text output -#' of "yes" or "no" -#' -#' @param rv reactive value list -#' -#' @return kFillNeed character of "yes" or "no" -#' -#' @export -#' -setkFillNeed <- function(rv){ - textout <- "no" - if(length(rv$obsCols_SE) == 1 & any(is.na(rv$kFixed))){ - textout <- "yes" - } - return(renderText(textout)) -} - -#' @title Update the fixed k value -#' -#' @description Update the value for \code{kFixed} is chosen and available -#' -#' @param kFixedChoice choice to fix k (1) or not (anything else) -#' -#' @param kFixed existing kFixed value -#' -#' @return new kFixed value -#' -#' @export -#' -setkFix <- function(kFixedChoice, kFixed){ - nkFix <- length(kFixed) - out <- rep(NA, nkFix) - for (i in 1:nkFix){ - if (kFixedChoice[i] == 1 & is.numeric(kFixed[i])){ - out[i] <- kFixed[i] - } - } - names(out) <- names(kFixed) - out -} - -#' @title Select the date columns from a data table -#' -#' @description Simple function to facilitate selection of date columns from -#' a data table -#' -#' @param data data table potentially containing columns that could be -#' coerced (via \code{checkDate()}) into a properly formatted date -#' -#' @return column names of columns that can be coerced to dates -#' -#' @export -#' -dateCols <- function(data){ - - ncols <- ncol(data) - dateTF <- rep(NA, ncols) - for (coli in 1:ncols){ - temp <- tryCatch( - checkDate(data[ , coli]), - error = function(x){FALSE} - ) - dateTF[coli] <- is.Date(temp) - } - out <- colnames(data)[dateTF] - return(out) -} - -#' @title Select the potential size class columns from a data table -#' -#' @description Simple function to facilitate selection of columns that could -#' be size class values from a data table -#' -#' @param data data table -#' -#' @return column names of columns that can be size class values -#' -#' @export -#' -sizeCols <- function(data){ - - if (is.null(data)){ - return(NULL) - } - ncols <- ncol(data) - scTF <- rep(NA, ncols) - for (coli in 1:ncols){ - tmp <- data[ , coli] - if (length(unique(tmp)) < nrow(data)){ - scTF[coli] <- TRUE - } else{ - scTF[coli] <- FALSE - } - } - out <- colnames(data)[scTF] - return(out) -} - - -#' @title Select the DWP-ok columns from a data table -#' -#' @description Simple function to facilitate selection of columns that could -#' be DWP values from a data table -#' -#' @param data data table -#' -#' @return column names of columns that can be DWP values -#' -#' @export -#' -DWPCols <- function(data){ - ncols <- ncol(data) - dwpTF <- rep(NA, ncols) - for (coli in 1:ncols){ - tmp <- data[ , coli] - if (!is.factor(tmp) && is.numeric(tmp) &&( all(tmp > 0) & all(tmp <= 1))){ - dwpTF[coli] <- TRUE - } else{ - dwpTF[coli] <- FALSE - } - } - out <- colnames(data)[dwpTF] - return(out) -} - -#' @title Select the predictor-ok columns from a data table -#' -#' @description Simple function to facilitate selection of columns that could -#' be predictors for SE or CP models from a data table -#' -#' @param data data table -#' -#' @return column names of columns that can be predictors -#' -#' @export -#' -predsCols <- function(data){ - ncols <- ncol(data) - predTF <- rep(NA, ncols) - for (coli in 1:ncols){ - tmp <- data[ , coli] - cont <- FALSE - if (is.numeric(tmp) && any(na.omit(tmp %% 1 != 0))){ - cont <- TRUE - } - if (length(unique(tmp)) == nrow(data)){ - reps <- FALSE - } else{ - reps <- TRUE - } - if (grepl("[-.]", colnames(data)[coli])){ - okName <- FALSE - } else{ - okName <- TRUE - } - if (!any(is.na(tmp)) & !cont & reps & okName){ - predTF[coli] <- TRUE - } else{ - predTF[coli] <- FALSE - } - } - out <- colnames(data)[predTF] - return(out) -} - -#' @title Select the columns from a data table that could be SE observations -#' -#' @description Simple function to facilitate selection of columns that could -#' be observations for an SE model -#' -#' @param data data table -#' -#' @return column names of columns that can be observations -#' -#' @export -#' -obsCols_SE <- function(data){ - ncols <- ncol(data) - obsTF <- rep(NA, ncols) - for (coli in 1:ncols){ - tmp <- na.omit(data[ , coli]) - if (any(tmp == 0 | tmp == 1) & all(tmp == 0 | tmp == 1)){ - obsTF[coli] <- TRUE - } else{ - obsTF[coli] <- FALSE - } - } - out <- colnames(data)[obsTF] - return(out) -} - -#' @title Select the columns from a data table that could be CP Last Time -#' Present observations -#' -#' @description Simple function to facilitate selection of columns that could -#' be Last Time Present observations for a CP model -#' -#' @param data data table -#' -#' @return column names of columns that can be observations -#' -#' @export -#' -obsCols_ltp <- function(data){ - ncols <- ncol(data) - obsTF <- rep(NA, ncols) - for (coli in 1:ncols){ - tmp <- data[ , coli] - if (is.numeric(tmp) && is.finite(tmp) && all(na.omit(tmp) >= 0)){ - obsTF[coli] <- TRUE - } else{ - obsTF[coli] <- FALSE - } - } - out <- colnames(data)[obsTF] - return(out) -} - - -#' @title Select the columns from a data table that could be CP First Time -#' Absent observations -#' -#' @description Simple function to facilitate selection of columns that could -#' be First Time Absent observations for a CP model -#' -#' @param data data table -#' -#' @return column names of columns that can be observations -#' -#' @export -#' -obsCols_fta <- function(data){ - ncols <- ncol(data) - obsTF <- rep(NA, ncols) - for (coli in 1:ncols){ - tmp <- data[ , coli] - if (is.numeric(tmp) && all(na.omit(tmp) > 0)){ - obsTF[coli] <- TRUE - } else{ - obsTF[coli] <- FALSE - } - } - out <- colnames(data)[obsTF] - return(out) -} - - -#' @title Remove selected columns from column names -#' -#' @description Simple function to facilitate removal of columns selected -#' -#' @param colNames column names from which some could be removed -#' -#' @param selCols selected columns to be removed -#' -#' @return column names without selected columns -#' -#' @export -#' -removeCols <- function(colNames, selCols){ - which_sel <- which(colNames %in% selCols) - if (length(which_sel) > 0){ - out <- colNames[-which_sel] - } else{ - out <- colNames - } - return(out) -} - -#' @title Update the string of column names that are in all the needed tables -#' -#' @description Determine the overlap between the column names in the SE, CP, -#' and CO data tables. -#' -#' @param rv reactive values list -#' -#' @return possible column names -#' -#' @export -#' -updateColNames_size <- function(rv){ - - SECPCO <- NULL - SE <- sizeCols(rv$data_SE) - CP <- sizeCols(rv$data_CP) - CO <- sizeCols(rv$data_CO) - - SECP <- which(SE %in% CP) - SECO <- which(SE %in% CO) - CPSE <- which(CP %in% SE) - CPCO <- which(CP %in% CO) - COSE <- which(CO %in% SE) - COCP <- which(CO %in% CP) - alltogether <- c(SECP, SECO, CPSE, CPCO, COSE, COCP) - - if (length(alltogether) == 0){ - if (is.null(SE) + is.null(CP) + is.null(CO) == 2){ - SECPCO <- unique(c(SE, CP, CO)) - } - } else{ - if (is.null(SE) + is.null(CP) + is.null(CO) == 1){ - SECPCOa <- c(SE[SECP], SE[SECO], CP[CPSE], CP[CPCO], CO[COSE], CO[COCP]) - SECPCO <- unique(SECPCOa) - } else{ - SECP <- SE[SE %in% CP] - SECPCO <- CO[CO %in% SECP] - } - } - - return(SECPCO) -} - -#' @title Select particular columns from a data set -#' -#' @description Convenience function for selecting specific columns from a -#' data table -#' -#' @param data data table to select from -#' -#' @param cols column names to select -#' -#' @return selected data -#' -#' @export -#' -selectData <- function(data, cols){ - if (is.null(data)){ - return(NULL) - } - - colNames <- colnames(data) - selectedTab <- data[ , which(colNames %in% cols)] - selectedDF <- data.frame(selectedTab) - if (length(cols) == 1){ - colnames(selectedDF) <- cols - } - return(selectedDF) -} - -#' @title Split model names into their components and remove only a desired -#' one -#' -#' @description Split a model name to return a specific component. Splitting -#' is done based on the semicolon in the name -#' -#' @param modNames names of the model to be split off -#' -#' @param pos position in the name to split off -#' -#' @return vector of split-off model names -#' -#' @export -#' -modNameSplit <- function(modNames, pos){ - modNames_split <- modNames - nmod <- length(modNames) - if (nmod > 0){ - for (modi in 1:nmod){ - modNames_split[modi] <- strsplit(modNames[modi], "; ")[[1]][pos] - } - } - modNames_split <- gsub("NULL", "s ~ 1", modNames_split) - modNames_split <- gsub("~ 1", "~ constant", modNames_split) - modNames_split <- gsub("dist:", "", modNames_split) - return(modNames_split) -} - -#' @title Count the minimum number of carcasses in the cells -#' -#' @description Count the minimum number of carcasses in all of the cells -#' within a \code{_SetSize} model complex -#' -#' @param mods model output from the \code{_SetSize} version of a function -#' -#' @return the minimum number of carcasses in the cells -#' -#' @export -#' -countCarcs <- function(mods){ - nsizeclasses <- length(mods) - nmods <- sum(unlist(lapply(mods, length))) - if (nsizeclasses > 0 & nmods > 0){ - ncarc <- rep(NA, nmods) - counter <- 0 - for (sci in 1:nsizeclasses){ - for (modi in 1:length(mods[[sci]])){ - counter <- counter + 1 - if (!grepl("Failed model fit", mods[[sci]][[modi]][1])){ - ncarc[counter] <- min(table(mods[[sci]][[modi]]$carcCell)) - } - } - } - ncarc <- min(na.omit(ncarc)) - }else{ - ncarc <- Inf - } - return(ncarc) -} - -#' @title Prepare text for size classes -#' -#' @description Prepare and render text of the size class names -#' -#' @param sizeclasses names of the size classes -#' -#' @return prepared and render name text -#' -#' @export -#' -prepSizeclassText <- function(sizeclasses){ - return(renderText(paste(sizeclasses, collapse = " "))) -} - -#' @title Paste the parts of a model's name back together -#' -#' @description Paste the component parts of a model's name back together -#' for presentation -#' -#' @param parts the component parts of the model's name -#' -#' @param type "SE" or "CP" -#' -#' @param tab logical for if it's the table output for CP -#' -#' @return the pasted name -#' -#' @export -#' -modNamePaste <- function(parts, type = "SE", tab = FALSE){ - if (tab & parts[1] == " exponential"){ - out <- paste(c(parts[1:2], "NULL"), collapse = "; ") - } else{ - out <- paste(parts, collapse = "; ") - } - if (type == "CP"){ - out <- paste("dist:", out, sep = "") - } - out <- gsub("~ constant", "~ 1", out) - return(out) -} - -#' @title Produce the options for the distributions in the CP model -#' -#' @description Simply make the named list for the disributions in the CP -#' model -#' -#' @return list with named elements of the distributions -#' -#' @export -#' -CPdistOptions <- function(){ - list("exponential" = "exponential", "weibull" = "weibull", - "lognormal" = "lognormal", "loglogistic" = "loglogistic" - ) -} - -#' @title Produce a blank plot for unsucessful fits -#' -#' @description Simply make a blank plot with descriptive text -#' -#' @param type "model" or "split" -#' -#' @return dummy plot -#' -#' @export -#' -plotNA <- function(type = "model"){ - if (type == "model"){ - badText <- "Selected model was not fit successfully." - } - if (type == "split"){ - badText <- "Second split too fine for plotting. Consider transposing." - } - plot(1, 1, type = "n", xaxt = "n", yaxt = "n", bty = "n", xlab = "", - ylab = "", ylim = c(0, 1), xlim = c(0,1)) - text(0.01, 0.9, badText, adj = 0) -} - -#' @title Create the main reactive value list for GenEst -#' -#' @description Create a list of reactive values as used across the components -#' of the GenEst application -#' -#' @return a reactive values list -#' -#' @export -#' -createReactiveValues <- function(){ - reactiveValues( - data_SE = NULL, data_CP = NULL, data_SS = NULL, data_DWP = NULL, - data_CO = NULL, - filename_SE = NULL, filename_CP = NULL, - colNames_SE = NULL, colNames_SE_preds = NULL, colNames_SE_preds0 = NULL, - toRemove_SE_obs = NULL, toRemove_SE_preds = NULL, - colNames_SE_obs = NULL, colNames_SE_obs0 = NULL, - colNames_CP = NULL, colNames_CP_preds = NULL, colNames_CP_preds0 = NULL, - toRemove_CP_preds = NULL, - colNames_ltp = NULL, colNames_ltp0 = NULL, toRemove_ltp = NULL, - colNames_fta = NULL, colNames_fta0 = NULL, toRemove_fta = NULL, - - colNames_SS = NULL, colNames_SS_sel = NULL, colNames_SS_nosel = NULL, - colNames_DWP = NULL, - colNames_CO = NULL, colNames_COdates = NULL, - colNames_size = NULL, - - nsim = 1000, CL = 0.90, - - sizeCol = NULL, sizeCol0 = NULL, toRemove_sizeCol = NULL, - sizeclasses = NULL, sizeclass = NULL, sizeclass_SE = NULL, - sizeclass_CP = NULL, sizeclass_g = NULL, sizeclass_M = NULL, - nsizeclasses = NULL, - - obsCols_SE = NULL, preds_SE = NULL, predictors_SE = NULL, - formula_p = NULL, formula_k = NULL, kFixedChoice = NULL, kFixed = NULL, - mods_SE = NULL, mods_SE_og = NULL, sizeclasses_SE = NULL, - outSEpk = NULL, AICcTab_SE = NULL, modOrder_SE = NULL, modNames_SE = NULL, - modNames_SEp = NULL, modNames_SEk = NULL, modSet_SE = NULL, - best_SE = NULL, modTab_SE = NULL, modTabPretty_SE = NULL, - modTabDL_SE = NULL, figH_SE = 800, figW_SE = 800, - kFill = NULL, sizeclasses_k = NULL, nsizeclasses_k = NULL, - - ltp = NULL, fta = NULL, preds_CP = NULL, dist = NULL, - predictors_CP = NULL, formula_l = NULL, formula_s = NULL, - mods_CP = NULL, mods_CP_og = NULL, CPdls = NULL, outCPdlsfig = NULL, - outCPdlstab = NULL, sizeclasses_CP = NULL, AICcTab_CP = NULL, - modOrder_CP = NULL, modNames_CP = NULL, modNames_CPdist = NULL, - modNames_CPl = NULL, modNames_CPs = NULL, modSet_CP = NULL, - best_CP = NULL, modTab_CP = NULL, modTabPretty_CP = NULL, - modTabDL_CP = NULL, figH_CP = 700, figW_CP = 800, - - M = NULL, Msplit = NULL, unitCol = NULL, frac = 1, - sizeCol_M = NULL, DWPCol = NULL, COdate = NULL, - SEmodToUse = NULL, CPmodToUse = NULL, - split_CO = NULL, split_SS = NULL, nsplit_CO = 0, nsplit_SS = 0, - figH_M = 600, figW_M = 800, - - SS = seq(0, 364, 7), SStext = paste(seq(0, 364, 7), collapse = ", "), - avgSI = NULL, SStemp = NULL, gSearchInterval = 7, gSearchMax = 364, - kFill_g = NULL, sizeclasses_g = NULL, nsizeclasses_g = NULL, - gGeneric = NULL, SEmodToUse_g = NULL, CPmodToUse_g = NULL, - figH_g = 400, figW_g = 800, - - kCheck = NA, kCheck_g = NA, csvformat = "" - ) -} - -#' @title Update the size classes -#' -#' @description Determine the options for size classes, based on a data table -#' and column name, returning \code{NULL} if no size class column is -#' provided -#' -#' @param data data table to draw sizes from -#' -#' @param sizeCol size class column name -#' -#' @return unique size classes -#' -#' @export -#' -updateSizeclasses <- function(data, sizeCol){ - if (is.null(sizeCol)){ - return("all") - } - return(as.character(unique(data[ , sizeCol]))) -} - -#' @title Locate the sizeclass selected by the inputs -#' -#' @description Locate the selection of a size class from the size class -#' column, retuning the first option from the size classes if the selection -#' is not available. -#' -#' @param sizeclasses size class options -#' -#' @param choice size class chosen -#' -#' @return location of the size class chosen -#' -#' @export -#' -pickSizeclass <- function(sizeclasses, choice){ - - sizeclass <- NULL - if (!(choice %in% sizeclasses)){ - choice <- sizeclasses[1] - } - sizeclass <- sizeclasses[which(sizeclasses == choice)] - return(sizeclass) -} - -#' @title Update the name of the size class column based on available names -#' -#' @description Update the size class column name based on the available -#' options. If the existing size class column name is no longer in the -#' set of available names, a NULL is returned to reset the column name. -#' -#' @param sizeCol current size class column name -#' -#' @param colNames_size updated vector of size column names in all needed -#' tables -#' -#' @return updated sizeCol -#' -#' @export -#' -updatesizeCol <- function(sizeCol, colNames_size){ - if (!is.null(sizeCol)){ - if (!(sizeCol %in% colNames_size)){ - NULL - } else{ - sizeCol - } - } else{ - NULL - } -} - +#' @title Reset values of a reactive values list +#' +#' @description Utility function for clearing and setting purposes. +#' +#' @param rv Reactive values list for the GenEst GUI, created by +#' \code{\link{initialReactiveValues}}, which calls +#' \code{\link[shiny]{reactiveValues}} +#' +#' @param toReVal Names of elements in \code{rv} to reset to their factory +#' setting (as defined by \code{\link{initialReactiveValues}}). +#' +#' @return Updated \code{rv}. +#' +#' @export +#' +reVal <- function(rv, toReVal){ + if("nsplit_CO" %in% toReVal){ + rv$nsplit_CO <- 0 + } + if("nsplit_SS" %in% toReVal){ + rv$nsplit_SS <- 0 + } + + if("SS" %in% toReVal){ + rv$SS <- seq(0, 364, 7) + } + if("gSearchInterval " %in% toReVal){ + rv$gSearchInterval <- 7 + } + if("gSearchMax" %in% toReVal){ + rv$gSearchMax <- 364 + } + if("SStext" %in% toReVal){ + rv$SStext <- paste(seq(0, 364, 7), collapse = ", ") + } + if("figH_SE" %in% toReVal){ + rv$figH_SE <- 800 + } + if("figW_SE" %in% toReVal){ + rv$figW_SE <- 800 + } + if("figH_CP" %in% toReVal){ + rv$figH_CP <- 800 + } + if("figW_CP" %in% toReVal){ + rv$figW_CP <- 800 + } + if("figH_M" %in% toReVal){ + rv$figH_M <- 600 + } + if("figW_M" %in% toReVal){ + rv$figW_M <- 800 + } + if("figH_M" %in% toReVal){ + rv$figH_g <- 400 + } + if("figW_M" %in% toReVal){ + rv$figW_g <- 800 + } + rv +} + + +#' @title Read in csv files in either format +#' +#' @description Handle reading in of a csv that is either comma-decimal or +#' semicolon-comma separation style +#' +#' @param path file path +#' +#' @return read in data table +#' +#' @export +#' +readCSV <- function(path){ + ef <- function(x){"_BAD_READ_"} + out1 <- tryCatch(read.csv(path, stringsAsFactors = FALSE), + error = ef, warning = ef) + + out2 <- tryCatch(read.csv2(path, stringsAsFactors = FALSE), + error = ef, warning = ef) + if (is.null(attr(out1, "class")) & is.null(attr(out2, "class"))){ + stop("File not found or not formatted as a .csv") + } + if ("data.frame" %in% attr(out1, "class")){ + if (is.null(attr(out2, "class"))){ + return(out1) + } + if ("data.frame" %in% attr(out2, "class")){ + if (ncol(out2) == 1){ + return(out1) + } + } + } + if ("data.frame" %in% attr(out2, "class")){ + if (is.null(attr(out1, "class"))){ + return(out2) + } + if ("data.frame" %in% attr(out1, "class")){ + if (ncol(out1) == 1){ + return(out2) + } + } + } + return(out1) +} + +#' @title Prepare predictors based on inputs +#' +#' @description Prepare predictor inputs from the app for use in the model +#' function +#' +#' @param preds predictors, as input to the app +#' +#' @return prepared predictors (or 1 if no predictors) +#' +#' @export +#' +prepPredictors <- function(preds = NULL){ + + out <- paste(preds, collapse = "*") + if (is.null(preds)){ + out <- 1 + } + return(out) +} + +#' @title Create the kNeed text +#' +#' @description Based on the number of observation columns, create text output +#' of "yes" or "no" +#' +#' @param rv reactive value list +#' +#' @return kNeed character of "yes" or "no" +#' +#' @export +#' +setkNeed <- function(rv){ + textout <- "no" + if(length(rv$obsCols_SE) == 1 & any(is.na(rv$kFixed))){ + textout <- "yes" + } + return(renderText(textout)) +} + +#' @title Update the fixed k value +#' +#' @description Update the value for \code{kFixed} is chosen and available +#' +#' @param kFixedChoice choice to fix k (1) or not (anything else) +#' +#' @param kFixed existing kFixed value +#' +#' @return new kFixed value +#' +#' @export +#' +setkFix <- function(kFixedChoice, kFixed){ + nkFix <- length(kFixed) + out <- rep(NA, nkFix) + for (i in 1:nkFix){ + if (kFixedChoice[i] == 1 & is.numeric(kFixed[i])){ + out[i] <- kFixed[i] + } + } + names(out) <- names(kFixed) + out +} + +#' @title Select the date columns from a data table +#' +#' @description Simple function to facilitate selection of date columns from +#' a data table +#' +#' @param data data table potentially containing columns that could be +#' coerced (via \code{checkDate()}) into a properly formatted date +#' +#' @return column names of columns that can be coerced to dates +#' +#' @export +#' +dateCols <- function(data){ + + ncols <- ncol(data) + dateTF <- rep(NA, ncols) + for (coli in 1:ncols){ + temp <- tryCatch( + checkDate(data[ , coli]), + error = function(x){FALSE} + ) + dateTF[coli] <- is.Date(temp) + } + out <- colnames(data)[dateTF] + return(out) +} + +#' @title Select the potential size class columns from a data table +#' +#' @description Simple function to facilitate selection of columns that could +#' be size class values from a data table +#' +#' @param data data table +#' +#' @return column names of columns that can be size class values +#' +#' @export +#' +sizeCols <- function(data){ + + if (is.null(data)){ + return(NULL) + } + ncols <- ncol(data) + scTF <- rep(NA, ncols) + for (coli in 1:ncols){ + tmp <- data[ , coli] + if (length(unique(tmp)) < nrow(data)){ + scTF[coli] <- TRUE + } else{ + scTF[coli] <- FALSE + } + } + out <- colnames(data)[scTF] + return(out) +} + + +#' @title Select the DWP-ok columns from a data table +#' +#' @description Simple function to facilitate selection of columns that could +#' be DWP values from a data table +#' +#' @param data data table +#' +#' @return column names of columns that can be DWP values +#' +#' @export +#' +DWPCols <- function(data){ + ncols <- ncol(data) + dwpTF <- rep(NA, ncols) + for (coli in 1:ncols){ + tmp <- data[ , coli] + if (!is.factor(tmp) && is.numeric(tmp) &&( all(tmp > 0) & all(tmp <= 1))){ + dwpTF[coli] <- TRUE + } else{ + dwpTF[coli] <- FALSE + } + } + out <- colnames(data)[dwpTF] + return(out) +} + +#' @title Select the predictor-ok columns from a data table +#' +#' @description Simple function to facilitate selection of columns that could +#' be predictors for SE or CP models from a data table +#' +#' @param data data table +#' +#' @return column names of columns that can be predictors +#' +#' @export +#' +predsCols <- function(data){ + ncols <- ncol(data) + predTF <- rep(NA, ncols) + for (coli in 1:ncols){ + tmp <- data[ , coli] + cont <- FALSE + if (is.numeric(tmp) && any(na.omit(tmp %% 1 != 0))){ + cont <- TRUE + } + if (length(unique(tmp)) == nrow(data)){ + reps <- FALSE + } else{ + reps <- TRUE + } + if (grepl("[-.]", colnames(data)[coli])){ + okName <- FALSE + } else{ + okName <- TRUE + } + if (!any(is.na(tmp)) & !cont & reps & okName){ + predTF[coli] <- TRUE + } else{ + predTF[coli] <- FALSE + } + } + out <- colnames(data)[predTF] + return(out) +} + +#' @title Select the columns from a data table that could be SE observations +#' +#' @description Simple function to facilitate selection of columns that could +#' be observations for an SE model +#' +#' @param data data table +#' +#' @return column names of columns that can be observations +#' +#' @export +#' +obsCols_SE <- function(data){ + ncols <- ncol(data) + obsTF <- rep(NA, ncols) + for (coli in 1:ncols){ + tmp <- na.omit(data[ , coli]) + if (any(tmp == 0 | tmp == 1) & all(tmp == 0 | tmp == 1)){ + obsTF[coli] <- TRUE + } else{ + obsTF[coli] <- FALSE + } + } + out <- colnames(data)[obsTF] + return(out) +} + +#' @title Select the columns from a data table that could be CP Last Time +#' Present observations +#' +#' @description Simple function to facilitate selection of columns that could +#' be Last Time Present observations for a CP model +#' +#' @param data data table +#' +#' @return column names of columns that can be observations +#' +#' @export +#' +obsCols_ltp <- function(data){ + ncols <- ncol(data) + obsTF <- rep(NA, ncols) + for (coli in 1:ncols){ + tmp <- data[ , coli] + if (is.numeric(tmp) && is.finite(tmp) && all(na.omit(tmp) >= 0)){ + obsTF[coli] <- TRUE + } else{ + obsTF[coli] <- FALSE + } + } + out <- colnames(data)[obsTF] + return(out) +} + + +#' @title Select the columns from a data table that could be CP First Time +#' Absent observations +#' +#' @description Simple function to facilitate selection of columns that could +#' be First Time Absent observations for a CP model +#' +#' @param data data table +#' +#' @return column names of columns that can be observations +#' +#' @export +#' +obsCols_fta <- function(data){ + ncols <- ncol(data) + obsTF <- rep(NA, ncols) + for (coli in 1:ncols){ + tmp <- data[ , coli] + if (is.numeric(tmp) && all(na.omit(tmp) > 0)){ + obsTF[coli] <- TRUE + } else{ + obsTF[coli] <- FALSE + } + } + out <- colnames(data)[obsTF] + return(out) +} + + +#' @title Remove selected columns from column names +#' +#' @description Simple function to facilitate removal of columns selected +#' +#' @param colNames column names from which some could be removed +#' +#' @param selCols selected columns to be removed +#' +#' @return column names without selected columns +#' +#' @export +#' +removeCols <- function(colNames, selCols){ + which_sel <- which(colNames %in% selCols) + if (length(which_sel) > 0){ + out <- colNames[-which_sel] + } else{ + out <- colNames + } + return(out) +} + +#' @title Update the string of column names that are in all the needed tables +#' +#' @description Determine the overlap between the column names in the SE, CP, +#' and CO data tables. +#' +#' @param rv reactive values list +#' +#' @return possible column names +#' +#' @export +#' +updateColNames_size <- function(rv){ + + SECPCO <- NULL + SE <- sizeCols(rv$data_SE) + CP <- sizeCols(rv$data_CP) + CO <- sizeCols(rv$data_CO) + + SECP <- which(SE %in% CP) + SECO <- which(SE %in% CO) + CPSE <- which(CP %in% SE) + CPCO <- which(CP %in% CO) + COSE <- which(CO %in% SE) + COCP <- which(CO %in% CP) + alltogether <- c(SECP, SECO, CPSE, CPCO, COSE, COCP) + + if (length(alltogether) == 0){ + if (is.null(SE) + is.null(CP) + is.null(CO) == 2){ + SECPCO <- unique(c(SE, CP, CO)) + } + } else{ + if (is.null(SE) + is.null(CP) + is.null(CO) == 1){ + SECPCOa <- c(SE[SECP], SE[SECO], CP[CPSE], CP[CPCO], CO[COSE], CO[COCP]) + SECPCO <- unique(SECPCOa) + } else{ + SECP <- SE[SE %in% CP] + SECPCO <- CO[CO %in% SECP] + } + } + + return(SECPCO) +} + +#' @title Select particular columns from a data set +#' +#' @description Convenience function for selecting specific columns from a +#' data table +#' +#' @param data data table to select from +#' +#' @param cols column names to select +#' +#' @return selected data +#' +#' @export +#' +selectData <- function(data, cols){ + if (is.null(data)){ + return(NULL) + } + + colNames <- colnames(data) + selectedTab <- data[ , which(colNames %in% cols)] + selectedDF <- data.frame(selectedTab) + if (length(cols) == 1){ + colnames(selectedDF) <- cols + } + return(selectedDF) +} + +#' @title Split model names into their components and remove only a desired +#' one +#' +#' @description Split a model name to return a specific component. Splitting +#' is done based on the semicolon in the name +#' +#' @param modNames names of the model to be split off +#' +#' @param pos position in the name to split off +#' +#' @return vector of split-off model names +#' +#' @export +#' +modNameSplit <- function(modNames, pos){ + modNames_split <- modNames + nmod <- length(modNames) + if (nmod > 0){ + for (modi in 1:nmod){ + modNames_split[modi] <- strsplit(modNames[modi], "; ")[[1]][pos] + } + } + modNames_split <- gsub("NULL", "s ~ 1", modNames_split) + modNames_split <- gsub("~ 1", "~ constant", modNames_split) + modNames_split <- gsub("dist:", "", modNames_split) + return(modNames_split) +} + +#' @title Count the minimum number of carcasses in the cells +#' +#' @description Count the minimum number of carcasses in all of the cells +#' within a \code{_SetSize} model complex +#' +#' @param mods model output from the \code{_SetSize} version of a function +#' +#' @return the minimum number of carcasses in the cells +#' +#' @export +#' +countCarcs <- function(mods){ + nsizeclasses <- length(mods) + nmods <- sum(unlist(lapply(mods, length))) + if (nsizeclasses > 0 & nmods > 0){ + ncarc <- rep(NA, nmods) + counter <- 0 + for (sci in 1:nsizeclasses){ + for (modi in 1:length(mods[[sci]])){ + counter <- counter + 1 + if (!grepl("Failed model fit", mods[[sci]][[modi]][1])){ + ncarc[counter] <- min(table(mods[[sci]][[modi]]$carcCell)) + } + } + } + ncarc <- min(na.omit(ncarc)) + }else{ + ncarc <- Inf + } + return(ncarc) +} + +#' @title Prepare text for size classes +#' +#' @description Prepare and render text of the size class names +#' +#' @param sizeclasses names of the size classes +#' +#' @return prepared and render name text +#' +#' @export +#' +prepSizeclassText <- function(sizeclasses){ + return(renderText(paste(sizeclasses, collapse = " "))) +} + +#' @title Paste the parts of a model's name back together +#' +#' @description Paste the component parts of a model's name back together +#' for presentation +#' +#' @param parts the component parts of the model's name +#' +#' @param type "SE" or "CP" +#' +#' @param tab logical for if it's the table output for CP +#' +#' @return the pasted name +#' +#' @export +#' +modNamePaste <- function(parts, type = "SE", tab = FALSE){ + if (tab & parts[1] == " exponential"){ + out <- paste(c(parts[1:2], "NULL"), collapse = "; ") + } else{ + out <- paste(parts, collapse = "; ") + } + if (type == "CP"){ + out <- paste("dist:", out, sep = "") + } + out <- gsub("~ constant", "~ 1", out) + return(out) +} + +#' @title Produce the options for the distributions in the CP model +#' +#' @description Simply make the named list for the disributions in the CP +#' model +#' +#' @return list with named elements of the distributions +#' +#' @export +#' +CPdistOptions <- function(){ + list("exponential" = "exponential", "weibull" = "weibull", + "lognormal" = "lognormal", "loglogistic" = "loglogistic" + ) +} + +#' @title Produce a blank plot for unsucessful fits +#' +#' @description Simply make a blank plot with descriptive text +#' +#' @param type "model" or "split" +#' +#' @return dummy plot +#' +#' @export +#' +plotNA <- function(type = "model"){ + if (type == "model"){ + badText <- "Selected model was not fit successfully." + } + if (type == "split"){ + badText <- "Second split too fine for plotting. Consider transposing." + } + plot(1, 1, type = "n", xaxt = "n", yaxt = "n", bty = "n", xlab = "", + ylab = "", ylim = c(0, 1), xlim = c(0,1)) + text(0.01, 0.9, badText, adj = 0) +} + +#' @title Create the main reactive value list for GenEst +#' +#' @description Create a list of reactive values as used across the components +#' of the GenEst application +#' +#' @return a reactive values list +#' +#' @export +#' +initialReactiveValues <- function(){ + reactiveValues( + data_SE = NULL, data_CP = NULL, data_SS = NULL, data_DWP = NULL, + data_CO = NULL, + filename_SE = NULL, filename_CP = NULL, + colNames_SE = NULL, colNames_SE_preds = NULL, colNames_SE_preds0 = NULL, + toRemove_SE_obs = NULL, toRemove_SE_preds = NULL, + colNames_SE_obs = NULL, colNames_SE_obs0 = NULL, + colNames_CP = NULL, colNames_CP_preds = NULL, colNames_CP_preds0 = NULL, + toRemove_CP_preds = NULL, + colNames_ltp = NULL, colNames_ltp0 = NULL, toRemove_ltp = NULL, + colNames_fta = NULL, colNames_fta0 = NULL, toRemove_fta = NULL, + + colNames_SS = NULL, colNames_SS_sel = NULL, colNames_SS_nosel = NULL, + colNames_DWP = NULL, + colNames_CO = NULL, colNames_COdates = NULL, + colNames_size = NULL, + + nsim = 1000, CL = 0.90, + + sizeCol = NULL, sizeCol0 = NULL, toRemove_sizeCol = NULL, + sizeclasses = NULL, sizeclass = NULL, sizeclass_SE = NULL, + sizeclass_CP = NULL, sizeclass_g = NULL, sizeclass_M = NULL, + nsizeclasses = 0, + + obsCols_SE = NULL, preds_SE = NULL, predictors_SE = NULL, + formula_p = NULL, formula_k = NULL, kFixedChoice = NULL, kFixed = NULL, + mods_SE = NULL, mods_SE_og = NULL, sizeclasses_SE = NULL, + outSEpk = NULL, AICcTab_SE = NULL, modOrder_SE = NULL, modNames_SE = NULL, + modNames_SEp = NULL, modNames_SEk = NULL, modSet_SE = NULL, + best_SE = NULL, modTab_SE = NULL, modTabPretty_SE = NULL, + modTabDL_SE = NULL, figH_SE = 800, figW_SE = 800, + sizeclasses_k = NULL, nsizeclasses_k = NULL, + + ltp = NULL, fta = NULL, preds_CP = NULL, dist = NULL, + predictors_CP = NULL, formula_l = NULL, formula_s = NULL, + mods_CP = NULL, mods_CP_og = NULL, CPdls = NULL, outCPdlsfig = NULL, + outCPdlstab = NULL, sizeclasses_CP = NULL, AICcTab_CP = NULL, + modOrder_CP = NULL, modNames_CP = NULL, modNames_CPdist = NULL, + modNames_CPl = NULL, modNames_CPs = NULL, modSet_CP = NULL, + best_CP = NULL, modTab_CP = NULL, modTabPretty_CP = NULL, + modTabDL_CP = NULL, figH_CP = 700, figW_CP = 800, + + M = NULL, Msplit = NULL, unitCol = NULL, frac = 1, + sizeCol_M = NULL, DWPCol = NULL, COdate = NULL, + SEmodToUse = NULL, CPmodToUse = NULL, + split_CO = NULL, split_SS = NULL, nsplit_CO = 0, nsplit_SS = 0, + figH_M = 600, figW_M = 800, + + SS = seq(0, 364, 7), SStext = paste(seq(0, 364, 7), collapse = ", "), + avgSI = NULL, SStemp = NULL, gSearchInterval = 7, gSearchMax = 364, + sizeclasses_g = NULL, nsizeclasses_g = NULL, + gGeneric = NULL, SEmodToUse_g = NULL, CPmodToUse_g = NULL, + figH_g = 400, figW_g = 800, + + kCheck = NA, kCheck_g = NA, csvformat = "" + ) +} + +#' @title Update the size classes +#' +#' @description Determine the options for size classes, based on a data table +#' and column name, returning \code{NULL} if no size class column is +#' provided +#' +#' @param data data table to draw sizes from +#' +#' @param sizeCol size class column name +#' +#' @return unique size classes +#' +#' @export +#' +updateSizeclasses <- function(data, sizeCol){ + if (is.null(sizeCol)){ + return("all") + } + return(as.character(unique(data[ , sizeCol]))) +} + +#' @title Locate the sizeclass selected by the inputs +#' +#' @description Locate the selection of a size class from the size class +#' column, retuning the first option from the size classes if the selection +#' is not available. +#' +#' @param sizeclasses size class options +#' +#' @param choice size class chosen +#' +#' @return location of the size class chosen +#' +#' @export +#' +pickSizeclass <- function(sizeclasses, choice){ + + sizeclass <- NULL + if (!(choice %in% sizeclasses)){ + choice <- sizeclasses[1] + } + sizeclass <- sizeclasses[which(sizeclasses == choice)] + return(sizeclass) +} + +#' @title Update the name of the size class column based on available names +#' +#' @description Update the size class column name based on the available +#' options. If the existing size class column name is no longer in the +#' set of available names, a NULL is returned to reset the column name. +#' +#' @param sizeCol current size class column name +#' +#' @param colNames_size updated vector of size column names in all needed +#' tables +#' +#' @return updated sizeCol +#' +#' @export +#' +updatesizeCol <- function(sizeCol, colNames_size){ + if (!is.null(sizeCol)){ + if (!(sizeCol %in% colNames_size)){ + NULL + } else{ + sizeCol + } + } else{ + NULL + } +} + diff --git a/R/app_widgets.R b/R/app_widgets.R index 11f235d7315f2c293f4db736562deeafd52b002a..b5695b0b96cd272bb99ac28d25f30258d90486ad 100644 --- a/R/app_widgets.R +++ b/R/app_widgets.R @@ -85,11 +85,9 @@ dataDownloadWidget <- function(set){ setName <- setNames[set] setButtonName <- paste0("download_", set) -# setButtonName2 <- paste0(setButtonName, 2) # doesn't work fluidRow( column(6, h4(setName)), column(2, downloadButton(setButtonName, "Download")) -# column(2, downloadButton(setButtonName2, ".csv ( ; )")) # doesn't work ) } @@ -100,10 +98,9 @@ dataDownloadWidget <- function(set){ #' widget used in the GenEst GUI, based on the input type (\code{inType}). #' #' @param inType Toggle control for the input type of the widget. One of -#' "nsim", "CL", "sizeCol", "obsCols_SE", "preds_SE", "kFixed", -#' "ltp", "fta", "preds_CP", "dist", "frac", "DWPCol", -#' "COdate", "gSearchInterval", "gSearchMax", -#' "useSSinputs", or "useSSdata". +#' "nsim", "CL", "class", "obsSE", "predsSE", "kFixed", "ltp", "fta", +#' "predsCP", "dist", "frac", "DWPCol", "COdate", "gSearchInterval", +#' "gSearchMax", "useSSinputs", or "useSSdata". #' #' @return HTML for the model input widget. #' @@ -111,8 +108,8 @@ dataDownloadWidget <- function(set){ #' modelInputWidget <- function(inType){ - if (!inType %in% c("nsim", "CL", "sizeCol", "obsCols_SE", "preds_SE", - "kFixedInput", "ltp", "fta", "preds_CP", "dist", + if (!inType %in% c("nsim", "CL", "class", "obsSE", "predsSE", + "kFixedInput", "ltp", "fta", "predsCP", "dist", "frac", "DWPCol", "COdate", "gSearchInterval", "gSearchMax", "useSSinputs", "useSSdata")){ @@ -124,13 +121,13 @@ modelInputWidget <- function(inType){ Label <- switch(inType, "nsim" = "Number of Iterations:", "CL" = "Confidence Level:", - "sizeCol" = "Size Class Column (optional):", - "obsCols_SE" = "Observations:", - "preds_SE" = "Predictor Variables:", + "class" = "Size Class Column (optional):", + "obsSE" = "Observations:", + "predsSE" = "Predictor Variables:", "kFixedInput" = NULL, "ltp" = "Last Time Present:", "fta" = "First Time Absent:", - "preds_CP" = "Predictor Variables:", + "predsCP" = "Predictor Variables:", "dist" = "Distributions to Include", "frac" = "Fraction of Facility Surveyed:", "DWPCol" = "Density Weighted Proportion:", @@ -143,13 +140,13 @@ modelInputWidget <- function(inType){ widgetFun <- switch(inType, "nsim" = "numericInput", "CL" = "numericInput", - "sizeCol" = "selectizeInput", - "obsCols_SE" = "selectizeInput", - "preds_SE" = "selectizeInput", + "class" = "selectizeInput", + "obsSE" = "selectizeInput", + "predsSE" = "selectizeInput", "kFixedInput" = "htmlOutput", "ltp" = "selectizeInput", "fta" = "selectizeInput", - "preds_CP" = "selectizeInput", + "predsCP" = "selectizeInput", "dist" = "checkboxGroupInput", "frac" = "numericInput", "DWPCol" = "selectizeInput", @@ -162,22 +159,22 @@ modelInputWidget <- function(inType){ Args <- switch(inType, "nsim" = list(value = 1000, min = 1, max = 10000, step = 1), "CL" = list(value = 0.90, min = 0, max = 1, step = 0.001), - "sizeCol" = list(c("No data input yet"), multiple = TRUE, + "class" = list(c("No data input yet"), multiple = TRUE, options = list(maxItems = 1)), - "obsCols_SE" = list(c("No data input yet"), multiple = TRUE), - "preds_SE" = list(c("No data input yet"), multiple = TRUE), + "obsSE" = list(c("No SE data input yet"), multiple = TRUE), + "predsSE" = list(c("No SE data input yet"), multiple = TRUE), "kFixedInput" = list(NULL), - "ltp" = list(c("No data input yet"), multiple = TRUE, + "ltp" = list(c("No CP data input yet"), multiple = TRUE, options = list(maxItems = 1)), - "fta" = list(c("No data input yet"), multiple = TRUE, + "fta" = list(c("No CP data input yet"), multiple = TRUE, options = list(maxItems = 1)), - "preds_CP" = list(c("No data input yet"), multiple = TRUE), + "predsCP" = list(c("No CP data input yet"), multiple = TRUE), "dist" = list(choices = CPdistOptions(), selected = unlist(CPdistOptions()), inline = TRUE), "frac" = list(value = 1.0, min = 0.01, max = 1.0, step = 0.01), - "DWPCol" = list(c("No data input yet"), multiple = TRUE, + "DWPCol" = list(c("No DWP data input yet"), multiple = TRUE, options = list(maxItems = 1)), - "COdate" = list(c("No data input yet"), multiple = TRUE, + "COdate" = list(c("No carcass data input yet"), multiple = TRUE, options = list(maxItems = 1)), "gSearchInterval" = list(value = 7, min = 1, max = 400, step = 1), "gSearchMax" = list(value = 364, min = 1, max = 1000, step = 1), @@ -187,13 +184,13 @@ modelInputWidget <- function(inType){ Condition <- switch(inType, "nsim" = NULL, "CL" = NULL, - "sizeCol" = NULL, - "obsCols_SE" = NULL, - "preds_SE" = NULL, + "class" = NULL, + "obsSE" = NULL, + "predsSE" = NULL, "kFixedInput" = NULL, "ltp" = NULL, "fta" = NULL, - "preds_CP" = NULL, + "predsCP" = NULL, "dist" = NULL, "frac" = NULL, "DWPCol" = "output.DWPNeed == 'yes'", @@ -269,34 +266,33 @@ modelRunWidget <- function(modType){ } rName <- switch(modType, - "SE" = "runMod_SE", - "CP" = "runMod_CP", - "M" = "runMod_M", - "g" = "runMod_g") + "SE" = "run_SE", + "CP" = "run_CP", + "M" = "run_M", + "g" = "run_g") rLabel <- switch(modType, "SE" = "Run Model", "CP" = "Run Model", "M" = "Estimate", "g" = "Estimate") rCondition <- switch(modType, - "SE" = "input.obsCols_SE != null", + "SE" = "input.obsSE != null", "CP" = "input.ltp != null & input.fta != null", "M" = "input.modelChoices_SE1 != null & input.modelChoices_CP1 != null & output.sizeclasses_SE == output.sizeclasses_CP & - output.data_SS != null & - input.DWPCol != null & input.COdate != null & - output.kFillNeed != 'yes'", + output.data_SS != null & output.kNeed != 'yes' & + input.DWPCol != null & input.COdate != null", "g" = "input.modelChoices_SE1 != null & input.modelChoices_CP1 != null & - output.sizeclasses_SE == output.sizeclasses_CP & - output.kFillNeed != 'yes'") + output.kNeed != 'yes' & + output.sizeclasses_SE == output.sizeclasses_CP") cName <- switch(modType, - "SE" = "runMod_SE_clear", - "CP" = "runMod_CP_clear", - "M" = "runMod_M_clear", - "g" = "runMod_g_clear") + "SE" = "run_SE_clear", + "CP" = "run_CP_clear", + "M" = "run_M_clear", + "g" = "run_g_clear") cLabel <- switch(modType, "SE" = "Clear Model", "CP" = "Clear Model", @@ -341,7 +337,7 @@ preTextMaker <- function(modType){ } Condition <- switch(modType, - "SE" = "input.obsCols_SE == null", + "SE" = "input.obsSE == null", "CP" = "input.ltp == null | input.fta == null", "M" = c("input.modelChoices_SE1 == null | input.modelChoices_CP1 == null | @@ -351,12 +347,12 @@ preTextMaker <- function(modType){ input.modelChoices_CP1 != null & output.sizeclasses_SE == output.sizeclasses_CP & (input.DWPCol == null | input.COdate == null)", - "output.kFillNeed == 'yes' & + "output.kNeed == 'yes' & input.modelChoices_SE1 != null"), "g" = c("input.modelChoices_SE1 == null | input.modelChoices_CP1 == null | output.sizeclasses_SE != output.sizeclasses_CP", - "output.kFillNeed == 'yes' & + "output.kNeed == 'yes' & input.modelChoices_SE1 != null") ) @@ -424,10 +420,10 @@ modelOutputWidget <- function(modType){ "g" = "") sName <- switch(modType, - "SE" = c("outsizeclassSE", "outSEp", "outSEk"), - "CP" = c("outsizeclassCP", "outCPdist", "outCPl", "outCPs"), + "SE" = c("outSEclass", "outSEp", "outSEk"), + "CP" = c("outCPclass", "outCPdist", "outCPl", "outCPs"), "M" = c("split_SS", "split_CO"), - "g" = "outsizeclassg") + "g" = "outgclass") sLabel <- switch(modType, "SE" = c("Size Class:", "p Model:", "k Model:"), @@ -484,16 +480,16 @@ modelOutputWidget <- function(modType){ splitButtonWidget <- function(){ list( fluidRow( - column(width = 6, actionButton("splitM", "Split Estimate")), + column(width = 6, actionButton("split_M", "Split Estimate")), column(width = 6, conditionalPanel( condition = "output.MSplitDone == 'OK' & output.nMSplits > 1", - actionButton("transposeSplit", "Transpose") + actionButton("transpose_split", "Transpose") ) ) ), conditionalPanel(condition = "output.MSplitDone == 'OK'", - actionButton("splitM_clear", "Clear Split", style = cButtonStyle()) + actionButton("split_M_clear", "Clear Split", style = cButtonStyle()) ) ) } diff --git a/R/carcass_persistence_figure_functions.R b/R/carcass_persistence_figure_functions.R index 81cefc9403c3d5436cb42fd417318c8eaefa05a9..34039fe77ba23001d1f1385ad8c8ecc4d3b5d12b 100644 --- a/R/carcass_persistence_figure_functions.R +++ b/R/carcass_persistence_figure_functions.R @@ -53,9 +53,9 @@ cpmCPCellPlot <- function(model, specificCell, col, axis_y = TRUE, event[which(is.na(t2))] <- 0 event[which(t1 == t2)] <- 1 t1[which(t1 == 0)] <- 0.0001 - survobj <- Surv(t1, t2, event, "interval") + survobj <- survival::Surv(t1, t2, event, "interval") form <- formula("survobj ~ 1") - smod <- survfit(form, data = observations) + smod <- survival::survfit(form, data = observations) plot(smod, ylim = c(0, 1), xlim = c(0, max_x), xlab = "", ylab = "", xaxt = "n", yaxt = "n", bty = "L", lwd = c(2, 1, 1) @@ -175,7 +175,7 @@ plot.cpm <- function(x, col = "black", ...){ #' data(wind_RP) #' mod <- cpmSet(formula_l = l ~ Season, formula_s = s ~ Season, #' data = wind_RP$CP, left = "LastPresent", right = "FirstAbsent") -#' plot(mod) +#' \donttest{plot(mod)} #' #' @export #' @@ -328,9 +328,9 @@ cpmSetSpecCPCellPlot <- function(modelSet, specificModel, specificCell, event[which(is.na(t2))] <- 0 event[which(t1 == t2)] <- 1 t1[which(t1 == 0)] <- 0.0001 - survobj <- Surv(t1, t2, event, "interval") + survobj <- survival::Surv(t1, t2, event, "interval") form <- formula("survobj ~ 1") - smod <- survfit(form, data = observations) + smod <- survival::survfit(form, data = observations) plot(smod, ylim = c(0, 1), xlim = c(0, max_x), xlab = "", ylab = "", xaxt = "n", yaxt = "n", bty = "L", lwd = c(2, 1, 1) diff --git a/R/carcass_persistence_functions.R b/R/carcass_persistence_functions.R index e2473876e999a606d0fb848eae2b320a2af17133..db5dfbe03c6658d3190aaa989b1d5039117095b5 100644 --- a/R/carcass_persistence_functions.R +++ b/R/carcass_persistence_functions.R @@ -252,8 +252,8 @@ cpm0 <- function(formula_l, formula_s = NULL, data = NULL, left = NULL, } formulaRHS_l <- formula(delete.response(terms(formula_l))) preds_l <- all.vars(formulaRHS_l) + if (is.null(formula_s)) formula_s <- formula(s ~ 1) - formulaRHS_s <- formula(delete.response(terms(formula_s))) preds_s <- all.vars(formulaRHS_s) @@ -282,7 +282,7 @@ cpm0 <- function(formula_l, formula_s = NULL, data = NULL, left = NULL, event[is.na(t2) | is.infinite(t2)] <- 0 # study ends before removal event[round(t1, 3) == round(t2, 3)] <- 1 # carcass removal observed t1 <- pmax(t1, 0.0001) - tevent <- Surv(time = t1, time2 = t2, event = event, type = "interval") + tevent <- survival::Surv(time = t1, time2 = t2, event = event, type = "interval") # in all cases, formula_l is used (with formula_s appended in some cases) # if (length(all.vars(formula_l)) == 1) mod_l <- l ~ 1 @@ -343,11 +343,11 @@ cpm0 <- function(formula_l, formula_s = NULL, data = NULL, left = NULL, if (use_survreg){ cpmod <- tryCatch( - survreg(formula = formula_cp, data = data, dist = dist), + survival::survreg(formula = formula_cp, data = data, dist = dist), error = function(x) NA, warning = function (x) NA ) if (length(cpmod) == 1){ - stop("Failed CP optimization. Consider using fewer covariates.") + stop("Failed CP model optimization.") } betahat_l <- cpmod$coefficients npreds_s <- length(all.vars(formula_s)) - 1 @@ -499,9 +499,10 @@ cpm0 <- function(formula_l, formula_s = NULL, data = NULL, left = NULL, cellByCarc[matchingTotal] <- celli } carcCells <- cellNames[cellByCarc] + cell_n <- as.numeric(table(carcCells)[cellNames]) init_formRHS <- as.character(formulaRHS_l)[-1] init_form <- reformulate(init_formRHS, response = "tevent") - init_mod <- survreg(formula = init_form, data = data, dist = dist) + init_mod <- survival::survreg(formula = init_form, data = data, dist = dist) init_l <- init_mod$coef names(init_l) <- paste("l_", names(init_l), sep = "") init_s <- rep(init_mod$scale, nbeta_s) @@ -570,7 +571,7 @@ cpm0 <- function(formula_l, formula_s = NULL, data = NULL, left = NULL, cellTable_s <- exp(apply(probs, 1, qnorm, mean = cellMean_s, sd = cellSD_s)) cellTable_s <- round(matrix(cellTable_s, nrow = ncell, ncol = 3), 3) colnames(cellTable_s) <- c("s_median", "s_lower", "s_upper") - cellTable_ls <- data.frame(cell = cellNames, cellTable_l, cellTable_s) + cellTable_ls <- data.frame(cell = cellNames, n = cell_n, cellTable_l, cellTable_s) if (dist == "exponential"){ cellTable_a <- matrix("-", nrow = ncell, ncol = 3) @@ -936,13 +937,13 @@ cpLogLik <- function(t1, t2, beta, nbeta_l, cellByCarc, cellMM, dataMM, dist){ dataMM_s <- matrix(dataMM[which_s, ], ncol = nbeta_s, byrow = TRUE) Beta_l <- dataMM_l %*% beta_l Beta_s <- dataMM_s %*% beta_s - psurv_t1 <- psurvreg(t1, Beta_l, exp(Beta_s), dist) - psurv_t2 <- psurvreg(t2, Beta_l, exp(Beta_s), dist) + psurv_t1 <- survival::psurvreg(t1, Beta_l, exp(Beta_s), dist) + psurv_t2 <- survival::psurvreg(t2, Beta_l, exp(Beta_s), dist) psurv_t2[which(is.na(psurv_t2))] <- 1 lik <- psurv_t2 - psurv_t1 too_small <- (t1 + 0.0001) >= t2 if (any(too_small)){ - lik[too_small] <- dsurvreg(t2[too_small], Beta_l[too_small], + lik[too_small] <- survival::dsurvreg(t2[too_small], Beta_l[too_small], exp(Beta_s)[too_small], dist) } lik <- pmax(lik, .Machine$double.eps) @@ -1005,10 +1006,10 @@ rcp <- function(n, model, type = "survreg"){ } method <- "svd" - sim_beta <- rmvnorm(n, mean = meanbeta, sigma = varbeta, method) + sim_beta <- mvtnorm::rmvnorm(n, mean = meanbeta, sigma = varbeta, method) - sim_l <- as.matrix(sim_beta[ , 1:nbeta_l] %*% t(cellMM_l)) - sim_s <- exp(as.matrix(sim_beta[ , which_beta_s] %*% t(cellMM_s))) + sim_l <- as.matrix(sim_beta[ , 1:nbeta_l] %*% t(cellMM_l)) # coef + sim_s <- exp(as.matrix(sim_beta[ , which_beta_s] %*% t(cellMM_s))) # scale if (type == "ppersist"){ if (dist == "exponential"){ @@ -1094,7 +1095,7 @@ aicc.cpmSet <- function(x, ... , quiet = FALSE, app = FALSE){ AICc <- tryCatch(cpmset[[1]]$AICc, error = function(x) {1e7}) deltaAICc <- 0 AICcOrder <- 1 - }else{ + } else { for (modi in 1:nmod){ splitFormulas_i <- strsplit(formulas[modi], "; ")[[1]] dist[modi] <- strsplit(splitFormulas_i, "dist: ")[[1]][2] @@ -1216,53 +1217,47 @@ aicc.cpm <- function(x,...){ #' @export #' ppersist <- function(pda, pdb, dist, t_arrive0, t_arrive1, t_search){ - dist <- tolower(dist) - if (dist == "weibull"){ - - sa0 <- pgamma(outer(1 / pdb, t_search - t_arrive0)^pda, 1 / pda) - sa1 <- pgamma(outer(1 / pdb, t_search - t_arrive1)^pda, 1 / pda) - a1a0 <- outer(pdb, 1 / (t_arrive1 - t_arrive0)) - probs <- (sa0 - sa1) * gamma(1 + 1 / pda) * a1a0 + pda[log(pda) < -5] <- exp(-5) # adjustment to avoid overflow errors + pda[log(pda) > 5] <- exp(5) # adjustment to avoid overflow errors + sa0 <- pgamma(outer(1/pdb, t_search - t_arrive0)^pda, 1/pda, log.p = TRUE) + sa1 <- pgamma(outer(1/pdb, t_search - t_arrive1)^pda, 1/pda, log.p = TRUE) + a1a0 <- outer(pdb, 1/(t_arrive1 - t_arrive0)) + probs <- (exp(sa0) - exp(sa1)) * gamma(1 + 1/pda) * a1a0 probs <- t(probs) - } else if (dist == "exponential"){ - - a1a0 <- outer(t_arrive1 - t_arrive0, 1 / pdb) - a0s <- outer(t_arrive0 - t_search, 1 / pdb) - a1s <- outer(t_arrive1 - t_search, 1 / pdb) - probs <- (exp(a1s) - exp(a0s)) / (a1a0) - + a1a0 <- outer(t_arrive1 - t_arrive0, 1/pdb) + a0s <- outer(t_arrive0 - t_search, 1/pdb) + a1s <- outer(t_arrive1 - t_search, 1/pdb) + probs <- (exp(a1s) - exp(a0s))/(a1a0) } else if (dist == "lognormal"){ - root_pda <- sqrt(pda) exp_value <- exp((pda / 2) + pdb) tt <- t_search - t_arrive0 - p1 <- pnorm(outer(pdb, -log(tt), "+") / root_pda) - p2 <- pnorm(outer(-pdb, log(tt), "+") / root_pda - root_pda) * exp_value + p1 <- exp(pnorm(outer(pdb, -log(tt), "+") / root_pda, log.p = TRUE)) + p2 <- exp(pnorm(outer(-pdb, log(tt), "+") / root_pda - root_pda, log.p = TRUE)) * exp_value part0 <- t(p1) * tt + t(p2) tt <- t_search - t_arrive1 - p1 <- pnorm(outer(pdb, -log(tt), "+") / root_pda) - p2 <- pnorm(outer(-pdb, log(tt), "+") / root_pda - root_pda) * exp_value + p1 <- exp(pnorm(outer(pdb, -log(tt), "+") / root_pda, log.p = TRUE)) + p2 <- exp(pnorm(outer(-pdb, log(tt), "+") / root_pda - root_pda, log.p = TRUE)) * exp_value part1 <- t(p1) * tt + t(p2) probs <- -(part1 - part0) / (t_arrive1 - t_arrive0) - } else if (dist == "loglogistic" | dist == "log-logistic"){ yox <- function(x, y) y/x t1 <- t_search-t_arrive1 t0 <- t_search-t_arrive0 tob <- outer(pdb, t1, "yox") part1 <- t1/t(1 + tob^pda) * - t(hyperg_2F1(1, 1, 1 + 1/pda, 1/(1 + tob^(-pda)))) + t(gsl::hyperg_2F1(1, 1, 1 + 1/pda, 1/(1 + tob^(-pda)))) tob <- outer(pdb, t0, "yox") part0 <- t0 / t(1 + tob^pda) * - t(hyperg_2F1(1, 1, 1 + 1/pda, 1/(1 + tob^(-pda)))) + t(gsl::hyperg_2F1(1, 1, 1 + 1/pda, 1/(1 + tob^(-pda)))) probs <- (part0 - part1)/(t_arrive1 - t_arrive0) } return(probs) } - +1 #' @title Check if a CP model is well-fit #' #' @description Run a check the arg is a well-fit cpm object @@ -1349,4 +1344,4 @@ aicc.cpmSize <- function(x, ... ){ class(y) <- c("cpm", "list") aicc(y) })) -} \ No newline at end of file +} diff --git a/R/detection_probability_functions.R b/R/detection_probability_functions.R index a704c247ce55f6b3eb3ca2cd872364508e1bcf62..adc9c6a1856791b03a5984e55056ced22a42f5b1 100644 --- a/R/detection_probability_functions.R +++ b/R/detection_probability_functions.R @@ -68,6 +68,7 @@ estg <- function(data_CO, COdate, data_SS, SSdate = NULL, t0date <- SSdat$date0 dates_CO <- checkDate(data_CO[ , COdate]) if (is.null(dates_CO)) stop("dates_CO not properly formatted as dates") + if (t0date > min(dates_CO)) stop("first carcass discovered before first search date") COdat <- data_CO # format data_CO COdat[ , COdate] <- dateToDay(dates_CO, t0date) names(COdat)[names(COdat) == COdate] <- "day" # distinguish integers @@ -256,13 +257,13 @@ estg <- function(data_CO, COdate, data_SS, SSdate = NULL, parrive <- diff(days[[xi]][1:(oi+1)])/days[[xi]][oi+1] pAjgOi <- t(pOigAj) * parrive; pAjgOi <- t(t(pAjgOi)/colSums(pAjgOi)) Aj[xi, ] <- # sim arrival intervals (relative to cind's ss) - rowSums(rowCumsums(t(pAjgOi)) < runif(nsim)) + + rowSums(matrixStats::rowCumsums(t(pAjgOi)) < runif(nsim)) + (sum(SSxi <= min(days[[xi]]))) xuint <- unique(Aj[xi, ]) # unique xi arrival intervals (in SSxi) for (aj in xuint){ # calculate simulated ghat associated with the given carcass and - # interval there is much redundant calculation here that could be sped - # up substantially with clever bookkeeping + # interval (there is much redundant calculation here that could be sped + # up substantially with clever bookkeeping) simInd <- which(Aj[xi, ] == aj) top <- length(SSxi) if (!is.null(max_intervals)){ @@ -340,10 +341,10 @@ SEsi_left <- function (oi, pk, rng = NULL){ else { powk <- array(rep(pk[, 2], maxmiss + 1), dim = c(npk, maxmiss + 1)) powk[, 1] <- 1 - powk <- rowCumprods(powk) + powk <- matrixStats::rowCumprods(powk) pfind.si <- pk[, 1] * powk * cbind( rep(1, npk), - rowCumprods(1 - (pk[, 1] * powk[, 1:maxmiss])) + matrixStats::rowCumprods(1 - (pk[, 1] * powk[, 1:maxmiss])) ) } return(pfind.si[ , oi - rng + 1]) @@ -384,10 +385,10 @@ SEsi_right <- function(nsi, pk){ else { powk <- array(rep(pk[, 2], maxmiss + 1), dim = c(npk, maxmiss + 1)) powk[, 1] <- 1 - powk <- rowCumprods(powk) + powk <- matrixStats::rowCumprods(powk) pfind.si <- pk[, 1] * powk * cbind( rep(1, npk), - rowCumprods(1 - (pk[, 1] * powk[, 1:maxmiss])) + matrixStats::rowCumprods(1 - (pk[, 1] * powk[, 1:maxmiss])) ) } return(pfind.si) @@ -567,10 +568,10 @@ calcg <- function(days, param_SE, param_CP, dist){ } else { powk <- array(rep(pk[, 2], maxmiss + 1), dim = c(n, maxmiss + 1)) powk[ , 1] <- 1 - powk <- rowCumprods(powk) + powk <- matrixStats::rowCumprods(powk) val <- 1 - (pk[ , 1] * powk[ , 1:maxmiss]) if (is.null(dim(val))) val <- matrix(val, nrow = 1) - pfind.si <- pk[ , 1] * powk * cbind(rep(1, n), rowCumprods(val)) + pfind.si <- pk[ , 1] * powk * cbind(rep(1, n), matrixStats::rowCumprods(val)) } diffs <- cbind(schedule[,2] - schedule[,1], schedule[,3] - schedule[,2]) intxsearch <- unique(diffs, MAR = 1) @@ -744,8 +745,8 @@ estgGenericSize <- function(days, modelSetSize_SE, modelSetSize_CP, averageSS <- function(data_SS, SSdate = NULL){ SSdat <- prepSS(data_SS, SSdate = SSdate) schedules <- t(SSdat$searches_unit) * SSdat$days - nintervals <- length(SSdat$days) - colCounts(schedules, value = 0) - maxdays <- colMaxs(schedules) + nintervals <- length(SSdat$days) - matrixStats::colCounts(schedules, value = 0) + maxdays <- matrixStats::colMaxs(schedules) aveSS <- seq(0, max(maxdays), round(mean(maxdays/nintervals))) return(aveSS) } @@ -967,7 +968,9 @@ prepSS <- function(data_SS, SSdate = NULL, preds = NULL){ ans <- list() ans$date0 <- date0 ans$days <- as.numeric(difftime(dates, date0, units = "days")) - if (any(diff(ans$days) <= 0)) stop("search dates must be in increasing order") + if (any(diff(ans$days) <= 0)){ + stop("search dates must be in increasing order") + } ans[[SSdate]] <- dates for (i in 1:length(preds)){ if (preds[i] == SSdate) next diff --git a/R/mortality_functions.R b/R/mortality_functions.R index 1201ca453fec575a7e5dc2cbbc535c9240abe640..db3e1ef05edf43ec722e8d465183a9590e1d1f06 100644 --- a/R/mortality_functions.R +++ b/R/mortality_functions.R @@ -90,15 +90,35 @@ estM <- function(data_CO, data_SS, data_DWP, frac = 1, unitCol <- intersect(colnames(data_CO), colnames(data_DWP)) if (length(unitCol) == 0){ stop( - "no columns in data_CO and data_DWP share a common name ", - "to use as a unit column." + "Unit column name not provided, and no columns in data_CO and data_DWP", + " share a common name to use as a unit column. Cannot estimate M" ) } + if (length(unitCol) == 1){ + if (any(!(data_CO[ , unitCol] %in% names(data_SS))) || + any(!(data_DWP[ , unitCol] %in% names(data_SS))) || + any(!(data_CO[ , unitCol] %in% data_DWP[ , unitCol]))){ + stop("No unitCol provided, and data_CO and data_DWP do not have a column ", + "that can unambiguously serve as unitCol. Cannot estimate M.") + } + } if (length(unitCol) > 1){ - stop( - "multiple matching column names in data_CO and data_DWP. ", - "Provide a value for unitCol in estM arg list." - ) + bad <- NULL + for (ni in 1:length(unitCol)){ + if (any(!(data_CO[ , unitCol[ni]] %in% names(data_SS))) || + any(!(data_DWP[ , unitCol[ni]] %in% names(data_SS)))){ + bad <- c(bad, ni) + next + } + } + if (length(bad) != length(unitCol) - 1){ + stop( + "No unitCol provided, and data_CO and data_DWP do not have a column ", + "that can unambiguously serve as unitCol. Cannot estimate M." + ) + } else { + unitCol <- unitCol[-bad] + } } } # if no sizeCol is provided, then the later analysis is done without @@ -134,12 +154,12 @@ estM <- function(data_CO, data_SS, data_DWP, frac = 1, c_out <- which(rowSums(gDf) == 0) if (length(c_out) == 0){ n <- length(gDf) - Mhat <- ((rcbinom(n, 1/gDf, gDf)) - (Ecbinom(gDf) - 1))/gDf + Mhat <- ((cbinom::rcbinom(n, 1/gDf, gDf)) - (Ecbinom(gDf) - 1))/gDf } else { Mhat <- array(0, dim = c(dim(data_CO)[1], nsim)) gDf <- gDf[-c_out, ] n <- length(gDf) - Mhat[-c_out,] <- ((rcbinom(n, 1/gDf, gDf)) - (Ecbinom(gDf) - 1))/gDf + Mhat[-c_out,] <- ((cbinom::rcbinom(n, 1/gDf, gDf)) - (Ecbinom(gDf) - 1))/gDf } out <- list(Mhat = Mhat, Aj = est$Aj, ghat = est$ghat, Xtot = nrow(data_CO)) class(out) <- c("estM", "list") diff --git a/R/searcher_efficiency_functions.R b/R/searcher_efficiency_functions.R index 4bb98013b7dc4a7fc2da5728c9388715f12f80a0..4a3943f44e451f2cd04a615ba029e6cffb256981 100644 --- a/R/searcher_efficiency_functions.R +++ b/R/searcher_efficiency_functions.R @@ -568,11 +568,11 @@ pkLogLik <- function(misses, foundOn, beta, nbeta_p, cellByCarc, maxmisses, powk <- matrix(k, nrow = ncell, ncol = maxmisses + 1) powk[ , 1] <- 1 - powk <- rowCumprods(powk) + powk <- matrixStats::rowCumprods(powk) pmiss <- matrix(1 - (p * powk[ , 1:(maxmisses + 1)]), nrow = ncell) - pmiss <- rowCumprods(pmiss) - pfind <- rowDiffs(1 - pmiss) + pmiss <- matrixStats::rowCumprods(pmiss) + pfind <- matrixStats::rowDiffs(1 - pmiss) pfind_si <- cbind(pk[ , 1], pfind) notFoundCell <- cellByCarc[foundOn == 0] @@ -1167,9 +1167,9 @@ SEsi <- function(days, pk){ } else { powk <- array(rep(pk[, 2], maxmiss + 1), dim = c(npk, maxmiss + 1)) powk[ , 1] <- 1 - powk <- rowCumprods(powk) + powk <- matrixStats::rowCumprods(powk) pfind.si <- pk[, 1] * powk * cbind( - rep(1, npk), rowCumprods(1 - (pk[, 1] * powk[, 1:maxmiss])) + rep(1, npk), matrixStats::rowCumprods(1 - (pk[, 1] * powk[, 1:maxmiss])) ) } return(t(pfind.si)) diff --git a/R/splits_figure_functions.R b/R/splits_figure_functions.R index 8a9dda3f84ecbcad6353451bdb54f2e5c0ac6dae..637bd6a201aaf4b83d888663916e2176c5a10c96 100644 --- a/R/splits_figure_functions.R +++ b/R/splits_figure_functions.R @@ -58,12 +58,12 @@ plot.splitSummary <- function(x, rate = FALSE, ...){ if ((vartype[1] %in% c("time", "SS")) & rate) { hwid <- deltaT/2 xlim <- range(times) - ylim <- range(rowQuantiles(splits[[vi]], + ylim <- range(matrixStats::rowQuantiles(splits[[vi]], probs = c(alpha/2, 1 - alpha/2))/deltaT) } else { hwid <- rep(0.15, nlevel_h) # half-width of boxes xlim <- c(1, nlevel_h) + 0.5 * c(-1, 1) - ylim <- range(rowQuantiles(splits[[vi]], + ylim <- range(matrixStats::rowQuantiles(splits[[vi]], probs = c(alpha/2, 1 - alpha/2))) } if (vi == 1 && !is.null(try(plot.new(), silent = TRUE))){ diff --git a/R/splits_functions.R b/R/splits_functions.R index 2369347f5f1cded4a8cf9737a4b88c9ffb96058b..7f4dd9cb717b51bb0f86a1ac575a8647b70f0de4 100644 --- a/R/splits_functions.R +++ b/R/splits_functions.R @@ -1,4 +1,4 @@ -#' @title Estimate the number of fatalities in each search interval throughout +#' @title Estimate the number of fatalities in each search interval throughout #' the monitoring period. #' #' @description A carcass that is observed in a given search may have arrived @@ -144,8 +144,8 @@ calcTsplit <- function(rate, days, tsplit){ #' period into 30-day intervals, and \code{calcSplits()} would return #' mortality estimates for each of the intervals. #' -#' @param M \code{\link{estM}} object, containing numeric array (ncarc x nsim) of estimated -#' mortalities and other pieces +#' @param M \code{\link{estM}} object, containing numeric array (ncarc x nsim) +#' of estimated mortalities and other pieces #' #' @param split_CO Character vector of names of splitting covariates to be #' found in the \code{data_CO} data frame. No more than two \code{split_CO} @@ -470,7 +470,7 @@ calcSplits <- function(M, split_CO = NULL, data_CO = NULL, } } #protection against unintended loss of attr's - splits <- sticky(splits) + splits <- sticky::sticky(splits) attr(splits, "vars") <- c(split_h$name, split_v$name) attr(splits, "type") <- c(split_h$type, split_v$type) if (!is.null(split_h) && (split_h$type %in% c("time", "SS"))){ @@ -535,7 +535,7 @@ summary.splitFull <- function(object, CL = 0.90, ...){ splits$M <- matrix(splits$M, nrow = 1) splits$X <- matrix(splits$X, nrow = 1) } - sumry <- rowQuantiles(splits$M, probs = probs) + sumry <- matrixStats::rowQuantiles(splits$M, probs = probs) ind <- (sumry < splits$X) sumry <- (sumry * !ind) + (splits$X * ind) sumry <- cbind(X = splits$X, sumry) @@ -545,7 +545,7 @@ summary.splitFull <- function(object, CL = 0.90, ...){ splits$X <- lapply(splits$X, function(x) matrix(x, nrow = 1)) } sumry <- lapply(splits$M, function(x){ - cbind(rowQuantiles(x, probs = probs)) + cbind(matrixStats::rowQuantiles(x, probs = probs)) }) for (levi in 1:length(sumry)){ ind <- (sumry[[levi]] < splits$X[[levi]]) diff --git a/R/utility_functions.R b/R/utility_functions.R index b35b43bee1f0665ac055d67680a7ba0df0ff8798..edb32029c9f804cffe1dc37a57aa07eada134793 100644 --- a/R/utility_functions.R +++ b/R/utility_functions.R @@ -1,8 +1,9 @@ -#' Compute the logit +#' @title Compute the logit or anti-logit #' -#' @param x A probability (between 0 and 1, inclusive). +#' @param x A number. For \code{logit}, a probability (between 0 and 1, +#' inclusive). For \code{alogit}, any real number. #' -#' @return The logit of \code{x}. +#' @return \code{logit}: The logit of \code{x}. #' #' @examples #' logit(0.5) @@ -13,11 +14,9 @@ logit <- function(x) { log(x / (1 - x)) } -#' Compute the anti-logit. +#' @rdname logit #' -#' @param x A number. -#' -#' @return The anti-logit of \code{x}. +#' @return \code{alogit}: The anti-logit of \code{x}. #' #' @examples #' alogit(0) @@ -28,13 +27,13 @@ alogit <- function(x) { 1 / (1 + exp(-x)) } -#' @title Get the length of real things +#' @title Get the length of real (non-NA) things #' -#' @description Length of non-missing values in a vector +#' @description Length of non-missing (non-\code{NA}) values in a vector. #' -#' @param x vector of values +#' @param x Vector of values, some of which many be \code{NA}. #' -#' @return integer of how many non-NA values in x +#' @return Integer count of how many non-\code{NA} values in \code{x}. #' #' @examples #' x <- c(1, 2, NA, 3) @@ -49,15 +48,15 @@ trueLength <- function(x){ #' @title Is a vector never decreasing? #' -#' @description Check if a vector is never decreasing +#' @description Check if a vector is never decreasing. #' -#' @param x vector of values +#' @param x Vector of numeric values. #' -#' @param tiesOK logical if ties are ok or not +#' @param tiesOK Logical indicator if ties are ok or not. #' -#' @param na.rm logical if NAs are to be removed or not +#' @param na.rm Logical indicator if NAs are to be removed or not. #' -#' @return logical value +#' @return Logical value. #' #' @export #' @@ -77,13 +76,14 @@ isNeverDecreasing <- function(x, tiesOK = TRUE, na.rm = TRUE){ #' @title Calculate day of study from calendar date #' -#' @description Convert calendar date to day from reference +#' @description Convert calendar date to integer day from a reference date +#' (\code{ref}). #' -#' @param date date to convert +#' @param date A date or vector of dates to convert to days. #' -#' @param ref reference date +#' @param ref Reference date. #' -#' @return converted days from reference +#' @return Numeric value(s) of days from \code{ref}. #' #' @examples #' x <- c("2018-01-01", "2018-02-01") @@ -104,18 +104,18 @@ dateToDay <- function(date, ref = NULL){ #' Checks whether a vector of data can be interpreted as dates #' -#' @description Checks whether the dates are in a standard format and sensible. -#' If so, function returns the dates converted to R standard yyyy-mm-dd format; -#' Acceptable formats are yyyy-mm-dd, yyyy/mm/dd, mm/dd/yyyy, and dd/mm/yyyy. -#' If format is mm/dd/yyyy or dd/mm/yyyy, the dates must be interpretable -#' unambiguously. Also, dates must be later than 1900-01-01. This additional -#' check provides some protection against common data entry errors like -#' entering a year as 0217 or 1017 instead of 2017. +#' @description Checks whether the dates are in a standard format and +#' sensible. If so, function returns the dates converted to ISO 8601 +#' yyyy-mm-dd format. Acceptable formats are yyyy-mm-dd, yyyy/mm/dd, +#' mm/dd/yyyy, and dd/mm/yyyy. If format is mm/dd/yyyy or dd/mm/yyyy, the +#' dates must be interpretable unambiguously. Also, dates must be later than +#' 1900-01-01. This additional check provides some protection against common +#' data entry errors like entering a year as 0217 or 1017 instead of 2017. #' -#' @param testdate date(s) to check and format +#' @param testdate Date(s) to check and format. #' -#' @return dates formatted as yyyy-mm-dd (if possible) or NULL (if some value is -#' not interpretable as a date after 1900-01-01). +#' @return dates formatted as yyyy-mm-dd (if possible) or NULL (if some value +#' is not interpretable as a date after 1900-01-01). #' #' @examples #' checkDate("02/20/2018") @@ -123,7 +123,6 @@ dateToDay <- function(date, ref = NULL){ #' #' @export #' - checkDate <- function(testdate){ beginningOfTime <- as.Date("1900-01-01") canDate <- try(as.Date(testdate), silent = TRUE) @@ -132,7 +131,9 @@ checkDate <- function(testdate){ all(canDate > beginningOfTime)) return (canDate) formats <- list("%m/%d/%Y", "%d/%m/%Y", "%Y/%m/%d") - canDate <- lapply(formats, function(x) try(as.Date(testdate, tryFormats = x), silent = TRUE)) + canDate <- lapply(formats, + function(x) try(as.Date(testdate, tryFormats = x), + silent = TRUE)) canForm <- which(lapply(canDate, class) != "try-error") if (length(canForm) == 0) return (NULL) for (i in 1:length(canForm)){ @@ -152,11 +153,11 @@ checkDate <- function(testdate){ #' @title Expected value of a continuous binomial with size = 1/g #' #' @description Calculates the expected value of a continuous binomial random -#' variable with size = 1/g. Uses internal-only data +#' variable with size = 1/g. Uses internal-only data. #' -#' @param prob Vector of probabilities +#' @param prob Vector of probabilities. #' -#' @return mean +#' @return Mean value of the probabilities. #' #' @export #' @@ -170,9 +171,9 @@ Ecbinom <- function(prob){ #' @title Generic S3 function for summarizing AICc #' #' @description Extract AICc values from \code{pkm}, \code{pkmSet}, -#' \code{pkmSetSize}, \code{cpm}, \code{cpmSet}, and \code{cpmSetSize} +#' \code{pkmSetSize}, \code{cpm}, \code{cpmSet}, and \code{cpmSetSize}. #' -#' @param x is the model or list of models to extract AICc values from +#' @param x Model or list of models to extract AICc values from. #' #' @param ... further arguments passed to or from other methods #' @@ -196,45 +197,3 @@ aicc <- function(x, ... ){ print.corpus_frame <- function(x, ...){ corpus::print.corpus_frame(x, rows = 80) } - -disclaimers <- function(){ - out <- list(USGS = paste0( -# "This software is preliminary or provisional and is subject to revision. ", -# "It is being provided to meet the need for timely best science. The ", -# "software has not received final approval by the U.S. Geological Survey ", -# "(USGS). No warranty, expressed or implied, is made by the USGS or the U.S. ", -# "Government as to the functionality of the software and related material ", -# "nor shall the fact of release constitute any such warranty. The software ", -# "is provided on the condition that neither the USGS nor the U.S. Government ", -# "shall be held liable for any damages resulting from the authorized or ", -# "unauthorized use of the software."), - "This software has been approved for release by the U.S. Geological ", - "Survey (USGS). Although the software has been subjected to rigorous ", - "review, the USGS reserves the right to update the software as needed ", - "pursuant to further analysis and review. No warranty, expressed or ", - "implied, is made by the USGS or the U.S. Government as to the ", - "functionality of the software and related material nor shall the fact of ", - "release constitute any such warranty. Furthermore, the software is ", - "released on condition that neither the USGS nor the U.S. Government ", - "shall be held liable for any damages resulting from its authorized or ", - "unauthorized use."), - WEST = paste0( - "This program is an 'AS IS' without warranty of any kind, ", - "either expressed or implied, including but not limited to, ", - "the implied warranties of merchantability and fitness for a ", - "particular purpose. The entire risk as to the quality and ", - "performance of the program is with you. Should the program ", - "prove defective, you assume all cost of all necessary ", - "servicing, repair or correction. If this program is modified ", - "and/or redistributed, Western EcoSystems Technology, Inc. is ", - "not liable for any damages, including any general, special, ", - "incidental or consequential damages arising out of the use or ", - "inability to use this program (including but not limited to ", - "loss of data or data being rendered inaccurate or losses ", - "sustained by you or third parties or a failure of the program ", - "to operate with any other programs), even if such holder or ", - "other party has been advised of the possibility of such ", - "damages.") - ) - out -} diff --git a/README.md b/README.md index df97a1bd72391ed5620235d7e18d937ada7c70b4..a2393b1813d53f2d6b5074e858a8dbf9c8970bd2 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,4 @@ -# GenEst_beta - +# GenEst <img src = 'inst/app/www/GenEst.png' height = '80' align="right" /> ## GenEst: Generalized Fatality Estimator @@ -9,10 +8,10 @@ and carcass data. ## DISCLAIMER -This software is preliminary or provisional and is subject to revision. It is being provided to meet the need for timely best science. The software has not received final approval by the U.S. Geological Survey (USGS). No warranty, expressed or implied, is made by the USGS or the U.S. Government as to the functionality of the software and related material nor shall the fact of release constitute any such warranty. The software is provided on the condition that neither the USGS nor the U.S. Government shall be held liable for any damages resulting from the authorized or unauthorized use of the software. For approved versions of the software, click on "Tags" under the "Repository" tab on the left sidebar. +This software is preliminary or provisional and is subject to revision. It is being provided to meet the need for timely best science. The software has not received final approval by the U.S. Geological Survey (USGS). No warranty, expressed or implied, is made by the USGS or the U.S. Government as to the functionality of the software and related material nor shall the fact of release constitute any such warranty. The software is provided on the condition that neither the USGS nor the U.S. Government shall be held liable for any damages resulting from the authorized or unauthorized use of the software. ## Installation -With this preliminary version of GenEst, setup and installation require several steps. Do not skip any steps. +Setup and installation require several steps. Do not skip any steps. ### Updated version of R (>= 3.5.0, released on 23 April 2018): R is free and open source software for statistical computing. If R is not installed on your computer or if your version of R is <3.5.0, download and install the latest version from https://cran.r-project.org/, following the instructions provided at the site. In particular, "Download" and then "install R for the first time" (if working in Windows), or "Download" and then follow the further instructions on the subsequent web page (if working on Mac OS or Linux-like OS). If you already have an older copy of R installed on your computer, the new version will be installed alongside the old. Unless you know a reason why you want to keep both versions, it is usually a good idea to uninstall the old version to avoid confusion and clutter. @@ -24,27 +23,28 @@ NOTE TO EXPERIENCED R USERS: When you install a new version of R, packages that Several third-party pacakges are required; all are free and open source and available from CRAN. The easiest way to install them is to run the following commands in R (with guidance concerning potential dialog boxes given below the commands): ``` -package_new <- c("corpus", "cbinom", "DT", "gsl", "gtools", "htmltools", "lubridate", + +package_new <- c("cbinom", "corpus", "DT", "gsl", "gtools", "htmltools", "lubridate", "matrixStats", "mvtnorm", "Rcpp", "shiny", "shinyjs", "sticky", "survival") package_new <- package_new[!(package_new %in% installed.packages()[,"Package"])] if(length(package_new) > 0) install.packages(package_new) ``` -- If asked about a "CRAN mirror", choose the nearest location. --- If asked whether you want to use a "personal library instead", choose "Yes" +-- If asked whether you want to use a "personal library", choose "Yes" -- If you are on Windows and are asked whether you want to install packages and their dependencies "from source", choose "No" (unless you are ready to go to lunch, in which case, you can select "Yes" and the installation may well be done by the time you get back). ### GenEst: -Click on "Tags" under the "Repository" tab on the left sidebar and then click the link for the specific release you want. +Click on "Tags" under the "Repository" tab on the left sidebar at https://code.usgs.gov/ecosystems/GenEst and then click the link for the specific release you want. --- For Windows, download the compressed folder GenEst_x.x.x.zip (do not unzip) and note where it is stored. You will install from the local .zip folder. +-- For Windows, download the compressed folder GenEst_1.x.x.zip (do not unzip) and note where it is stored. You will install from the local .zip folder. --- For Mac OS or Unix-like OS, download the compressed file GenEst_x.x.x.tar.gz and note where it is stored. You will install from the local .tar.gz file. +-- For Mac OS or Unix-like OS, download the compressed file GenEst_1.x.x.tar.gz and note where it is stored. You will install from the local .tar.gz file. If you are working directly in R (not R Studio), run the following command: ``` -install.packages(file.choose()) # and navigate to the package archive file you just downloaded: GenEst_x.x.x +install.packages(file.choose()) # and navigate to the package archive file you just downloaded: GenEst_1.x.x.xxx ``` If you are working in R Studio: @@ -57,8 +57,6 @@ Browse to where you saved the zip file, and open it so it appears in the "Packag Click the Install button on the dialog box. -NOTE: This will all be more straightforward once the package is published on CRAN. - ## Getting Started ### Graphical user interface (GUI): easy-to-use buttons and menus @@ -68,19 +66,19 @@ library(GenEst) runGenEst() ``` -Download the User Guide from the "user" folder at to learn about opening GenEst, data requirements, examples, etc. +Download the User Guide from a link near the bottom of the "Help" page in the app or from https://pubs.usgs.gov/tm/7c19/tm7c19.pdf ### R command line: more functionality and flexibility ``` library(GenEst) browseVignettes("GenEst") +?GenEst ``` Also, help files for GenEst functions are accessible in the standard R way, for example: ``` ?pkm -help(pkm) ``` ## Further Reading -GenEst User Guide: https://pubs.usgs.gov/tm/7c19/tm7c19.pdf +GenEst User Guide: https://doi.org/10.3133/tm7C19 -GenEst Statistical Models: https://pubs.usgs.gov/tm/7a2/tm7a2.pdf +GenEst Statistical Models: https://doi.org/10.3133/tm7A2 diff --git a/REVISIONS.txt b/REVISIONS.txt new file mode 100644 index 0000000000000000000000000000000000000000..f499eb378a1fb35abf3850f010e87b69d7ab1f66 --- /dev/null +++ b/REVISIONS.txt @@ -0,0 +1,46 @@ +Revision log + +2018.11.19 +v1.1.1 + +* estg: error-check added for carcasses discovered before searches begin + +* estM: error-check added for CO units not included in DWP + +* cpm0: sample size was missing from cp model tables when s parameter has an +additive model (e.g., s ~ A + B). Fixed + +2018.11.14 +v1.1.0 + +* added links to published GenEst User Guide and GenEst Statistical Models + +* corrected a GUI bug that prevented mortality estimation when CO and DWP files +had more than one column name in common + +* corrected a GUI bug that caused intermittent failure to update some results +figs when user selected new models. The bug was caused by figs sometimes not +being properly suspended when hidden. + +* corrected a bug that caused ppersist to return NaN or 0 for Weibull +distributed persistence times when the variance of the scale parameter was very +large. The error occured when all CP field trial carcasses were removed in the +span of two intervals. Improved error-checking and an updated calculation of +Weibull ppersist for data that generates fits with very large uncertainty in +scale parameter. + +* corrected a GUI bug that erroneously allowed the drop-down selection menus for +mortality splits to permit more than two covariates to be selected in certain +cases where an improper model was first entered, later corrected, and then a +third covariate selected from the temporal splits menu. Results figures and +tables would show the proper covariates, but they would not be properly +reflected in the drop-downs. This was due to an error in the conditionals for +the drop-down lists not being properly updated. It had no effect on calculations +or results. + +* GUI code was revised for readability and easier maintenance: some groups of +very small functions were consolidated into larger functions, overly long +variable names were shortened, some groups of short files were consolidated into +longer files. + +* Documentation for GUI code was updated to facilitate code maintenance. \ No newline at end of file diff --git a/code.json b/code.json index d3afe097320883e7c9fa323b68e64c152138319e..e5da2f2f1bb7626d7a1a9eb737e383e6c589b47f 100644 --- a/code.json +++ b/code.json @@ -1,12 +1,12 @@ [ { - "name": "GenEst", + "Name": "GenEst", "organization": "U.S. Geological Survey", "description": "R package for estimating bird and bat fatalities at wind and solar power facilities", - "version": "1.0.0", + "version": "1.1.1", "status": "Release Candidate", - "permissions": { + "permissions": { "usageType": "openSource", "licenses": [ { @@ -15,7 +15,6 @@ } ] }, - "homepageURL": "https://code.usgs.gov/ecosystems/GenEst", "downloadURL": "https://code.usgs.gov/ecosystems/GenEst/archive/master.zip", "disclaimerURL": "https://code.usgs.gov/ecosystems/GenEst/blob/master/DISCLAIMER.md", @@ -25,7 +24,7 @@ "laborHours": 0, "tags": [ - "GenEst", + "GenEst", "mortality estimator", "turbines birds bats", "solar birds", @@ -45,7 +44,6 @@ }, "date": { - "metadataLastUpdated": "2018-10-15" + "metadataLastUpdated": "2018-11-19" } } -] diff --git a/deployment/GenEst/server.R b/deployment/GenEst/server.R index 24f92869a28f5dd30dc62b10dc1877c06c27e6ff..36463c13dd5e3d7a5b2ef0863c715075409b66f1 100644 --- a/deployment/GenEst/server.R +++ b/deployment/GenEst/server.R @@ -1,217 +1,4 @@ -## server.R - library(shiny) library(GenEst) -shinyServer( - function(input, output, session){ - - rv <- createReactiveValues() - output <- initialOutput(rv, output) - msgs <- msgList() - - observeEvent(input$clear_all, { - rv <- update_rv_clear_all(rv, input) - output <- update_output_clear_all(rv, output) - update_input_clear_all(rv, session) - }) - - observeEvent(input$file_SE, { - rv <- update_rv_data_SE(rv, input) - output <- update_output_data_SE(rv, output) - update_input_data_SE(rv, session) - }) - observeEvent(input$file_SE_clear, { - rv <- update_rv_data_SE_clear(rv, input) - output <- update_output_data_SE_clear(rv, output) - update_input_data_SE_clear(rv, session) - }) - observeEvent(input$file_CP, { - rv <- update_rv_data_CP(rv, input) - output <- update_output_data_CP(rv, output) - update_input_data_CP(rv, session) - }) - observeEvent(input$file_CP_clear, { - rv <- update_rv_data_CP_clear(rv, input) - output <- update_output_data_CP_clear(rv, output) - update_input_data_CP_clear(rv, session) - }) - observeEvent(input$file_SS, { - rv <- update_rv_data_SS(rv, input) - output <- update_output_data_SS(rv, output) - update_input_data_SS(rv, session) - }) - observeEvent(input$file_SS_clear, { - rv <- update_rv_data_SS_clear(rv, input) - output <- update_output_data_SS_clear(rv, output) - update_input_data_SS_clear(rv, session) - }) - observeEvent(input$file_DWP, { - rv <- update_rv_data_DWP(rv, input) - output <- update_output_data_DWP(rv, output) - update_input_data_DWP(rv, session) - }) - observeEvent(input$file_DWP_clear, { - rv <- update_rv_data_DWP_clear(rv, input) - output <- update_output_data_DWP_clear(rv, output) - update_input_data_DWP_clear(rv, session) - }) - observeEvent(input$file_CO, { - rv <- update_rv_data_CO(rv, input) - output <- update_output_data_CO(rv, output) - update_input_data_CO(rv, session) - }) - observeEvent(input$file_CO_clear, { - rv <- update_rv_data_CO_clear(rv, input) - output <- update_output_data_CO_clear(rv, output) - update_input_data_CO_clear(rv, session) - }) - - observeEvent(input$sizeCol, ignoreNULL = FALSE, { - rv <- update_rv_sizeCol(rv, input) - output <- update_output_sizeCol(rv, output) - update_input_sizeCol(rv, input, session) - }) - - observeEvent(input$obsCols_SE, ignoreNULL = FALSE, { - rv <- update_rv_cols_SE_obs(rv, input) - output <- update_output_cols_SE(rv, output) - update_input_cols_SE_obs(rv, session) - }) - observeEvent(input$preds_SE, ignoreNULL = FALSE, { - rv <- update_rv_cols_SE_preds(rv, input) - output <- update_output_cols_SE(rv, output) - update_input_cols_SE_preds(rv, session) - }) - observeEvent(input$runMod_SE, { - msgs$ModSE <<- msgModRun(msgs, "SE") - rv <- update_rv_run_SE(rv, input) - output <- update_output_run_SE(rv, output) - update_input_run_SE(rv, session) - msgs$ModSE <<- msgModDone(msgs, rv, "SE") - }) - observeEvent(input$runMod_SE_clear, { - clearNotifications(msgs) - rv <- update_rv_run_SE_clear(rv, input) - output <- update_output_run_SE_clear(rv, output) - update_input_run_SE_clear(rv, session) - }) - observeEvent(input$outsizeclassSE, { - rv <- update_rv_outsc_SE(rv, input) - output <- update_output_outsc_SE(rv, output) - update_input_outsc_SE(rv, session) - }) - observeEvent(input$outSEp, { - rv <- update_rv_outpk_SE(rv, input) - output <- update_output_outpk_SE(rv, output) - }) - observeEvent(input$outSEk, { - rv <- update_rv_outpk_SE(rv, input) - output <- update_output_outpk_SE(rv, output) - }) - - observeEvent(input$ltp, ignoreNULL = FALSE, { - rv <- update_rv_cols_ltp(rv, input) - output <- update_output_cols_CP(rv, output) - update_input_cols_ltp(rv, session) - }) - observeEvent(input$fta, ignoreNULL = FALSE, { - rv <- update_rv_cols_fta(rv, input) - output <- update_output_cols_CP(rv, output) - update_input_cols_fta(rv, session) - }) - observeEvent(input$preds_CP, ignoreNULL = FALSE, { - rv <- update_rv_cols_CP_preds(rv, input) - output <- update_output_cols_CP(rv, output) - update_input_cols_CP_preds(rv, session) - }) - observeEvent(input$runMod_CP, { - msgs$ModCP <<- msgModRun(msgs, "CP") - rv <- update_rv_run_CP(rv, input) - output <- update_output_run_CP(rv, output) - update_input_run_CP(rv, session) - msgs$ModCP <<- msgModDone(msgs, rv, "CP") - }) - observeEvent(input$runMod_CP_clear, { - clearNotifications(msgs) - rv <- update_rv_run_CP_clear(rv, input) - output <- update_output_run_CP_clear(rv, output) - update_input_run_CP_clear(rv, session) - }) - observeEvent(input$outsizeclassCP, { - rv <- update_rv_outsc_CP(rv, input) - output <- update_output_outsc_CP(rv, output) - update_input_outsc_CP(rv, session) - }) - observeEvent(input$outCPdist, { - rv <- update_rv_outdls_CP(rv, input) - output <- update_output_outdls_CP(rv, output) - }) - observeEvent(input$outCPl, { - rv <- update_rv_outdls_CP(rv, input) - output <- update_output_outdls_CP(rv, output) - }) - observeEvent(input$outCPs, { - rv <- update_rv_outdls_CP(rv, input) - output <- update_output_outdls_CP(rv, output) - }) - - observeEvent(input$runMod_M, { - msgs$ModM <<- msgModRun(msgs, "M") - rv <- update_rv_run_M(rv, input) - output <- update_output_run_M(rv, output) - update_input_run_M(rv, session) - msgs$ModM <<- msgModDone(msgs, rv, "M") - }) - observeEvent(input$runMod_M_clear, { - clearNotifications(msgs) - rv <- update_rv_run_M_clear(rv, input) - output <- update_output_run_M_clear(rv, output) - update_input_run_M_clear(rv, session) - }) - observeEvent(input$splitM, { - rv <- update_rv_split_M(rv, input) - output <- update_output_split_M(rv, output) - msgs$ModM <<- msgModDone(msgs, rv, "split") - }) - observeEvent(input$splitM_clear, { - clearNotifications(msgs) - rv <- update_rv_split_M_clear(rv, input) - output <- update_output_split_M_clear(rv, output) - update_input_split_M_clear(rv, session) - }) - observeEvent(input$transposeSplit, { - rv <- update_rv_transpose_split(rv) - output <- update_output_transpose_split(rv, output) - }) - - observeEvent(input$useSSdata, { - rv <- update_rv_useSSdata(rv) - msgs$SS <<- msgSSavgFail(msgs, rv) - output <- update_output_SS(rv, output) - update_input_useSSdata(rv, session) - }) - observeEvent(input$useSSinputs, { - rv <- update_rv_useSSinputs(rv, input) - msgs$SS <<- msgSSinputFail(msgs, rv) - output <- update_output_SS(rv, output) - }) - observeEvent(input$runMod_g, { - msgs$Modg <<- msgModRun(msgs, "g") - rv <- update_rv_run_g(rv, input) - output <- update_output_run_g(rv, output) - update_input_run_g(rv, session) - msgs$Modg <<- msgModDone(msgs, rv, "g") - }) - observeEvent(input$runMod_g_clear, { - clearNotifications(msgs) - rv <- update_rv_run_g_clear(rv, input) - output <- update_output_run_g_clear(rv, output) - update_input_run_g_clear(rv, session) - }) - observeEvent(input$outsizeclassg, { - rv <- update_rv_outsc_g(rv, input) - output <- update_output_outsc_g(rv, output) - }) - } -) \ No newline at end of file +GenEstServer \ No newline at end of file diff --git a/deployment/GenEst/ui.R b/deployment/GenEst/ui.R index af047845d9d0e6e81b736265ab4393f9eaea4e3d..641896515f7fb5a3d3ee3f279141664d3b846c5a 100644 --- a/deployment/GenEst/ui.R +++ b/deployment/GenEst/ui.R @@ -1,13 +1,4 @@ -## ui.R - library(shiny) library(GenEst) -shinyUI( - navbarPage(navbar(), collapsible = TRUE, windowTitle = createvtext("Name"), - tabPanel("Data Input", dataInputPanel()), - tabPanel("Analyses", analysisPanel()), - tabPanel("Help", helpPanel("deploy")), - selected = "Help" - ) -) \ No newline at end of file +GenEstUI(appType = "deploy") \ No newline at end of file diff --git a/deployment/README.md b/deployment/README.md index 8409b5fe1d0bf2a422c4bf39e24739d8978efd5c..5fd16d36bba65f86e8f0aab82c4aeb4355373c61 100644 --- a/deployment/README.md +++ b/deployment/README.md @@ -7,9 +7,9 @@ account and have configured **rsconnect** to work with your account. 1. Download of the suite of dependency packages: ``` -packages <- c("cbinom", "devtools", "DT", "gsl", "gtools", +packages <- c("cbinom", "corpus", "devtools", "DT", "gsl", "gtools", "htmltools", "lubridate", "matrixStats", "mvtnorm", "Rcpp", - "rsconnect", "shiny", "shinyjs", "sticky", "survival") + "rsconnect", "shiny", "shinyjs", "sticky", "survival") packages <- package_new[!(packages %in% installed.packages()[,"Package"])] if(length(packages) > 0){ install.packages(packages) diff --git a/inst/app/server.R b/inst/app/server.R index 23d5216f1cfbe823fe7cc0686a5f48d564df81e1..dbd31b3c8579853c1792c1e09ebabedc6c589841 100644 --- a/inst/app/server.R +++ b/inst/app/server.R @@ -1,212 +1 @@ -function(input, output, session){ - -rv <- createReactiveValues() -output <- initialOutput(rv, output) -msgs <- msgList() -options(htmlwidgets.TOJSON_ARGS = list(na = 'string')) -options(DT.options = list(pageLength = 25)) - -observeEvent(input$clear_all, { - rv <- update_rv_clear_all(rv, input) - output <- update_output_clear_all(rv, output) - update_input_clear_all(rv, session) -}) -observeEvent(input$file_SE, { - rv <- update_rv_data_SE(rv, input) - output <- update_output_data_SE(rv, output) - update_input_data_SE(rv, session) -}) -observeEvent(input$file_SE_clear, { - rv <- update_rv_data_SE_clear(rv, input) - output <- update_output_data_SE_clear(rv, output) - update_input_data_SE_clear(rv, session) -}) -observeEvent(input$file_CP, { - rv <- update_rv_data_CP(rv, input) - output <- update_output_data_CP(rv, output) - update_input_data_CP(rv, session) -}) -observeEvent(input$file_CP_clear, { - rv <- update_rv_data_CP_clear(rv, input) - output <- update_output_data_CP_clear(rv, output) - update_input_data_CP_clear(rv, session) -}) -observeEvent(input$file_SS, { - rv <- update_rv_data_SS(rv, input) - output <- update_output_data_SS(rv, output) - update_input_data_SS(rv, session) -}) -observeEvent(input$file_SS_clear, { - rv <- update_rv_data_SS_clear(rv, input) - output <- update_output_data_SS_clear(rv, output) - update_input_data_SS_clear(rv, session) -}) -observeEvent(input$file_DWP, { - rv <- update_rv_data_DWP(rv, input) - output <- update_output_data_DWP(rv, output) - update_input_data_DWP(rv, session) -}) -observeEvent(input$file_DWP_clear, { - rv <- update_rv_data_DWP_clear(rv, input) - output <- update_output_data_DWP_clear(rv, output) - update_input_data_DWP_clear(rv, session) -}) -observeEvent(input$file_CO, { - rv <- update_rv_data_CO(rv, input) - output <- update_output_data_CO(rv, output) - update_input_data_CO(rv, session) -}) -observeEvent(input$file_CO_clear, { - rv <- update_rv_data_CO_clear(rv, input) - output <- update_output_data_CO_clear(rv, output) - update_input_data_CO_clear(rv, session) -}) - -observeEvent(input$sizeCol, ignoreNULL = FALSE, { - rv <- update_rv_sizeCol(rv, input) - output <- update_output_sizeCol(rv, output) - update_input_sizeCol(rv, input, session) -}) - -observeEvent(input$obsCols_SE, ignoreNULL = FALSE, { - rv <- update_rv_cols_SE_obs(rv, input) - output <- update_output_cols_SE(rv, output) - update_input_cols_SE_obs(rv, session) -}) -observeEvent(input$preds_SE, ignoreNULL = FALSE, { - rv <- update_rv_cols_SE_preds(rv, input) - output <- update_output_cols_SE(rv, output) - update_input_cols_SE_preds(rv, session) -}) -observeEvent(input$runMod_SE, { - msgs$ModSE <<- msgModRun(msgs, "SE") - rv <- update_rv_run_SE(rv, input) - output <- update_output_run_SE(rv, output) - update_input_run_SE(rv, session) - msgs$ModSE <<- msgModDone(msgs, rv, "SE") -}) -observeEvent(input$runMod_SE_clear, { - clearNotifications(msgs) - rv <- update_rv_run_SE_clear(rv, input) - output <- update_output_run_SE_clear(rv, output) - update_input_run_SE_clear(rv, session) -}) -observeEvent(input$outsizeclassSE, { - rv <- update_rv_outsc_SE(rv, input) - output <- update_output_outsc_SE(rv, output) - update_input_outsc_SE(rv, session) -}) -observeEvent(input$outSEp, { - rv <- update_rv_outpk_SE(rv, input) - output <- update_output_outpk_SE(rv, output) -}) -observeEvent(input$outSEk, { - rv <- update_rv_outpk_SE(rv, input) - output <- update_output_outpk_SE(rv, output) -}) - -observeEvent(input$ltp, ignoreNULL = FALSE, { - rv <- update_rv_cols_ltp(rv, input) - output <- update_output_cols_CP(rv, output) - update_input_cols_ltp(rv, session) -}) -observeEvent(input$fta, ignoreNULL = FALSE, { - rv <- update_rv_cols_fta(rv, input) - output <- update_output_cols_CP(rv, output) - update_input_cols_fta(rv, session) -}) -observeEvent(input$preds_CP, ignoreNULL = FALSE, { - rv <- update_rv_cols_CP_preds(rv, input) - output <- update_output_cols_CP(rv, output) - update_input_cols_CP_preds(rv, session) -}) -observeEvent(input$runMod_CP, { - msgs$ModCP <<- msgModRun(msgs, "CP") - rv <- update_rv_run_CP(rv, input) - output <- update_output_run_CP(rv, output) - update_input_run_CP(rv, session) - msgs$ModCP <<- msgModDone(msgs, rv, "CP") -}) -observeEvent(input$runMod_CP_clear, { - clearNotifications(msgs) - rv <- update_rv_run_CP_clear(rv, input) - output <- update_output_run_CP_clear(rv, output) - update_input_run_CP_clear(rv, session) -}) -observeEvent(input$outsizeclassCP, { - rv <- update_rv_outsc_CP(rv, input) - output <- update_output_outsc_CP(rv, output) - update_input_outsc_CP(rv, session) -}) -observeEvent(input$outCPdist, { - rv <- update_rv_outdls_CP(rv, input) - output <- update_output_outdls_CP(rv, output) -}) -observeEvent(input$outCPl, { - rv <- update_rv_outdls_CP(rv, input) - output <- update_output_outdls_CP(rv, output) -}) -observeEvent(input$outCPs, { - rv <- update_rv_outdls_CP(rv, input) - output <- update_output_outdls_CP(rv, output) -}) - -observeEvent(input$runMod_M, { - msgs$ModM <<- msgModRun(msgs, "M") - rv <- update_rv_run_M(rv, input) - output <- update_output_run_M(rv, output) - update_input_run_M(rv, session) - msgs$ModM <<- msgModDone(msgs, rv, "M") -}) -observeEvent(input$runMod_M_clear, { - clearNotifications(msgs) - rv <- update_rv_run_M_clear(rv, input) - output <- update_output_run_M_clear(rv, output) - update_input_run_M_clear(rv, session) -}) -observeEvent(input$splitM, { - rv <- update_rv_split_M(rv, input) - output <- update_output_split_M(rv, output) - msgs$ModM <<- msgModDone(msgs, rv, "split") -}) -observeEvent(input$splitM_clear, { - clearNotifications(msgs) - rv <- update_rv_split_M_clear(rv, input) - output <- update_output_split_M_clear(rv, output) - update_input_split_M_clear(rv, session) -}) -observeEvent(input$transposeSplit, { - rv <- update_rv_transpose_split(rv) - output <- update_output_transpose_split(rv, output) -}) - -observeEvent(input$useSSdata, { - rv <- update_rv_useSSdata(rv) - msgs$SS <<- msgSSavgFail(msgs, rv) - output <- update_output_SS(rv, output) - update_input_useSSdata(rv, session) -}) -observeEvent(input$useSSinputs, { - rv <- update_rv_useSSinputs(rv, input) - msgs$SS <<- msgSSinputFail(msgs, rv) - output <- update_output_SS(rv, output) -}) -observeEvent(input$runMod_g, { - msgs$Modg <<- msgModRun(msgs, "g") - rv <- update_rv_run_g(rv, input) - output <- update_output_run_g(rv, output) - update_input_run_g(rv, session) - msgs$Modg <<- msgModDone(msgs, rv, "g") -}) -observeEvent(input$runMod_g_clear, { - clearNotifications(msgs) - rv <- update_rv_run_g_clear(rv, input) - output <- update_output_run_g_clear(rv, output) - update_input_run_g_clear(rv, session) -}) -observeEvent(input$outsizeclassg, { - rv <- update_rv_outsc_g(rv, input) - output <- update_output_outsc_g(rv, output) -}) -} - +GenEstServer \ No newline at end of file diff --git a/inst/doc/GenEstGUI.Rmd b/inst/doc/GenEstGUI.Rmd index 71c46f1423b7ae1f7df5c4c600b8c9ff4e7a939e..5e8b9e5429a1c8665aacdecaa764262e4e88d389 100644 --- a/inst/doc/GenEstGUI.Rmd +++ b/inst/doc/GenEstGUI.Rmd @@ -12,19 +12,43 @@ vignette: > # Overview This document describes the codebase used to create the GenEst Graphic User -Interface (GUI). +Interface (GUI). The Genest GUI is coded in HTML via external R packages +([DT](https://cran.r-project.org/package=DT), +[htmltools](https://cran.r-project.org/package=htmltools), +[shiny](https://cran.r-project.org/package=shiny), +[shinyjs](https://cran.r-project.org/package=shinyjs), -The Genest GUI is coded in HTML via external R packages (DT, [shiny](https://cran.r-project.org/package=shiny), htmltools, -shinyjs), as well as a number of internal functions to facilitate a simple, -human-readable codebase underlying the app. +as well as a number of internal functions to facilitate a simple, +human-readable codebase underlying the app. The goal being to allow GenEst +to evolve as fluidly as possible at the user interface. +>>>>>>> fully developed server function + +======= +as well as a number of internal functions to facilitate a simple, +human-readable codebase underlying the app. The goal being to allow GenEst +to evolve as fluidly as possible at the user interface. + +>>>>>>> 7c856b525c650c6abd71def292f47e99a1b9258f +# Execution + +The GUI is executed locally or as a deployed app following the basic approach +of shiny applications. For ease of implementation, we have created an overall +function to intialize the app, `runGenEst()`, which calls both the server and +UI codebases. Like most vintage Shiny apps, we employee the two-file system, +including a `ui.R` and `server.R` script, although each script is Spartan. The +`ui.R` script includes a single call to the `GenEstUI(appType)` function, +which starts the cascade of HTML-generating functions outlined in +**UI Function Hierarchy**. The `server.R` script includes a single reference +(not a call) to the function `GenEstServer`, which is detailed in +**Server Function Hierarchy**. # User Interface ### UI Function Hierarchy -The GenEst User Interface is constructed using pages, panels, tabs, and -widgets. The code is parsed into a series of hierarchical functions to -facilitate readability and mobility of specific UI components. +The GenEst User Interface is constructed in HTML using pages, panels, +tabs, and widgets. The code is parsed into a series of hierarchical functions +to facilitate readability and mobility of specific UI components. * `GenEstUI(appType)` * `dataInputPanel()` @@ -45,11 +69,11 @@ facilitate readability and mobility of specific UI components. * `GeneralInputsSidebar()` * `modelInputWidget("nsim")` * `modelInputWidget("CL")` - * `modelInputWidget("sizeCol")` + * `modelInputWidget("sizeclassCol")` * `SEPanel()` * `SESidebar()` - * `modelInputWidget("obsCols_SE")` - * `modelInputWidget("preds_SE")` + * `modelInputWidget("obsSE")` + * `modelInputWidget("predsSE")` * `modelInputWidget("kFixed")` * `modelRunWidget("SE")` * `modelOutputWidget("SE")` @@ -63,8 +87,8 @@ facilitate readability and mobility of specific UI components. * `CPSidebar()` * `modelInputWidget("ltp")` * `modelInputWidget("fta")` - * `modelInputWidget("preds_CP")` - * `modelInputWidget("dist")` + * `modelInputWidget("predsCP")` + * `modelInputWidget("dists")` * `modelRunWidget("CP")` * `modelOutputWidget("CP")` * `CPMainPanel()` @@ -75,16 +99,14 @@ facilitate readability and mobility of specific UI components. * `modelOutputPanel("CPModSelection")` * `MPanel()` * `MSidebar()` - * `modelInputWidget("kFill")` * `modelInputWidget("frac")` * `modelInputWidget("DWPCol")` - * `modelInputWidget("COdate")` + * `modelInputWidget("dateFoundCol")` * `modelRunWidget("M")` * `modelOutputWidget("M")` * `MMainPanel()` * `gPanel()` * `gSidebar()` - * `modelInputWidget("kFill_g")` * `modelInputWidget("gSearchInterval")` * `modelInputWidget("gSearchMax")` * `modelInputWidget("useSSinputs")` @@ -166,9 +188,108 @@ dictate content within the "Help" tab's subtabs. * `disclaimerUSGS()` * `disclaimerWEST(appType)` -# Execution +# Server Functionality -The GUI is executed locally or as a deployed app following the basic approach -of shiny applications. For ease of implementation, we have created an overall -function to intialize the app, `runGenEst()`, which calls both the server and -UI codebases. \ No newline at end of file +### Reactivity + +The server-side functionality operates using [Shiny's reactive +programming](https://shiny.rstudio.com/articles/reactivity-overview.html) +framework. In particular, we include a main `reactiveValues` list called +`rv`, that, in addition to the standard `input` and `output` lists is +passed among functions throughout the app. The `rv` list holds all of the +reactive values currently being used by the application. + +### Server Function Hierarchy + +The GenEst server code is a relatively flat hierarchy, especially in +comparison to the UI code. In particular, after a brief set of preamble +functions for preparing objects and options, `GenEstServer` makes many calls +to `observeEvent`, the reactive observation function, one call for each +of the possible events in the application (data load, model run or clear, +column selection, clear of contents). Each call also includes an +evaluation of the held-back "handler" code for the event returned by +the function `reaction`, with the handler being the code that +is to be evaluated when the event is observed. The expression is held-back +in `reaction` to minimize scoping issues associated with message-related +functions. + +* `GenEstServer(input, output, session)` + * `rv <- initialReactiveValues()` + * `output <- initialOutput(rv, output)` + * `msgs <- msgList()` + * `options(htmlwidgets.TOJSON_ARGS = list(na = 'string'))` + * `observeEvent(DT.options = list(pageLength = 25))` + * `observeEvent(input$clear_all, eval(reaction("clear_all")))` + * `observeEvent(input$file_SE, eval(reaction("file_SE")))` + * `observeEvent(input$file_SE_clear, eval(reaction("file_SE_clear")))` + * `observeEvent(input$file_CP, eval(reaction("file_CP")))` + * `observeEvent(input$file_CP_clear, eval(reaction("file_CP_clear")))` + * `observeEvent(input$file_SS, eval(reaction("file_SS")))` + * `observeEvent(input$file_SS_clear, eval(reaction("file_SS_clear")))` + * `observeEvent(input$file_DWP, eval(reaction("file_DWP")))` + * `observeEvent(input$file_DWP_clear, eval(reaction("file_DWP_clear")))` + * `observeEvent(input$file_CO, eval(reaction("file_CO")))` + * `observeEvent(input$file_CO_clear, eval(reaction("file_CO_clear")))` + + * `observeEvent(input$class, eval(reaction("class")), ignoreNULL = FALSE)` + + * `observeEvent(input$obsSE, eval(reaction("obsSE")), ignoreNULL = FALSE)` + * `observeEvent(input$predsSE, eval(reaction("predsSE")), ignoreNULL = FALSE)` + * `observeEvent(input$run_SE, eval(reaction("run_SE")))` + * `observeEvent(input$run_SE_clear, eval(reaction("run_SE_clear")))` + * `observeEvent(input$outSEclass, eval(reaction("outSEclass")))` + * `observeEvent(input$outSEp, eval(reaction("outSEp")))` + * `observeEvent(input$outSEk, eval(reaction("outSEk")))` + + * `observeEvent(input$ltp, eval(reaction("ltp")), ignoreNULL = FALSE)` + * `observeEvent(input$fta, eval(reaction("fta")), ignoreNULL = FALSE)` + * `observeEvent(input$predsCP, eval(reaction("predsCP")), ignoreNULL = FALSE)` + * `observeEvent(input$run_CP, eval(reaction("run_CP")))` + * `observeEvent(input$run_CP_clear, eval(reaction("run_CP_clear")))` + * `observeEvent(input$outCPclass, eval(reaction("outCPclass")))` + * `observeEvent(input$outCPdist, eval(reaction("outCPdist")))` + * `observeEvent(input$outCPl, eval(reaction("outCPl")))` + * `observeEvent(input$outCPs, eval(reaction("outCPs")))` + + * `observeEvent(input$run_M, eval(reaction("run_M")))` + * `observeEvent(input$run_M_clear, eval(reaction("run_M_clear")))` + * `observeEvent(input$split_M, eval(reaction("split_M")))` + * `observeEvent(input$split_M_clear, eval(reaction("split_M_clear")))` + * `observeEvent(input$transpose_split, eval(reaction("transpose_split")))` + + * `observeEvent(input$useSSdata, eval(reaction("useSSdata")))` + * `observeEvent(input$useSSinputs, eval(reaction("useSSinputs")))` + * `observeEvent(input$run_g, eval(reaction("run_g")))` + * `observeEvent(input$run_g_clear, eval(reaction("run_g_clear")))` + * `observeEvent(input$outgclass, eval(reaction("outgclass")))` + +The `reaction` function is, essentially, a parsed-text-generating +function. Depending upon the specific event (`eventName`, the only input), the +necessary set of function calls (messages for running, running the code, +messages for when done) is prepared for evaluation. The main function used to +do things within the handler code (when the event occurs) is `eventReaction`, +which calls three functions: `update_rv`, `update_output`, and `update_input`, +in that order (updating the output depends on the rv being updated already +and updating the input requires both the rv and output to be up-to-date): + +* `eventReaction(eventName, rv, input, output, session)` + * `update_rv(eventName, rv, input)` + * `update_output(eventName, rv, output)` + * `update_input(eventName, rv, input, session)` + +Because of the scoping set-up for Shiny apps, there is no need to assign +the returned elements for `update_rv` and `update_output` to anything, and +`update_input` works through `session` to direct its updates to the +application. + +Each of the three functions takes `eventName` as the first argument, +which is used to toggle amongst the possible actions to be taken with +respect to each of the lists. That is, each of the three `update_` functions +contains a large internal set of routines, and only the relevant ones are +called for a given function. This occurs via simple conditional code blocks +("if the eventType is this, do this") for each of the possible events, +thereby reducing the number of specific functions, but increasing the size +of the key functions. Within each of the three functions, some of the events +trigger a substantial amount of code while others only trigger a few (or no) +lines. Similarly, some of the handler expressions take virutally no time to +run, while others take a few minutes. \ No newline at end of file diff --git a/inst/doc/GenEstGUI.html b/inst/doc/GenEstGUI.html index 8ca07df86de3a90cd4bf6ee98eb45153f23272f3..1b433c27e808a71f195ef9a3f31d6b3cb840df6c 100644 --- a/inst/doc/GenEstGUI.html +++ b/inst/doc/GenEstGUI.html @@ -12,7 +12,7 @@ <meta name="author" content="Juniper L. Simonis" /> -<meta name="date" content="2018-09-29" /> +<meta name="date" content="2018-11-02" /> <title>GenEst - Graphic User Interface</title> @@ -214,20 +214,23 @@ code > span.fu { color: #900; font-weight: bold; } code > span.er { color: #a61 <h1 class="title toc-ignore">GenEst - Graphic User Interface</h1> <h4 class="author"><em>Juniper L. Simonis</em></h4> -<h4 class="date"><em>2018-09-29</em></h4> +<h4 class="date"><em>2018-11-02</em></h4> <div id="overview" class="section level1"> <h1>Overview</h1> -<p>This document describes the codebase used to create the GenEst Graphic User Interface (GUI).</p> -<p>The Genest GUI is coded in HTML via external R packages (DT, <a href="https://cran.r-project.org/web/packages/shiny">shiny</a>, htmltools, shinyjs), as well as a number of internal functions to facilitate a simple, human-readable codebase underlying the app.</p> +<p>This document describes the codebase used to create the GenEst Graphic User Interface (GUI). The Genest GUI is coded in HTML via external R packages (<a href="https://cran.r-project.org/web/packages/DT">DT</a>, <a href="https://cran.r-project.org/web/packages/htmltools">htmltools</a>, <a href="https://cran.r-project.org/web/packages/shiny">shiny</a>, <a href="https://cran.r-project.org/web/packages/shinyjs">shinyjs</a>, as well as a number of internal functions to facilitate a simple, human-readable codebase underlying the app. The goal being to allow GenEst to evolve as fluidly as possible at the user interface.</p> +</div> +<div id="execution" class="section level1"> +<h1>Execution</h1> +<p>The GUI is executed locally or as a deployed app following the basic approach of shiny applications. For ease of implementation, we have created an overall function to intialize the app, <code>runGenEst()</code>, which calls both the server and UI codebases. Like most vintage Shiny apps, we employee the two-file system, including a <code>ui.R</code> and <code>server.R</code> script, although each script is Spartan. The <code>ui.R</code> script includes a single call to the <code>GenEstUI(appType)</code> function, which starts the cascade of HTML-generating functions outlined in <strong>UI Function Hierarchy</strong>. The <code>server.R</code> script includes a single reference (not a call) to the function <code>GenEstServer</code>, which is detailed in <strong>Server Function Hierarchy</strong>.</p> </div> <div id="user-interface" class="section level1"> <h1>User Interface</h1> <div id="ui-function-hierarchy" class="section level3"> <h3>UI Function Hierarchy</h3> -<p>The GenEst User Interface is constructed using pages, panels, tabs, and widgets. The code is parsed into a series of hierarchical functions to facilitate readability and mobility of specific UI components.</p> +<p>The GenEst User Interface is constructed in HTML using pages, panels, tabs, and widgets. The code is parsed into a series of hierarchical functions to facilitate readability and mobility of specific UI components.</p> <ul> <li><code>GenEstUI(appType)</code> <ul> @@ -264,8 +267,8 @@ code > span.fu { color: #900; font-weight: bold; } code > span.er { color: #a61 <ul> <li><code>SESidebar()</code> <ul> -<li><code>modelInputWidget("obsCols_SE")</code></li> -<li><code>modelInputWidget("preds_SE")</code></li> +<li><code>modelInputWidget("obsSE")</code></li> +<li><code>modelInputWidget("predsSE")</code></li> <li><code>modelInputWidget("kFixed")</code></li> <li><code>modelRunWidget("SE")</code></li> <li><code>modelOutputWidget("SE")</code><br /> @@ -287,7 +290,7 @@ code > span.fu { color: #900; font-weight: bold; } code > span.er { color: #a61 <ul> <li><code>modelInputWidget("ltp")</code></li> <li><code>modelInputWidget("fta")</code></li> -<li><code>modelInputWidget("preds_CP")</code></li> +<li><code>modelInputWidget("predsCP")</code></li> <li><code>modelInputWidget("dists")</code></li> <li><code>modelRunWidget("CP")</code></li> <li><code>modelOutputWidget("CP")</code></li> @@ -306,7 +309,6 @@ code > span.fu { color: #900; font-weight: bold; } code > span.er { color: #a61 <ul> <li><code>MSidebar()</code> <ul> -<li><code>modelInputWidget("kFill")</code></li> <li><code>modelInputWidget("frac")</code></li> <li><code>modelInputWidget("DWPCol")</code></li> <li><code>modelInputWidget("dateFoundCol")</code></li> @@ -320,7 +322,6 @@ code > span.fu { color: #900; font-weight: bold; } code > span.er { color: #a61 <ul> <li><code>gSidebar()</code> <ul> -<li><code>modelInputWidget("kFill_g")</code></li> <li><code>modelInputWidget("gSearchInterval")</code></li> <li><code>modelInputWidget("gSearchMax")</code></li> <li><code>modelInputWidget("useSSinputs")</code></li> @@ -352,7 +353,6 @@ code > span.fu { color: #900; font-weight: bold; } code > span.er { color: #a61 <li><code>dataDownloadsWidget("PV")</code></li> <li><code>dataDownloadsWidget("trough")</code></li> <li><code>dataDownloadsWidget("mock")</code></li> -<li><code>dataDownloadsWidget("mock2")</code></li> </ul></li> <li><code>aboutPanel()</code> <ul> @@ -420,9 +420,77 @@ code > span.fu { color: #900; font-weight: bold; } code > span.er { color: #a61 </ul> </div> </div> -<div id="execution" class="section level1"> -<h1>Execution</h1> -<p>The GUI is executed locally or as a deployed app following the basic approach of shiny applications. For ease of implementation, we have created an overall function to intialize the app, <code>runGenEst()</code>, which calls both the server and UI codebases.</p> +<div id="server-functionality" class="section level1"> +<h1>Server Functionality</h1> +<div id="reactivity" class="section level3"> +<h3>Reactivity</h3> +<p>The server-side functionality operates using <a href="https://shiny.rstudio.com/articles/reactivity-overview.html">Shiny’s reactive programming</a> framework. In particular, we include a main <code>reactiveValues</code> list called <code>rv</code>, that, in addition to the standard <code>input</code> and <code>output</code> lists is passed among functions throughout the app. The <code>rv</code> list holds all of the reactive values currently being used by the application.</p> +</div> +<div id="server-function-hierarchy" class="section level3"> +<h3>Server Function Hierarchy</h3> +<p>The GenEst server code is a relatively flat hierarchy, especially in comparison to the UI code. In particular, after a brief set of preamble functions for preparing objects and options, <code>GenEstServer</code> makes many calls to <code>observeEvent</code>, the reactive observation function, one call for each of the possible events in the application (data load, model run or clear, column selection, clear of contents). Each call also includes an evaluation of the held-back “handler†code for the event returned by the function <code>reaction</code>, with the handler being the code that is to be evaluated when the event is observed. The expression is held-back in <code>reaction</code> to minimize scoping issues associated with message-related functions.</p> +<ul> +<li><code>GenEstServer(input, output, session)</code> +<ul> +<li><code>rv <- initialReactiveValues()</code></li> +<li><code>output <- initialOutput(rv, output)</code></li> +<li><code>msgs <- msgList()</code><br /> +</li> +<li><code>options(htmlwidgets.TOJSON_ARGS = list(na = 'string'))</code></li> +<li><code>observeEvent(DT.options = list(pageLength = 25))</code><br /> +</li> +<li><code>observeEvent(input$clear_all, eval(reaction("clear_all")))</code></li> +<li><code>observeEvent(input$file_SE, eval(reaction("file_SE")))</code></li> +<li><code>observeEvent(input$file_SE_clear, eval(reaction("file_SE_clear")))</code></li> +<li><code>observeEvent(input$file_CP, eval(reaction("file_CP")))</code></li> +<li><code>observeEvent(input$file_CP_clear, eval(reaction("file_CP_clear")))</code></li> +<li><code>observeEvent(input$file_SS, eval(reaction("file_SS")))</code></li> +<li><code>observeEvent(input$file_SS_clear, eval(reaction("file_SS_clear")))</code></li> +<li><code>observeEvent(input$file_DWP, eval(reaction("file_DWP")))</code></li> +<li><code>observeEvent(input$file_DWP_clear, eval(reaction("file_DWP_clear")))</code></li> +<li><code>observeEvent(input$file_CO, eval(reaction("file_CO")))</code></li> +<li><p><code>observeEvent(input$file_CO_clear, eval(reaction("file_CO_clear")))</code></p></li> +<li><p><code>observeEvent(input$class, eval(reaction("class")), ignoreNULL = FALSE)</code></p></li> +<li><code>observeEvent(input$obsSE, eval(reaction("obsSE")), ignoreNULL = FALSE)</code></li> +<li><code>observeEvent(input$predsSE, eval(reaction("predsSE")), ignoreNULL = FALSE)</code></li> +<li><code>observeEvent(input$run_SE, eval(reaction("run_SE")))</code></li> +<li><code>observeEvent(input$run_SE_clear, eval(reaction("run_SE_clear")))</code></li> +<li><code>observeEvent(input$outSEclass, eval(reaction("outSEclass")))</code></li> +<li><code>observeEvent(input$outSEp, eval(reaction("outSEp")))</code></li> +<li><p><code>observeEvent(input$outSEk, eval(reaction("outSEk")))</code></p></li> +<li><code>observeEvent(input$ltp, eval(reaction("ltp")), ignoreNULL = FALSE)</code></li> +<li><code>observeEvent(input$fta, eval(reaction("fta")), ignoreNULL = FALSE)</code></li> +<li><code>observeEvent(input$predsCP, eval(reaction("predsCP")), ignoreNULL = FALSE)</code></li> +<li><code>observeEvent(input$run_CP, eval(reaction("run_CP")))</code></li> +<li><code>observeEvent(input$run_CP_clear, eval(reaction("run_CP_clear")))</code></li> +<li><code>observeEvent(input$outCPclass, eval(reaction("outCPclass")))</code></li> +<li><code>observeEvent(input$outCPdist, eval(reaction("outCPdist")))</code></li> +<li><code>observeEvent(input$outCPl, eval(reaction("outCPl")))</code></li> +<li><p><code>observeEvent(input$outCPs, eval(reaction("outCPs")))</code></p></li> +<li><code>observeEvent(input$run_M, eval(reaction("run_M")))</code></li> +<li><code>observeEvent(input$run_M_clear, eval(reaction("run_M_clear")))</code></li> +<li><code>observeEvent(input$split_M, eval(reaction("split_M")))</code></li> +<li><code>observeEvent(input$split_M_clear, eval(reaction("split_M_clear")))</code></li> +<li><p><code>observeEvent(input$transpose_split, eval(reaction("transpose_split")))</code></p></li> +<li><code>observeEvent(input$useSSdata, eval(reaction("useSSdata")))</code></li> +<li><code>observeEvent(input$useSSinputs, eval(reaction("useSSinputs")))</code></li> +<li><code>observeEvent(input$run_g, eval(reaction("run_g")))</code></li> +<li><code>observeEvent(input$run_g_clear, eval(reaction("run_g_clear")))</code></li> +<li><p><code>observeEvent(input$outgclass, eval(reaction("outgclass")))</code></p></li> +</ul></li> +</ul> +<p>The <code>reaction</code> function is, essentially, a parsed-text-generating function. Depending upon the specific event (<code>eventName</code>, the only input), the necessary set of function calls (messages for running, running the code, messages for when done) is prepared for evaluation. The main function used to do things within the handler code (when the event occurs) is <code>eventReaction</code>, which calls three functions: <code>update_rv</code>, <code>update_output</code>, and <code>update_input</code>, in that order (updating the output depends on the rv being updated already and updating the input requires both the rv and output to be up-to-date):</p> +<ul> +<li><code>eventReaction(eventName, rv, input, output, session)</code> +<ul> +<li><code>update_rv(eventName, rv, input)</code></li> +<li><code>update_output(eventName, rv, output)</code></li> +<li><code>update_input(eventName, rv, input, session)</code></li> +</ul></li> +</ul> +<p>Because of the scoping set-up for Shiny apps, there is no need to assign the returned elements for <code>update_rv</code> and <code>update_output</code> to anything, and <code>update_input</code> works through <code>session</code> to direct its updates to the application.</p> +<p>Each of the three functions takes <code>eventName</code> as the first argument, which is used to toggle amongst the possible actions to be taken with respect to each of the lists. That is, each of the three <code>update_</code> functions contains a large internal set of routines, and only the relevant ones are called for a given function. This occurs via simple conditional code blocks (“if the eventType is this, do thisâ€) for each of the possible events, thereby reducing the number of specific functions, but increasing the size of the key functions. Within each of the three functions, some of the events trigger a substantial amount of code while others only trigger a few (or no) lines. Similarly, some of the handler expressions take virutally no time to run, while others take a few minutes.</p> +</div> </div> diff --git a/inst/doc/command-line-example.html b/inst/doc/command-line-example.html index 82c37e214822d7b41416530333222f8e70f70276..b745be831cedf226408eded56e973b47b8ea820a 100644 --- a/inst/doc/command-line-example.html +++ b/inst/doc/command-line-example.html @@ -12,7 +12,7 @@ <meta name="author" content="Juniper L. Simonis" /> -<meta name="date" content="2018-09-29" /> +<meta name="date" content="2018-11-02" /> <title>GenEst - Command Line Walkthrough</title> @@ -20,20 +20,26 @@ <style type="text/css">code{white-space: pre;}</style> <style type="text/css"> -a.sourceLine { display: inline-block; min-height: 1.25em; } +a.sourceLine { display: inline-block; line-height: 1.25; } a.sourceLine { pointer-events: none; color: inherit; text-decoration: inherit; } +a.sourceLine:empty { height: 1.2em; } .sourceCode { overflow: visible; } -code.sourceCode { white-space: pre; } +code.sourceCode { white-space: pre; position: relative; } +div.sourceCode { margin: 1em 0; } +pre.sourceCode { margin: 0; } +@media screen { +div.sourceCode { overflow: auto; } +} @media print { code.sourceCode { white-space: pre-wrap; } a.sourceLine { text-indent: -1em; padding-left: 1em; } } pre.numberSource a.sourceLine - { position: relative; } + { position: relative; left: -4em; } pre.numberSource a.sourceLine::before { content: attr(data-line-number); - position: absolute; left: -5em; text-align: right; vertical-align: baseline; - border: none; pointer-events: all; + position: relative; left: -1em; text-align: right; vertical-align: baseline; + border: none; pointer-events: all; display: inline-block; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; @@ -41,38 +47,40 @@ pre.numberSource a.sourceLine::before color: #aaaaaa; } pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; } +div.sourceCode + { } @media screen { -a.sourceLine::before { text-decoration: underline; color: initial; } +a.sourceLine::before { text-decoration: underline; } } -code span.kw { color: #007020; font-weight: bold; } /* Keyword */ -code span.dt { color: #902000; } /* DataType */ -code span.dv { color: #40a070; } /* DecVal */ +code span.al { color: #ff0000; font-weight: bold; } /* Alert */ +code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */ +code span.at { color: #7d9029; } /* Attribute */ code span.bn { color: #40a070; } /* BaseN */ -code span.fl { color: #40a070; } /* Float */ +code span.bu { } /* BuiltIn */ +code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */ code span.ch { color: #4070a0; } /* Char */ -code span.st { color: #4070a0; } /* String */ +code span.cn { color: #880000; } /* Constant */ code span.co { color: #60a0b0; font-style: italic; } /* Comment */ -code span.ot { color: #007020; } /* Other */ -code span.al { color: #ff0000; font-weight: bold; } /* Alert */ -code span.fu { color: #06287e; } /* Function */ +code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */ +code span.do { color: #ba2121; font-style: italic; } /* Documentation */ +code span.dt { color: #902000; } /* DataType */ +code span.dv { color: #40a070; } /* DecVal */ code span.er { color: #ff0000; font-weight: bold; } /* Error */ -code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */ -code span.cn { color: #880000; } /* Constant */ -code span.sc { color: #4070a0; } /* SpecialChar */ -code span.vs { color: #4070a0; } /* VerbatimString */ -code span.ss { color: #bb6688; } /* SpecialString */ +code span.ex { } /* Extension */ +code span.fl { color: #40a070; } /* Float */ +code span.fu { color: #06287e; } /* Function */ code span.im { } /* Import */ -code span.va { color: #19177c; } /* Variable */ -code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */ +code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */ +code span.kw { color: #007020; font-weight: bold; } /* Keyword */ code span.op { color: #666666; } /* Operator */ -code span.bu { } /* BuiltIn */ -code span.ex { } /* Extension */ +code span.ot { color: #007020; } /* Other */ code span.pp { color: #bc7a00; } /* Preprocessor */ -code span.at { color: #7d9029; } /* Attribute */ -code span.do { color: #ba2121; font-style: italic; } /* Documentation */ -code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */ -code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */ -code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */ +code span.sc { color: #4070a0; } /* SpecialChar */ +code span.ss { color: #bb6688; } /* SpecialString */ +code span.st { color: #4070a0; } /* String */ +code span.va { color: #19177c; } /* Variable */ +code span.vs { color: #4070a0; } /* VerbatimString */ +code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */ </style> @@ -270,109 +278,109 @@ code > span.fu { color: #900; font-weight: bold; } code > span.er { color: #a61 <h1 class="title toc-ignore">GenEst - Command Line Walkthrough</h1> <h4 class="author"><em>Juniper L. Simonis</em></h4> -<h4 class="date"><em>2018-09-29</em></h4> +<h4 class="date"><em>2018-11-02</em></h4> -<p>This vignette walks through an example of <strong>GenEst</strong> at the command line and was constructed using <strong>GenEst</strong> version 0.3.1 on 2018-09-29.</p> +<p>This vignette walks through an example of <strong>GenEst</strong> at the command line and was constructed using <strong>GenEst</strong> version 1.1.0 on 2018-11-02.</p> <div id="installation" class="section level2"> <h2>Installation</h2> <p>To obtain the most recent version of <strong>GenEst</strong>, download the most recent version build from <a href="https://github.com/ddalthorp/GenEst/tree/master/">GitHub</a></p> </div> <div id="data" class="section level2"> <h2>Data</h2> -<p>For this vignette, we will be using a completely mock dataset provided with the <strong>GenEst</strong> package, which contains Searcher Efficiency, Carcass Persistence, Search Schedule, Density Weighted Proportion, and Carcass Observation Data.</p> -<pre class="sourceCode r" id="cb1"><code class="sourceCode r"><a class="sourceLine" id="cb1-1" data-line-number="1"><span class="kw">data</span>(mock)</a> +<p>For this vignette, we will be using a completely generic, mock dataset provided with the <strong>GenEst</strong> package, which contains Searcher Efficiency (SE), Carcass Persistence (CP), Search Schedule (SS), Density Weighted Proportion (DWP), and Carcass Observation (CO) Data.</p> +<div class="sourceCode" id="cb1"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb1-1" data-line-number="1"><span class="kw">data</span>(mock)</a> <a class="sourceLine" id="cb1-2" data-line-number="2"><span class="kw">names</span>(mock)</a> -<a class="sourceLine" id="cb1-3" data-line-number="3"><span class="co">#> [1] "SE" "CP" "SS" "DWP" "CO"</span></a></code></pre> -<p>To see the raw <code>.csv</code> versions of the data files, find the <strong>GenEst</strong> package folder on your computer (it should be located with all of your other R packages) and then browse to the <code>inst/extdata/mockData</code> subfolder.</p> +<a class="sourceLine" id="cb1-3" data-line-number="3"><span class="co">#> [1] "SE" "CP" "SS" "DWP" "CO"</span></a></code></pre></div> </div> <div id="searcher-efficiency" class="section level2"> <h2>Searcher Efficiency</h2> <div id="single-searcher-efficiency-model" class="section level3"> <h3>Single Searcher Efficiency Model</h3> -<p>The central function for searcher efficiency analyses is <code>pkm</code>, which conducts a singular searcher efficiency analysis (<em>i.e.</em>, a singular set of <span class="math inline">\(p\)</span> and <span class="math inline">\(k\)</span> formulae and a singular size classification of carcasses). As a first example, we will ignore the size category and use intercept-only models for both <span class="math inline">\(p\)</span> and <span class="math inline">\(k\)</span>:</p> -<pre class="sourceCode r" id="cb2"><code class="sourceCode r"><a class="sourceLine" id="cb2-1" data-line-number="1">data_SE <-<span class="st"> </span>mock<span class="op">$</span>SE</a> -<a class="sourceLine" id="cb2-2" data-line-number="2">pkModel <-<span class="st"> </span><span class="kw">pkm</span>(<span class="dt">formula_p =</span> p <span class="op">~</span><span class="st"> </span><span class="dv">1</span>, <span class="dt">formula_k =</span> k <span class="op">~</span><span class="st"> </span><span class="dv">1</span>, <span class="dt">data =</span> data_SE)</a></code></pre> +<p>The central function for searcher efficiency analyses is <code>pkm</code>, which, in its most basic form, conducts a singular searcher efficiency analysis (<em>i.e.</em>, a singular set of <span class="math inline">\(p\)</span> and <span class="math inline">\(k\)</span> formulae and a singular size classification of carcasses). As a first example, we will ignore the size category and use intercept-only models for both <span class="math inline">\(p\)</span> and <span class="math inline">\(k\)</span>:</p> +<div class="sourceCode" id="cb2"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb2-1" data-line-number="1">data_SE <-<span class="st"> </span>mock<span class="op">$</span>SE</a> +<a class="sourceLine" id="cb2-2" data-line-number="2">pkModel <-<span class="st"> </span><span class="kw">pkm</span>(<span class="dt">formula_p =</span> p <span class="op">~</span><span class="st"> </span><span class="dv">1</span>, <span class="dt">formula_k =</span> k <span class="op">~</span><span class="st"> </span><span class="dv">1</span>, <span class="dt">data =</span> data_SE)</a></code></pre></div> <p>Here, we have taken advantage of <code>pkm</code>’s default behavior of selecting observation columns (see <code>?pkm</code> for details).</p> -<pre class="sourceCode r" id="cb3"><code class="sourceCode r"><a class="sourceLine" id="cb3-1" data-line-number="1"><span class="kw">head</span>(data_SE)</a> -<a class="sourceLine" id="cb3-2" data-line-number="2"><span class="co">#> ID Visibility HabitatType Season Size Search1 Search2 Search3 Search4</span></a> -<a class="sourceLine" id="cb3-3" data-line-number="3"><span class="co">#> 1 1 L HT1 SF S 1 NA NA NA</span></a> -<a class="sourceLine" id="cb3-4" data-line-number="4"><span class="co">#> 2 2 L HT1 SF S 1 NA NA NA</span></a> -<a class="sourceLine" id="cb3-5" data-line-number="5"><span class="co">#> 3 3 L HT1 WS S 0 0 0 0</span></a> -<a class="sourceLine" id="cb3-6" data-line-number="6"><span class="co">#> 4 4 L HT1 WS S 1 NA NA NA</span></a> -<a class="sourceLine" id="cb3-7" data-line-number="7"><span class="co">#> 5 5 L HT1 WS S 0 1 NA NA</span></a> -<a class="sourceLine" id="cb3-8" data-line-number="8"><span class="co">#> 6 6 L HT1 SF S 1 NA NA NA</span></a></code></pre> +<div class="sourceCode" id="cb3"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb3-1" data-line-number="1"><span class="kw">head</span>(data_SE)</a> +<a class="sourceLine" id="cb3-2" data-line-number="2"><span class="co">#> seID Visibility HabitatType Season Size Search1 Search2 Search3 Search4</span></a> +<a class="sourceLine" id="cb3-3" data-line-number="3"><span class="co">#> 1 se1 L HT1 SF S 1 NA NA NA</span></a> +<a class="sourceLine" id="cb3-4" data-line-number="4"><span class="co">#> 2 se2 L HT1 SF S 1 NA NA NA</span></a> +<a class="sourceLine" id="cb3-5" data-line-number="5"><span class="co">#> 3 se3 L HT1 WS S 0 0 0 0</span></a> +<a class="sourceLine" id="cb3-6" data-line-number="6"><span class="co">#> 4 se4 L HT1 WS S 1 NA NA NA</span></a> +<a class="sourceLine" id="cb3-7" data-line-number="7"><span class="co">#> 5 se5 L HT1 WS S 0 1 NA NA</span></a> +<a class="sourceLine" id="cb3-8" data-line-number="8"><span class="co">#> 6 se6 L HT1 SF S 1 NA NA NA</span></a></code></pre></div> <p>If we wanted to explicitly control the observations, we would use the <code>obsCol</code> argument:</p> -<pre class="sourceCode r" id="cb4"><code class="sourceCode r"><a class="sourceLine" id="cb4-1" data-line-number="1">pkModel <-<span class="st"> </span><span class="kw">pkm</span>(<span class="dt">formula_p =</span> p <span class="op">~</span><span class="st"> </span><span class="dv">1</span>, <span class="dt">formula_k =</span> k <span class="op">~</span><span class="st"> </span><span class="dv">1</span>, <span class="dt">data =</span> data_SE,</a> +<div class="sourceCode" id="cb4"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb4-1" data-line-number="1">pkModel <-<span class="st"> </span><span class="kw">pkm</span>(<span class="dt">formula_p =</span> p <span class="op">~</span><span class="st"> </span><span class="dv">1</span>, <span class="dt">formula_k =</span> k <span class="op">~</span><span class="st"> </span><span class="dv">1</span>, <span class="dt">data =</span> data_SE,</a> <a class="sourceLine" id="cb4-2" data-line-number="2"> <span class="dt">obsCol =</span> <span class="kw">c</span>(<span class="st">"Search1"</span>, <span class="st">"Search2"</span>, <span class="st">"Search3"</span>, <span class="st">"Search4"</span>)</a> -<a class="sourceLine" id="cb4-3" data-line-number="3"> )</a></code></pre> +<a class="sourceLine" id="cb4-3" data-line-number="3"> )</a></code></pre></div> <p>Note that the search observations must be entered in order such that no carcasses have non-detected observations (<em>i.e.</em>, <code>0</code>) after detected observations (<em>i.e.</em>, <code>1</code>). Further, no carcasses can be detected more than once.</p> <p>If successfully fit, a <code>pkm</code> model output contains a number of elements, some printed automatically:</p> -<pre class="sourceCode r" id="cb5"><code class="sourceCode r"><a class="sourceLine" id="cb5-1" data-line-number="1">pkModel</a> +<div class="sourceCode" id="cb5"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb5-1" data-line-number="1">pkModel</a> <a class="sourceLine" id="cb5-2" data-line-number="2"><span class="co">#> $call</span></a> -<a class="sourceLine" id="cb5-3" data-line-number="3"><span class="co">#> pkm(formula_p = p ~ 1, formula_k = k ~ 1, data = data_SE, obsCol = c("Search1", </span></a> -<a class="sourceLine" id="cb5-4" data-line-number="4"><span class="co">#> "Search2", "Search3", "Search4"))</span></a> -<a class="sourceLine" id="cb5-5" data-line-number="5"><span class="co">#> </span></a> -<a class="sourceLine" id="cb5-6" data-line-number="6"><span class="co">#> $formula_p</span></a> -<a class="sourceLine" id="cb5-7" data-line-number="7"><span class="co">#> p ~ 1</span></a> -<a class="sourceLine" id="cb5-8" data-line-number="8"><span class="co">#> </span></a> -<a class="sourceLine" id="cb5-9" data-line-number="9"><span class="co">#> $formula_k</span></a> -<a class="sourceLine" id="cb5-10" data-line-number="10"><span class="co">#> k ~ 1</span></a> -<a class="sourceLine" id="cb5-11" data-line-number="11"><span class="co">#> </span></a> -<a class="sourceLine" id="cb5-12" data-line-number="12"><span class="co">#> $predictors</span></a> -<a class="sourceLine" id="cb5-13" data-line-number="13"><span class="co">#> character(0)</span></a> -<a class="sourceLine" id="cb5-14" data-line-number="14"><span class="co">#> </span></a> -<a class="sourceLine" id="cb5-15" data-line-number="15"><span class="co">#> $AICc</span></a> -<a class="sourceLine" id="cb5-16" data-line-number="16"><span class="co">#> [1] 1145</span></a> -<a class="sourceLine" id="cb5-17" data-line-number="17"><span class="co">#> </span></a> -<a class="sourceLine" id="cb5-18" data-line-number="18"><span class="co">#> $convergence</span></a> -<a class="sourceLine" id="cb5-19" data-line-number="19"><span class="co">#> [1] 0</span></a> -<a class="sourceLine" id="cb5-20" data-line-number="20"><span class="co">#> </span></a> -<a class="sourceLine" id="cb5-21" data-line-number="21"><span class="co">#> $cellwiseTable</span></a> -<a class="sourceLine" id="cb5-22" data-line-number="22"><span class="co">#> cell p_median p_lower p_upper k_median k_lower k_upper</span></a> -<a class="sourceLine" id="cb5-23" data-line-number="23"><span class="co">#> 1 all 0.568 0.532 0.604 0.599 0.543 0.653</span></a> -<a class="sourceLine" id="cb5-24" data-line-number="24"><span class="co">#> </span></a> -<a class="sourceLine" id="cb5-25" data-line-number="25"><span class="co">#> $CL</span></a> -<a class="sourceLine" id="cb5-26" data-line-number="26"><span class="co">#> [1] 0.9</span></a></code></pre> -<p>and others available upon request (using <code>$</code> as <code>pkm</code> is an S3 class):</p> -<pre class="sourceCode r" id="cb6"><code class="sourceCode r"><a class="sourceLine" id="cb6-1" data-line-number="1"><span class="kw">names</span>(pkModel)</a> -<a class="sourceLine" id="cb6-2" data-line-number="2"><span class="co">#> [1] "call" "data" "data0" "formula_p" </span></a> -<a class="sourceLine" id="cb6-3" data-line-number="3"><span class="co">#> [5] "formula_k" "predictors" "predictors_p" "predictors_k" </span></a> -<a class="sourceLine" id="cb6-4" data-line-number="4"><span class="co">#> [9] "AIC" "AICc" "convergence" "varbeta" </span></a> -<a class="sourceLine" id="cb6-5" data-line-number="5"><span class="co">#> [13] "cellMM_p" "cellMM_k" "nbeta_p" "nbeta_k" </span></a> -<a class="sourceLine" id="cb6-6" data-line-number="6"><span class="co">#> [17] "betahat_p" "betahat_k" "cells" "ncell" </span></a> -<a class="sourceLine" id="cb6-7" data-line-number="7"><span class="co">#> [21] "cellwiseTable" "CL" "observations" "carcCells" </span></a> -<a class="sourceLine" id="cb6-8" data-line-number="8"><span class="co">#> [25] "loglik" "pOnly"</span></a> +<a class="sourceLine" id="cb5-3" data-line-number="3"><span class="co">#> pkm0(formula_p = formula_p, formula_k = formula_k, data = data, </span></a> +<a class="sourceLine" id="cb5-4" data-line-number="4"><span class="co">#> obsCol = obsCol, kFixed = kFixed, kInit = kInit, CL = CL, </span></a> +<a class="sourceLine" id="cb5-5" data-line-number="5"><span class="co">#> quiet = quiet)</span></a> +<a class="sourceLine" id="cb5-6" data-line-number="6"><span class="co">#> </span></a> +<a class="sourceLine" id="cb5-7" data-line-number="7"><span class="co">#> $formula_p</span></a> +<a class="sourceLine" id="cb5-8" data-line-number="8"><span class="co">#> p ~ 1</span></a> +<a class="sourceLine" id="cb5-9" data-line-number="9"><span class="co">#> </span></a> +<a class="sourceLine" id="cb5-10" data-line-number="10"><span class="co">#> $formula_k</span></a> +<a class="sourceLine" id="cb5-11" data-line-number="11"><span class="co">#> k ~ 1</span></a> +<a class="sourceLine" id="cb5-12" data-line-number="12"><span class="co">#> </span></a> +<a class="sourceLine" id="cb5-13" data-line-number="13"><span class="co">#> $predictors</span></a> +<a class="sourceLine" id="cb5-14" data-line-number="14"><span class="co">#> character(0)</span></a> +<a class="sourceLine" id="cb5-15" data-line-number="15"><span class="co">#> </span></a> +<a class="sourceLine" id="cb5-16" data-line-number="16"><span class="co">#> $AICc</span></a> +<a class="sourceLine" id="cb5-17" data-line-number="17"><span class="co">#> [1] 1145</span></a> +<a class="sourceLine" id="cb5-18" data-line-number="18"><span class="co">#> </span></a> +<a class="sourceLine" id="cb5-19" data-line-number="19"><span class="co">#> $convergence</span></a> +<a class="sourceLine" id="cb5-20" data-line-number="20"><span class="co">#> [1] 0</span></a> +<a class="sourceLine" id="cb5-21" data-line-number="21"><span class="co">#> </span></a> +<a class="sourceLine" id="cb5-22" data-line-number="22"><span class="co">#> $cell_pk</span></a> +<a class="sourceLine" id="cb5-23" data-line-number="23"><span class="co">#> cell n p_median p_lower p_upper k_median k_lower k_upper</span></a> +<a class="sourceLine" id="cb5-24" data-line-number="24"><span class="co">#> 1 all 480 0.568 0.532 0.604 0.599 0.543 0.653</span></a> +<a class="sourceLine" id="cb5-25" data-line-number="25"><span class="co">#> </span></a> +<a class="sourceLine" id="cb5-26" data-line-number="26"><span class="co">#> $CL</span></a> +<a class="sourceLine" id="cb5-27" data-line-number="27"><span class="co">#> [1] 0.9</span></a></code></pre></div> +<p>and others available upon request:</p> +<div class="sourceCode" id="cb6"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb6-1" data-line-number="1"><span class="kw">names</span>(pkModel)</a> +<a class="sourceLine" id="cb6-2" data-line-number="2"><span class="co">#> [1] "call" "data" "data0" "formula_p" </span></a> +<a class="sourceLine" id="cb6-3" data-line-number="3"><span class="co">#> [5] "formula_k" "predictors" "predictors_p" "predictors_k"</span></a> +<a class="sourceLine" id="cb6-4" data-line-number="4"><span class="co">#> [9] "AIC" "AICc" "convergence" "varbeta" </span></a> +<a class="sourceLine" id="cb6-5" data-line-number="5"><span class="co">#> [13] "cellMM_p" "cellMM_k" "nbeta_p" "nbeta_k" </span></a> +<a class="sourceLine" id="cb6-6" data-line-number="6"><span class="co">#> [17] "betahat_p" "betahat_k" "cells" "ncell" </span></a> +<a class="sourceLine" id="cb6-7" data-line-number="7"><span class="co">#> [21] "cell_pk" "CL" "observations" "carcCells" </span></a> +<a class="sourceLine" id="cb6-8" data-line-number="8"><span class="co">#> [25] "loglik" "pOnly"</span></a> <a class="sourceLine" id="cb6-9" data-line-number="9">pkModel<span class="op">$</span>cells</a> <a class="sourceLine" id="cb6-10" data-line-number="10"><span class="co">#> group CellNames</span></a> -<a class="sourceLine" id="cb6-11" data-line-number="11"><span class="co">#> 1 all all</span></a></code></pre> +<a class="sourceLine" id="cb6-11" data-line-number="11"><span class="co">#> 1 all all</span></a></code></pre></div> <p>The <code>plot</code> function has been defined for <code>pkm</code> objects, such that one can simply run</p> -<pre class="sourceCode r" id="cb7"><code class="sourceCode r"><a class="sourceLine" id="cb7-1" data-line-number="1"><span class="kw">plot</span>(pkModel)</a></code></pre> -<p><img src="data:image/png;base64,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" style="display: block; margin: auto;" /></p> +<div class="sourceCode" id="cb7"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb7-1" data-line-number="1"><span class="kw">plot</span>(pkModel)</a></code></pre></div> +<p><img src="data:image/png;base64,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" style="display: block; margin: auto;" /></p> <p>to visualize the model’s output.</p> -<p>You can generate random draws of the <span class="math inline">\(p\)</span> and <span class="math inline">\(k\)</span> parameters for each cell grouping (in <code>pkModel</code> there are no predictors, so there is one cell grouping called “allâ€) using the <code>rpk</code> function which, like other <code>r*</code> functions in <strong>R</strong> (<em>i.e.</em>, <code>rnorm</code>) takes the number of random draws (<code>n</code>) as the first argument:</p> -<pre class="sourceCode r" id="cb8"><code class="sourceCode r"><a class="sourceLine" id="cb8-1" data-line-number="1"><span class="kw">rpk</span>(<span class="dt">n =</span> <span class="dv">10</span>, pkModel)</a> +<p>You can generate random draws of the <span class="math inline">\(p\)</span> and <span class="math inline">\(k\)</span> parameters for each cell grouping (in <code>pkModel</code> there are no predictors, so there is one cell grouping called “allâ€) using the <code>rpk</code> function which, like other <code>r*</code> functions in <strong>R</strong> (<em>e.g.</em>, <code>rnorm</code>, <code>runif</code>) takes the number of random draws (<code>n</code>) as the first argument:</p> +<div class="sourceCode" id="cb8"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb8-1" data-line-number="1"><span class="kw">rpk</span>(<span class="dt">n =</span> <span class="dv">10</span>, pkModel)</a> <a class="sourceLine" id="cb8-2" data-line-number="2"><span class="co">#> $all</span></a> <a class="sourceLine" id="cb8-3" data-line-number="3"><span class="co">#> p k</span></a> -<a class="sourceLine" id="cb8-4" data-line-number="4"><span class="co">#> [1,] 0.5601628 0.5392728</span></a> -<a class="sourceLine" id="cb8-5" data-line-number="5"><span class="co">#> [2,] 0.5999821 0.6073095</span></a> -<a class="sourceLine" id="cb8-6" data-line-number="6"><span class="co">#> [3,] 0.5633458 0.6221270</span></a> -<a class="sourceLine" id="cb8-7" data-line-number="7"><span class="co">#> [4,] 0.5769051 0.5548144</span></a> -<a class="sourceLine" id="cb8-8" data-line-number="8"><span class="co">#> [5,] 0.5236103 0.6038052</span></a> -<a class="sourceLine" id="cb8-9" data-line-number="9"><span class="co">#> [6,] 0.5676538 0.5654118</span></a> -<a class="sourceLine" id="cb8-10" data-line-number="10"><span class="co">#> [7,] 0.5791335 0.5862906</span></a> -<a class="sourceLine" id="cb8-11" data-line-number="11"><span class="co">#> [8,] 0.5789107 0.6365192</span></a> -<a class="sourceLine" id="cb8-12" data-line-number="12"><span class="co">#> [9,] 0.5599069 0.5733311</span></a> -<a class="sourceLine" id="cb8-13" data-line-number="13"><span class="co">#> [10,] 0.5635451 0.6443420</span></a></code></pre> +<a class="sourceLine" id="cb8-4" data-line-number="4"><span class="co">#> [1,] 0.6023459 0.5972743</span></a> +<a class="sourceLine" id="cb8-5" data-line-number="5"><span class="co">#> [2,] 0.5334781 0.6448265</span></a> +<a class="sourceLine" id="cb8-6" data-line-number="6"><span class="co">#> [3,] 0.5508885 0.5802791</span></a> +<a class="sourceLine" id="cb8-7" data-line-number="7"><span class="co">#> [4,] 0.5717761 0.6474314</span></a> +<a class="sourceLine" id="cb8-8" data-line-number="8"><span class="co">#> [5,] 0.5751353 0.6192474</span></a> +<a class="sourceLine" id="cb8-9" data-line-number="9"><span class="co">#> [6,] 0.5728391 0.6014049</span></a> +<a class="sourceLine" id="cb8-10" data-line-number="10"><span class="co">#> [7,] 0.5778451 0.5467929</span></a> +<a class="sourceLine" id="cb8-11" data-line-number="11"><span class="co">#> [8,] 0.5663529 0.6160823</span></a> +<a class="sourceLine" id="cb8-12" data-line-number="12"><span class="co">#> [9,] 0.5933197 0.6116715</span></a> +<a class="sourceLine" id="cb8-13" data-line-number="13"><span class="co">#> [10,] 0.5759709 0.5842613</span></a></code></pre></div> <p>You can complicate the <span class="math inline">\(p\)</span> and <span class="math inline">\(k\)</span> formulae independently</p> -<pre class="sourceCode r" id="cb9"><code class="sourceCode r"><a class="sourceLine" id="cb9-1" data-line-number="1"><span class="kw">pkm</span>(<span class="dt">formula_p =</span> p <span class="op">~</span><span class="st"> </span>Visibility, <span class="dt">formula_k =</span> k <span class="op">~</span><span class="st"> </span>HabitatType, <span class="dt">data =</span> data_SE,</a> +<div class="sourceCode" id="cb9"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb9-1" data-line-number="1"><span class="kw">pkm</span>(<span class="dt">formula_p =</span> p <span class="op">~</span><span class="st"> </span>Visibility, <span class="dt">formula_k =</span> k <span class="op">~</span><span class="st"> </span>HabitatType, <span class="dt">data =</span> data_SE,</a> <a class="sourceLine" id="cb9-2" data-line-number="2"> <span class="dt">obsCol =</span> <span class="kw">c</span>(<span class="st">"Search1"</span>, <span class="st">"Search2"</span>, <span class="st">"Search3"</span>, <span class="st">"Search4"</span>)</a> <a class="sourceLine" id="cb9-3" data-line-number="3">)</a> <a class="sourceLine" id="cb9-4" data-line-number="4"><span class="co">#> $call</span></a> -<a class="sourceLine" id="cb9-5" data-line-number="5"><span class="co">#> pkm(formula_p = p ~ Visibility, formula_k = k ~ HabitatType, </span></a> -<a class="sourceLine" id="cb9-6" data-line-number="6"><span class="co">#> data = data_SE, obsCol = c("Search1", "Search2", "Search3", </span></a> -<a class="sourceLine" id="cb9-7" data-line-number="7"><span class="co">#> "Search4"))</span></a> +<a class="sourceLine" id="cb9-5" data-line-number="5"><span class="co">#> pkm0(formula_p = formula_p, formula_k = formula_k, data = data, </span></a> +<a class="sourceLine" id="cb9-6" data-line-number="6"><span class="co">#> obsCol = obsCol, kFixed = kFixed, kInit = kInit, CL = CL, </span></a> +<a class="sourceLine" id="cb9-7" data-line-number="7"><span class="co">#> quiet = quiet)</span></a> <a class="sourceLine" id="cb9-8" data-line-number="8"><span class="co">#> </span></a> <a class="sourceLine" id="cb9-9" data-line-number="9"><span class="co">#> $formula_p</span></a> <a class="sourceLine" id="cb9-10" data-line-number="10"><span class="co">#> p ~ Visibility</span></a> @@ -389,94 +397,99 @@ code > span.fu { color: #900; font-weight: bold; } code > span.er { color: #a61 <a class="sourceLine" id="cb9-21" data-line-number="21"><span class="co">#> $convergence</span></a> <a class="sourceLine" id="cb9-22" data-line-number="22"><span class="co">#> [1] 0</span></a> <a class="sourceLine" id="cb9-23" data-line-number="23"><span class="co">#> </span></a> -<a class="sourceLine" id="cb9-24" data-line-number="24"><span class="co">#> $cellwiseTable</span></a> -<a class="sourceLine" id="cb9-25" data-line-number="25"><span class="co">#> cell p_median p_lower p_upper k_median k_lower k_upper</span></a> -<a class="sourceLine" id="cb9-26" data-line-number="26"><span class="co">#> 1 H.HT1 0.564 0.503 0.623 0.560 0.482 0.636</span></a> -<a class="sourceLine" id="cb9-27" data-line-number="27"><span class="co">#> 2 L.HT1 0.578 0.516 0.637 0.560 0.482 0.636</span></a> -<a class="sourceLine" id="cb9-28" data-line-number="28"><span class="co">#> 3 M.HT1 0.563 0.505 0.620 0.560 0.482 0.636</span></a> -<a class="sourceLine" id="cb9-29" data-line-number="29"><span class="co">#> 4 H.HT2 0.564 0.503 0.623 0.631 0.557 0.700</span></a> -<a class="sourceLine" id="cb9-30" data-line-number="30"><span class="co">#> 5 L.HT2 0.578 0.516 0.637 0.631 0.557 0.700</span></a> -<a class="sourceLine" id="cb9-31" data-line-number="31"><span class="co">#> 6 M.HT2 0.563 0.505 0.620 0.631 0.557 0.700</span></a> +<a class="sourceLine" id="cb9-24" data-line-number="24"><span class="co">#> $cell_pk</span></a> +<a class="sourceLine" id="cb9-25" data-line-number="25"><span class="co">#> cell n p_median p_lower p_upper k_median k_lower k_upper</span></a> +<a class="sourceLine" id="cb9-26" data-line-number="26"><span class="co">#> 1 H.HT1 80 0.564 0.503 0.623 0.560 0.482 0.636</span></a> +<a class="sourceLine" id="cb9-27" data-line-number="27"><span class="co">#> 2 L.HT1 80 0.578 0.516 0.637 0.560 0.482 0.636</span></a> +<a class="sourceLine" id="cb9-28" data-line-number="28"><span class="co">#> 3 M.HT1 80 0.563 0.505 0.620 0.560 0.482 0.636</span></a> +<a class="sourceLine" id="cb9-29" data-line-number="29"><span class="co">#> 4 H.HT2 80 0.564 0.503 0.623 0.631 0.557 0.700</span></a> +<a class="sourceLine" id="cb9-30" data-line-number="30"><span class="co">#> 5 L.HT2 80 0.578 0.516 0.637 0.631 0.557 0.700</span></a> +<a class="sourceLine" id="cb9-31" data-line-number="31"><span class="co">#> 6 M.HT2 80 0.563 0.505 0.620 0.631 0.557 0.700</span></a> <a class="sourceLine" id="cb9-32" data-line-number="32"><span class="co">#> </span></a> <a class="sourceLine" id="cb9-33" data-line-number="33"><span class="co">#> $CL</span></a> -<a class="sourceLine" id="cb9-34" data-line-number="34"><span class="co">#> [1] 0.9</span></a></code></pre> +<a class="sourceLine" id="cb9-34" data-line-number="34"><span class="co">#> [1] 0.9</span></a></code></pre></div> <p>And you can fix <span class="math inline">\(k\)</span> at a nominal value between 0 and 1 (inclusive) using the <code>kFixed</code> argument</p> -<pre class="sourceCode r" id="cb10"><code class="sourceCode r"><a class="sourceLine" id="cb10-1" data-line-number="1"><span class="kw">pkm</span>(<span class="dt">formula_p =</span> p <span class="op">~</span><span class="st"> </span>Visibility, <span class="dt">kFixed =</span> <span class="fl">0.7</span>, <span class="dt">data =</span> data_SE,</a> +<div class="sourceCode" id="cb10"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb10-1" data-line-number="1"><span class="kw">pkm</span>(<span class="dt">formula_p =</span> p <span class="op">~</span><span class="st"> </span>Visibility, <span class="dt">kFixed =</span> <span class="fl">0.7</span>, <span class="dt">data =</span> data_SE,</a> <a class="sourceLine" id="cb10-2" data-line-number="2"> <span class="dt">obsCol =</span> <span class="kw">c</span>(<span class="st">"Search1"</span>, <span class="st">"Search2"</span>, <span class="st">"Search3"</span>, <span class="st">"Search4"</span>))</a> <a class="sourceLine" id="cb10-3" data-line-number="3"><span class="co">#> $call</span></a> -<a class="sourceLine" id="cb10-4" data-line-number="4"><span class="co">#> pkm(formula_p = p ~ Visibility, data = data_SE, obsCol = c("Search1", </span></a> -<a class="sourceLine" id="cb10-5" data-line-number="5"><span class="co">#> "Search2", "Search3", "Search4"), kFixed = 0.7)</span></a> -<a class="sourceLine" id="cb10-6" data-line-number="6"><span class="co">#> </span></a> -<a class="sourceLine" id="cb10-7" data-line-number="7"><span class="co">#> $formula_p</span></a> -<a class="sourceLine" id="cb10-8" data-line-number="8"><span class="co">#> p ~ Visibility</span></a> -<a class="sourceLine" id="cb10-9" data-line-number="9"><span class="co">#> </span></a> -<a class="sourceLine" id="cb10-10" data-line-number="10"><span class="co">#> $formula_k</span></a> -<a class="sourceLine" id="cb10-11" data-line-number="11"><span class="co">#> fixedk </span></a> -<a class="sourceLine" id="cb10-12" data-line-number="12"><span class="co">#> 0.7 </span></a> -<a class="sourceLine" id="cb10-13" data-line-number="13"><span class="co">#> </span></a> -<a class="sourceLine" id="cb10-14" data-line-number="14"><span class="co">#> $predictors</span></a> -<a class="sourceLine" id="cb10-15" data-line-number="15"><span class="co">#> [1] "Visibility"</span></a> -<a class="sourceLine" id="cb10-16" data-line-number="16"><span class="co">#> </span></a> -<a class="sourceLine" id="cb10-17" data-line-number="17"><span class="co">#> $AICc</span></a> -<a class="sourceLine" id="cb10-18" data-line-number="18"><span class="co">#> [1] 1155.63</span></a> -<a class="sourceLine" id="cb10-19" data-line-number="19"><span class="co">#> </span></a> -<a class="sourceLine" id="cb10-20" data-line-number="20"><span class="co">#> $convergence</span></a> -<a class="sourceLine" id="cb10-21" data-line-number="21"><span class="co">#> [1] 0</span></a> -<a class="sourceLine" id="cb10-22" data-line-number="22"><span class="co">#> </span></a> -<a class="sourceLine" id="cb10-23" data-line-number="23"><span class="co">#> $cellwiseTable</span></a> -<a class="sourceLine" id="cb10-24" data-line-number="24"><span class="co">#> cell p_median p_lower p_upper k_median k_lower k_upper</span></a> -<a class="sourceLine" id="cb10-25" data-line-number="25"><span class="co">#> 1 H 0.531 0.474 0.588 0.7 0.7 0.7</span></a> -<a class="sourceLine" id="cb10-26" data-line-number="26"><span class="co">#> 2 L 0.545 0.487 0.601 0.7 0.7 0.7</span></a> -<a class="sourceLine" id="cb10-27" data-line-number="27"><span class="co">#> 3 M 0.538 0.482 0.593 0.7 0.7 0.7</span></a> -<a class="sourceLine" id="cb10-28" data-line-number="28"><span class="co">#> </span></a> -<a class="sourceLine" id="cb10-29" data-line-number="29"><span class="co">#> $CL</span></a> -<a class="sourceLine" id="cb10-30" data-line-number="30"><span class="co">#> [1] 0.9</span></a></code></pre> +<a class="sourceLine" id="cb10-4" data-line-number="4"><span class="co">#> pkm0(formula_p = formula_p, formula_k = formula_k, data = data, </span></a> +<a class="sourceLine" id="cb10-5" data-line-number="5"><span class="co">#> obsCol = obsCol, kFixed = kFixed, kInit = kInit, CL = CL, </span></a> +<a class="sourceLine" id="cb10-6" data-line-number="6"><span class="co">#> quiet = quiet)</span></a> +<a class="sourceLine" id="cb10-7" data-line-number="7"><span class="co">#> </span></a> +<a class="sourceLine" id="cb10-8" data-line-number="8"><span class="co">#> $formula_p</span></a> +<a class="sourceLine" id="cb10-9" data-line-number="9"><span class="co">#> p ~ Visibility</span></a> +<a class="sourceLine" id="cb10-10" data-line-number="10"><span class="co">#> </span></a> +<a class="sourceLine" id="cb10-11" data-line-number="11"><span class="co">#> $formula_k</span></a> +<a class="sourceLine" id="cb10-12" data-line-number="12"><span class="co">#> fixedk </span></a> +<a class="sourceLine" id="cb10-13" data-line-number="13"><span class="co">#> 0.7 </span></a> +<a class="sourceLine" id="cb10-14" data-line-number="14"><span class="co">#> </span></a> +<a class="sourceLine" id="cb10-15" data-line-number="15"><span class="co">#> $predictors</span></a> +<a class="sourceLine" id="cb10-16" data-line-number="16"><span class="co">#> [1] "Visibility"</span></a> +<a class="sourceLine" id="cb10-17" data-line-number="17"><span class="co">#> </span></a> +<a class="sourceLine" id="cb10-18" data-line-number="18"><span class="co">#> $AICc</span></a> +<a class="sourceLine" id="cb10-19" data-line-number="19"><span class="co">#> [1] 1155.63</span></a> +<a class="sourceLine" id="cb10-20" data-line-number="20"><span class="co">#> </span></a> +<a class="sourceLine" id="cb10-21" data-line-number="21"><span class="co">#> $convergence</span></a> +<a class="sourceLine" id="cb10-22" data-line-number="22"><span class="co">#> [1] 0</span></a> +<a class="sourceLine" id="cb10-23" data-line-number="23"><span class="co">#> </span></a> +<a class="sourceLine" id="cb10-24" data-line-number="24"><span class="co">#> $cell_pk</span></a> +<a class="sourceLine" id="cb10-25" data-line-number="25"><span class="co">#> cell n p_median p_lower p_upper k_median k_lower k_upper</span></a> +<a class="sourceLine" id="cb10-26" data-line-number="26"><span class="co">#> 1 H 160 0.531 0.474 0.588 0.7 0.7 0.7</span></a> +<a class="sourceLine" id="cb10-27" data-line-number="27"><span class="co">#> 2 L 160 0.545 0.487 0.601 0.7 0.7 0.7</span></a> +<a class="sourceLine" id="cb10-28" data-line-number="28"><span class="co">#> 3 M 160 0.538 0.482 0.593 0.7 0.7 0.7</span></a> +<a class="sourceLine" id="cb10-29" data-line-number="29"><span class="co">#> </span></a> +<a class="sourceLine" id="cb10-30" data-line-number="30"><span class="co">#> $CL</span></a> +<a class="sourceLine" id="cb10-31" data-line-number="31"><span class="co">#> [1] 0.9</span></a></code></pre></div> </div> <div id="set-of-searcher-efficiency-models" class="section level3"> <h3>Set of Searcher Efficiency Models</h3> -<p>The function <code>pkmSet</code> provides a simple wrapper on <code>pkm</code> that facilitates analyzing a set of <code>pkm</code> models defined as all allowable models simpler than, and including, the provided model formulae (where “allowable†means that any interaction terms have all component terms included in the model).</p> -<p>Consider the following model set analysis, where visibility and habitat type are included in the <span class="math inline">\(p\)</span> formula but only habitat type is in the <span class="math inline">\(k\)</span> formula, which generates a set of 10 models:</p> -<pre class="sourceCode r" id="cb11"><code class="sourceCode r"><a class="sourceLine" id="cb11-1" data-line-number="1">pkmModSet <-<span class="st"> </span><span class="kw">pkmSet</span>(<span class="dt">formula_p =</span> p <span class="op">~</span><span class="st"> </span>Visibility<span class="op">*</span>HabitatType,</a> +<p>If the arg <code>allCombos = TRUE</code> is provided, <code>pkm</code> fits a set of <code>pkm</code> models defined as all allowable models simpler than, and including, the provided model for both formulae (where “allowable†means that any interaction terms have all component terms included in the model).</p> +<p>Consider the following model set analysis, where visibility and habitat type are included in the <span class="math inline">\(p\)</span> formula but only habitat type is in the <span class="math inline">\(k\)</span> formula. This generates a set of 10 models:</p> +<div class="sourceCode" id="cb11"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb11-1" data-line-number="1">pkmModSet <-<span class="st"> </span><span class="kw">pkm</span>(<span class="dt">formula_p =</span> p <span class="op">~</span><span class="st"> </span>Visibility<span class="op">*</span>HabitatType,</a> <a class="sourceLine" id="cb11-2" data-line-number="2"> <span class="dt">formula_k =</span> k <span class="op">~</span><span class="st"> </span>HabitatType, <span class="dt">data =</span> data_SE,</a> -<a class="sourceLine" id="cb11-3" data-line-number="3"> <span class="dt">obsCol =</span> <span class="kw">c</span>(<span class="st">"Search1"</span>, <span class="st">"Search2"</span>, <span class="st">"Search3"</span>, <span class="st">"Search4"</span>)</a> -<a class="sourceLine" id="cb11-4" data-line-number="4"> )</a> -<a class="sourceLine" id="cb11-5" data-line-number="5"><span class="kw">names</span>(pkmModSet)</a> -<a class="sourceLine" id="cb11-6" data-line-number="6"><span class="co">#> [1] "p ~ Visibility * HabitatType; k ~ HabitatType"</span></a> -<a class="sourceLine" id="cb11-7" data-line-number="7"><span class="co">#> [2] "p ~ Visibility + HabitatType; k ~ HabitatType"</span></a> -<a class="sourceLine" id="cb11-8" data-line-number="8"><span class="co">#> [3] "p ~ HabitatType; k ~ HabitatType" </span></a> -<a class="sourceLine" id="cb11-9" data-line-number="9"><span class="co">#> [4] "p ~ Visibility; k ~ HabitatType" </span></a> -<a class="sourceLine" id="cb11-10" data-line-number="10"><span class="co">#> [5] "p ~ 1; k ~ HabitatType" </span></a> -<a class="sourceLine" id="cb11-11" data-line-number="11"><span class="co">#> [6] "p ~ Visibility * HabitatType; k ~ 1" </span></a> -<a class="sourceLine" id="cb11-12" data-line-number="12"><span class="co">#> [7] "p ~ Visibility + HabitatType; k ~ 1" </span></a> -<a class="sourceLine" id="cb11-13" data-line-number="13"><span class="co">#> [8] "p ~ HabitatType; k ~ 1" </span></a> -<a class="sourceLine" id="cb11-14" data-line-number="14"><span class="co">#> [9] "p ~ Visibility; k ~ 1" </span></a> -<a class="sourceLine" id="cb11-15" data-line-number="15"><span class="co">#> [10] "p ~ 1; k ~ 1"</span></a></code></pre> +<a class="sourceLine" id="cb11-3" data-line-number="3"> <span class="dt">obsCol =</span> <span class="kw">c</span>(<span class="st">"Search1"</span>, <span class="st">"Search2"</span>, <span class="st">"Search3"</span>, <span class="st">"Search4"</span>),</a> +<a class="sourceLine" id="cb11-4" data-line-number="4"> <span class="dt">allCombos =</span> <span class="ot">TRUE</span></a> +<a class="sourceLine" id="cb11-5" data-line-number="5"> )</a> +<a class="sourceLine" id="cb11-6" data-line-number="6"><span class="kw">class</span>(pkmModSet)</a> +<a class="sourceLine" id="cb11-7" data-line-number="7"><span class="co">#> [1] "pkmSet" "list"</span></a> +<a class="sourceLine" id="cb11-8" data-line-number="8"><span class="kw">names</span>(pkmModSet)</a> +<a class="sourceLine" id="cb11-9" data-line-number="9"><span class="co">#> [1] "p ~ Visibility * HabitatType; k ~ HabitatType"</span></a> +<a class="sourceLine" id="cb11-10" data-line-number="10"><span class="co">#> [2] "p ~ Visibility + HabitatType; k ~ HabitatType"</span></a> +<a class="sourceLine" id="cb11-11" data-line-number="11"><span class="co">#> [3] "p ~ HabitatType; k ~ HabitatType" </span></a> +<a class="sourceLine" id="cb11-12" data-line-number="12"><span class="co">#> [4] "p ~ Visibility; k ~ HabitatType" </span></a> +<a class="sourceLine" id="cb11-13" data-line-number="13"><span class="co">#> [5] "p ~ 1; k ~ HabitatType" </span></a> +<a class="sourceLine" id="cb11-14" data-line-number="14"><span class="co">#> [6] "p ~ Visibility * HabitatType; k ~ 1" </span></a> +<a class="sourceLine" id="cb11-15" data-line-number="15"><span class="co">#> [7] "p ~ Visibility + HabitatType; k ~ 1" </span></a> +<a class="sourceLine" id="cb11-16" data-line-number="16"><span class="co">#> [8] "p ~ HabitatType; k ~ 1" </span></a> +<a class="sourceLine" id="cb11-17" data-line-number="17"><span class="co">#> [9] "p ~ Visibility; k ~ 1" </span></a> +<a class="sourceLine" id="cb11-18" data-line-number="18"><span class="co">#> [10] "p ~ 1; k ~ 1"</span></a></code></pre></div> <p>The <code>plot</code> function is defined for the <code>pkmSet</code> class, and by default, creates a new plot window on command for each sub-model. If we want to only plot a specific single (or subset) of models from the full set, we can utilize the <code>specificModel</code> argument:</p> -<pre class="sourceCode r" id="cb12"><code class="sourceCode r"><a class="sourceLine" id="cb12-1" data-line-number="1"><span class="kw">plot</span>(pkmModSet, <span class="dt">specificModel =</span> <span class="st">"p ~ Visibility + HabitatType; k ~ 1"</span>)</a></code></pre> +<div class="sourceCode" id="cb12"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb12-1" data-line-number="1"><span class="kw">plot</span>(pkmModSet, <span class="dt">specificModel =</span> <span class="st">"p ~ Visibility + HabitatType; k ~ 1"</span>)</a></code></pre></div> <p>The resulting model outputs can be compared in an AICc table</p> -<pre class="sourceCode r" id="cb13"><code class="sourceCode r"><a class="sourceLine" id="cb13-1" data-line-number="1"><span class="kw">pkmSetAICcTab</span>(pkmModSet)</a> -<a class="sourceLine" id="cb13-2" data-line-number="2"><span class="co">#> p Formula k Formula AICc Delta AICc</span></a> -<a class="sourceLine" id="cb13-3" data-line-number="3"><span class="co">#> 10 p ~ 1 k ~ 1 1145.00 0.00</span></a> -<a class="sourceLine" id="cb13-4" data-line-number="4"><span class="co">#> 5 p ~ 1 k ~ HabitatType 1145.70 0.70</span></a> -<a class="sourceLine" id="cb13-5" data-line-number="5"><span class="co">#> 3 p ~ HabitatType k ~ HabitatType 1146.57 1.57</span></a> -<a class="sourceLine" id="cb13-6" data-line-number="6"><span class="co">#> 8 p ~ HabitatType k ~ 1 1146.76 1.76</span></a> -<a class="sourceLine" id="cb13-7" data-line-number="7"><span class="co">#> 9 p ~ Visibility k ~ 1 1148.96 3.96</span></a> -<a class="sourceLine" id="cb13-8" data-line-number="8"><span class="co">#> 4 p ~ Visibility k ~ HabitatType 1149.67 4.67</span></a> -<a class="sourceLine" id="cb13-9" data-line-number="9"><span class="co">#> 2 p ~ Visibility + HabitatType k ~ HabitatType 1150.55 5.55</span></a> -<a class="sourceLine" id="cb13-10" data-line-number="10"><span class="co">#> 7 p ~ Visibility + HabitatType k ~ 1 1150.73 5.73</span></a> -<a class="sourceLine" id="cb13-11" data-line-number="11"><span class="co">#> 1 p ~ Visibility * HabitatType k ~ HabitatType 1153.45 8.45</span></a> -<a class="sourceLine" id="cb13-12" data-line-number="12"><span class="co">#> 6 p ~ Visibility * HabitatType k ~ 1 1153.49 8.49</span></a></code></pre> +<div class="sourceCode" id="cb13"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb13-1" data-line-number="1"><span class="kw">aicc</span>(pkmModSet)</a> +<a class="sourceLine" id="cb13-2" data-line-number="2"><span class="co">#> p Formula k Formula AICc <U+0394>AICc</span></a> +<a class="sourceLine" id="cb13-3" data-line-number="3"><span class="co">#> 10 p ~ 1 k ~ 1 1145.00 0.00</span></a> +<a class="sourceLine" id="cb13-4" data-line-number="4"><span class="co">#> 5 p ~ 1 k ~ HabitatType 1145.70 0.70</span></a> +<a class="sourceLine" id="cb13-5" data-line-number="5"><span class="co">#> 3 p ~ HabitatType k ~ HabitatType 1146.57 1.57</span></a> +<a class="sourceLine" id="cb13-6" data-line-number="6"><span class="co">#> 8 p ~ HabitatType k ~ 1 1146.76 1.76</span></a> +<a class="sourceLine" id="cb13-7" data-line-number="7"><span class="co">#> 9 p ~ Visibility k ~ 1 1148.96 3.96</span></a> +<a class="sourceLine" id="cb13-8" data-line-number="8"><span class="co">#> 4 p ~ Visibility k ~ HabitatType 1149.67 4.67</span></a> +<a class="sourceLine" id="cb13-9" data-line-number="9"><span class="co">#> 2 p ~ Visibility + HabitatType k ~ HabitatType 1150.55 5.55</span></a> +<a class="sourceLine" id="cb13-10" data-line-number="10"><span class="co">#> 7 p ~ Visibility + HabitatType k ~ 1 1150.73 5.73</span></a> +<a class="sourceLine" id="cb13-11" data-line-number="11"><span class="co">#> 1 p ~ Visibility * HabitatType k ~ HabitatType 1153.45 8.45</span></a> +<a class="sourceLine" id="cb13-12" data-line-number="12"><span class="co">#> 6 p ~ Visibility * HabitatType k ~ 1 1153.49 8.49</span></a></code></pre></div> </div> <div id="multiple-sizes-of-animals-and-sets-of-searcher-efficiency-models" class="section level3"> <h3>Multiple Sizes of Animals and Sets of Searcher Efficiency Models</h3> -<p>Often, carcasses are grouped in multiple size classes, and we are interested in analyzing a set of models separately for each size class. To do so, we use the <code>pkmSetSize</code> function, which is a wrapper on <code>pkmSet</code> that runs the subfunction for each unique size class in the column identified by the <code>sizeclassCol</code> argument:</p> -<pre class="sourceCode r" id="cb14"><code class="sourceCode r"><a class="sourceLine" id="cb14-1" data-line-number="1">pkmModSetSize <-<span class="st"> </span><span class="kw">pkmSetSize</span>(<span class="dt">formula_p =</span> p <span class="op">~</span><span class="st"> </span>Visibility<span class="op">*</span>HabitatType,</a> +<p>Often, carcasses are grouped in multiple size classes, and we are interested in analyzing a set of models separately for each size class. To do so, we use the <code>sizeCol</code> arg to tell <code>pkm</code> which column in <code>data_CP</code> gives the carcass size class. If, in addition, <code>allCombos = TRUE</code>, <code>pkm</code> will fit a <code>pkmSet</code> that runs for each unique size class in the column identified by the <code>sizeCol</code> argument:</p> +<div class="sourceCode" id="cb14"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb14-1" data-line-number="1">pkmModSetSize <-<span class="st"> </span><span class="kw">pkm</span>(<span class="dt">formula_p =</span> p <span class="op">~</span><span class="st"> </span>Visibility<span class="op">*</span>HabitatType,</a> <a class="sourceLine" id="cb14-2" data-line-number="2"> <span class="dt">formula_k =</span> k <span class="op">~</span><span class="st"> </span>HabitatType, <span class="dt">data =</span> data_SE,</a> <a class="sourceLine" id="cb14-3" data-line-number="3"> <span class="dt">obsCol =</span> <span class="kw">c</span>(<span class="st">"Search1"</span>, <span class="st">"Search2"</span>, <span class="st">"Search3"</span>, <span class="st">"Search4"</span>),</a> -<a class="sourceLine" id="cb14-4" data-line-number="4"> <span class="dt">sizeclassCol =</span> <span class="st">"Size"</span></a> -<a class="sourceLine" id="cb14-5" data-line-number="5"> )</a></code></pre> -<p>The output from <code>pkmSetSize</code> is a list where each element corresponds to a different unique size class, and contains the associated <code>pkmSet</code>object, which itself is a list of <code>pkm</code> outputs:</p> -<pre class="sourceCode r" id="cb15"><code class="sourceCode r"><a class="sourceLine" id="cb15-1" data-line-number="1"><span class="kw">names</span>(pkmModSetSize)</a> +<a class="sourceLine" id="cb14-4" data-line-number="4"> <span class="dt">sizeCol =</span> <span class="st">"Size"</span>, <span class="dt">allCombos =</span> <span class="ot">TRUE</span>)</a> +<a class="sourceLine" id="cb14-5" data-line-number="5"><span class="kw">class</span>(pkmModSetSize)</a> +<a class="sourceLine" id="cb14-6" data-line-number="6"><span class="co">#> [1] "pkmSetSize" "list"</span></a></code></pre></div> +<p>The <code>pkmSetSize</code> object is a list where each element corresponds to a different unique size class, and contains the associated <code>pkmSet</code>object, which itself is a list of <code>pkm</code> outputs:</p> +<div class="sourceCode" id="cb15"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb15-1" data-line-number="1"><span class="kw">names</span>(pkmModSetSize)</a> <a class="sourceLine" id="cb15-2" data-line-number="2"><span class="co">#> [1] "S" "L" "M" "XL"</span></a> <a class="sourceLine" id="cb15-3" data-line-number="3"><span class="kw">names</span>(pkmModSetSize[[<span class="dv">1</span>]])</a> <a class="sourceLine" id="cb15-4" data-line-number="4"><span class="co">#> [1] "p ~ Visibility * HabitatType; k ~ HabitatType"</span></a> @@ -488,24 +501,24 @@ code > span.fu { color: #900; font-weight: bold; } code > span.er { color: #a61 <a class="sourceLine" id="cb15-10" data-line-number="10"><span class="co">#> [7] "p ~ Visibility + HabitatType; k ~ 1" </span></a> <a class="sourceLine" id="cb15-11" data-line-number="11"><span class="co">#> [8] "p ~ HabitatType; k ~ 1" </span></a> <a class="sourceLine" id="cb15-12" data-line-number="12"><span class="co">#> [9] "p ~ Visibility; k ~ 1" </span></a> -<a class="sourceLine" id="cb15-13" data-line-number="13"><span class="co">#> [10] "p ~ 1; k ~ 1"</span></a></code></pre> +<a class="sourceLine" id="cb15-13" data-line-number="13"><span class="co">#> [10] "p ~ 1; k ~ 1"</span></a></code></pre></div> </div> </div> <div id="carcass-persistence" class="section level2"> <h2>Carcass Persistence</h2> <div id="single-carcass-persistence-model" class="section level3"> <h3>Single Carcass Persistence Model</h3> -<p>The central function for carcass persistence analyses is <code>cpm</code>, which conducts a singular carcass persistence analysis (<em>i.e.</em>, a singular set of <span class="math inline">\(l\)</span> and <span class="math inline">\(s\)</span> formulae and a singular size classification of carcasses). Note that we use <span class="math inline">\(l\)</span> and <span class="math inline">\(s\)</span> to reference <span class="math inline">\(location\)</span> and <span class="math inline">\(scale\)</span> as the parameters for survival models, following <code>survreg</code>, however we also provide an alternative parameterization (using parameters <span class="math inline">\(a\)</span> and <span class="math inline">\(b\)</span>, referred to as “<code>ab</code>†or “ppersistâ€). As a first example, we will ignore the size category, use intercept-only models for both <span class="math inline">\(l\)</span> and <span class="math inline">\(s\)</span>, and use the Weibull distribution:</p> -<pre class="sourceCode r" id="cb16"><code class="sourceCode r"><a class="sourceLine" id="cb16-1" data-line-number="1">data_CP <-<span class="st"> </span>mock<span class="op">$</span>CP</a> +<p>The central function for carcass persistence analyses is <code>cpm</code>, which, in its simplest form, conducts a singular carcass persistence analysis (<em>i.e.</em>, a singular set of <span class="math inline">\(l\)</span> and <span class="math inline">\(s\)</span> formulae and a singular size classification of carcasses). Note that we use <span class="math inline">\(l\)</span> and <span class="math inline">\(s\)</span> to reference <span class="math inline">\(location\)</span> and <span class="math inline">\(scale\)</span> as the parameters for survival models, following <code>survreg</code>, however we also provide an alternative parameterization (using parameters <span class="math inline">\(a\)</span> and <span class="math inline">\(b\)</span>, referred to as “<code>ab</code>†or “ppersistâ€). As a first example, we will ignore the size category, use intercept-only models for both <span class="math inline">\(l\)</span> and <span class="math inline">\(s\)</span>, and use the Weibull distribution:</p> +<div class="sourceCode" id="cb16"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb16-1" data-line-number="1">data_CP <-<span class="st"> </span>mock<span class="op">$</span>CP</a> <a class="sourceLine" id="cb16-2" data-line-number="2">cpModel <-<span class="st"> </span><span class="kw">cpm</span>(<span class="dt">formula_l =</span> l <span class="op">~</span><span class="st"> </span><span class="dv">1</span>, <span class="dt">formula_s =</span> s <span class="op">~</span><span class="st"> </span><span class="dv">1</span>, <span class="dt">data =</span> data_CP,</a> <a class="sourceLine" id="cb16-3" data-line-number="3"> <span class="dt">left =</span> <span class="st">"LastPresentDecimalDays"</span>,</a> <a class="sourceLine" id="cb16-4" data-line-number="4"> <span class="dt">right =</span> <span class="st">"FirstAbsentDecimalDays"</span>, <span class="dt">dist =</span> <span class="st">"weibull"</span></a> -<a class="sourceLine" id="cb16-5" data-line-number="5"> )</a></code></pre> +<a class="sourceLine" id="cb16-5" data-line-number="5"> )</a></code></pre></div> <p>If successfully fit, a <code>cpm</code> model output contains a number of elements, some printed automatically:</p> -<pre class="sourceCode r" id="cb17"><code class="sourceCode r"><a class="sourceLine" id="cb17-1" data-line-number="1">cpModel</a> +<div class="sourceCode" id="cb17"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb17-1" data-line-number="1">cpModel</a> <a class="sourceLine" id="cb17-2" data-line-number="2"><span class="co">#> $call</span></a> -<a class="sourceLine" id="cb17-3" data-line-number="3"><span class="co">#> cpm(formula_l = l ~ 1, formula_s = s ~ 1, data = data_CP, left = "LastPresentDecimalDays", </span></a> -<a class="sourceLine" id="cb17-4" data-line-number="4"><span class="co">#> right = "FirstAbsentDecimalDays", dist = "weibull")</span></a> +<a class="sourceLine" id="cb17-3" data-line-number="3"><span class="co">#> cpm0(formula_l = formula_l, formula_s = formula_s, data = data, </span></a> +<a class="sourceLine" id="cb17-4" data-line-number="4"><span class="co">#> left = left, right = right, dist = dist, CL = CL, quiet = quiet)</span></a> <a class="sourceLine" id="cb17-5" data-line-number="5"><span class="co">#> </span></a> <a class="sourceLine" id="cb17-6" data-line-number="6"><span class="co">#> $formula_l</span></a> <a class="sourceLine" id="cb17-7" data-line-number="7"><span class="co">#> l ~ 1</span></a> @@ -520,196 +533,196 @@ code > span.fu { color: #900; font-weight: bold; } code > span.er { color: #a61 <a class="sourceLine" id="cb17-16" data-line-number="16"><span class="co">#> character(0)</span></a> <a class="sourceLine" id="cb17-17" data-line-number="17"><span class="co">#> </span></a> <a class="sourceLine" id="cb17-18" data-line-number="18"><span class="co">#> $AICc</span></a> -<a class="sourceLine" id="cb17-19" data-line-number="19"><span class="co">#> [1] 2099.81</span></a> +<a class="sourceLine" id="cb17-19" data-line-number="19"><span class="co">#> [1] 2102.11</span></a> <a class="sourceLine" id="cb17-20" data-line-number="20"><span class="co">#> </span></a> <a class="sourceLine" id="cb17-21" data-line-number="21"><span class="co">#> $convergence</span></a> <a class="sourceLine" id="cb17-22" data-line-number="22"><span class="co">#> [1] 0</span></a> <a class="sourceLine" id="cb17-23" data-line-number="23"><span class="co">#> </span></a> -<a class="sourceLine" id="cb17-24" data-line-number="24"><span class="co">#> $cellwiseTable_ls</span></a> -<a class="sourceLine" id="cb17-25" data-line-number="25"><span class="co">#> cell l_median l_lower l_upper s_median s_lower s_upper</span></a> -<a class="sourceLine" id="cb17-26" data-line-number="26"><span class="co">#> 1 all 2.67 2.591 2.749 0.97 0.904 1.042</span></a> +<a class="sourceLine" id="cb17-24" data-line-number="24"><span class="co">#> $cell_ls</span></a> +<a class="sourceLine" id="cb17-25" data-line-number="25"><span class="co">#> cell n l_median l_lower l_upper s_median s_lower s_upper</span></a> +<a class="sourceLine" id="cb17-26" data-line-number="26"><span class="co">#> 1 all 480 2.671 2.592 2.749 0.966 0.901 1.037</span></a> <a class="sourceLine" id="cb17-27" data-line-number="27"><span class="co">#> </span></a> -<a class="sourceLine" id="cb17-28" data-line-number="28"><span class="co">#> $cellwiseTable_ab</span></a> -<a class="sourceLine" id="cb17-29" data-line-number="29"><span class="co">#> cell pda_median pda_lower pda_upper pdb_median pdb_lower pdb_upper</span></a> -<a class="sourceLine" id="cb17-30" data-line-number="30"><span class="co">#> 1 all 1.031 1.106 0.96 14.44 13.343 15.627</span></a> +<a class="sourceLine" id="cb17-28" data-line-number="28"><span class="co">#> $cell_ab</span></a> +<a class="sourceLine" id="cb17-29" data-line-number="29"><span class="co">#> cell n pda_median pda_lower pda_upper pdb_median pdb_lower pdb_upper</span></a> +<a class="sourceLine" id="cb17-30" data-line-number="30"><span class="co">#> 1 all 480 1.035 1.11 0.964 14.454 13.356 15.627</span></a> <a class="sourceLine" id="cb17-31" data-line-number="31"><span class="co">#> </span></a> <a class="sourceLine" id="cb17-32" data-line-number="32"><span class="co">#> $CL</span></a> <a class="sourceLine" id="cb17-33" data-line-number="33"><span class="co">#> [1] 0.9</span></a> <a class="sourceLine" id="cb17-34" data-line-number="34"><span class="co">#> </span></a> -<a class="sourceLine" id="cb17-35" data-line-number="35"><span class="co">#> $cellwiseTable_desc</span></a> -<a class="sourceLine" id="cb17-36" data-line-number="36"><span class="co">#> cell median r1 r3 r7 r14 r28</span></a> -<a class="sourceLine" id="cb17-37" data-line-number="37"><span class="co">#> 1 all 10.11996 0.9692643 0.9086614 0.7993473 0.6454325 0.4423752</span></a></code></pre> -<p>and others available upon request (using <code>$</code> as <code>cpm</code> is an S3 class):</p> -<pre class="sourceCode r" id="cb18"><code class="sourceCode r"><a class="sourceLine" id="cb18-1" data-line-number="1"><span class="kw">names</span>(cpModel)</a> -<a class="sourceLine" id="cb18-2" data-line-number="2"><span class="co">#> [1] "call" "data" "formula_l" </span></a> -<a class="sourceLine" id="cb18-3" data-line-number="3"><span class="co">#> [4] "formula_s" "distribution" "predictors" </span></a> -<a class="sourceLine" id="cb18-4" data-line-number="4"><span class="co">#> [7] "predictors_l" "predictors_s" "AIC" </span></a> -<a class="sourceLine" id="cb18-5" data-line-number="5"><span class="co">#> [10] "AICc" "convergence" "varbeta" </span></a> -<a class="sourceLine" id="cb18-6" data-line-number="6"><span class="co">#> [13] "cellMM_l" "cellMM_s" "nbeta_l" </span></a> -<a class="sourceLine" id="cb18-7" data-line-number="7"><span class="co">#> [16] "nbeta_s" "betahat_l" "betahat_s" </span></a> -<a class="sourceLine" id="cb18-8" data-line-number="8"><span class="co">#> [19] "cells" "ncell" "cellwiseTable_ls" </span></a> -<a class="sourceLine" id="cb18-9" data-line-number="9"><span class="co">#> [22] "cellwiseTable_ab" "CL" "observations" </span></a> -<a class="sourceLine" id="cb18-10" data-line-number="10"><span class="co">#> [25] "carcCells" "loglik" "cellwiseTable_desc"</span></a> -<a class="sourceLine" id="cb18-11" data-line-number="11">cpModel<span class="op">$</span>cells</a> -<a class="sourceLine" id="cb18-12" data-line-number="12"><span class="co">#> group CellNames</span></a> -<a class="sourceLine" id="cb18-13" data-line-number="13"><span class="co">#> 1 all all</span></a></code></pre> +<a class="sourceLine" id="cb17-35" data-line-number="35"><span class="co">#> $cell_desc</span></a> +<a class="sourceLine" id="cb17-36" data-line-number="36"><span class="co">#> cell medianCP r1 r3 r7 r14 r28</span></a> +<a class="sourceLine" id="cb17-37" data-line-number="37"><span class="co">#> 1 all 10.1437 0.9696732 0.9094574 0.8003887 0.6463498 0.4427757</span></a></code></pre></div> +<p>and others available upon request:</p> +<div class="sourceCode" id="cb18"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb18-1" data-line-number="1"><span class="kw">names</span>(cpModel)</a> +<a class="sourceLine" id="cb18-2" data-line-number="2"><span class="co">#> [1] "call" "data" "formula_l" "formula_s" </span></a> +<a class="sourceLine" id="cb18-3" data-line-number="3"><span class="co">#> [5] "distribution" "predictors" "predictors_l" "predictors_s"</span></a> +<a class="sourceLine" id="cb18-4" data-line-number="4"><span class="co">#> [9] "AIC" "AICc" "convergence" "varbeta" </span></a> +<a class="sourceLine" id="cb18-5" data-line-number="5"><span class="co">#> [13] "cellMM_l" "cellMM_s" "nbeta_l" "nbeta_s" </span></a> +<a class="sourceLine" id="cb18-6" data-line-number="6"><span class="co">#> [17] "betahat_l" "betahat_s" "cells" "ncell" </span></a> +<a class="sourceLine" id="cb18-7" data-line-number="7"><span class="co">#> [21] "cell_ls" "cell_ab" "CL" "observations"</span></a> +<a class="sourceLine" id="cb18-8" data-line-number="8"><span class="co">#> [25] "carcCells" "loglik" "cell_desc"</span></a> +<a class="sourceLine" id="cb18-9" data-line-number="9">cpModel<span class="op">$</span>cells</a> +<a class="sourceLine" id="cb18-10" data-line-number="10"><span class="co">#> group CellNames</span></a> +<a class="sourceLine" id="cb18-11" data-line-number="11"><span class="co">#> 1 all all</span></a></code></pre></div> <p>The <code>plot</code> function has been defined for <code>cpm</code> objects, such that one can simply run</p> -<pre class="sourceCode r" id="cb19"><code class="sourceCode r"><a class="sourceLine" id="cb19-1" data-line-number="1"><span class="kw">plot</span>(cpModel)</a></code></pre> -<p><img src="data:image/png;base64,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" style="display: block; margin: auto;" /></p> +<div class="sourceCode" id="cb19"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb19-1" data-line-number="1"><span class="kw">plot</span>(cpModel)</a></code></pre></div> +<p><img src="data:image/png;base64,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" style="display: block; margin: auto;" /></p> <p>to visualize the model’s output.</p> -<p>You can generate random draws of the <span class="math inline">\(l\)</span> and <span class="math inline">\(s\)</span> (or <span class="math inline">\(a\)</span> and <span class="math inline">\(b\)</span>) parameters for each cell grouping (in <code>cpModel</code> there are no predictors, so there is one cell grouping called “allâ€) using the <code>cpk</code> function which, like other <code>r*</code> functions in <strong>R</strong> (<em>i.e.</em>, <code>rnorm</code>) takes the number of random draws (<code>n</code>) as the first argument:</p> -<pre class="sourceCode r" id="cb20"><code class="sourceCode r"><a class="sourceLine" id="cb20-1" data-line-number="1"><span class="kw">rcp</span>(<span class="dt">n =</span> <span class="dv">10</span>, cpModel)</a> +<p>You can generate random draws of the <span class="math inline">\(l\)</span> and <span class="math inline">\(s\)</span> (or <span class="math inline">\(a\)</span> and <span class="math inline">\(b\)</span>) parameters for each cell grouping (in <code>cpModel</code> there are no predictors, so there is one cell grouping called “allâ€) using the <code>rcp</code> function which, like other <code>r*</code> functions in <strong>R</strong> (<em>e.g.</em>, <code>rnorm</code>) takes the number of random draws (<code>n</code>) as the first argument:</p> +<div class="sourceCode" id="cb20"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb20-1" data-line-number="1"><span class="kw">rcp</span>(<span class="dt">n =</span> <span class="dv">10</span>, cpModel)</a> <a class="sourceLine" id="cb20-2" data-line-number="2"><span class="co">#> $all</span></a> <a class="sourceLine" id="cb20-3" data-line-number="3"><span class="co">#> l s</span></a> -<a class="sourceLine" id="cb20-4" data-line-number="4"><span class="co">#> [1,] 2.635150 0.8967834</span></a> -<a class="sourceLine" id="cb20-5" data-line-number="5"><span class="co">#> [2,] 2.745358 0.9860674</span></a> -<a class="sourceLine" id="cb20-6" data-line-number="6"><span class="co">#> [3,] 2.664558 1.0001519</span></a> -<a class="sourceLine" id="cb20-7" data-line-number="7"><span class="co">#> [4,] 2.677669 0.9172498</span></a> -<a class="sourceLine" id="cb20-8" data-line-number="8"><span class="co">#> [5,] 2.569283 0.9699264</span></a> -<a class="sourceLine" id="cb20-9" data-line-number="9"><span class="co">#> [6,] 2.659167 0.9285581</span></a> -<a class="sourceLine" id="cb20-10" data-line-number="10"><span class="co">#> [7,] 2.691150 0.9558820</span></a> -<a class="sourceLine" id="cb20-11" data-line-number="11"><span class="co">#> [8,] 2.704359 1.0224604</span></a> -<a class="sourceLine" id="cb20-12" data-line-number="12"><span class="co">#> [9,] 2.643517 0.9370299</span></a> -<a class="sourceLine" id="cb20-13" data-line-number="13"><span class="co">#> [10,] 2.671219 1.0311116</span></a> +<a class="sourceLine" id="cb20-4" data-line-number="4"><span class="co">#> [1,] 2.685269 0.8918961</span></a> +<a class="sourceLine" id="cb20-5" data-line-number="5"><span class="co">#> [2,] 2.677131 1.0099586</span></a> +<a class="sourceLine" id="cb20-6" data-line-number="6"><span class="co">#> [3,] 2.706404 1.0237791</span></a> +<a class="sourceLine" id="cb20-7" data-line-number="7"><span class="co">#> [4,] 2.675554 0.9381586</span></a> +<a class="sourceLine" id="cb20-8" data-line-number="8"><span class="co">#> [5,] 2.674988 0.9794071</span></a> +<a class="sourceLine" id="cb20-9" data-line-number="9"><span class="co">#> [6,] 2.703458 0.9607640</span></a> +<a class="sourceLine" id="cb20-10" data-line-number="10"><span class="co">#> [7,] 2.569267 1.0081964</span></a> +<a class="sourceLine" id="cb20-11" data-line-number="11"><span class="co">#> [8,] 2.620284 0.9201238</span></a> +<a class="sourceLine" id="cb20-12" data-line-number="12"><span class="co">#> [9,] 2.665928 0.9303421</span></a> +<a class="sourceLine" id="cb20-13" data-line-number="13"><span class="co">#> [10,] 2.650500 0.9171132</span></a> <a class="sourceLine" id="cb20-14" data-line-number="14"><span class="kw">rcp</span>(<span class="dt">n =</span> <span class="dv">10</span>, cpModel, <span class="dt">type =</span> <span class="st">"ppersist"</span>)</a> <a class="sourceLine" id="cb20-15" data-line-number="15"><span class="co">#> $all</span></a> <a class="sourceLine" id="cb20-16" data-line-number="16"><span class="co">#> pda pdb</span></a> -<a class="sourceLine" id="cb20-17" data-line-number="17"><span class="co">#> [1,] 1.0608408 13.33403</span></a> -<a class="sourceLine" id="cb20-18" data-line-number="18"><span class="co">#> [2,] 1.0111153 13.93318</span></a> -<a class="sourceLine" id="cb20-19" data-line-number="19"><span class="co">#> [3,] 1.0610021 16.21161</span></a> -<a class="sourceLine" id="cb20-20" data-line-number="20"><span class="co">#> [4,] 1.1066566 14.24298</span></a> -<a class="sourceLine" id="cb20-21" data-line-number="21"><span class="co">#> [5,] 0.9928988 13.69667</span></a> -<a class="sourceLine" id="cb20-22" data-line-number="22"><span class="co">#> [6,] 1.0490570 13.96065</span></a> -<a class="sourceLine" id="cb20-23" data-line-number="23"><span class="co">#> [7,] 1.0317264 14.20126</span></a> -<a class="sourceLine" id="cb20-24" data-line-number="24"><span class="co">#> [8,] 0.9829871 15.52573</span></a> -<a class="sourceLine" id="cb20-25" data-line-number="25"><span class="co">#> [9,] 1.1245710 16.01097</span></a> -<a class="sourceLine" id="cb20-26" data-line-number="26"><span class="co">#> [10,] 0.9835126 14.06578</span></a></code></pre> +<a class="sourceLine" id="cb20-17" data-line-number="17"><span class="co">#> [1,] 1.0057902 14.84826</span></a> +<a class="sourceLine" id="cb20-18" data-line-number="18"><span class="co">#> [2,] 1.0870108 14.16171</span></a> +<a class="sourceLine" id="cb20-19" data-line-number="19"><span class="co">#> [3,] 0.9600682 13.38021</span></a> +<a class="sourceLine" id="cb20-20" data-line-number="20"><span class="co">#> [4,] 1.1261786 15.10501</span></a> +<a class="sourceLine" id="cb20-21" data-line-number="21"><span class="co">#> [5,] 1.0980875 13.81206</span></a> +<a class="sourceLine" id="cb20-22" data-line-number="22"><span class="co">#> [6,] 1.0816159 14.73398</span></a> +<a class="sourceLine" id="cb20-23" data-line-number="23"><span class="co">#> [7,] 1.0176811 13.51698</span></a> +<a class="sourceLine" id="cb20-24" data-line-number="24"><span class="co">#> [8,] 1.0740121 13.79669</span></a> +<a class="sourceLine" id="cb20-25" data-line-number="25"><span class="co">#> [9,] 1.0160263 14.06960</span></a> +<a class="sourceLine" id="cb20-26" data-line-number="26"><span class="co">#> [10,] 1.0431170 14.59497</span></a></code></pre></div> <p>You can complicate the <span class="math inline">\(l\)</span> and <span class="math inline">\(s\)</span> formulae independently</p> -<pre class="sourceCode r" id="cb21"><code class="sourceCode r"><a class="sourceLine" id="cb21-1" data-line-number="1"><span class="kw">cpm</span>(<span class="dt">formula_l =</span> l <span class="op">~</span><span class="st"> </span>Visibility<span class="op">*</span>GroundCover, <span class="dt">formula_s =</span> s <span class="op">~</span><span class="st"> </span><span class="dv">1</span>, <span class="dt">data =</span> data_CP,</a> +<div class="sourceCode" id="cb21"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb21-1" data-line-number="1"><span class="kw">cpm</span>(<span class="dt">formula_l =</span> l <span class="op">~</span><span class="st"> </span>Visibility <span class="op">*</span><span class="st"> </span>GroundCover, <span class="dt">formula_s =</span> s <span class="op">~</span><span class="st"> </span><span class="dv">1</span>, <span class="dt">data =</span> data_CP,</a> <a class="sourceLine" id="cb21-2" data-line-number="2"> <span class="dt">left =</span> <span class="st">"LastPresentDecimalDays"</span>, <span class="dt">right =</span> <span class="st">"FirstAbsentDecimalDays"</span>,</a> <a class="sourceLine" id="cb21-3" data-line-number="3"> <span class="dt">dist =</span> <span class="st">"weibull"</span></a> <a class="sourceLine" id="cb21-4" data-line-number="4">)</a> <a class="sourceLine" id="cb21-5" data-line-number="5"><span class="co">#> $call</span></a> -<a class="sourceLine" id="cb21-6" data-line-number="6"><span class="co">#> cpm(formula_l = l ~ Visibility * GroundCover, formula_s = s ~ </span></a> -<a class="sourceLine" id="cb21-7" data-line-number="7"><span class="co">#> 1, data = data_CP, left = "LastPresentDecimalDays", right = "FirstAbsentDecimalDays", </span></a> -<a class="sourceLine" id="cb21-8" data-line-number="8"><span class="co">#> dist = "weibull")</span></a> -<a class="sourceLine" id="cb21-9" data-line-number="9"><span class="co">#> </span></a> -<a class="sourceLine" id="cb21-10" data-line-number="10"><span class="co">#> $formula_l</span></a> -<a class="sourceLine" id="cb21-11" data-line-number="11"><span class="co">#> l ~ Visibility * GroundCover</span></a> -<a class="sourceLine" id="cb21-12" data-line-number="12"><span class="co">#> </span></a> -<a class="sourceLine" id="cb21-13" data-line-number="13"><span class="co">#> $formula_s</span></a> -<a class="sourceLine" id="cb21-14" data-line-number="14"><span class="co">#> s ~ 1</span></a> -<a class="sourceLine" id="cb21-15" data-line-number="15"><span class="co">#> </span></a> -<a class="sourceLine" id="cb21-16" data-line-number="16"><span class="co">#> $distribution</span></a> -<a class="sourceLine" id="cb21-17" data-line-number="17"><span class="co">#> [1] "weibull"</span></a> -<a class="sourceLine" id="cb21-18" data-line-number="18"><span class="co">#> </span></a> -<a class="sourceLine" id="cb21-19" data-line-number="19"><span class="co">#> $predictors</span></a> -<a class="sourceLine" id="cb21-20" data-line-number="20"><span class="co">#> [1] "Visibility" "GroundCover"</span></a> -<a class="sourceLine" id="cb21-21" data-line-number="21"><span class="co">#> </span></a> -<a class="sourceLine" id="cb21-22" data-line-number="22"><span class="co">#> $AICc</span></a> -<a class="sourceLine" id="cb21-23" data-line-number="23"><span class="co">#> [1] 2107.064</span></a> -<a class="sourceLine" id="cb21-24" data-line-number="24"><span class="co">#> </span></a> -<a class="sourceLine" id="cb21-25" data-line-number="25"><span class="co">#> $convergence</span></a> -<a class="sourceLine" id="cb21-26" data-line-number="26"><span class="co">#> [1] 0</span></a> -<a class="sourceLine" id="cb21-27" data-line-number="27"><span class="co">#> </span></a> -<a class="sourceLine" id="cb21-28" data-line-number="28"><span class="co">#> $cellwiseTable_ls</span></a> -<a class="sourceLine" id="cb21-29" data-line-number="29"><span class="co">#> cell l_median l_lower l_upper s_median s_lower s_upper</span></a> -<a class="sourceLine" id="cb21-30" data-line-number="30"><span class="co">#> 1 H.A 2.646 2.456 2.837 0.968 0.901 1.039</span></a> -<a class="sourceLine" id="cb21-31" data-line-number="31"><span class="co">#> 2 L.A 2.616 2.425 2.808 0.968 0.901 1.039</span></a> -<a class="sourceLine" id="cb21-32" data-line-number="32"><span class="co">#> 3 M.A 2.535 2.348 2.722 0.968 0.901 1.039</span></a> -<a class="sourceLine" id="cb21-33" data-line-number="33"><span class="co">#> 4 H.B 2.788 2.595 2.981 0.968 0.901 1.039</span></a> -<a class="sourceLine" id="cb21-34" data-line-number="34"><span class="co">#> 5 L.B 2.710 2.520 2.900 0.968 0.901 1.039</span></a> -<a class="sourceLine" id="cb21-35" data-line-number="35"><span class="co">#> 6 M.B 2.715 2.525 2.905 0.968 0.901 1.039</span></a> -<a class="sourceLine" id="cb21-36" data-line-number="36"><span class="co">#> </span></a> -<a class="sourceLine" id="cb21-37" data-line-number="37"><span class="co">#> $cellwiseTable_ab</span></a> -<a class="sourceLine" id="cb21-38" data-line-number="38"><span class="co">#> cell pda_median pda_lower pda_upper pdb_median pdb_lower pdb_upper</span></a> -<a class="sourceLine" id="cb21-39" data-line-number="39"><span class="co">#> 1 H.A 1.033 1.11 0.962 14.098 11.658 17.064</span></a> -<a class="sourceLine" id="cb21-40" data-line-number="40"><span class="co">#> 2 L.A 1.033 1.11 0.962 13.681 11.302 16.577</span></a> -<a class="sourceLine" id="cb21-41" data-line-number="41"><span class="co">#> 3 M.A 1.033 1.11 0.962 12.616 10.465 15.211</span></a> -<a class="sourceLine" id="cb21-42" data-line-number="42"><span class="co">#> 4 H.B 1.033 1.11 0.962 16.248 13.397 19.708</span></a> -<a class="sourceLine" id="cb21-43" data-line-number="43"><span class="co">#> 5 L.B 1.033 1.11 0.962 15.029 12.429 18.174</span></a> -<a class="sourceLine" id="cb21-44" data-line-number="44"><span class="co">#> 6 M.B 1.033 1.11 0.962 15.105 12.491 18.265</span></a> -<a class="sourceLine" id="cb21-45" data-line-number="45"><span class="co">#> </span></a> -<a class="sourceLine" id="cb21-46" data-line-number="46"><span class="co">#> $CL</span></a> -<a class="sourceLine" id="cb21-47" data-line-number="47"><span class="co">#> [1] 0.9</span></a> -<a class="sourceLine" id="cb21-48" data-line-number="48"><span class="co">#> </span></a> -<a class="sourceLine" id="cb21-49" data-line-number="49"><span class="co">#> $cellwiseTable_desc</span></a> -<a class="sourceLine" id="cb21-50" data-line-number="50"><span class="co">#> cell median r1 r3 r7 r14 r28</span></a> -<a class="sourceLine" id="cb21-51" data-line-number="51"><span class="co">#> 1 H.A 9.887077 0.9687050 0.9068844 0.7955071 0.6393511 0.4351333</span></a> -<a class="sourceLine" id="cb21-52" data-line-number="52"><span class="co">#> 2 L.A 9.594631 0.9677409 0.9041469 0.7900468 0.6312302 0.4260198</span></a> -<a class="sourceLine" id="cb21-53" data-line-number="53"><span class="co">#> 3 M.A 8.847735 0.9649912 0.8963820 0.7747229 0.6088348 0.4016064</span></a> -<a class="sourceLine" id="cb21-54" data-line-number="54"><span class="co">#> 4 H.B 11.394895 0.9728943 0.9188679 0.8197680 0.6763400 0.4784480</span></a> -<a class="sourceLine" id="cb21-55" data-line-number="55"><span class="co">#> 5 L.B 10.539997 0.9706656 0.9124746 0.8067516 0.6563100 0.4546215</span></a> -<a class="sourceLine" id="cb21-56" data-line-number="56"><span class="co">#> 6 M.B 10.593297 0.9708150 0.9129019 0.8076165 0.6576276 0.4561617</span></a></code></pre> +<a class="sourceLine" id="cb21-6" data-line-number="6"><span class="co">#> cpm0(formula_l = formula_l, formula_s = formula_s, data = data, </span></a> +<a class="sourceLine" id="cb21-7" data-line-number="7"><span class="co">#> left = left, right = right, dist = dist, CL = CL, quiet = quiet)</span></a> +<a class="sourceLine" id="cb21-8" data-line-number="8"><span class="co">#> </span></a> +<a class="sourceLine" id="cb21-9" data-line-number="9"><span class="co">#> $formula_l</span></a> +<a class="sourceLine" id="cb21-10" data-line-number="10"><span class="co">#> l ~ Visibility * GroundCover</span></a> +<a class="sourceLine" id="cb21-11" data-line-number="11"><span class="co">#> </span></a> +<a class="sourceLine" id="cb21-12" data-line-number="12"><span class="co">#> $formula_s</span></a> +<a class="sourceLine" id="cb21-13" data-line-number="13"><span class="co">#> s ~ 1</span></a> +<a class="sourceLine" id="cb21-14" data-line-number="14"><span class="co">#> </span></a> +<a class="sourceLine" id="cb21-15" data-line-number="15"><span class="co">#> $distribution</span></a> +<a class="sourceLine" id="cb21-16" data-line-number="16"><span class="co">#> [1] "weibull"</span></a> +<a class="sourceLine" id="cb21-17" data-line-number="17"><span class="co">#> </span></a> +<a class="sourceLine" id="cb21-18" data-line-number="18"><span class="co">#> $predictors</span></a> +<a class="sourceLine" id="cb21-19" data-line-number="19"><span class="co">#> [1] "Visibility" "GroundCover"</span></a> +<a class="sourceLine" id="cb21-20" data-line-number="20"><span class="co">#> </span></a> +<a class="sourceLine" id="cb21-21" data-line-number="21"><span class="co">#> $AICc</span></a> +<a class="sourceLine" id="cb21-22" data-line-number="22"><span class="co">#> [1] 2109.36</span></a> +<a class="sourceLine" id="cb21-23" data-line-number="23"><span class="co">#> </span></a> +<a class="sourceLine" id="cb21-24" data-line-number="24"><span class="co">#> $convergence</span></a> +<a class="sourceLine" id="cb21-25" data-line-number="25"><span class="co">#> [1] 0</span></a> +<a class="sourceLine" id="cb21-26" data-line-number="26"><span class="co">#> </span></a> +<a class="sourceLine" id="cb21-27" data-line-number="27"><span class="co">#> $cell_ls</span></a> +<a class="sourceLine" id="cb21-28" data-line-number="28"><span class="co">#> cell n l_median l_lower l_upper s_median s_lower s_upper</span></a> +<a class="sourceLine" id="cb21-29" data-line-number="29"><span class="co">#> 1 H.A 80 2.647 2.457 2.836 0.964 0.898 1.034</span></a> +<a class="sourceLine" id="cb21-30" data-line-number="30"><span class="co">#> 2 L.A 80 2.618 2.427 2.809 0.964 0.898 1.034</span></a> +<a class="sourceLine" id="cb21-31" data-line-number="31"><span class="co">#> 3 M.A 80 2.536 2.350 2.722 0.964 0.898 1.034</span></a> +<a class="sourceLine" id="cb21-32" data-line-number="32"><span class="co">#> 4 H.B 80 2.789 2.597 2.981 0.964 0.898 1.034</span></a> +<a class="sourceLine" id="cb21-33" data-line-number="33"><span class="co">#> 5 L.B 80 2.710 2.521 2.900 0.964 0.898 1.034</span></a> +<a class="sourceLine" id="cb21-34" data-line-number="34"><span class="co">#> 6 M.B 80 2.716 2.527 2.905 0.964 0.898 1.034</span></a> +<a class="sourceLine" id="cb21-35" data-line-number="35"><span class="co">#> </span></a> +<a class="sourceLine" id="cb21-36" data-line-number="36"><span class="co">#> $cell_ab</span></a> +<a class="sourceLine" id="cb21-37" data-line-number="37"><span class="co">#> cell n pda_median pda_lower pda_upper pdb_median pdb_lower pdb_upper</span></a> +<a class="sourceLine" id="cb21-38" data-line-number="38"><span class="co">#> 1 H.A 80 1.037 1.114 0.967 14.112 11.670 17.047</span></a> +<a class="sourceLine" id="cb21-39" data-line-number="39"><span class="co">#> 2 L.A 80 1.037 1.114 0.967 13.708 11.325 16.593</span></a> +<a class="sourceLine" id="cb21-40" data-line-number="40"><span class="co">#> 3 M.A 80 1.037 1.114 0.967 12.629 10.486 15.211</span></a> +<a class="sourceLine" id="cb21-41" data-line-number="41"><span class="co">#> 4 H.B 80 1.037 1.114 0.967 16.265 13.423 19.708</span></a> +<a class="sourceLine" id="cb21-42" data-line-number="42"><span class="co">#> 5 L.B 80 1.037 1.114 0.967 15.029 12.441 18.174</span></a> +<a class="sourceLine" id="cb21-43" data-line-number="43"><span class="co">#> 6 M.B 80 1.037 1.114 0.967 15.120 12.516 18.265</span></a> +<a class="sourceLine" id="cb21-44" data-line-number="44"><span class="co">#> </span></a> +<a class="sourceLine" id="cb21-45" data-line-number="45"><span class="co">#> $CL</span></a> +<a class="sourceLine" id="cb21-46" data-line-number="46"><span class="co">#> [1] 0.9</span></a> +<a class="sourceLine" id="cb21-47" data-line-number="47"><span class="co">#> </span></a> +<a class="sourceLine" id="cb21-48" data-line-number="48"><span class="co">#> $cell_desc</span></a> +<a class="sourceLine" id="cb21-49" data-line-number="49"><span class="co">#> cell medianCP r1 r3 r7 r14 r28</span></a> +<a class="sourceLine" id="cb21-50" data-line-number="50"><span class="co">#> 1 H.A 9.910449 0.9691191 0.9076888 0.7965531 0.6402617 0.4355206</span></a> +<a class="sourceLine" id="cb21-51" data-line-number="51"><span class="co">#> 2 L.A 9.626732 0.9681953 0.9050529 0.7912752 0.6323916 0.4266794</span></a> +<a class="sourceLine" id="cb21-52" data-line-number="52"><span class="co">#> 3 M.A 8.868981 0.9654396 0.8972323 0.7757825 0.6096922 0.4019134</span></a> +<a class="sourceLine" id="cb21-53" data-line-number="53"><span class="co">#> 4 H.B 11.422439 0.9732702 0.9196215 0.8208024 0.6773283 0.4789728</span></a> +<a class="sourceLine" id="cb21-54" data-line-number="54"><span class="co">#> 5 L.B 10.554432 0.9710322 0.9131703 0.8076196 0.6569919 0.4547593</span></a> +<a class="sourceLine" id="cb21-55" data-line-number="55"><span class="co">#> 6 M.B 10.618339 0.9712095 0.9136797 0.8086542 0.6585719 0.4566077</span></a></code></pre></div> <p>Given that the exponential only has one parameter (<span class="math inline">\(l\)</span>, location), a model for scale (<code>formula_s</code>) is not required:</p> -<pre class="sourceCode r" id="cb22"><code class="sourceCode r"><a class="sourceLine" id="cb22-1" data-line-number="1">cpModExp <-<span class="st"> </span><span class="kw">cpm</span>(<span class="dt">formula_l =</span> l <span class="op">~</span><span class="st"> </span>Visibility<span class="op">*</span>GroundCover, <span class="dt">data =</span> data_CP,</a> +<div class="sourceCode" id="cb22"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb22-1" data-line-number="1">cpModExp <-<span class="st"> </span><span class="kw">cpm</span>(<span class="dt">formula_l =</span> l <span class="op">~</span><span class="st"> </span>Visibility <span class="op">*</span><span class="st"> </span>GroundCover, <span class="dt">data =</span> data_CP,</a> <a class="sourceLine" id="cb22-2" data-line-number="2"> <span class="dt">left =</span> <span class="st">"LastPresentDecimalDays"</span>,</a> <a class="sourceLine" id="cb22-3" data-line-number="3"> <span class="dt">right =</span> <span class="st">"FirstAbsentDecimalDays"</span>, <span class="dt">dist =</span> <span class="st">"exponential"</span></a> -<a class="sourceLine" id="cb22-4" data-line-number="4"> )</a></code></pre> +<a class="sourceLine" id="cb22-4" data-line-number="4"> )</a></code></pre></div> </div> <div id="set-of-carcass-persistence-models" class="section level3"> <h3>Set of Carcass Persistence Models</h3> -<p>The function <code>cpmSet</code> provides a simple wrapper on <code>cpm</code> that facilitates analyzing a set of <code>cpm</code> models defined as all allowable models simpler than, and including, the provided model formulae (where “allowable†means that any interaction terms have all component terms included in the model).</p> -<p>In addition, <code>cpmSet</code> includes the four base distributions (exponential, weibull, lognormal, loglogistic) and crosses them with the predictor models, but this can be restricted using the <code>dist</code> argument.</p> -<p>Consider the following model set analysis, where visibility and season are included in the <span class="math inline">\(l\)</span> formula but only visibility is in the <span class="math inline">\(s\)</span> formula, and all only the exponential and lognormal distributions are included, which generates a set of 15 models:</p> -<pre class="sourceCode r" id="cb23"><code class="sourceCode r"><a class="sourceLine" id="cb23-1" data-line-number="1">cpmModSet <-<span class="st"> </span><span class="kw">cpmSet</span>(<span class="dt">formula_l =</span> l <span class="op">~</span><span class="st"> </span>Visibility<span class="op">*</span>Season,</a> +<p>If the arg <code>allCombos = TRUE</code> is provided, <code>cpm</code> fits a set of <code>cpm</code> models defined as all allowable models simpler than, and including, the provided model formulae (where “allowable†means that any interaction terms have all component terms included in the model).</p> +<p>In addition, <code>cpm</code> with <code>allCombos</code> can include any subset of the four base distributions (exponential, weibull, lognormal, loglogistic) and crosses them with the predictor models.</p> +<p>Consider the following model set analysis, where <code>Visibility</code> and <code>Season</code> are included in the <span class="math inline">\(l\)</span> formula but only <code>Visibility</code> is in the <span class="math inline">\(s\)</span> formula, and only the exponential and lognormal distributions are included. This generates a set of 15 models:</p> +<div class="sourceCode" id="cb23"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb23-1" data-line-number="1">cpmModSet <-<span class="st"> </span><span class="kw">cpm</span>(<span class="dt">formula_l =</span> l <span class="op">~</span><span class="st"> </span>Visibility <span class="op">*</span><span class="st"> </span>Season,</a> <a class="sourceLine" id="cb23-2" data-line-number="2"> <span class="dt">formula_s =</span> s <span class="op">~</span><span class="st"> </span>Visibility, <span class="dt">data =</span> data_CP,</a> <a class="sourceLine" id="cb23-3" data-line-number="3"> <span class="dt">left =</span> <span class="st">"LastPresentDecimalDays"</span>,</a> <a class="sourceLine" id="cb23-4" data-line-number="4"> <span class="dt">right =</span> <span class="st">"FirstAbsentDecimalDays"</span>,</a> -<a class="sourceLine" id="cb23-5" data-line-number="5"> <span class="dt">dist =</span> <span class="kw">c</span>(<span class="st">"exponential"</span>, <span class="st">"lognormal"</span>)</a> +<a class="sourceLine" id="cb23-5" data-line-number="5"> <span class="dt">dist =</span> <span class="kw">c</span>(<span class="st">"exponential"</span>, <span class="st">"lognormal"</span>), <span class="dt">allCombos =</span> <span class="ot">TRUE</span></a> <a class="sourceLine" id="cb23-6" data-line-number="6"> )</a> -<a class="sourceLine" id="cb23-7" data-line-number="7"><span class="kw">names</span>(cpmModSet)</a> -<a class="sourceLine" id="cb23-8" data-line-number="8"><span class="co">#> [1] "dist: exponential; l ~ Visibility * Season; NULL" </span></a> -<a class="sourceLine" id="cb23-9" data-line-number="9"><span class="co">#> [2] "dist: exponential; l ~ Visibility + Season; NULL" </span></a> -<a class="sourceLine" id="cb23-10" data-line-number="10"><span class="co">#> [3] "dist: exponential; l ~ Season; NULL" </span></a> -<a class="sourceLine" id="cb23-11" data-line-number="11"><span class="co">#> [4] "dist: exponential; l ~ Visibility; NULL" </span></a> -<a class="sourceLine" id="cb23-12" data-line-number="12"><span class="co">#> [5] "dist: exponential; l ~ 1; NULL" </span></a> -<a class="sourceLine" id="cb23-13" data-line-number="13"><span class="co">#> [6] "dist: lognormal; l ~ Visibility * Season; s ~ Visibility"</span></a> -<a class="sourceLine" id="cb23-14" data-line-number="14"><span class="co">#> [7] "dist: lognormal; l ~ Visibility + Season; s ~ Visibility"</span></a> -<a class="sourceLine" id="cb23-15" data-line-number="15"><span class="co">#> [8] "dist: lognormal; l ~ Season; s ~ Visibility" </span></a> -<a class="sourceLine" id="cb23-16" data-line-number="16"><span class="co">#> [9] "dist: lognormal; l ~ Visibility; s ~ Visibility" </span></a> -<a class="sourceLine" id="cb23-17" data-line-number="17"><span class="co">#> [10] "dist: lognormal; l ~ 1; s ~ Visibility" </span></a> -<a class="sourceLine" id="cb23-18" data-line-number="18"><span class="co">#> [11] "dist: lognormal; l ~ Visibility * Season; s ~ 1" </span></a> -<a class="sourceLine" id="cb23-19" data-line-number="19"><span class="co">#> [12] "dist: lognormal; l ~ Visibility + Season; s ~ 1" </span></a> -<a class="sourceLine" id="cb23-20" data-line-number="20"><span class="co">#> [13] "dist: lognormal; l ~ Season; s ~ 1" </span></a> -<a class="sourceLine" id="cb23-21" data-line-number="21"><span class="co">#> [14] "dist: lognormal; l ~ Visibility; s ~ 1" </span></a> -<a class="sourceLine" id="cb23-22" data-line-number="22"><span class="co">#> [15] "dist: lognormal; l ~ 1; s ~ 1"</span></a></code></pre> +<a class="sourceLine" id="cb23-7" data-line-number="7"><span class="kw">class</span>(cpmModSet)</a> +<a class="sourceLine" id="cb23-8" data-line-number="8"><span class="co">#> [1] "cpmSet" "list"</span></a> +<a class="sourceLine" id="cb23-9" data-line-number="9"><span class="kw">names</span>(cpmModSet)</a> +<a class="sourceLine" id="cb23-10" data-line-number="10"><span class="co">#> [1] "dist: exponential; l ~ Visibility * Season; NULL" </span></a> +<a class="sourceLine" id="cb23-11" data-line-number="11"><span class="co">#> [2] "dist: exponential; l ~ Visibility + Season; NULL" </span></a> +<a class="sourceLine" id="cb23-12" data-line-number="12"><span class="co">#> [3] "dist: exponential; l ~ Season; NULL" </span></a> +<a class="sourceLine" id="cb23-13" data-line-number="13"><span class="co">#> [4] "dist: exponential; l ~ Visibility; NULL" </span></a> +<a class="sourceLine" id="cb23-14" data-line-number="14"><span class="co">#> [5] "dist: exponential; l ~ 1; NULL" </span></a> +<a class="sourceLine" id="cb23-15" data-line-number="15"><span class="co">#> [6] "dist: lognormal; l ~ Visibility * Season; s ~ Visibility"</span></a> +<a class="sourceLine" id="cb23-16" data-line-number="16"><span class="co">#> [7] "dist: lognormal; l ~ Visibility + Season; s ~ Visibility"</span></a> +<a class="sourceLine" id="cb23-17" data-line-number="17"><span class="co">#> [8] "dist: lognormal; l ~ Season; s ~ Visibility" </span></a> +<a class="sourceLine" id="cb23-18" data-line-number="18"><span class="co">#> [9] "dist: lognormal; l ~ Visibility; s ~ Visibility" </span></a> +<a class="sourceLine" id="cb23-19" data-line-number="19"><span class="co">#> [10] "dist: lognormal; l ~ 1; s ~ Visibility" </span></a> +<a class="sourceLine" id="cb23-20" data-line-number="20"><span class="co">#> [11] "dist: lognormal; l ~ Visibility * Season; s ~ 1" </span></a> +<a class="sourceLine" id="cb23-21" data-line-number="21"><span class="co">#> [12] "dist: lognormal; l ~ Visibility + Season; s ~ 1" </span></a> +<a class="sourceLine" id="cb23-22" data-line-number="22"><span class="co">#> [13] "dist: lognormal; l ~ Season; s ~ 1" </span></a> +<a class="sourceLine" id="cb23-23" data-line-number="23"><span class="co">#> [14] "dist: lognormal; l ~ Visibility; s ~ 1" </span></a> +<a class="sourceLine" id="cb23-24" data-line-number="24"><span class="co">#> [15] "dist: lognormal; l ~ 1; s ~ 1"</span></a></code></pre></div> <p>The resulting model outputs can be compared in an AICc table</p> -<pre class="sourceCode r" id="cb24"><code class="sourceCode r"><a class="sourceLine" id="cb24-1" data-line-number="1"><span class="kw">cpmSetAICcTab</span>(cpmModSet)</a> -<a class="sourceLine" id="cb24-2" data-line-number="2"><span class="co">#> Distribution Location Formula Scale Formula AICc Delta AICc</span></a> -<a class="sourceLine" id="cb24-3" data-line-number="3"><span class="co">#> 5 exponential l ~ 1 NULL 2098.27 0.00</span></a> -<a class="sourceLine" id="cb24-4" data-line-number="4"><span class="co">#> 3 exponential l ~ Season NULL 2098.62 0.35</span></a> -<a class="sourceLine" id="cb24-5" data-line-number="5"><span class="co">#> 4 exponential l ~ Visibility NULL 2101.71 3.44</span></a> -<a class="sourceLine" id="cb24-6" data-line-number="6"><span class="co">#> 2 exponential l ~ Visibility + Season NULL 2102.02 3.75</span></a> -<a class="sourceLine" id="cb24-7" data-line-number="7"><span class="co">#> 1 exponential l ~ Visibility * Season NULL 2105.72 7.45</span></a> -<a class="sourceLine" id="cb24-8" data-line-number="8"><span class="co">#> 15 lognormal l ~ 1 s ~ 1 2158.03 59.76</span></a> -<a class="sourceLine" id="cb24-9" data-line-number="9"><span class="co">#> 13 lognormal l ~ Season s ~ 1 2159.59 61.32</span></a> -<a class="sourceLine" id="cb24-10" data-line-number="10"><span class="co">#> 10 lognormal l ~ 1 s ~ Visibility 2160.86 62.59</span></a> -<a class="sourceLine" id="cb24-11" data-line-number="11"><span class="co">#> 14 lognormal l ~ Visibility s ~ 1 2161.98 63.71</span></a> -<a class="sourceLine" id="cb24-12" data-line-number="12"><span class="co">#> 8 lognormal l ~ Season s ~ Visibility 2162.40 64.13</span></a> -<a class="sourceLine" id="cb24-13" data-line-number="13"><span class="co">#> 12 lognormal l ~ Visibility + Season s ~ 1 2163.56 65.29</span></a> -<a class="sourceLine" id="cb24-14" data-line-number="14"><span class="co">#> 9 lognormal l ~ Visibility s ~ Visibility 2164.84 66.57</span></a> -<a class="sourceLine" id="cb24-15" data-line-number="15"><span class="co">#> 11 lognormal l ~ Visibility * Season s ~ 1 2165.75 67.48</span></a> -<a class="sourceLine" id="cb24-16" data-line-number="16"><span class="co">#> 7 lognormal l ~ Visibility + Season s ~ Visibility 2166.39 68.12</span></a> -<a class="sourceLine" id="cb24-17" data-line-number="17"><span class="co">#> 6 lognormal l ~ Visibility * Season s ~ Visibility 2168.54 70.27</span></a></code></pre> +<div class="sourceCode" id="cb24"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb24-1" data-line-number="1"><span class="kw">aicc</span>(cpmModSet)</a> +<a class="sourceLine" id="cb24-2" data-line-number="2"><span class="co">#> Distribution Location Formula Scale Formula AICc <U+0394>AICc</span></a> +<a class="sourceLine" id="cb24-3" data-line-number="3"><span class="co">#> 5 exponential l ~ 1 NULL 2100.72 0.00</span></a> +<a class="sourceLine" id="cb24-4" data-line-number="4"><span class="co">#> 3 exponential l ~ Season NULL 2101.08 0.36</span></a> +<a class="sourceLine" id="cb24-5" data-line-number="5"><span class="co">#> 4 exponential l ~ Visibility NULL 2104.16 3.44</span></a> +<a class="sourceLine" id="cb24-6" data-line-number="6"><span class="co">#> 2 exponential l ~ Visibility + Season NULL 2104.48 3.76</span></a> +<a class="sourceLine" id="cb24-7" data-line-number="7"><span class="co">#> 1 exponential l ~ Visibility * Season NULL 2108.17 7.45</span></a> +<a class="sourceLine" id="cb24-8" data-line-number="8"><span class="co">#> 15 lognormal l ~ 1 s ~ 1 2159.24 58.52</span></a> +<a class="sourceLine" id="cb24-9" data-line-number="9"><span class="co">#> 13 lognormal l ~ Season s ~ 1 2160.78 60.06</span></a> +<a class="sourceLine" id="cb24-10" data-line-number="10"><span class="co">#> 10 lognormal l ~ 1 s ~ Visibility 2162.15 61.43</span></a> +<a class="sourceLine" id="cb24-11" data-line-number="11"><span class="co">#> 14 lognormal l ~ Visibility s ~ 1 2163.19 62.47</span></a> +<a class="sourceLine" id="cb24-12" data-line-number="12"><span class="co">#> 8 lognormal l ~ Season s ~ Visibility 2163.67 62.95</span></a> +<a class="sourceLine" id="cb24-13" data-line-number="13"><span class="co">#> 12 lognormal l ~ Visibility + Season s ~ 1 2164.74 64.02</span></a> +<a class="sourceLine" id="cb24-14" data-line-number="14"><span class="co">#> 9 lognormal l ~ Visibility s ~ Visibility 2166.13 65.41</span></a> +<a class="sourceLine" id="cb24-15" data-line-number="15"><span class="co">#> 11 lognormal l ~ Visibility * Season s ~ 1 2166.91 66.19</span></a> +<a class="sourceLine" id="cb24-16" data-line-number="16"><span class="co">#> 7 lognormal l ~ Visibility + Season s ~ Visibility 2167.66 66.94</span></a> +<a class="sourceLine" id="cb24-17" data-line-number="17"><span class="co">#> 6 lognormal l ~ Visibility * Season s ~ Visibility 2169.79 69.07</span></a></code></pre></div> <p>The <code>plot</code> function is defined for the <code>cpmSet</code> class, and by default, creates a new plot window on command for each sub-model. If we want to only plot a specific single (or subset) of models from the full set, we can utilize the <code>specificModel</code> argument:</p> -<pre class="sourceCode r" id="cb25"><code class="sourceCode r"><a class="sourceLine" id="cb25-1" data-line-number="1"><span class="kw">plot</span>(cpmModSet,</a> +<div class="sourceCode" id="cb25"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb25-1" data-line-number="1"><span class="kw">plot</span>(cpmModSet,</a> <a class="sourceLine" id="cb25-2" data-line-number="2"> <span class="dt">specificModel =</span> <span class="st">"dist: lognormal; l ~ Visibility * Season; s ~ Visibility"</span></a> -<a class="sourceLine" id="cb25-3" data-line-number="3">)</a></code></pre> -<p><img src="data:image/png;base64,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" style="display: block; margin: auto;" /></p> +<a class="sourceLine" id="cb25-3" data-line-number="3">)</a></code></pre></div> +<p><img src="data:image/png;base64,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" style="display: block; margin: auto;" /></p> </div> <div id="multiple-sizes-of-animals-and-sets-of-carcass-persistence-models" class="section level3"> <h3>Multiple Sizes of Animals and Sets of Carcass Persistence Models</h3> -<p>Often, carcasses are grouped in multiple size classes, and we are interested in analyzing a set of models separately for each size class. To do so, we use the <code>cpmSetSize</code> function, which is a wrapper on <code>cpmSet</code> that runs the subfunction for each unique size class in the column identified by the <code>sizeclassCol</code> argument:</p> -<pre class="sourceCode r" id="cb26"><code class="sourceCode r"><a class="sourceLine" id="cb26-1" data-line-number="1">cpmModSetSize <-<span class="st"> </span><span class="kw">cpmSetSize</span>(<span class="dt">formula_l =</span> l <span class="op">~</span><span class="st"> </span>Visibility<span class="op">*</span>Season,</a> +<p>Often, carcasses are grouped in multiple size classes, and we are interested in analyzing a set of models separately for each size class. To do so, we furnish <code>cpm</code> with <code>sizeCol</code>, which is the name of the column in <code>data_CP</code> that gives the size classes of the carcasses. If, in addition, <code>allCombos = TRUE</code>, then <code>cpm</code> returns a <code>cpmSet</code> for each unique size class in the column identified by the <code>sizeCol</code> argument:</p> +<div class="sourceCode" id="cb26"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb26-1" data-line-number="1">cpmModSetSize <-<span class="st"> </span><span class="kw">cpm</span>(<span class="dt">formula_l =</span> l <span class="op">~</span><span class="st"> </span>Visibility <span class="op">*</span><span class="st"> </span>Season,</a> <a class="sourceLine" id="cb26-2" data-line-number="2"> <span class="dt">formula_s =</span> s <span class="op">~</span><span class="st"> </span>Visibility, <span class="dt">data =</span> data_CP,</a> <a class="sourceLine" id="cb26-3" data-line-number="3"> <span class="dt">left =</span> <span class="st">"LastPresentDecimalDays"</span>,</a> <a class="sourceLine" id="cb26-4" data-line-number="4"> <span class="dt">right =</span> <span class="st">"FirstAbsentDecimalDays"</span>,</a> <a class="sourceLine" id="cb26-5" data-line-number="5"> <span class="dt">dist =</span> <span class="kw">c</span>(<span class="st">"exponential"</span>, <span class="st">"lognormal"</span>),</a> -<a class="sourceLine" id="cb26-6" data-line-number="6"> <span class="dt">sizeclassCol =</span> <span class="st">"Size"</span></a> -<a class="sourceLine" id="cb26-7" data-line-number="7"> )</a></code></pre> -<p>The output from <code>cpmSetSize</code> is a list where each element corresponds to a different unique size class, and contains the associated <code>cpmSet</code>object, which itself is a list of <code>cpm</code> outputs:</p> -<pre class="sourceCode r" id="cb27"><code class="sourceCode r"><a class="sourceLine" id="cb27-1" data-line-number="1"><span class="kw">names</span>(cpmModSetSize)</a> +<a class="sourceLine" id="cb26-6" data-line-number="6"> <span class="dt">sizeCol =</span> <span class="st">"Size"</span>, <span class="dt">allCombos =</span> <span class="ot">TRUE</span>)</a> +<a class="sourceLine" id="cb26-7" data-line-number="7"><span class="kw">class</span>(cpmModSetSize)</a> +<a class="sourceLine" id="cb26-8" data-line-number="8"><span class="co">#> [1] "cpmSetSize" "list"</span></a></code></pre></div> +<p>The <code>cpmSetSize</code> object is a list where each element corresponds to a different unique size class, and contains the associated <code>cpmSet</code>o bject, which itself is a list of <code>cpm</code> outputs:</p> +<div class="sourceCode" id="cb27"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb27-1" data-line-number="1"><span class="kw">names</span>(cpmModSetSize)</a> <a class="sourceLine" id="cb27-2" data-line-number="2"><span class="co">#> [1] "S" "L" "M" "XL"</span></a> <a class="sourceLine" id="cb27-3" data-line-number="3"><span class="kw">names</span>(cpmModSetSize[[<span class="dv">1</span>]])</a> <a class="sourceLine" id="cb27-4" data-line-number="4"><span class="co">#> [1] "dist: exponential; l ~ Visibility * Season; NULL" </span></a> @@ -726,23 +739,25 @@ code > span.fu { color: #900; font-weight: bold; } code > span.er { color: #a61 <a class="sourceLine" id="cb27-15" data-line-number="15"><span class="co">#> [12] "dist: lognormal; l ~ Visibility + Season; s ~ 1" </span></a> <a class="sourceLine" id="cb27-16" data-line-number="16"><span class="co">#> [13] "dist: lognormal; l ~ Season; s ~ 1" </span></a> <a class="sourceLine" id="cb27-17" data-line-number="17"><span class="co">#> [14] "dist: lognormal; l ~ Visibility; s ~ 1" </span></a> -<a class="sourceLine" id="cb27-18" data-line-number="18"><span class="co">#> [15] "dist: lognormal; l ~ 1; s ~ 1"</span></a></code></pre> +<a class="sourceLine" id="cb27-18" data-line-number="18"><span class="co">#> [15] "dist: lognormal; l ~ 1; s ~ 1"</span></a> +<a class="sourceLine" id="cb27-19" data-line-number="19"><span class="kw">class</span>(cpmModSetSize[[<span class="dv">1</span>]])</a> +<a class="sourceLine" id="cb27-20" data-line-number="20"><span class="co">#> [1] "cpmSet" "list"</span></a></code></pre></div> </div> </div> <div id="generic-detection-probability" class="section level2"> <h2>Generic Detection Probability</h2> <p>For the purposes of mortality estimation, we calculate carcass-specific detection probabilities (see below), which may be difficult to generalize, given the specific history of each observed carcass. Thus, we also provide a simple means to calculate generic detection probabilities that are cell-specific, rather than carcass-specific.</p> <p>For any estimation of detection probability (<span class="math inline">\(\hat{g}\)</span>), we need to have singular SE and CP models to use for each of the size classes. Here, we use the best-fit of the models for each size class:</p> -<pre class="sourceCode r" id="cb28"><code class="sourceCode r"><a class="sourceLine" id="cb28-1" data-line-number="1">pkMods <-<span class="st"> </span><span class="kw">c</span>(<span class="st">"S"</span> =<span class="st"> "p ~ 1; k ~ 1"</span>, <span class="st">"L"</span> =<span class="st"> "p ~ 1; k ~ 1"</span>,</a> +<div class="sourceCode" id="cb28"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb28-1" data-line-number="1">pkMods <-<span class="st"> </span><span class="kw">c</span>(<span class="st">"S"</span> =<span class="st"> "p ~ 1; k ~ 1"</span>, <span class="st">"L"</span> =<span class="st"> "p ~ 1; k ~ 1"</span>,</a> <a class="sourceLine" id="cb28-2" data-line-number="2"> <span class="st">"M"</span> =<span class="st"> "p ~ 1; k ~ 1"</span>, <span class="st">"XL"</span> =<span class="st"> "p ~ 1; k ~ HabitatType"</span></a> <a class="sourceLine" id="cb28-3" data-line-number="3"> )</a> <a class="sourceLine" id="cb28-4" data-line-number="4">cpMods <-<span class="st"> </span><span class="kw">c</span>(<span class="st">"S"</span> =<span class="st"> "dist: exponential; l ~ Season; NULL"</span>,</a> <a class="sourceLine" id="cb28-5" data-line-number="5"> <span class="st">"L"</span> =<span class="st"> "dist: exponential; l ~ 1; NULL"</span>,</a> <a class="sourceLine" id="cb28-6" data-line-number="6"> <span class="st">"M"</span> =<span class="st"> "dist: exponential; l ~ 1; NULL"</span>,</a> <a class="sourceLine" id="cb28-7" data-line-number="7"> <span class="st">"XL"</span> =<span class="st"> "dist: exponential; l ~ 1; NULL"</span></a> -<a class="sourceLine" id="cb28-8" data-line-number="8"> )</a></code></pre> +<a class="sourceLine" id="cb28-8" data-line-number="8"> )</a></code></pre></div> <p>The <code>estgGenericSize</code> function produces <code>n</code> random draws of generic (i.e., cell-specific, not carcass-sepecific) detection probabilities for each of the possible carcass cell combinations across the selected SE and CP models across the size classes. <code>estgGeneric</code> is a single-size-class version of function and <code>estgGenericSize</code> actually loops over <code>estgGeneric</code>. The generic <span class="math inline">\(\hat{g}\)</span> is estimated according to a particular search schedule. When we pass <code>averageSS</code> a full <code>data_SS</code> table like we have here, it will assume that columns filled exclusively with 0s and 1s represent search schedules for units and will create the average search schedule across the units.</p> -<pre class="sourceCode r" id="cb29"><code class="sourceCode r"><a class="sourceLine" id="cb29-1" data-line-number="1">data_SS <-<span class="st"> </span>mock<span class="op">$</span>SS</a> +<div class="sourceCode" id="cb29"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb29-1" data-line-number="1">data_SS <-<span class="st"> </span>mock<span class="op">$</span>SS</a> <a class="sourceLine" id="cb29-2" data-line-number="2">avgSS <-<span class="st"> </span><span class="kw">averageSS</span>(data_SS)</a> <a class="sourceLine" id="cb29-3" data-line-number="3"></a> <a class="sourceLine" id="cb29-4" data-line-number="4">gsGeneric <-<span class="st"> </span><span class="kw">estgGenericSize</span>(<span class="dt">nsim =</span> <span class="dv">1000</span>, <span class="dt">days =</span> avgSS,</a> @@ -750,38 +765,38 @@ code > span.fu { color: #900; font-weight: bold; } code > span.er { color: #a61 <a class="sourceLine" id="cb29-6" data-line-number="6"> <span class="dt">modelSetSize_CP =</span> cpmModSetSize,</a> <a class="sourceLine" id="cb29-7" data-line-number="7"> <span class="dt">modelSizeSelections_SE =</span> pkMods,</a> <a class="sourceLine" id="cb29-8" data-line-number="8"> <span class="dt">modelSizeSelections_CP =</span> cpMods</a> -<a class="sourceLine" id="cb29-9" data-line-number="9"> )</a></code></pre> +<a class="sourceLine" id="cb29-9" data-line-number="9"> )</a></code></pre></div> <p>The output from <code>estgGeneric</code> can be simply summarized</p> -<pre class="sourceCode r" id="cb30"><code class="sourceCode r"><a class="sourceLine" id="cb30-1" data-line-number="1"><span class="kw">summary</span>(gsGeneric)</a> +<div class="sourceCode" id="cb30"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb30-1" data-line-number="1"><span class="kw">summary</span>(gsGeneric)</a> <a class="sourceLine" id="cb30-2" data-line-number="2"><span class="co">#> $S</span></a> <a class="sourceLine" id="cb30-3" data-line-number="3"><span class="co">#> Season 5% 25% 50% 75% 95%</span></a> -<a class="sourceLine" id="cb30-4" data-line-number="4"><span class="co">#> 1 SF 0.361 0.400 0.430 0.453 0.494</span></a> -<a class="sourceLine" id="cb30-5" data-line-number="5"><span class="co">#> 2 WS 0.303 0.333 0.358 0.384 0.421</span></a> +<a class="sourceLine" id="cb30-4" data-line-number="4"><span class="co">#> 1 SF 0.359 0.396 0.427 0.454 0.491</span></a> +<a class="sourceLine" id="cb30-5" data-line-number="5"><span class="co">#> 2 WS 0.300 0.336 0.360 0.384 0.421</span></a> <a class="sourceLine" id="cb30-6" data-line-number="6"><span class="co">#> </span></a> <a class="sourceLine" id="cb30-7" data-line-number="7"><span class="co">#> $L</span></a> -<a class="sourceLine" id="cb30-8" data-line-number="8"><span class="co">#> Group 5% 25% 50% 75% 95%</span></a> -<a class="sourceLine" id="cb30-9" data-line-number="9"><span class="co">#> 1 all 0.373 0.407 0.43 0.451 0.482</span></a> +<a class="sourceLine" id="cb30-8" data-line-number="8"><span class="co">#> Group 5% 25% 50% 75% 95%</span></a> +<a class="sourceLine" id="cb30-9" data-line-number="9"><span class="co">#> 1 all 0.375 0.409 0.431 0.452 0.481</span></a> <a class="sourceLine" id="cb30-10" data-line-number="10"><span class="co">#> </span></a> <a class="sourceLine" id="cb30-11" data-line-number="11"><span class="co">#> $M</span></a> -<a class="sourceLine" id="cb30-12" data-line-number="12"><span class="co">#> Group 5% 25% 50% 75% 95%</span></a> -<a class="sourceLine" id="cb30-13" data-line-number="13"><span class="co">#> 1 all 0.352 0.379 0.401 0.427 0.458</span></a> +<a class="sourceLine" id="cb30-12" data-line-number="12"><span class="co">#> Group 5% 25% 50% 75% 95%</span></a> +<a class="sourceLine" id="cb30-13" data-line-number="13"><span class="co">#> 1 all 0.35 0.384 0.406 0.427 0.457</span></a> <a class="sourceLine" id="cb30-14" data-line-number="14"><span class="co">#> </span></a> <a class="sourceLine" id="cb30-15" data-line-number="15"><span class="co">#> $XL</span></a> <a class="sourceLine" id="cb30-16" data-line-number="16"><span class="co">#> HabitatType 5% 25% 50% 75% 95%</span></a> -<a class="sourceLine" id="cb30-17" data-line-number="17"><span class="co">#> 1 HT1 0.315 0.345 0.368 0.390 0.426</span></a> -<a class="sourceLine" id="cb30-18" data-line-number="18"><span class="co">#> 2 HT2 0.330 0.359 0.382 0.404 0.439</span></a></code></pre> +<a class="sourceLine" id="cb30-17" data-line-number="17"><span class="co">#> 1 HT1 0.318 0.345 0.371 0.393 0.425</span></a> +<a class="sourceLine" id="cb30-18" data-line-number="18"><span class="co">#> 2 HT2 0.331 0.359 0.383 0.407 0.439</span></a></code></pre></div> <p>or plotted.</p> -<pre class="sourceCode r" id="cb31"><code class="sourceCode r"><a class="sourceLine" id="cb31-1" data-line-number="1"><span class="kw">plot</span>(gsGeneric)</a></code></pre> -<p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAYAAAAVACAMAAAB2vn8qAAAA81BMVEUAAAAAADoAAGYAOpAAZrY6AAA6ADo6AGY6Ojo6OmY6OpA6ZmY6ZpA6ZrY6kLY6kNtmAABmADpmAGZmOjpmOmZmOpBmZjpmZmZmZpBmZrZmkJBmkLZmkNtmtrZmtttmtv+QOgCQOjqQOmaQZjqQZmaQZpCQkDqQkGaQtpCQtraQttuQtv+Q29uQ2/+2ZgC2Zjq2Zma2ZpC2kDq2kGa2tma2tpC2tra225C229u22/+2/9u2///bkDrbkGbbkJDbtmbbtpDbtrbbttvb25Db27bb29vb2//b/7bb/9vb////tmb/25D/27b/29v//7b//9v///+BjTpxAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAfyElEQVR4nO3dj1/a1sLHcXbbPhNF7Z2u0UcmVfR61zXirp2bF5jtOvpIaMn5//+aJycBRcTWmJN8A3zer8JYF09YPhJ+BA4VA6mK+gosOwKIEUCMAGIEECOAGAHECCBGADECiBFAjABiOQUIWyu1dte/+5fT/x79TcOEx+8a+VyH+ZBTgKBhButRh16vb8JP9m+i8yhA2DPmy6fk1I/+8rB95gcEcG9Q/bkfbfC/L5qbQe3dblQkOu/6wfpvtfOfWvVudBq8scut1A0BcvG+uR79xg92TWvv4sA3Z227Cwo/nK+e1970u9EpXmqwskmAPNi9zeGJP9zpm7O3vQ/ReTv8q+u33lwf966v1r9EJ7tYeNRusQvKw3DL26p3375e8/Y+bp9EG3uw3ax3/e7eUfWkFl2KTkHdmFbDDLffVb2dy3yuxhzgYagYAcQIIEYAMQKIEUCMAGIEECOAGAHECCBGADECiOV3RCw2Pgp572ikXeDMH/+nrj86bNZrrqysrOdzncopzwBhL9qyn8ZHI798ml6g5d8sYv89uhydD3/sjxbpmdHRzIWWYwB7/PE/tXe1q/hopD0Kacx7b/Taf7BxcXHgjxc59zubV/byZt8GOPOHu53ab/FP5nP9yiPHAPHxR9+0VvYuDjw/OQoZ9nq9ZIH9Xq/ljxfx/KBhL18lt4BBPWh0Rz95750UCybHAPb4Y7R1z7y3vQ/nfnIU8vPFxUX/ZgF/vMhJFMBeHgUIj4/se1rin+x/a1VzLq8AVW/naO+o+q/qyfpg+2Q92gXVmvXJBeIA3dEiXT9YtYu/W72M7wM6m6ZTPdoYxEczF1s5H4ZGv/7338W1mEoZ4L29u16S4/SlDLBMCCBGADECiBFAjABiBBAjgBgBxAggRgAxAogRQIwAYgQQI4AYAcScBqBmegQQI4AYAcQIIEYAMQKIpdtmv7aNCc+rl/aUeTBYabZZ2KzaaZca4fF5dLp912zlhvvrt/BSBejbea9avjl7lUyBlWUwJNJtM7vVo9OZ1yaAI+kDdP3w6CQ6EcCJtAGC+uftZnzKPBgsHoaKEUCMAGIEECOAGAHECCBGADECiBFAjABiBBAjgBgBxAggRgAxAogRQIwAYgQQI4AYAcQIIEYAMQKIEUCMAGIEECOAGAHECCBGADECiBFAjABiBBAjgBgBxAggRgAxAogRQIwAYgQQI4BYqgmb4onKup6388eRtzfje2YJkF6abdYdTVQ22B3cmayGKcsySLPNWslEZeFRO6hu7WccDIk02+wsmagsqJvPfaYscyTVLiiZqCy6Ifx5ac8zDYZEmm1mJyoL6uFh2wyqzY2MgyHBw1AxAogRQIwAYgQQI4AYAcQIIEYAMQKIEUCMAGIEECOAGAHECCBGADECiBFAjABiBBAjgBgBxAggRgAxAogRQIwAYgQQI4AYAcQIIEYAMQKIEUCMAGIEECOAGAHECCBGADECiBFAjABiBBBLP2VZeOTtXceXMg2GRPopy+x0ZePJy0ZjzPeUZdqrnX7KMjtd2WjysiyDlcf8BEimLLPTlXltArhae4plkynL7HRlXjJ5WZbBymN+AiRTltnpyuyljIM9cHUEG2N+AhQwGAHEgxFAPBgBxIMRQDwYAcSDEUA8GAHEgxW7MSpTilz3zXUo12CFboTp7U8AdkHCwXS/jQSIf5QApRiMXZB4MAKIBytuY9zb54keCC1pgAc2PwGKCyBd/eQqSzFY4b+OBLjzY8XvDwhw58eK3xrcB9z5MQJoB5MEKHyVDyhHAO4DpINJArALmvgx7gO0g4n3B7wWJP51JAAByjMYL0eLB+NdEeLBeFeEeDB2QbLBdL+NBIh/lAClGIxdkHgwAogHI4B4MAKIByOAeDACiAeb0/k+MiCAGAHEShZg+RBALM02G01Z1lz7xU5b1r+/AAHSS7PNkonKOn54+PusyWoI8BRpttl4orLhj1fVrf2JMaRHNOZcmm2WTFlmwgPfTlu2MDNmaaXaBcUTlQ23L+Npy/xsgyGRZpslU5a11rydj9XmRsbBkOBhqBgBxAggRgAxAogRQIwAYgQQI4AYAcQIIEYAMQKIEUCMAGIEECOAGAHECCBGADECiBFAjABiBBAjgBgBxAggRgAxAogRQIwAYgQQI4AYAcQIIEYAMQKIEUCMAGIEECOAGAHECCBGADECiD1hyrLoPLmUaTAk0k9ZZs/P40uZBkMi/ZRl9vyVPzljFlOWZZB+yjL7x2szZZkj6acss+cn8aVMgyGRfsoye25PGQdDgoehYgQQI4AYAcTcBlheT99mDre/C4rrI90GBCDAHQQQI4AYAcQIIEYAMQKIEUCMAGIEQLEIIEYAMQKIEUCMAGIEECOAGAHECCBGADECiBFAjABiBBAjgBgBijBYe1nZPK0865vTSuW5OY3/JAiQp/Gbdgfft4cvG+a0MVg34YFvTr3nN4uorttSuAkQbffDdhTAdCqV73wz+B//ZhHVdZsSNIw5e9tcWVlZN+bXGR8AzHedYXPtlxzWcC9AZ9PeAsKDf6+OP2ZdpgAt3wx/7JuwWS0uwGidHd9uIOfuBRi8qHz3av/1puk8GxUoTYCNi4uDUYD+rM8g57tOMzp37BEf3ChNgP1erzXeGEUFmFinvWt0b54C3O4Oigtwu87h9qzJRzIjwGPX2VrzdpZ7F7SYCCBGADECiBFAjABiBBAjgBgBxAggRgAxAogRQIwAYgQQI4AYAcQIIEYAMQKIEUCMAGIEECOAGAHECCBGADECiBFAjABiBBAjgBgBxAggpgsQtlZq7e7U596m/92YoGY/nlXMB5IUdAGChv1srAl7vb4JP9m/ic6jAGHPmC+fklM/WqzqRycCuDeo/tyPNvjfF83NoPZu1/6uv9vt+sH6b7Xzn1r1bnQavIn+9n/r5tdZX4y7IJT3Ae+b69Fv/GDXtPbsp6HtBx+7fvjhfPW89qbfjU52oWD/+P/qBX0mUkEXwO5tDk/84U7fnL3tfYjO2+FfXb/15vq4d321/iU62cWCRvfEJ0AOhlveVr379vWat/dx+yTa2IPtZr3rd/eOqie16FLNfjW0DTBYLWpiAgUehooRQIwAYgQQI4AYAcQIIEYAMQKIEUCMAGIEECOAGAHECCBGADECiBFAjABiBBAjgBgBxAggRgAxAogRQIwAYgQQI4AYAcQIIEYAMQKIEUCMAGIEECOAGAHEig5AzSkEECOAGAHECCBGADECiDkP8GvbmPC8emlPmQdbAo4DhE07u1i3ER6fR6f+xGrGnnAdF5rrAPHUPi3fnL1KpsDKMthScL4Lsls9Op15bQI8Ri4Bun54dBKdCPBtOQQI6p+3m/Ep82BLgIehYgQQI4AYAcQIIEYAMQKIEUCMAGIEECOAGAHECCBGADECiBFAjABiBBAjgBgBxAggRgAxAogRQIwAYgQQI4AYAcQIIEYAMQKIEUCMAGIEECOAGAHECCBGADECiBFAjABiBBAjgBgBxAgg5nrCpniisq7n7fxx5O317y9AgCmOA3RHE5UNdgd3JqthyrKHOA7QSiYqC4/aQXVrP+NgS8FxgLNkorKgbj73mbLsMVzvgpKJyqIbwp+X9jzTYEvBcQA7UVlQDw/bZlBtbmQcbCnwMFSMAGIEECOAGAHECCBGADECiBFAjABiBBAjgBgBxAggRgAxAogRQIwAYgQQI4AYAcQIIDYOEL6uVDaNOa1UvvOHLysNM1gdv7OTAHkav1+z8zza+o3wwL6XKtgcrF4f3LyrigA5unnDbMf++m8Ot15UnscBrp7fLuN0hS4HWwSTuyBvM/hH23Qa0S5o/+BV5dloH0SAPE3eCdtbgd0B2Ysbh+3TxmgRp+tzOdgiGAcInpvhP3278TvRdh/+8F8CFOPmFhA9/mnE5/YGcLppAnZBheB5gBgBxAggRgAxAogRQIwAYgQQI4AYAcQIIEYAsWUKUMqpWgggRgAxAojlMmVZeOTtXceXMg3m2jIESKYss9OVjScvG6+mBFOWLUOAZMoyO13ZaPKyLIO5tgwBkinL7HRlXpsAj5HLlGV2ujIvmbwsy2CuLUOAZMoyO12ZvZRxMNeWIUCxg6VdNwEIcA8BxBY7QOUbCr0ysy10gG9tfwIUqxQbfBoBxAggRgCxBQ3wzbvf0twXL2SAdJufAM6l26QEcI4ABQ324EoIUMxgD66EAMUM9uBKuBMuZrAHV0KAYgZ7cCXsgooZ7MGVEKCYwR5cCbugYgZ7cCUEKGawtOvmxTgC3EMAMQKILXaAMt/7jix0gFI//BlZ6ADT6y7DBp9GADECiBFAjABiBBAjgBgBxAggtkwBSokAYgQQI4AYAcQIIEYAMQKIEUAsnynLmmu/2GnL+vcXIMCUXKYs6/jh4e+zJqshwD25TFlmzPDHq+rW/uRqSnQcvFRymbLMhAe+nbasZDNmlVIuU5YNty/jacv8+wsQYEouU5a11rydj9XmRsbBlgIPQ8UIIEYAMQKIEUCMAGIEECOAGAHECCBGADECiBFAjABiBBAjgBgBxAggRgAxAog9PsDwZeW5g/VlH2KxpLkFdCqVymbW9WX8+YWTcheUuQEBpqS+D7AJ/jHjLW+PXd+Tf3JBpQsQRFu/YcLXz2a87/mR63vqDy6qFAGie+FKsuWDp98ECDAlzaOg72a81zP1+rIPsVhSBPhnsv0z/PobAtyTPkCHAC49NsDp7UcseBjqUvpbQMb1ORhjofBakBgBxB4ZYPhy0z4NiHEn7BK3ADECiBFA7NH3AbfPA7gPcIlbgBgBxAggxvMAMW4BYgQQSxMg3gk9/XDw3cGQGAfoJK/0n1Yq3/nRhm6Ywep4S4+3WRD9bbTgVw9MjqYsi86TS/fX5+yaL4bJaazC4354YLdusDlYvT642c6jbRa+To7EnH7tNpBMWWbPz+NL91fo7KovgrvziLV8M9x6UXkeB7i6fRvizUH5RvzPrx4TTqYss+ev/MkZs5iybKbR5kj+ETxPNm6nEe2C9g9e3eztb24BSZPO124ByZRl9o/XZsqyb7oTYDzBWGD3NJ2Nw/ZpY7TUaOkgPhocfPU+IJmyzJ6fxJfur9LJFV8UkwGGP/aTjd+Jtvvwh//eDfDYF+OSKcvsuT3NWqXr/4e5NhlgsG4vniZvejjdjH7fp3ZBjlbpcrC5d2cX9PBSTlfpcrC5ly7AeDfEa0HOpAsQPQHoPDeDF41Mq8zywwsnVYDhy+iOIbpf+OrD0EescmllD9Awg+/b8WlOle7mlyqAfSnCvj2RAO6kuw+wb4uOHp9m2wVJzXkAc/rcPhLK9CBIa94DzL3S/Z8QQCxlABdHxKTmPMBjjoiV23wHeNQRsXKb7wCPOiJWbvMd4FFHxMptvgM86ogYUnl8AGdvT8ekZXseUDoEEEsZYPCiYt84l+91WipPuRPuVDIdEcOkJz0Rm+OHoaWzbE/ESodbgBj3AWI8ChLjeYDYk+4D4M6THgXBnZR3wjz+dC3lLYBXQ13jTliMAGJpAtgPEnMv7FiKAPbdKBk/GqDX9bvlehr5+ADJk4C5fhko7M1zgORJwDw/EA3Wf6udE0An/HC+SgCh1pvrYwIIdfeOqicEwB28MUuMZ8JiBBAjgBgBxAggRgCxdAHC1zwMdSzldDVseddST1cDt3hbitiTPiUJd57ySXk4xPuCxHgeIEYAMT4fIMYnZMT4jJgYn5IU4xYgxn2AGI+CxCYDxF9gFZ1HZw98jRWcm5jYe/QFVs/69s/Mr7GCexMBki+w6mya4Q/t2V9jBfcmdkHJF1h1GiY8bM/4Gitn36aKSVN3wsFmcgsws7/GCs5N3gLiL7BK7gNmfI1VxH53gMUTMXemHgVtmuRR0OyvsRoH6BDAmRTPA05v3x3NsXln0r0W9E+egrnGARmxlAHsvOmBsz1Q2Fqptac/MnT/I0TBIr/0lPKdcfG98vClo3enRFvWfn9l2Ov1TfjJ/k10HgUIe8Z8+ZSc+gQwuR0PGFR/7kcb/O+L5mZQe7cbDRydd/3487w/terd6DR4QwBz/3iAs4eh75vr0W/8YNe09i4Oki/g7vrx53lrb/rd6GQXIsDt94jFRwIGLxzdCdi9zeGJP9zpm7O3vQ/ReTv8q+vbz/P2rq/Wv0QnuxgB8joeMNzyturdt6/XvL2P2yfRxh5sN+tdP/48by26VLNfDR0FqHo7l45WWTo8DBUjgFjKAMOXlWf9U16JcCflQfnv/M6zPp/TcCj1w1D7lhReDXUn9RMxG4DjAe486RYwx9+kVzpPuQ/gjVkOpX8UxBuznOJ5gNiTjohxJ+zOkwLwMNQdDsqLcVBejDthMV6ME+PFODFejBPjxTgxXowT48U4MV6ME+N5gBgBxJ4wYxb3wC6lCXCa3Pl2eC3OoRQBgvGd79x/mViZPD7AxJyVp8xe6czjA0y8AsRLEe6kCXCz4+GlCHcIIEYAMQKIpQnA94jlgJcixAggRgAxAogJAlBzEgHECCBGADECiBFAjABieQT4tW1MeF69tKfMgy069wHCZtVOu9QIj8+j0+07KG5fynvK9VxYOQTo23mvWr45e5VMgZVlsMWXxy7IbvXodOa1CfBNeQXo+uHRSXQiwDfkEyCof95uxqfMgy06HoaKEUCMAGITAcLX8Tuf4+9SyvNblAgwaeLZUfDcmNPG6LuUcvwWJQJMmnp62mkk36WU57coEWDKxP4/uhEk36U041uU3K3P5WCL4DbA+G3nQfyNkXl9ixIBpowDhK/t5k6+S2n2tyg5Wp/LwRbBOMBpMhNQ8l1KM79FydH6XA62CB7x+jAB8kQAMQKIEUCMAGIEECOAGAHECCBGADECiBFAjABiBBAjgBgBxAggRgAxAogRQIwAYgQQI4AYAcQIIEYAMQKIEUCMAGIEECOAGAHECCBGADECiDkOkExU1vW8nT+OvL0Z3zlGgCmOA3RHE5UNdgd3JqthyrKHOA7QSiYqC4/aQXVrP+NgS8FxgLNkorKgbj73mbLsMVzvgpKJyqIbwp+X9jzTYEvBcQA7UVlQDw/bZlBtbmQcbCnwMFSMAGIEECOAGAHECCBGADECiBFAjABiBBAjgBgBxAggRgAxAogRQIwAYgQQI4AYAcQIIEYAMQKIEUCMAGIEECOAGAHECCBGADECiBFAjABiBBAjgBgBxAggRgAxAogRQGyZApRyqhYCiBFAjABiuUxZFh55e9fxpUyDubYMAZIpy+x0ZePJy8arKcGUZcsQIJmyzE5XNpq8LMtgri1DgGTKMjtdmdcmwGPkMmWZna7MSyYvyzJYdpVvKPTKzJbLlGV2ujJ7KeNgmX1r+y9ggGIHS7vuMmzwaQQQI4AYAcQIILagAb75+Kc0D4YWMkC6zU8A59JtUgI4R4CCBntwJfO4CzqtVL7zhy8rDTNYvfvVIwTI/bpG/wwP7GT/weZg9fpgatr/eQyQ39KO3fwGDLdeVJ7HAa6eTy/jdIUuB3twJfMT4GbtwT/aptOIdkH7B68qz+7sg+YxwDztgm4vB5vRWWfjsH3auLOI0/W5HOzBlcxhALvxO9F2H/7w3/kP8NC6S/1SRPQoyN4ATjdNMPe7oIfWXeoAX1nE6fpcDpZ23QQgwD0EEFvsAGV++DOy0AFK/fhzZKEDTK+7DBt8GgHECCBGADECiBFAjABiBBAjgNgyBSglAogRQIwAYgQQI4AYAcQIIEYAMQKIEUCMAGIEECOAWD5TljXXfrHTlvXvL0CAKblMWdbxw8PfZ01WQ4B7cpmyzJjhj1fVrf3J1ZTozWilksuUZfYjf3baMvmMWXMglynLhtuX8bRl/v0FCDAllynLWmvezsdqcyPjYEuBh6FiBBAjgBgBxAggRgAxAogRQIwAYgQQI4AYAcQIIEYAMQKIEUCMAGIEECOAGAHECCBGADECiBFAjABiBBAjgBgBxAggRgAxAogRQIwAYgQQI4AYAcQIIEYAMQKIEUCMAGIEECOAGAHECCCWz5Rl0XlyKdNgSyGXKcvs+Xl8KdNgSyGXKcvs+St/csYspix7SC5Tltk/Xpspyx4jlynL7PlJfCnTYEshlynL7Lk9ZRxsKfAwVIwAYgQQI4BY4QGWVzkCSJXx/4QAYgQQI4AYAcQIIEYAMQKIEUCMAGIEEFuqAGVEADECiBFAjABiBBAjgBgBxAggRgAxAogRQIwAYgQQI4AYAcQIIEYAMQKILVWArt/11ddh2vIECHsEUArWf6udE0An/HC+SgCh1pvrYwIIdfeOqicEwDQCiBFAjABiBBAjgBgBxAggRgAxAogRQIwAYgQQI4AYAcQIIEYAMQKIEUCMAGIEECOAGAHECCBGADECiBFAjABiBBAjgBgBxAggRgAxAojpAoStlVp7+iND9z9CFC+WzzUoBV2AoGEG6/bju72+CT/Zv4nOowBhz5gvn5JT/2axhaULMKj+3I82+N8Xzc2g9m432tTRedePP8/7U6vejU6DN6PFFpjyPuB9cz36jR/smtbexUHyBdxdP/48b+1NvxudbhbL6xqUgC6A3dscnvjDnb45e9v7EJ23w7+6vv08b+/6av1LdLpZbIHvBHQBhlveVr379vWat/dx+yTa2IPtZr3rx5/nrUWXavaroUeL5XMNSoGHoWL3Agx/mL69EyBP3ALExgEGay8rm6eVZ/3oFjBYeRFduF1EdNWWy+D79vBlw5w2bIDVfnhw+5SUAEWInm3aR3tJgOghSYsAxSKAGAHKiwBiBBAjgBgBxAggRgCx/A5JxsaHge8dDl70o8GPlmeAeELnT+PDwV8+TS1gn518MjeHieNDx718rk6J5RjAHgD+T+1d7So+HGwPAxvz3vN2Lu0C8dFge6B4fJg4uhwvvdDHiGfIMUAyobNprexdHHh+chg47PXGv+Tvm+v2cPHb0WHis7ZpeX54TAAnbIBkQmdz5r3tfTj3k8PAny8uLuJNHB8Ntv+lOTpMTACngqq3c7R3VP1X9WR9sH2yHu2Cas3Jo7/x0eD4v4wOEw+27dsoCICCEUCMAGIEECOAGAHECCBGADECiBFAjABiBBAjgBgBxAggRgAxAogRQMxpAGqmRwAxAogRQIwAYgQQI4BYum32a9uY8Lx6aU+ZB4OVZpuFzaqddqkRHp83Jt9DWLnh/votvFQB7FuY7YeMz14lU2BlGQyJdNvMbvXodOa1CeBI+gBdPzw6iU4EcCJtgKD+ebsZnzIPBouHoWIEECOAGAHECCBGADECiBFAjABiBBAjgBgBxAggRgAxAogRQIwAYgQQI4AYAcQIIEYAMQKIEUCMAGIEECOAGAHECCBGADECiBFAjABiBBAjgBgBxAggRgAxAogRQIwAYgQQI4AYAcQIIJZqwqZ4orKu5+38ceTtzfjWTQKkl2abdUcTlQ12B3cmq2HKsgzSbLNWMlFZeNQOqlv7GQdDIs02O0smKgvq5nOfKcscSbULSiYqi24If17a80yDIZFmm9mJyoJ6eNg2g2pzI+NgSPAwVIwAYgQQI4AYAcQIIEYAMQKIEUCMAGIEECOAGAHECCBGADECiBFAjABiBBAjgBgBxAggRgAxAogRQIwAYgQQI4AYAcQIIEYAMQKIEUCsZAGW74OWBBAjgBgBxAggRgAxAogRQIwAYgQQI4AYAcTST1kWHnl71/GlTIM9cHUI8BXJlGV2urLx5GWjMdxNWUaAr0mmLLPTlY0mL8sy2L2fnZJhqLmSfsoyO12Z13YdYHr7E2CGZMoyO12Zl0xelmWwB67O0mz4sfRTltnpyuyljIM9cHUIoB1MEUAbnQAEuDMCAbSDEUAz2L0HoUU+FCXAA5ufAEUN9sAWIEBRgxFAPBgBxINxHyAejADiwWS7oDK8ArvMAUrxEvgyByh4PQ+svQSDEUA8GHfC4sEIUJ7BeDVUPFhxG0N6o5u8HuUarLjdDgFmj6Dd7xOAAOLBCCAbrNidMQHu/WjRAbgTnj0Cj4K0g3EfIB6MAOLBCCAejPsA8WAEEA/Gq6HiwQggHowA5RmsMASQkd8Dm+UOoH8IZJY7wAi7IDECiBFAjABiBBAjgBgBxOYnwGjKsubaL3basv79BQjwhLWnWDaZqKzjh4e/z5qshgBPWnuKZccTlQ1/vKpu7U+MIX0un9n8BEimLDPhgW+nLctlxiyF+QmQTFk23L6Mpy3zsw1WHvMTIJmyrLXm7XysNjcyDlYe8xOg2MGWBAHECCBGADECiBFAjABiBBAjgBgBxAggRgAxAogRQIwAYgQQI4AYAcQIIEYAMQKIEUCMAGIEECOAGAHECCBGADECiBFAjABiBBAjgBgBxAggRgAxAogRQIwAYgQQI4AYAcQIIEYAMQKIPWHKsug8uZRpMCTST1lmz8/jS5kGQyL9lGX2/JU/OWPWnE9ZppV+yjL7x2sv0JRlWumnLLPnJ/GlTIMhkX7KMntuTxkHQ4KHoWIEECOAGAHE3AZYXk/fZg63vwuK67M4E7c6QAAxAogRQIwAYgQQI4AYAcQIIEYAMQKgWAQQI4AYAcQIIEYAMQKIEUCMAGIEECOAGAHECCBGADECiBFAjABiBBAjgFiJAoStlVo7WFlZmfXxs1xWeNw2rYYJGvGaC1rptBIFCBpmsB5sFrjGrj98tWvO/HjNBa53UokCDKo/902w0esVtsagEewfXx/34zWLlCiAMe+b60Ht4qKwjTHc7frdf9eTNRe10iklCtD1TXj4rshdUHi00w+8RrJm0Z1AiQIMt7yteqH3AaazaYY/tJM1F7neCSUKsJwIIEYAMQKIEUCMAGIEECOAGAHECCBGADECiBFAjABiBBAjgBgBxAggRgAxAogRQOz/Adp/Nc+Ty9iTAAAAAElFTkSuQmCC" style="display: block; margin: auto;" /></p> +<div class="sourceCode" id="cb31"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb31-1" data-line-number="1"><span class="kw">plot</span>(gsGeneric)</a></code></pre></div> +<p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAYAAAAVACAMAAAB2vn8qAAAA81BMVEUAAAAAADoAAGYAOpAAZrY6AAA6ADo6AGY6Ojo6OmY6OpA6ZmY6ZpA6ZrY6kLY6kNtmAABmADpmAGZmOjpmOmZmOpBmZjpmZmZmZpBmZrZmkJBmkLZmkNtmtrZmtttmtv+QOgCQOjqQOmaQZjqQZmaQZpCQkDqQkGaQtpCQtraQttuQtv+Q29uQ2/+2ZgC2Zjq2Zma2ZpC2kDq2kGa2tma2tpC2tra225C229u22/+2/9u2///bkDrbkGbbkJDbtmbbtpDbtrbbttvb25Db27bb29vb2//b/7bb/9vb////tmb/25D/27b/29v//7b//9v///+BjTpxAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAfoklEQVR4nO3dAV/a1sLHcXbbPhNF6Z2u0UcmVfR61zXirp2bF5jtOvpIaMl5/6/myUlAEbA15oR/gN/3Uxjr8ITlJyEQOJQMpErqG7DqCCBGADECiBFAjABiBBAjgBgBxAggRgAxAojlFCBsrlVaHf/+X07+e/Q3dROevKvncxsWQ04Bgrrpb0Ydut2eCT/Zv4nOowBh15gvn5JTL/rLo9a5HxDAvX755160wv++bFSDyru9qEh03vGDzd8qFz81a53o1H9jr7dWMwTIxfvGZvQb398zzf3LQ9+ct+wmKPxwsX5RedPrRKf4Wv21KgHyYLc2R6f+YLdnzt92P0TnrfCvjt98c3PSvbne/BKd7NXC41aTTVAeBtvedq3z9vWGt/9x5zRa2f2dRq3jd/aPy6eV6FJ0CmrGNOtmsPOu7O1e5XMzFgC7oWIEECOAGAHECCBGADECiBFAjABiBBAjgBgBxAgglt8RsdjoKOTU0Uh7hXN/9J86/vCwWbextra2mc9tKqY8A4TdaM1+Gh2N/PJp8gpN//Yq9t+jy9H54Mfe8CpdMzyaudRyDGCPP/6n8q5yHR+NtEchjXnvDV/7D7YuLw/90VUu/Hb12l6u9myAc3+w1678Fv9kPrevOHIMEB9/9E1zbf/y0POTo5Bht9tNrnDQ7Tb90VU8P6jby9fJPaBfC+qd4U9OvZNiyeQYwB5/jNbuufe2++HCT45Cfr68vOzdXsEfXeU0CmAvDwOEJ8f2PS3xT/a+tagFl1eAsrd7vH9c/lf5dLO/c7oZbYIqjdr4FeIAneFVOn6wbq/+bv0qfgxoV027fLzVj49mLrdi7oZGv/7T7+JaToUM8N4+XK/IcfpCBlglBBAjgBgBxAggRgAxAogRQIwAYgQQI4AYAcQIIEYAMQKIEUCMAGJOA1AzPQKIEUCMAGIEECOAGAHE0q2zX1vGhBflK3vKPBisNOssbJTttEv18OQiOt29a7Z0y/3tW3qpAvTsvFdN35y/SqbAyjIYEunWmV3r0encaxHAkfQBOn54fBqdCOBE2gBB7fNOIz5lHgwWu6FiBBAjgBgBxAggRgAxAogRQIwAYgQQI4AYAcQIIEYAMQKIEUCMAGIEECOAGAHECCBGADECiBFAjABiBBAjgBgBxAggRgAxAogRQIwAYgQQI4AYAcQIIEYAMQKIEUCMAGIEECOAGAHECCCWasKmeKKyjuft/nHs7c/4nlkCpJdmnXWGE5X19/r3JqthyrIM0qyzZjJRWXjcCsrbBxkHQyLNOjtPJioLauZzjynLHEm1CUomKovuCH9e2fNMgyGRZp3ZicqCWnjUMv1yYyvjYEiwGypGADECiBFAjABiBBAjgBgBxAggRgAxAogRQIwAYgQQI4AYAcQIIEYAMQKIEUCMAGIEECOAGAHECCBGADECiBFAjABiBBAjgBgBxAggRgAxAogRQIwAYgQQI4AYAcQIIEYAMQKIEUCMAGLppywLj739m/hSpsGQSD9lmZ2ubDR52XAMpix7uvRTltnpyoaTl2UZDIn0U5bZ6cq8FgEcST9lmZ2uzEsmL8syGBLppyyz05XZSxkHQ6Jgu6GKx3HtvgMBCHBvBAJoByOAeDACiAcjgHgwAogHm+/KKE2Y57Jvb0OxBpvrSphc/wRgEyQcTPfbSID4RwlQiMHYBIkHI4B4sPmtjKltnmhHaEUDPLD6VzbA3NfGA2OvaADBryMB7v3Y/NcGm6B7P0YA7WCSAHNf5AOKEYDHAOlgBBAPxmOAeDACiAcTbw94LUj860gAAhRnMF6OFg/GuyLEg/GuCPFgbIJkg+l+GwkQ/ygBCjEYmyDxYAQQD0YA8WAEEA9GAPFgBBAPRgDxYAQQD7Z6M94ULMDqIYBYmnU2nLKssfGLnbasN30FAqSXZp0lE5W1/fDo91mT1RDgKdKss9FEZYMfr8vbB2NjSI9oLLg06yyZssyEh76dtowZs5xItQmKJyob7FzF05b52QZDIs06S6Ysa254ux/Lja2MgyHBbqgYAcQIIEYAMQKIEUCMAGIEECOAGAHECCBGADECiBFAjABiBBAjgBgBxAggRgAxAogRQIwAYgQQI4AYAcQIIEYAMQKIEUCMAGIEECOAGAHECCBGADECiBFAjABiBBAjgBgBxAggRgAxAog9Ycqy6Dy5lGkwJNJPWWbPL+JLmQZDIv2UZfb8lT8+YxZTlmWQfsoy+8drMWWZI+mnLLPnp/GlTIMhkX7KMntuTxkHQ4LdUDECiBFAjABibgOsrqevM4fr3wXF7ZGuAwIQ4B4CiBFAjABiBBAjgBgBxAggRgAxAmC+CCBGADECiBFAjABiBBAjgBgBxAggRgAxAogRQIwAYgQQI4AYAeahv/GyVD0rPeuZs1LpuTmL/yQIkKfRm3b737cGL+vmrN7fNOGhb86857dXUd22lXAbIFrvR60ogGmXSt/5pv8//u1VVLdtQlA35vxtY21tbdOYX2d8ADDfZYaNjV9yWMJUgHbV3gPCw3+vjz5mXaQATd8MfuyZsFGeX4DhMtu+XUHOTQXovyh99+rgddW0nw0LFCbA1uXl4TBAb9ZnkPNdphmeO/aID24UJsBBt9scrYx5BRhbpn1odG+RAtxtDuYX4G6Zg51Zk49kRoDHLrO54e2u9iZoORFAjABiBBAjgBgBxAggRgAxAogRQIwAYgQQI4AYAcQIIEYAMQKIEUCMAGIEECOAGAHECCBGADECiBFAjABiBBAjgBgBxAggRgAxAogRQEwXIGyuVVqdic+9Tf67MUHFfjxrPh9IUtAFCOr2s7Em7HZ7Jvxk/yY6jwKEXWO+fEpOvehqZT86EcC9fvnnXrTC/75sVIPKuz37u/5ur+MHm79VLn5q1jrRqf8m+tv/rZlfZ30x7pJQPga8b2xGv/H9PdPct5+Gth987Pjhh4v1i8qbXic62SsFByf/V5vTZyIVdAHs1ubo1B/s9sz52+6H6LwV/tXxm29uTro315tfopO9WlDvnPoEyMFg29uudd6+3vD2P+6cRiu7v9OodfzO/nH5tBJdqtivhrYB+uvzmphAgd1QMQKIEUCMAGIEECOAGAHECCBGADECiBFAjABiBBAjgBgBxAggRgAxAogRQIwAYgQQI4AYAcQIIEYAMQKIEUCMAGIEECOAGAHECCBGADECiBFAjABiBBAjgNi8A1BzAgHECCBGADECiBFAjABizgP82jImvChf2VPmwVaA4wBhw84u1qmHJxfRqTe2mJEn3Mal5jpAPLVP0zfnr5IpsLIMthKcb4LsWo9O516LAI+RS4COHx6fRicCfFsOAYLa551GfMo82ApgN1SMAGIEECOAGAHECCBGADECiBFAjABiBBAjgBgBxAggRgAxAogRQIwAYgQQI4AYAcQIIEYAMQKIEUCMAGIEECOAGAHECCBGADECiBFAjABiBBAjgBgBxAggRgAxAogRQIwAYgQQI4AYAcRcT9gUT1TW8bzdP469/d70FQgwwXGAznCisv5e/95kNUxZ9hDHAZrJRGXhcSsobx9kHGwlOA5wnkxUFtTM5x5Tlj2G601QMlFZdEf488qeZxpsJTgOYCcqC2rhUcv0y42tjIOtBHZDxQggRgAxAogRQIwAYgQQI4AYAcQIIEYAMQKIEUCMAGIEECOAGAHECCBGADECiBFAjABiowDh61KpasxZqfSdP3hZqpv++uidnQTI0+j9mu3n0dqvh4f2vVRBtb9+c3j7rioC5Oj2DbNt++tfHWy/KD2PA1w/v7uO0wW6HGwZjG+CvGrwj5Zp16NN0MHhq9Kz4TaIAHkafxC29wK7AbIXt45aZ/XhVZwuz+Vgy2AUIHhuBv/07cpvR+t98MN/CTAft/eAaP+nHp/bO8BZ1QRsguaC5wFiBBAjgBgBxAggRgAxAogRQIwAYgQQI4AYAcQIIEYAMQKIEUAslynLwmNv/ya+lGmwlZDLlGV2urLR5GWjxTBl2Wy5TFlmpysbTl6WZTDXClk/lynL7HRlXosAj5HLlGV2ujIvmbwsy2CurUKAZMoyO12ZvZRxMNdWIcB8B0u7bAIQYAoBxJY7QOkb5npjZlvqAN9a/wSYr0Ks8EkEECOAGAHECCC2pAG+uf9TmJ2hpQyQbvUTwLl0q5QAzhFgToM9uBA2QfMZ7MGFEGA+gz24EDZB8xnswYUQYD6DPbgQNkHzGezBhRBgPoOlXTYvRRBgCgHECCBGALHlDlDk3Z+hpQ5Q6P3PoaUOMLnsIqzwSQQQI4AYAcQIIEYAMQKIEUCMAGIEECOA2CoFKCQCiBFAjABiBBAjgBgBxPKZsqyx8Yudtqw3fQUCTMhlyrK2Hx79PmuyGgJMyWXKMmMGP16Xtw/GF1Og4+CFksuUZSY89O20ZQWbMauQcpmybLBzFU9b5k9fgQATcpmyrLnh7X4sN7YyDrYS2A0VI4AYAcQIIEYAMQKIEUCMAGIEECOAGAHECCBGADECiBFAjABiBBAjgBgBxAgg9vgAg5el5w6Wl32I5ZLmHtAulUrVrMvL+PNLJ+UmKHMDAkxI/RhgE/xjxlveHru8J//kkkoXIIjWft2Er5/NeN/zI5f31B9cVikCRI/CpWTNB0+/CxBgQpq9oO9mvNcz9fKyD7FcUgT4Z7L+M/z6GwJMSR+gTQCXHhvg7O4jFuyGupT+HpBxeQ7GWCq8FiRGALFHBhi8rNqnATEehF3iHiBGADECiD36MeDueQCPAS5xDxAjgBgBxHgeIMY9QIwAYmkCxBuhpx8Ovj8YEqMA7eSV/rNS6Ts/WtF1018frenROguiv42u+NUDk8Mpy6Lz5NL08pzd8uUwPo1VeNILD+3aDar99ZvD2/U8XGfh6+RIzNnX7gPJlGX2/CK+NL1AZzd9GdyfR6zpm8H2i9LzOMD13dsQbw/K1+N/fvWYcDJlmT1/5Y/PmMWUZTMNV0fyj+B5snLb9WgTdHD46nZrf3sPSJq0v3YPSKYss3+8FlOWfdO9AKMJxgK7pWlvHbXO6sNrDa8dxEeDg68+BiRTltnz0/jS9CKd3PBlMR5g8GMvWfntaL0Pfvjv/QCPfTEumbLMntvTrEW6/n9YaOMB+pv24lnypoezavT7PrEJcrRIl4MtvHuboIev5XSRLgdbeOkCjDZDvBbkTLoA0ROA9nPTf1HPtMgsP7x0UgUYvIweGKLHha/uhj5ikSsre4C66X/fik8LqnB3v1QB7EsR9u2JBHAn3WOAfVt0tH+abRMkteABzNlzuyeUaSdIa9EDLLzC/Z8QQCxlABdHxKQWPMBjjogV22IHeNQRsWJb7ACPOiJWbIsd4FFHxIptsQM86ogYUnl8AGdvT8e4VXseUDgEEEsZoP+iZN84l+9tWilPeRBulzIdEcO4Jz0RW+Dd0MJZtSdihcM9QIzHADH2gsR4HiD2pMcAuPOkvSC4k/JBmP1P11LeA3g11DUehMUIIJYmgP0gMY/CjqUIYN+NkvGjAXodv1Osp5GPD5A8CVjol4HC7iIHSJ4ELPKOaLD5W+WCADrhh4t1Agg139ycEECos39cPiUA7uGNWWI8ExYjgBgBxAggRgAxAoilCxC+ZjfUsZTT1bDmXUs9XQ3c4m0pYk/6lCTcecon5eEQ7wsS43mAGAHE+HyAGJ+QEeMzYmJ8SlKMe4AYjwFi7AWJjQeIv8AqOo/OHvgaKzg3NrH38AusnvXsn5lfYwX3xgIkX2DVrprBD63ZX2MF98Y2QckXWLXrJjxqzfgaK2ffpopxEw/CQTW5B5jZX2MF58bvAfEXWCWPATO+xipivzvA4omYOxN7QVWT7AXN/hqrUYA2AZxJ8Tzg7O7d0Rybdybda0H/5CmYaxyQEUsZwM6bHjjbAoXNtUpr8iND0x8hCpb5paeU74yLH5UHLx29OyVas/b7K8Nut2fCT/ZvovMoQNg15sun5NQjgMnteEC//HMvWuF/XzaqQeXdXjRwdN7x48/z/tSsdaJT/w0BzPTxAGe7oe8bm9FvfH/PNPcvD5Mv4O748ed5K296nehkr0SAu+8Ri48E9F84ehCwW5ujU3+w2zPnb7sfovNW+FfHt5/n7d5cb36JTvZqBMjreMBg29uudd6+3vD2P+6cRiu7v9Oodfz487yV6FLFfjV0FKDs7V45WmThsBsqRgCxlAEGL0vPeme8EuFOyoPy3/ntZz0+p+FQ6t1Q+5YUXg11J/UTMRuA4wHuPOkesMDfpFc4T3kM4I1ZDqXfC+KNWU7xPEDsSUfEeBB250kB2A11h4PyYhyUF+NBWIwX48R4MU6MF+PEeDFOjBfjxHgxTowX48R4HiBGALEnzJjFI7BLaQKcJQ++bV6LcyhFgGD04LvwXyZWJI8PMDZn5RmzVzrz+ABjrwDxUoQ7aQLcbnh4KcIdAogRQIwAYmkC8D1iOeClCDECiBFAjABiggDUHEcAMQKIEUCMAGIEECOAWB4Bfm0ZE16Ur+wp82DLzn2AsFG20y7Vw5OL6HT3Doq7l/KecjuXVg4Benbeq6Zvzl8lU2BlGWz55bEJsms9Op17LQJ8U14BOn54fBqdCPAN+QQIap93GvEp82DLjt1QMQKIEUBsLED4On7nc/xdSnl+ixIBxo09OwqeG3NWH36XUo7fokSAcRNPT9v15LuU8vwWJQJMGNv+R3eC5LuUZnyLkrvluRxsGdwFGL3tPIi/MTKvb1EiwIRRgPC1Xd3JdynN/hYlR8tzOdgyGAU4S2YCSr5Laea3KDlansvBlsEjXh8mQJ4IIEYAMQKIEUCMAGIEECOAGAHECCBGADECiBFAjABiBBAjgBgBxAggRgAxAogRQIwAYgQQI4AYAcQIIEYAMQKIEUCMAGIEECOAGAHECCBGADHHAZKJyjqet/vHsbc/4zvHCDDBcYDOcKKy/l7/3mQ1TFn2EMcBmslEZeFxKyhvH2QcbCU4DnCeTFQW1MznHlOWPYbrTVAyUVl0R/jzyp5nGmwlOA5gJyoLauFRy/TLja2Mg60EdkPFCCBGADECiBFAjABiBBAjgBgBxAggRgAxAogRQIwAYgQQI4AYAcQIIEYAMQKIEUCMAGIEECOAGAHECCBGADECiBFAjABiBBAjgBgBxAggRgAxAogRQIwAYgQQI4AYAcQIIEYAsVUKUMjJiggglsuUZeGxt38TX8o0mGurECCZssxOVzaavGy0mAJMWbYKAZIpy+x0ZcPJy7IM5toqBEimLLPTlXktAjxGLlOW2enKvGTysiyDZVf6hrnemNlymbLMTldmL2UcLLNvrf8lDDDfwdIuuwgrfBIBxAggRgCxJQ3wzYffwjwWL2WAdKufAM6lW6UEcI4AcxrswYUQYD6DPbiQRXwMOCuVvvMHL0t101+//9UjBMj9tkb/DA/tZP9Btb9+czgx7f8iBsjv2o7d/gYMtl+UnscBrp9PXsfpAl0O9uBCFifA7dKDf7RMux5tgg4OX5We3dsGLWKARdoE3V0OqtFZe+uodVa/dxWny3M52IMLWcAAduW3o/U++OG/ix/goWUX+rWgaC/I3gHOqiZY+E3QQ8sudICvXMXp8lwOlnbZBCDAFAKILXeAIu/+DC11gELvfw4tdYDJZRdhhU8igBgBxAggRgAxAogRQIwAYgQQI4AYAcRWKUAhEUCMAGIEECOAGAHECCBGADECiBFAjABiBBDLZ8qyxsYvdtqy3vQVCDAhlynL2n549PusyWoIMCWXKcuMGfx4Xd4+GF9Mgd6MVii5TFlmP/Jnpy2Tz5i1AHKZsmywcxVPW+ZPX4EAE3KZsqy54e1+LDe2Mg62EtgNFSOAGAHECCBGADECiBFAjABiBBAjgBgBxAggRgAxAogRQIwAYgQQI4AYAcQIIEYAMQKIEUCMAGIEECOAGAHECCBGADECiBFAjABiBBAjgBgBxAggRgAxAogRQIwAYgQQI4AYAcQIIEYAsXymLIvOk0uZBlsJuUxZZs8v4kuZBlsJuUxZZs9f+eMzZjFl2UNymbLM/vFaTFn2GLlMWWbPT+NLmQZbCblMWWbP7SnjYCuB3VAxAogRQIwAYnMPsLqKEUCqiP8nBBAjgBgBxAggRgAxAogRQIwAYgQQI4DYSgUoIgKIEUCMAGIEECOAGAHECCBGADECiBFAjABiBBAjgBgBxAggRgAxAogRQGylAnT8jq++DZNWJ0DYJYBSsPlb5YIAOuGHi3UCCDXf3JwQQKizf1w+JQAmEUCMAGIEECOAGAHECCBGADECiBFAjABiBBAjgBgBxAggRgAxAogRQIwAYgQQI4AYAcQIIEYAMQKIEUCMAGIEECOAGAHECCBGADECiBFATBcgbK5VWpMfGZr+CFF8tXxuQSHoAgR109+0H9/t9kz4yf5NdB4FCLvGfPmUnHq3V1taugD98s+9aIX/fdmoBpV3e9Gqjs47fvx53p+atU506r8ZXm2JKR8D3jc2o9/4/p5p7l8eJl/A3fHjz/NW3vQ60en2anndggLQBbBbm6NTf7DbM+dvux+i81b4V8e3n+ft3lxvfolOt1db4gcBXYDBtrdd67x9veHtf9w5jVZ2f6dR6/jx53kr0aWK/Wro4dXyuQWFwG6o2FSAwQ+T93cC5Il7gNgoQH/jZal6VnrWi+4B/bUX0YW7q4hu2mrpf98avKybs7oNsN4LD++ekhJgHqJnm3ZvLwkQ7ZI0CTBfBBAjQHERQIwAYgQQI4AYAcQIIJbfIcnY6DDw1OHgZT8a/Gh5BogndP40Ohz85dPEFeyzk0/m9jBxfOi4m8/NKbAcA9gDwP+pvKtcx4eD7WFgY9573u6VvUJ8NNgeKB4dJo4ux9de6mPEM+QYIJnQ2TTX9i8PPT85DBx2u6Nf8veNTXu4+O3wMPF5yzQ9PzwhgBM2QDKhszn33nY/XPjJYeDPl5eX8SqOjwbb/9IYHiYmgFNB2ds93j8u/6t8utnfOd2MNkGVxvjR3/hocPxfhoeJ+zv2bRQEwJwRQIwAYgQQI4AYAcQIIEYAMQKIEUCMAGIEECOAGAHECCBGADECiBFAzGkAaqZHADECiBFAjABiBBAjgFi6dfZry5jwonxlT5kHg5VmnYWNsp12qR6eXNTH30NYuuX+9i29VAHsW5jth4zPXyVTYGUZDIl068yu9eh07rUI4Ej6AB0/PD6NTgRwIm2AoPZ5pxGfMg8Gi91QMQKIEUCMAGIEECOAGAHECCBGADECiBFAjABiBBAjgBgBxAggRgAxAogRQIwAYgQQI4AYAcQIIEYAMQKIEUCMAGIEECOAGAHECCBGADECiBFAjABiBBAjgBgBxAggRgAxAogRQIwAYgQQSzVhUzxRWcfzdv849vZnfOsmAdJLs846w4nK+nv9e5PVMGVZBmnWWTOZqCw8bgXl7YOMgyGRZp2dJxOVBTXzuceUZY6k2gQlE5VFd4Q/r+x5psGQSLPO7ERlQS08apl+ubGVcTAk2A0VI4AYAcQIIEYAMQKIEUCMAGIEECOAGAHECCBGADECiBFAjABiBBAjgBgBxAggRgAxAogRQIwAYgQQI4AYAcQIIEYAMQKIEUCMAGIEECOAGAHECCBGADECiBFAjABiBQuwevN9EECMAGIEECOAWPopy8Jjb/8mvpRpsAduDgG+IpmyzE5XNpq8bDiGuynLCPA1yZRldrqy4eRlWQab+tkJGYZaKOmnLLPTlXkt1wEm1z8BZkimLLPTlXnJ5GVZBnvg5qzMih9JP2WZna7MXso42AM3RxBAG53dUALcG4EA2sEIIB6MAJrBpnZC57krSoAHVj8B5jXYA2uAAPMajADiwQggHozHAPFgBBAPJtsEFeEV2FUOUIiXwFc5wJyX88DSCzAYAcSDEUA8GHtB4sEIUJzB5rcypM3Hb0exBpvfbz0BZo+g3ewQgADiwQggG2y+G2MeA6Z+lACFGIxNkHgwAogHI4B4MJ6IiQcjgHgw3pooHowA4sEIIB6MAOLBCCAebL4rQ74LZAoXYK70+6BmtQMMsQkSI4AYAcQIIEYAMQKIEUBscQIMpyxrbPxipy3rTV+BAE9YeorrJhOVtf3w6PdZk9UQ4ElLT3Hd0URlgx+vy9sHY2NIn8svuDTrLJmyzISHvp22LJcZs1ZPqk1QPFHZYOcqnrbMzzYYEmnWWTJlWXPD2/1YbmxlHAwJdkPFCCBGADECiBFAjABiBBAjgBgBxAggRgAxAogRQIwAYgQQI4AYAcQIIEYAMQKIEUCMAGIEECOAGAHECCBGADECiBFAjABiBBAjgBgBxAggRgAxAogRQIwAYgQQI4AYAcQIIEYAMQKIEUDsCVOWRefJpUyDIZF+yjJ7fhFfyjQYEumnLLPnr/zxGbOYsiyD9FOW2T9eiynLHEk/ZZk9P40vZRoMifRTltlze8o4GBLshooRQIwAYgQQcxtgdT19nTlc/y4obs/CTN49DwQQI4AYAcQIIEYAMQKIEUCMAGIEECMA5osAYgQQI4AYAcQIIEYAMQKIEUCMAGIEECOAGAHECCBGADECiBFAjABiBBArUICwuVZpBWtra7M+fpbLAk9aplk3QT1e8pwWOqlAAYK66W8G1TkuseMPXu2Zcz9e8hyXO65AAfrln3sm2Op257bEoB4cnNyc9OIlixQogDHvG5tB5fJybitjsNfxO/+uJUue10InFChAxzfh0bt5boLC491e4NWTJYseBAoUYLDtbdfm+hhg2lUz+KGVLHmeyx1ToACriQBiBBAjgBgBxAggRgAxAogRQIwAYgQQI4AYAcQIIEYAMQKIEUCMAGIEECOAGAHE/h9rWD/PEuFmBQAAAABJRU5ErkJggg==" style="display: block; margin: auto;" /></p> </div> <div id="mortality-estimation" class="section level2"> <h2>Mortality Estimation</h2> -<p>When estimating mortality, detection probability is determined for individualcarcasses based on the dates when they are observed, size class values, associated covariates, the searcher efficiency and carcass persistence models, and the search schedule. The carcass-specific detection probabilities (as opposed to the generic/cell-specific detection probabilities above) are therefore calculated before estimating the total mortality. Although it is possible to estimate these detection probabilities separately, they are best interpreted in the context of a full mortality estimation.</p> -<p>The <code>estM</code> function is the general wrapper function for estimating <code>M</code>, whether for a single size class or multiple size classes. Prior to estimation, we need to reduce the model-set-size complexed to just a single chosen model per size class, corresponding to the <code>pkMods</code> and <code>cpMods</code> vectors given above. To reduce the model set complexity, we use the <code>trimSetSize</code> function:</p> -<pre class="sourceCode r" id="cb32"><code class="sourceCode r"><a class="sourceLine" id="cb32-1" data-line-number="1">pkmModSize <-<span class="st"> </span><span class="kw">trimSetSize</span>(pkmModSetSize, pkMods)</a> -<a class="sourceLine" id="cb32-2" data-line-number="2">cpmModSize <-<span class="st"> </span><span class="kw">trimSetSize</span>(cpmModSetSize, cpMods)</a></code></pre> -<p>In addition to the models and search schedule data, <code>estM</code> requires DWP (Density Weighted Proportion) and CO (Carcass Observation) data. A required input is also the column names associated with the DWP value for each size class (argument <code>DWPCol</code> in <code>estM</code>):</p> -<pre class="sourceCode r" id="cb33"><code class="sourceCode r"><a class="sourceLine" id="cb33-1" data-line-number="1">data_CO <-<span class="st"> </span>mock<span class="op">$</span>CO</a> +<p>When estimating mortality, detection probability is determined for individual carcasses based on the dates when they are observed, size class values, associated covariates, the searcher efficiency and carcass persistence models, and the search schedule. The carcass-specific detection probabilities (as opposed to the generic/cell-specific detection probabilities above) are therefore calculated before estimating the total mortality. Although it is possible to estimate these detection probabilities separately, they are best interpreted in the context of a full mortality estimation.</p> +<p>The <code>estM</code> function is the general wrapper function for estimating <code>M</code>, whether for a single size class or multiple size classes. Prior to estimation, we need to reduce the model-set-size complexed to just a single chosen model per size class, corresponding to the <code>pkMods</code> and <code>cpMods</code> vectors given above. To reduce the model set complexity, we can use the <code>trimSetSize</code> function:</p> +<div class="sourceCode" id="cb32"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb32-1" data-line-number="1">pkmModSize <-<span class="st"> </span><span class="kw">trimSetSize</span>(pkmModSetSize, pkMods)</a> +<a class="sourceLine" id="cb32-2" data-line-number="2">cpmModSize <-<span class="st"> </span><span class="kw">trimSetSize</span>(cpmModSetSize, cpMods)</a></code></pre></div> +<p>In addition to the models and search schedule data, <code>estM</code> requires density-weighted proportion (DWP) and carcass observation (CO) data. If more than one size class is represented in the data, a required input is also the column names associated with the DWP value for each size class (argument <code>DWPCol</code> in <code>estM</code>):</p> +<div class="sourceCode" id="cb33"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb33-1" data-line-number="1">data_CO <-<span class="st"> </span>mock<span class="op">$</span>CO</a> <a class="sourceLine" id="cb33-2" data-line-number="2">data_DWP <-<span class="st"> </span>mock<span class="op">$</span>DWP</a> <a class="sourceLine" id="cb33-3" data-line-number="3"><span class="kw">head</span>(data_DWP)</a> <a class="sourceLine" id="cb33-4" data-line-number="4"><span class="co">#> Unit S M L XL</span></a> @@ -795,25 +810,25 @@ code > span.fu { color: #900; font-weight: bold; } code > span.er { color: #a61 <a class="sourceLine" id="cb33-12" data-line-number="12">eM <-<span class="st"> </span><span class="kw">estM</span>(<span class="dt">data_CO =</span> data_CO, <span class="dt">data_SS =</span> data_SS, <span class="dt">data_DWP =</span> data_DWP,</a> <a class="sourceLine" id="cb33-13" data-line-number="13"> <span class="dt">frac =</span> <span class="dv">1</span>, <span class="dt">model_SE =</span> pkmModSize, <span class="dt">model_CP =</span> cpmModSize,</a> <a class="sourceLine" id="cb33-14" data-line-number="14"> <span class="dt">seed_SE =</span> <span class="ot">NULL</span>, <span class="dt">seed_CP =</span> <span class="ot">NULL</span>, <span class="dt">seed_g =</span> <span class="ot">NULL</span>, <span class="dt">seed_M =</span> <span class="ot">NULL</span>,</a> -<a class="sourceLine" id="cb33-15" data-line-number="15"> <span class="dt">kFill =</span> <span class="ot">NULL</span>, <span class="dt">unitCol =</span> <span class="st">"Unit"</span>, <span class="dt">dateFoundCol =</span> <span class="st">"DateFound"</span>,</a> -<a class="sourceLine" id="cb33-16" data-line-number="16"> <span class="dt">datesSearchedCol =</span> <span class="st">"DateSearched"</span>, <span class="dt">sizeclassCol =</span> <span class="st">"Size"</span>, <span class="dt">nsim =</span> <span class="dv">1000</span>)</a></code></pre> +<a class="sourceLine" id="cb33-15" data-line-number="15"> <span class="dt">unitCol =</span> <span class="st">"Unit"</span>, <span class="dt">COdate =</span> <span class="st">"DateFound"</span>,</a> +<a class="sourceLine" id="cb33-16" data-line-number="16"> <span class="dt">SSdate =</span> <span class="st">"DateSearched"</span>, <span class="dt">sizeCol =</span> <span class="st">"Size"</span>, <span class="dt">nsim =</span> <span class="dv">1000</span>)</a></code></pre></div> <p><code>estM</code> returns an object that contains the random draws of <code>pkm</code> and <code>cpm</code> parameters (named <code>pk</code> and <code>ab</code>, respectively) and the estimated carcass-level detection parameters (<code>g</code>), arrival intervals (<code>Aj</code>), and associated total mortality (<code>Mhat</code>) values for each simulation. These <code>Mhat</code> values should be considered in combination, and can be summarized and plotted simply:</p> -<pre class="sourceCode r" id="cb34"><code class="sourceCode r"><a class="sourceLine" id="cb34-1" data-line-number="1"><span class="kw">summary</span>(eM)</a> +<div class="sourceCode" id="cb34"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb34-1" data-line-number="1"><span class="kw">summary</span>(eM)</a> <a class="sourceLine" id="cb34-2" data-line-number="2"><span class="co">#> median 5% 95% </span></a> -<a class="sourceLine" id="cb34-3" data-line-number="3"><span class="co">#> 1803.82 1640.56 1998.04</span></a> -<a class="sourceLine" id="cb34-4" data-line-number="4"><span class="kw">plot</span>(eM)</a></code></pre> -<p><img src="data:image/png;base64,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" style="display: block; margin: auto;" /></p> +<a class="sourceLine" id="cb34-3" data-line-number="3"><span class="co">#> 1806.50 1634.50 1992.15</span></a> +<a class="sourceLine" id="cb34-4" data-line-number="4"><span class="kw">plot</span>(eM)</a></code></pre></div> +<p><img src="data:image/png;base64,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" style="display: block; margin: auto;" /></p> <div id="splitting-mortality-estimations" class="section level3"> <h3>Splitting Mortality Estimations</h3> <p>It is possible to split the resulting mortality estimation into components that are denoted according to covariates in either the search schedule or carcass observation data sets.</p> <p>First, a temporal split:</p> -<pre class="sourceCode r" id="cb35"><code class="sourceCode r"><a class="sourceLine" id="cb35-1" data-line-number="1">M_season <-<span class="st"> </span><span class="kw">calcSplits</span>(<span class="dt">M =</span> eM<span class="op">$</span>Mhat, <span class="dt">Aj =</span> eM<span class="op">$</span>Aj, <span class="dt">split_SS =</span> <span class="st">"Construction"</span>,</a> +<div class="sourceCode" id="cb35"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb35-1" data-line-number="1">M_season <-<span class="st"> </span><span class="kw">calcSplits</span>(<span class="dt">M =</span> eM, <span class="dt">split_SS =</span> <span class="st">"Construction"</span>,</a> <a class="sourceLine" id="cb35-2" data-line-number="2"> <span class="dt">split_CO =</span> <span class="ot">NULL</span>, <span class="dt">data_SS =</span> data_SS, <span class="dt">data_CO =</span> data_CO</a> <a class="sourceLine" id="cb35-3" data-line-number="3"> )</a> <a class="sourceLine" id="cb35-4" data-line-number="4"><span class="kw">summary</span>(M_season)</a> -<a class="sourceLine" id="cb35-5" data-line-number="5"><span class="co">#> 5% 25% 50% 75% 95%</span></a> -<a class="sourceLine" id="cb35-6" data-line-number="6"><span class="co">#> Before 587.1315 638.8965 674.0044 711.2362 777.0119</span></a> -<a class="sourceLine" id="cb35-7" data-line-number="7"><span class="co">#> After 1010.9515 1075.4179 1131.1193 1183.4090 1258.2500</span></a> +<a class="sourceLine" id="cb35-5" data-line-number="5"><span class="co">#> X 5% 25% 50% 75% 95%</span></a> +<a class="sourceLine" id="cb35-6" data-line-number="6"><span class="co">#> Before 161.4324 587.9328 638.3668 675.2846 710.5557 763.8761</span></a> +<a class="sourceLine" id="cb35-7" data-line-number="7"><span class="co">#> After 264.5676 1012.2195 1078.0395 1136.1110 1186.5159 1266.8371</span></a> <a class="sourceLine" id="cb35-8" data-line-number="8"><span class="co">#> attr(,"class")</span></a> <a class="sourceLine" id="cb35-9" data-line-number="9"><span class="co">#> [1] "splitSummary"</span></a> <a class="sourceLine" id="cb35-10" data-line-number="10"><span class="co">#> attr(,"CL")</span></a> @@ -824,16 +839,16 @@ code > span.fu { color: #900; font-weight: bold; } code > span.er { color: #a61 <a class="sourceLine" id="cb35-15" data-line-number="15"><span class="co">#> [1] "SS"</span></a> <a class="sourceLine" id="cb35-16" data-line-number="16"><span class="co">#> attr(,"times")</span></a> <a class="sourceLine" id="cb35-17" data-line-number="17"><span class="co">#> [1] 0 127 349</span></a> -<a class="sourceLine" id="cb35-18" data-line-number="18"><span class="kw">plot</span>(M_season)</a></code></pre> -<p><img src="data:image/png;base64,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" style="display: block; margin: auto;" /></p> +<a class="sourceLine" id="cb35-18" data-line-number="18"><span class="kw">plot</span>(M_season)</a></code></pre></div> +<p><img src="data:image/png;base64,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" style="display: block; margin: auto;" /></p> <p>Next, a carcass split:</p> -<pre class="sourceCode r" id="cb36"><code class="sourceCode r"><a class="sourceLine" id="cb36-1" data-line-number="1">M_class <-<span class="st"> </span><span class="kw">calcSplits</span>(<span class="dt">M =</span> eM<span class="op">$</span>Mhat, <span class="dt">Aj =</span> eM<span class="op">$</span>Aj, <span class="dt">split_SS =</span> <span class="ot">NULL</span>,</a> +<div class="sourceCode" id="cb36"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb36-1" data-line-number="1">M_class <-<span class="st"> </span><span class="kw">calcSplits</span>(<span class="dt">M =</span> eM, <span class="dt">split_SS =</span> <span class="ot">NULL</span>,</a> <a class="sourceLine" id="cb36-2" data-line-number="2"> <span class="dt">split_CO =</span> <span class="st">"Split"</span>, <span class="dt">data_SS =</span> data_SS, <span class="dt">data_CO =</span> data_CO</a> <a class="sourceLine" id="cb36-3" data-line-number="3"> )</a> <a class="sourceLine" id="cb36-4" data-line-number="4"><span class="kw">summary</span>(M_class)</a> -<a class="sourceLine" id="cb36-5" data-line-number="5"><span class="co">#> 5% 25% 50% 75% 95%</span></a> -<a class="sourceLine" id="cb36-6" data-line-number="6"><span class="co">#> C1 721.3742 781.2051 822.7686 862.9647 925.9397</span></a> -<a class="sourceLine" id="cb36-7" data-line-number="7"><span class="co">#> C2 867.8705 933.7778 980.1204 1029.9598 1104.0419</span></a> +<a class="sourceLine" id="cb36-5" data-line-number="5"><span class="co">#> X 5% 25% 50% 75% 95%</span></a> +<a class="sourceLine" id="cb36-6" data-line-number="6"><span class="co">#> C1 196 734.7081 786.6378 826.6532 868.8429 935.7394</span></a> +<a class="sourceLine" id="cb36-7" data-line-number="7"><span class="co">#> C2 230 871.3217 931.2702 980.2581 1028.3932 1102.9425</span></a> <a class="sourceLine" id="cb36-8" data-line-number="8"><span class="co">#> attr(,"class")</span></a> <a class="sourceLine" id="cb36-9" data-line-number="9"><span class="co">#> [1] "splitSummary"</span></a> <a class="sourceLine" id="cb36-10" data-line-number="10"><span class="co">#> attr(,"CL")</span></a> @@ -842,22 +857,22 @@ code > span.fu { color: #900; font-weight: bold; } code > span.er { color: #a61 <a class="sourceLine" id="cb36-13" data-line-number="13"><span class="co">#> [1] "Split"</span></a> <a class="sourceLine" id="cb36-14" data-line-number="14"><span class="co">#> attr(,"type")</span></a> <a class="sourceLine" id="cb36-15" data-line-number="15"><span class="co">#> [1] "CO"</span></a> -<a class="sourceLine" id="cb36-16" data-line-number="16"><span class="kw">plot</span>(M_class)</a></code></pre> -<p><img src="data:image/png;base64,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" style="display: block; margin: auto;" /></p> +<a class="sourceLine" id="cb36-16" data-line-number="16"><span class="kw">plot</span>(M_class)</a></code></pre></div> +<p><img src="data:image/png;base64,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" style="display: block; margin: auto;" /></p> <p>And finally, if two splits are included, the mortality estimation is expanded fully factorially:</p> -<pre class="sourceCode r" id="cb37"><code class="sourceCode r"><a class="sourceLine" id="cb37-1" data-line-number="1">M_SbyC <-<span class="st"> </span><span class="kw">calcSplits</span>(<span class="dt">M =</span> eM<span class="op">$</span>Mhat, <span class="dt">Aj =</span> eM<span class="op">$</span>Aj, <span class="dt">split_SS =</span> <span class="st">"Construction"</span>,</a> +<div class="sourceCode" id="cb37"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb37-1" data-line-number="1">M_SbyC <-<span class="st"> </span><span class="kw">calcSplits</span>(<span class="dt">M =</span> eM, <span class="dt">split_SS =</span> <span class="st">"Construction"</span>,</a> <a class="sourceLine" id="cb37-2" data-line-number="2"> <span class="dt">split_CO =</span> <span class="st">"Split"</span>, <span class="dt">data_SS =</span> data_SS, <span class="dt">data_CO =</span> data_CO</a> <a class="sourceLine" id="cb37-3" data-line-number="3"> )</a> <a class="sourceLine" id="cb37-4" data-line-number="4"><span class="kw">summary</span>(M_SbyC)</a> <a class="sourceLine" id="cb37-5" data-line-number="5"><span class="co">#> $C1</span></a> -<a class="sourceLine" id="cb37-6" data-line-number="6"><span class="co">#> mean 5% 25% 50% 75% 95%</span></a> -<a class="sourceLine" id="cb37-7" data-line-number="7"><span class="co">#> Before 331.5941 273.2991 306.0878 330.3825 355.4188 396.3116</span></a> -<a class="sourceLine" id="cb37-8" data-line-number="8"><span class="co">#> After 492.1471 420.6454 462.1835 490.1811 522.1126 565.0365</span></a> +<a class="sourceLine" id="cb37-6" data-line-number="6"><span class="co">#> X 5% 25% 50% 75% 95%</span></a> +<a class="sourceLine" id="cb37-7" data-line-number="7"><span class="co">#> Before 80.20129 277.8706 309.7154 331.5220 355.0698 389.5583</span></a> +<a class="sourceLine" id="cb37-8" data-line-number="8"><span class="co">#> After 115.79871 425.1101 467.4983 495.6315 526.5195 570.9945</span></a> <a class="sourceLine" id="cb37-9" data-line-number="9"><span class="co">#> </span></a> <a class="sourceLine" id="cb37-10" data-line-number="10"><span class="co">#> $C2</span></a> -<a class="sourceLine" id="cb37-11" data-line-number="11"><span class="co">#> mean 5% 25% 50% 75% 95%</span></a> -<a class="sourceLine" id="cb37-12" data-line-number="12"><span class="co">#> Before 344.9897 284.0278 320.4010 344.3874 369.2548 406.3346</span></a> -<a class="sourceLine" id="cb37-13" data-line-number="13"><span class="co">#> After 638.3402 554.4711 600.9246 636.7975 673.3595 725.6927</span></a> +<a class="sourceLine" id="cb37-11" data-line-number="11"><span class="co">#> X 5% 25% 50% 75% 95%</span></a> +<a class="sourceLine" id="cb37-12" data-line-number="12"><span class="co">#> Before 81.23114 287.0862 317.2127 341.1539 366.8651 404.6424</span></a> +<a class="sourceLine" id="cb37-13" data-line-number="13"><span class="co">#> After 148.76886 555.8235 599.8687 635.5261 673.4874 730.2236</span></a> <a class="sourceLine" id="cb37-14" data-line-number="14"><span class="co">#> </span></a> <a class="sourceLine" id="cb37-15" data-line-number="15"><span class="co">#> attr(,"class")</span></a> <a class="sourceLine" id="cb37-16" data-line-number="16"><span class="co">#> [1] "splitSummary"</span></a> @@ -869,8 +884,8 @@ code > span.fu { color: #900; font-weight: bold; } code > span.er { color: #a61 <a class="sourceLine" id="cb37-22" data-line-number="22"><span class="co">#> [1] "SS" "CO"</span></a> <a class="sourceLine" id="cb37-23" data-line-number="23"><span class="co">#> attr(,"times")</span></a> <a class="sourceLine" id="cb37-24" data-line-number="24"><span class="co">#> [1] 0 127 349</span></a> -<a class="sourceLine" id="cb37-25" data-line-number="25"><span class="kw">plot</span>(M_SbyC)</a></code></pre> -<p><img src="data:image/png;base64,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" style="display: block; margin: auto;" /></p> +<a class="sourceLine" id="cb37-25" data-line-number="25"><span class="kw">plot</span>(M_SbyC)</a></code></pre></div> +<p><img src="data:image/png;base64,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" style="display: block; margin: auto;" /></p> </div> </div> diff --git a/inst/doc/solar-examples.R b/inst/doc/solar-examples.R index d6a654cd2c111e68643941d87cec9f8627a6c4d9..c807a077975a8c5a71b0bb2a0fad07d2b9ebb8ad 100644 --- a/inst/doc/solar-examples.R +++ b/inst/doc/solar-examples.R @@ -94,10 +94,13 @@ class(CP_size_model_set$small) length(CP_size_model_set$small) names(CP_size_model_set$small) -## ----cp Size Small------------------------------------------------------- +## ------------------------------------------------------------------------ aicc(CP_size_model_set) CP_models <- list() +## ----cp Size Small------------------------------------------------------- +CP_models$small <- CP_size_model_set$small[[4]] + ## ----cp size Medium------------------------------------------------------ CP_models$med <- CP_size_model_set$med[[4]] @@ -116,3 +119,75 @@ data_SS[1:5 , 1:10] data_DWP <- solar_PV$DWP head(data_DWP) +## ----Arrival Times, options---------------------------------------------- + Mest <- estM( + nsim = 100, frac = 1, + data_CO = data_CO, data_SS = data_SS, data_DWP = data_DWP, + model_SE = SE_models, model_CP = CP_models, + unitCol = "Unit", sizeCol = "Size", + COdate = "DateFound", SSdate = "DateSearched" + ) + +## ---- fig.show = "hold", fig.height = 4, fig.width = 6, fig.align = 'center'---- +plot(Mest) + +## ----Summary - Season---------------------------------------------------- +unique(data_SS[, "Season"]) + +M_season <- calcSplits(M = Mest, + split_SS = "Season", data_SS = data_SS, + split_CO = NULL, data_CO = data_CO +) + +## ----splitFull plot, fig.height = 4, fig.width = 4, fig.align = 'center'---- +plot(M_season) + +## ----SplitFull Summary--------------------------------------------------- +summary(M_season, CL = 0.95) + +## ----Summary - Weekly---------------------------------------------------- + +SSdat <- prepSS(data_SS) # Creates an object of type prepSS. +schedule <- seq(from = 0, to = max(SSdat$days), by = 7) +tail(schedule) + +## ----Summary - Weekly Part 2, fig.height = 4, fig.width = 7, fig.align = 'center'---- +M_week <- calcSplits(M = Mest, + split_time = schedule, + data_SS = SSdat, + data_CO = data_CO +) +plot(x = M_week, rate = TRUE) + + +## ----Summary - Unit, fig.height = 4, fig.width = 7, fig.align = 'center'---- + +M_unit <- calcSplits(M = Mest, + split_CO = "Unit", + data_CO = data_CO, + data_SS = data_SS +) +plot(M_unit, rate = FALSE) + +## ----individual unit summary--------------------------------------------- +dim(summary(M_unit)) # only 164 arrays had observations. + +# A list of the arrays without observed carcasses: +setdiff(paste0("Unit", 1:300), data_CO$Unit) + +# Create summaries for arrays Unit12 and Unit100. +whichRow <- rownames(summary(M_unit)) %in% c("Unit12", "Unit100") +summary(M_unit)[whichRow, ] + + +## ----Summary - season and species, fig.height = 5, fig.width = 3, fig.align = 'center'---- + +M_unit_and_species <- calcSplits(M = Mest, + split_SS = c("Season"), + split_CO = c("Size"), + data_CO = data_CO, + data_SS = data_SS +) +plot(M_unit_and_species, rate = FALSE) + + diff --git a/inst/doc/solar-examples.Rmd b/inst/doc/solar-examples.Rmd index 091add4cf7213a5d8b80cf60266cedecf68e64f0..e22702fc66cf3747d526b5f7b53578c7574b5171 100644 --- a/inst/doc/solar-examples.Rmd +++ b/inst/doc/solar-examples.Rmd @@ -362,7 +362,7 @@ M_week <- calcSplits(M = Mest, data_SS = SSdat, data_CO = data_CO ) -plot(x = M_week, rate = T) +plot(x = M_week, rate = TRUE) ``` diff --git a/inst/doc/solar-examples.html b/inst/doc/solar-examples.html index 7f511a2a466ac61e95db5f88028db026570e2c72..ac52ab92e3032e60ba0359860ca31741acc7d5b4 100644 --- a/inst/doc/solar-examples.html +++ b/inst/doc/solar-examples.html @@ -12,7 +12,7 @@ <meta name="author" content="J Mintz, D Dalthorp, J Simonis" /> -<meta name="date" content="2018-09-29" /> +<meta name="date" content="2018-11-02" /> <title>GenEst - Tutorial with Solar Example (including Carcass Size)</title> @@ -20,20 +20,26 @@ <style type="text/css">code{white-space: pre;}</style> <style type="text/css"> -a.sourceLine { display: inline-block; min-height: 1.25em; } +a.sourceLine { display: inline-block; line-height: 1.25; } a.sourceLine { pointer-events: none; color: inherit; text-decoration: inherit; } +a.sourceLine:empty { height: 1.2em; } .sourceCode { overflow: visible; } -code.sourceCode { white-space: pre; } +code.sourceCode { white-space: pre; position: relative; } +div.sourceCode { margin: 1em 0; } +pre.sourceCode { margin: 0; } +@media screen { +div.sourceCode { overflow: auto; } +} @media print { code.sourceCode { white-space: pre-wrap; } a.sourceLine { text-indent: -1em; padding-left: 1em; } } pre.numberSource a.sourceLine - { position: relative; } + { position: relative; left: -4em; } pre.numberSource a.sourceLine::before { content: attr(data-line-number); - position: absolute; left: -5em; text-align: right; vertical-align: baseline; - border: none; pointer-events: all; + position: relative; left: -1em; text-align: right; vertical-align: baseline; + border: none; pointer-events: all; display: inline-block; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; @@ -41,38 +47,40 @@ pre.numberSource a.sourceLine::before color: #aaaaaa; } pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; } +div.sourceCode + { } @media screen { -a.sourceLine::before { text-decoration: underline; color: initial; } +a.sourceLine::before { text-decoration: underline; } } -code span.kw { color: #007020; font-weight: bold; } /* Keyword */ -code span.dt { color: #902000; } /* DataType */ -code span.dv { color: #40a070; } /* DecVal */ +code span.al { color: #ff0000; font-weight: bold; } /* Alert */ +code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */ +code span.at { color: #7d9029; } /* Attribute */ code span.bn { color: #40a070; } /* BaseN */ -code span.fl { color: #40a070; } /* Float */ +code span.bu { } /* BuiltIn */ +code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */ code span.ch { color: #4070a0; } /* Char */ -code span.st { color: #4070a0; } /* String */ +code span.cn { color: #880000; } /* Constant */ code span.co { color: #60a0b0; font-style: italic; } /* Comment */ -code span.ot { color: #007020; } /* Other */ -code span.al { color: #ff0000; font-weight: bold; } /* Alert */ -code span.fu { color: #06287e; } /* Function */ +code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */ +code span.do { color: #ba2121; font-style: italic; } /* Documentation */ +code span.dt { color: #902000; } /* DataType */ +code span.dv { color: #40a070; } /* DecVal */ code span.er { color: #ff0000; font-weight: bold; } /* Error */ -code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */ -code span.cn { color: #880000; } /* Constant */ -code span.sc { color: #4070a0; } /* SpecialChar */ -code span.vs { color: #4070a0; } /* VerbatimString */ -code span.ss { color: #bb6688; } /* SpecialString */ +code span.ex { } /* Extension */ +code span.fl { color: #40a070; } /* Float */ +code span.fu { color: #06287e; } /* Function */ code span.im { } /* Import */ -code span.va { color: #19177c; } /* Variable */ -code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */ +code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */ +code span.kw { color: #007020; font-weight: bold; } /* Keyword */ code span.op { color: #666666; } /* Operator */ -code span.bu { } /* BuiltIn */ -code span.ex { } /* Extension */ +code span.ot { color: #007020; } /* Other */ code span.pp { color: #bc7a00; } /* Preprocessor */ -code span.at { color: #7d9029; } /* Attribute */ -code span.do { color: #ba2121; font-style: italic; } /* Documentation */ -code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */ -code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */ -code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */ +code span.sc { color: #4070a0; } /* SpecialChar */ +code span.ss { color: #bb6688; } /* SpecialString */ +code span.st { color: #4070a0; } /* String */ +code span.va { color: #19177c; } /* Variable */ +code span.vs { color: #4070a0; } /* VerbatimString */ +code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */ </style> @@ -270,7 +278,7 @@ code > span.fu { color: #900; font-weight: bold; } code > span.er { color: #a61 <h1 class="title toc-ignore">GenEst - Tutorial with Solar Example (including Carcass Size)</h1> <h4 class="author"><em>J Mintz, D Dalthorp, J Simonis</em></h4> -<h4 class="date"><em>2018-09-29</em></h4> +<h4 class="date"><em>2018-11-02</em></h4> @@ -285,29 +293,54 @@ code > span.fu { color: #900; font-weight: bold; } code > span.er { color: #a61 <li>Specify the type of summary desired (for example, by season and species)</li> </ol> <p>There are five files in total which make up the example dataset, located in <code>\GenEst\inst\extdata\solar_PV</code>. For convenience, these files have been made available in R as a list,</p> -<pre class="sourceCode r" id="cb1"><code class="sourceCode r"><a class="sourceLine" id="cb1-1" data-line-number="1"><span class="kw">data</span>(solar_PV) <span class="co"># (Note: fix pv to PV in folder structure.)</span></a> +<div class="sourceCode" id="cb1"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb1-1" data-line-number="1"><span class="kw">data</span>(solar_PV)</a> <a class="sourceLine" id="cb1-2" data-line-number="2"><span class="kw">names</span>(solar_PV)</a> -<a class="sourceLine" id="cb1-3" data-line-number="3"><span class="co">#> [1] "SE" "CP" "SS" "DWP" "CO"</span></a></code></pre> +<a class="sourceLine" id="cb1-3" data-line-number="3"><span class="co">#> [1] "SE" "CP" "SS" "DWP" "CO"</span></a></code></pre></div> </div> <div id="part-1-searcher-efficiency-modeling" class="section level3"> <h3>Part 1: Searcher Efficiency Modeling</h3> -<p>Searcher efficiency (SE) is modeled as a function of the number of times a carcass has been missed in previous searches and any number of covariates. The probability of finding a carcass that is present at the time of search is p on the first search after carcass arrival and is assumed to decrease by a factor of k each time the carcass is missed in searches. (For further background on field trials, and information about how to format the results for use with GenEst, see User Manual appendices A1 and B1).</p> -<p>Results of the SE field trials used in this example are stored in the <code>SE_data</code> data frame:</p> -<pre class="sourceCode r" id="cb2"><code class="sourceCode r"><a class="sourceLine" id="cb2-1" data-line-number="1">SE_data <-<span class="st"> </span>solar_PV<span class="op">$</span>SE</a> -<a class="sourceLine" id="cb2-2" data-line-number="2"><span class="kw">head</span>(SE_data, <span class="dv">3</span>)</a> -<a class="sourceLine" id="cb2-3" data-line-number="3"><span class="co">#> Index Season Size Search1 Search2 Search3 Search4 Distance</span></a> -<a class="sourceLine" id="cb2-4" data-line-number="4"><span class="co">#> 1 1 winter small 1 NA NA NA 17</span></a> -<a class="sourceLine" id="cb2-5" data-line-number="5"><span class="co">#> 2 2 winter small 1 NA NA NA 26</span></a> -<a class="sourceLine" id="cb2-6" data-line-number="6"><span class="co">#> 3 3 winter small 0 1 NA NA 54</span></a></code></pre> -<p>GenEst provides tools to construct and compare specific individual models, to explore which subsets of variables are most useful, and to automatically construct entire sets of models. To start we will fit a basic model in which the probability of detecting a carcass, <code>p</code>, and compounding difficulty to detect, <code>k</code>, depend only on their respective intercepts (and not other factors such as season or size). The function <code>pkm</code> is used to create a searcher efficiency model, which is stored as a PKM model object. All PKM objects, whether individual, or part of a set, can have their AICc and table of estimated <code>p</code>, <code>k</code> parameters extracted using <code>$AICc</code> and <code>$cellwiseTable</code>.</p> -<pre class="sourceCode r" id="cb3"><code class="sourceCode r"><a class="sourceLine" id="cb3-1" data-line-number="1">SE_model <-<span class="st"> </span><span class="kw">pkm</span>(p <span class="op">~</span><span class="st"> </span><span class="dv">1</span>, k <span class="op">~</span><span class="st"> </span><span class="dv">1</span>, <span class="dt">data =</span> SE_data)</a> -<a class="sourceLine" id="cb3-2" data-line-number="2"> SE_model<span class="op">$</span>AICc</a> -<a class="sourceLine" id="cb3-3" data-line-number="3"><span class="co">#> [1] 489</span></a> -<a class="sourceLine" id="cb3-4" data-line-number="4"> SE_model<span class="op">$</span>cellwiseTable</a> -<a class="sourceLine" id="cb3-5" data-line-number="5"><span class="co">#> cell p_median p_lower p_upper k_median k_lower k_upper</span></a> -<a class="sourceLine" id="cb3-6" data-line-number="6"><span class="co">#> 1 all 0.665 0.615 0.711 0.846 0.742 0.913</span></a></code></pre> -<p>To explore whether use of covariate is warranted, the <code>pkmSet</code> function fits the specific model, plus the set of models which can be created by simplifying the orginal model. For example, <code>p ~ Season</code> can be simplified into <code>p ~ 1</code>, our original model in which <code>p</code> is independent of season.</p> -<pre class="sourceCode r" id="cb4"><code class="sourceCode r"><a class="sourceLine" id="cb4-1" data-line-number="1">SE_model_set <-<span class="st"> </span><span class="kw">pkmSet</span>(p<span class="op">~</span>Season, k<span class="op">~</span><span class="dv">1</span>, <span class="dt">data =</span> SE_data)</a> +<p>Searcher efficiency (SE) is modeled as a function of the number of times a carcass has been missed in previous searches and any number of covariates. The probability of finding a carcass that is present at the time of search is p on the first search after carcass arrival and is assumed to decrease by a factor of k each time the carcass is missed in searches. (For further background on field trials, and information about how to format the results for use with GenEst, see the User Guide).</p> +<p>Results of the SE field trials used in this example are stored in the <code>data_SE</code> data frame:</p> +<div class="sourceCode" id="cb2"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb2-1" data-line-number="1">data_SE <-<span class="st"> </span>solar_PV<span class="op">$</span>SE</a> +<a class="sourceLine" id="cb2-2" data-line-number="2"><span class="kw">head</span>(data_SE)</a> +<a class="sourceLine" id="cb2-3" data-line-number="3"><span class="co">#> seID Season Size Search1 Search2 Search3 Search4 Distance</span></a> +<a class="sourceLine" id="cb2-4" data-line-number="4"><span class="co">#> 1 se1 winter small 1 NA NA NA 17</span></a> +<a class="sourceLine" id="cb2-5" data-line-number="5"><span class="co">#> 2 se2 winter small 1 NA NA NA 26</span></a> +<a class="sourceLine" id="cb2-6" data-line-number="6"><span class="co">#> 3 se3 winter small 0 1 NA NA 54</span></a> +<a class="sourceLine" id="cb2-7" data-line-number="7"><span class="co">#> 4 se4 winter small 0 1 NA NA 28</span></a> +<a class="sourceLine" id="cb2-8" data-line-number="8"><span class="co">#> 5 se5 winter small 1 NA NA NA 46</span></a> +<a class="sourceLine" id="cb2-9" data-line-number="9"><span class="co">#> 6 se6 winter small 1 NA NA NA 40</span></a></code></pre></div> +<p>GenEst provides tools to construct and compare specific individual models, to explore which subsets of variables are most useful, and to automatically construct entire sets of models. To start we will fit a basic model in which the probability of detecting a carcass, <code>p</code>, and compounding difficulty to detect, <code>k</code>, depend only on their respective intercepts (and not other factors such as season or size). The function <code>pkm</code> is used to create a searcher efficiency model, which is returned as a <code>pkm</code> object.</p> +<div class="sourceCode" id="cb3"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb3-1" data-line-number="1">SE_model <-<span class="st"> </span><span class="kw">pkm</span>(p <span class="op">~</span><span class="st"> </span><span class="dv">1</span>, k <span class="op">~</span><span class="st"> </span><span class="dv">1</span>, <span class="dt">data =</span> data_SE)</a> +<a class="sourceLine" id="cb3-2" data-line-number="2">SE_model</a> +<a class="sourceLine" id="cb3-3" data-line-number="3"><span class="co">#> $call</span></a> +<a class="sourceLine" id="cb3-4" data-line-number="4"><span class="co">#> pkm0(formula_p = formula_p, formula_k = formula_k, data = data, </span></a> +<a class="sourceLine" id="cb3-5" data-line-number="5"><span class="co">#> obsCol = obsCol, kFixed = kFixed, kInit = kInit, CL = CL, </span></a> +<a class="sourceLine" id="cb3-6" data-line-number="6"><span class="co">#> quiet = quiet)</span></a> +<a class="sourceLine" id="cb3-7" data-line-number="7"><span class="co">#> </span></a> +<a class="sourceLine" id="cb3-8" data-line-number="8"><span class="co">#> $formula_p</span></a> +<a class="sourceLine" id="cb3-9" data-line-number="9"><span class="co">#> p ~ 1</span></a> +<a class="sourceLine" id="cb3-10" data-line-number="10"><span class="co">#> </span></a> +<a class="sourceLine" id="cb3-11" data-line-number="11"><span class="co">#> $formula_k</span></a> +<a class="sourceLine" id="cb3-12" data-line-number="12"><span class="co">#> k ~ 1</span></a> +<a class="sourceLine" id="cb3-13" data-line-number="13"><span class="co">#> </span></a> +<a class="sourceLine" id="cb3-14" data-line-number="14"><span class="co">#> $predictors</span></a> +<a class="sourceLine" id="cb3-15" data-line-number="15"><span class="co">#> character(0)</span></a> +<a class="sourceLine" id="cb3-16" data-line-number="16"><span class="co">#> </span></a> +<a class="sourceLine" id="cb3-17" data-line-number="17"><span class="co">#> $AICc</span></a> +<a class="sourceLine" id="cb3-18" data-line-number="18"><span class="co">#> [1] 489</span></a> +<a class="sourceLine" id="cb3-19" data-line-number="19"><span class="co">#> </span></a> +<a class="sourceLine" id="cb3-20" data-line-number="20"><span class="co">#> $convergence</span></a> +<a class="sourceLine" id="cb3-21" data-line-number="21"><span class="co">#> [1] 0</span></a> +<a class="sourceLine" id="cb3-22" data-line-number="22"><span class="co">#> </span></a> +<a class="sourceLine" id="cb3-23" data-line-number="23"><span class="co">#> $cell_pk</span></a> +<a class="sourceLine" id="cb3-24" data-line-number="24"><span class="co">#> cell n p_median p_lower p_upper k_median k_lower k_upper</span></a> +<a class="sourceLine" id="cb3-25" data-line-number="25"><span class="co">#> 1 all 240 0.665 0.615 0.711 0.846 0.742 0.913</span></a> +<a class="sourceLine" id="cb3-26" data-line-number="26"><span class="co">#> </span></a> +<a class="sourceLine" id="cb3-27" data-line-number="27"><span class="co">#> $CL</span></a> +<a class="sourceLine" id="cb3-28" data-line-number="28"><span class="co">#> [1] 0.9</span></a></code></pre></div> +<p>To explore whether use of covariate is warranted, <code>pkm</code> is used with the <code>allCombos = TRUE</code>. The specified model will be fit as will models formed using all combinations of predictors listed for the <code>p</code> and <code>k</code> parameters. orginal model. For example, <code>p ~ Season</code> can be simplified into <code>p ~ 1</code>, our original model in which <code>p</code> is independent of season.</p> +<div class="sourceCode" id="cb4"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb4-1" data-line-number="1">SE_model_set <-<span class="st"> </span><span class="kw">pkm</span>(p<span class="op">~</span>Season, k<span class="op">~</span><span class="dv">1</span>, <span class="dt">data =</span> data_SE, <span class="dt">allCombos =</span> <span class="ot">TRUE</span>)</a> <a class="sourceLine" id="cb4-2" data-line-number="2"><span class="kw">class</span>(SE_model_set)</a> <a class="sourceLine" id="cb4-3" data-line-number="3"><span class="co">#> [1] "pkmSet" "list"</span></a> <a class="sourceLine" id="cb4-4" data-line-number="4"><span class="kw">length</span>(SE_model_set)</a> @@ -315,162 +348,230 @@ code > span.fu { color: #900; font-weight: bold; } code > span.er { color: #a61 <a class="sourceLine" id="cb4-6" data-line-number="6"><span class="kw">names</span>(SE_model_set)</a> <a class="sourceLine" id="cb4-7" data-line-number="7"><span class="co">#> [1] "p ~ Season; k ~ 1" "p ~ 1; k ~ 1"</span></a> <a class="sourceLine" id="cb4-8" data-line-number="8"><span class="kw">class</span>(SE_model_set[[<span class="dv">1</span>]])</a> -<a class="sourceLine" id="cb4-9" data-line-number="9"><span class="co">#> [1] "pkm" "list"</span></a></code></pre> -<p>The set of models is contained in a <code>pkmSet</code> object. We could inspect the two models stored in the <code>pkmSet</code> individually, or for convenience we can view the AICc values simultaneously for all models using pkmSetAICcTab. Summary plots can be obtained by plotting any of the individual objects or the set as well.</p> -<pre class="sourceCode r" id="cb5"><code class="sourceCode r"><a class="sourceLine" id="cb5-1" data-line-number="1"><span class="kw">pkmSetAICcTab</span>(SE_model_set)</a> -<a class="sourceLine" id="cb5-2" data-line-number="2"><span class="co">#> p Formula k Formula AICc Delta AICc</span></a> -<a class="sourceLine" id="cb5-3" data-line-number="3"><span class="co">#> 2 p ~ 1 k ~ 1 489.00 0.00</span></a> -<a class="sourceLine" id="cb5-4" data-line-number="4"><span class="co">#> 1 p ~ Season k ~ 1 492.11 3.11</span></a></code></pre> -<p>Rather than one searcher efficiency model for all birds, it is often preferable to fit a seperate model for each size class. The function <code>pkmSetSize</code> automatically fits a new model for each size class, creating a list of pkm objects, one for each size class. The name of the column containing the size class information must be specified and consistent across files.</p> -<pre class="sourceCode r" id="cb6"><code class="sourceCode r"><a class="sourceLine" id="cb6-1" data-line-number="1">SE_size_model_set <-<span class="st"> </span><span class="kw">pkmSetSize</span>(p <span class="op">~</span><span class="st"> </span>Season, </a> -<a class="sourceLine" id="cb6-2" data-line-number="2"> k <span class="op">~</span><span class="st"> </span><span class="dv">1</span>, </a> -<a class="sourceLine" id="cb6-3" data-line-number="3"> <span class="dt">sizeclassCol =</span> <span class="st">"Size"</span>, </a> -<a class="sourceLine" id="cb6-4" data-line-number="4"> <span class="dt">data =</span> SE_data)</a> -<a class="sourceLine" id="cb6-5" data-line-number="5"><span class="kw">class</span>(SE_size_model_set)</a> -<a class="sourceLine" id="cb6-6" data-line-number="6"><span class="co">#> [1] "pkmSetSize" "list"</span></a> -<a class="sourceLine" id="cb6-7" data-line-number="7"><span class="kw">names</span>(SE_size_model_set) <span class="co"># A list is created with a model set per size class.</span></a> +<a class="sourceLine" id="cb4-9" data-line-number="9"><span class="co">#> [1] "pkm" "list"</span></a></code></pre></div> +<p>The set of models is contained in a <code>pkmSet</code> object. We could inspect the two models stored in the <code>pkmSet</code> individually, or for convenience we can view the AICc values simultaneously for all models using the function. Summary plots can be obtained by plotting any of the individual objects or the set as well.</p> +<div class="sourceCode" id="cb5"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb5-1" data-line-number="1"><span class="kw">aicc</span>(SE_model_set)</a> +<a class="sourceLine" id="cb5-2" data-line-number="2"><span class="co">#> p Formula k Formula AICc <U+0394>AICc</span></a> +<a class="sourceLine" id="cb5-3" data-line-number="3"><span class="co">#> 2 p ~ 1 k ~ 1 489.00 0.00</span></a> +<a class="sourceLine" id="cb5-4" data-line-number="4"><span class="co">#> 1 p ~ Season k ~ 1 492.11 3.11</span></a></code></pre></div> +<p>Rather than one searcher efficiency model for all birds, it is often preferable to fit a seperate model for each size class. The <code>sizeCol</code> argument of the <code>pkm</code> function is the name of the column in <code>data_SE</code> that gives the size class for each carcass in the SE trials. If a <code>sizeCol</code> is provided, <code>pkm</code> returns a list of separate pk models fit for each size class.</p> +<div class="sourceCode" id="cb6"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb6-1" data-line-number="1">SE_size_model <-<span class="st"> </span><span class="kw">pkm</span>(p <span class="op">~</span><span class="st"> </span>Season,</a> +<a class="sourceLine" id="cb6-2" data-line-number="2"> k <span class="op">~</span><span class="st"> </span><span class="dv">1</span>,</a> +<a class="sourceLine" id="cb6-3" data-line-number="3"> <span class="dt">sizeCol =</span> <span class="st">"Size"</span>,</a> +<a class="sourceLine" id="cb6-4" data-line-number="4"> <span class="dt">data =</span> data_SE)</a> +<a class="sourceLine" id="cb6-5" data-line-number="5"><span class="kw">class</span>(SE_size_model)</a> +<a class="sourceLine" id="cb6-6" data-line-number="6"><span class="co">#> [1] "pkmSize" "list"</span></a> +<a class="sourceLine" id="cb6-7" data-line-number="7"><span class="kw">names</span>(SE_size_model) <span class="co"># A list is created with a model set per size class.</span></a> <a class="sourceLine" id="cb6-8" data-line-number="8"><span class="co">#> [1] "small" "med" "lrg"</span></a> -<a class="sourceLine" id="cb6-9" data-line-number="9"><span class="kw">class</span>(SE_size_model_set<span class="op">$</span>small)</a> -<a class="sourceLine" id="cb6-10" data-line-number="10"><span class="co">#> [1] "pkmSet" "list"</span></a> -<a class="sourceLine" id="cb6-11" data-line-number="11"><span class="kw">names</span>(SE_size_model_set<span class="op">$</span>small) <span class="co"># Each model set contains one model in this case.</span></a> -<a class="sourceLine" id="cb6-12" data-line-number="12"><span class="co">#> [1] "p ~ Season; k ~ 1" "p ~ 1; k ~ 1"</span></a></code></pre> +<a class="sourceLine" id="cb6-9" data-line-number="9"><span class="kw">class</span>(SE_size_model<span class="op">$</span>small)</a> +<a class="sourceLine" id="cb6-10" data-line-number="10"><span class="co">#> [1] "pkm" "list"</span></a> +<a class="sourceLine" id="cb6-11" data-line-number="11"><span class="kw">names</span>(SE_size_model<span class="op">$</span>small) <span class="co"># Each model set contains one model in this case.</span></a> +<a class="sourceLine" id="cb6-12" data-line-number="12"><span class="co">#> [1] "call" "data" "data0" "formula_p" </span></a> +<a class="sourceLine" id="cb6-13" data-line-number="13"><span class="co">#> [5] "formula_k" "predictors" "predictors_p" "predictors_k"</span></a> +<a class="sourceLine" id="cb6-14" data-line-number="14"><span class="co">#> [9] "AIC" "AICc" "convergence" "varbeta" </span></a> +<a class="sourceLine" id="cb6-15" data-line-number="15"><span class="co">#> [13] "cellMM_p" "cellMM_k" "nbeta_p" "nbeta_k" </span></a> +<a class="sourceLine" id="cb6-16" data-line-number="16"><span class="co">#> [17] "betahat_p" "betahat_k" "levels_p" "cells" </span></a> +<a class="sourceLine" id="cb6-17" data-line-number="17"><span class="co">#> [21] "ncell" "cell_pk" "CL" "observations"</span></a> +<a class="sourceLine" id="cb6-18" data-line-number="18"><span class="co">#> [25] "carcCells" "loglik" "pOnly"</span></a></code></pre></div> +<p>To fit all combinations of models for each size class, use <code>pkm</code> with a <code>sizeCol</code> parameter and with <code>allCombos = T</code>.</p> <p>Once we have decided on which models to use for each size class, we store the corresponding pkm objects in a list for future use. In this case, we will choose the models with the lower AICc.</p> -<p>Size Small:</p> -<pre class="sourceCode r" id="cb7"><code class="sourceCode r"><a class="sourceLine" id="cb7-1" data-line-number="1"><span class="kw">pkmSetAICcTab</span>(SE_size_model_set<span class="op">$</span>small)</a> -<a class="sourceLine" id="cb7-2" data-line-number="2"><span class="co">#> p Formula k Formula AICc Delta AICc</span></a> -<a class="sourceLine" id="cb7-3" data-line-number="3"><span class="co">#> 2 p ~ 1 k ~ 1 202.17 0.00</span></a> -<a class="sourceLine" id="cb7-4" data-line-number="4"><span class="co">#> 1 p ~ Season k ~ 1 206.48 4.31</span></a> -<a class="sourceLine" id="cb7-5" data-line-number="5">SE_models <-<span class="st"> </span><span class="kw">list</span>(<span class="dt">small =</span> SE_size_model_set<span class="op">$</span>med[[<span class="dv">2</span>]])</a></code></pre> +<div class="sourceCode" id="cb7"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb7-1" data-line-number="1">SE_size_model_set <-<span class="st"> </span><span class="kw">pkm</span>(p <span class="op">~</span><span class="st"> </span>Season,</a> +<a class="sourceLine" id="cb7-2" data-line-number="2"> k <span class="op">~</span><span class="st"> </span><span class="dv">1</span>,</a> +<a class="sourceLine" id="cb7-3" data-line-number="3"> <span class="dt">sizeCol =</span> <span class="st">"Size"</span>,</a> +<a class="sourceLine" id="cb7-4" data-line-number="4"> <span class="dt">data =</span> data_SE, <span class="dt">allCombos =</span> <span class="ot">TRUE</span>)</a> +<a class="sourceLine" id="cb7-5" data-line-number="5"><span class="kw">aicc</span>(SE_size_model_set)</a> +<a class="sourceLine" id="cb7-6" data-line-number="6"><span class="co">#> $small</span></a> +<a class="sourceLine" id="cb7-7" data-line-number="7"><span class="co">#> p Formula k Formula AICc <U+0394>AICc</span></a> +<a class="sourceLine" id="cb7-8" data-line-number="8"><span class="co">#> 2 p ~ 1 k ~ 1 202.17 0.00</span></a> +<a class="sourceLine" id="cb7-9" data-line-number="9"><span class="co">#> 1 p ~ Season k ~ 1 206.48 4.31</span></a> +<a class="sourceLine" id="cb7-10" data-line-number="10"><span class="co">#> </span></a> +<a class="sourceLine" id="cb7-11" data-line-number="11"><span class="co">#> $med</span></a> +<a class="sourceLine" id="cb7-12" data-line-number="12"><span class="co">#> p Formula k Formula AICc <U+0394>AICc</span></a> +<a class="sourceLine" id="cb7-13" data-line-number="13"><span class="co">#> 2 p ~ 1 k ~ 1 178.62 0.00</span></a> +<a class="sourceLine" id="cb7-14" data-line-number="14"><span class="co">#> 1 p ~ Season k ~ 1 182.40 3.78</span></a> +<a class="sourceLine" id="cb7-15" data-line-number="15"><span class="co">#> </span></a> +<a class="sourceLine" id="cb7-16" data-line-number="16"><span class="co">#> $lrg</span></a> +<a class="sourceLine" id="cb7-17" data-line-number="17"><span class="co">#> p Formula k Formula AICc <U+0394>AICc</span></a> +<a class="sourceLine" id="cb7-18" data-line-number="18"><span class="co">#> 1 p ~ Season k ~ 1 95.65 0.00</span></a> +<a class="sourceLine" id="cb7-19" data-line-number="19"><span class="co">#> 2 p ~ 1 k ~ 1 96.47 0.82</span></a> +<a class="sourceLine" id="cb7-20" data-line-number="20">SE_models <-<span class="st"> </span><span class="kw">list</span>()</a></code></pre></div> +<p>Size small:</p> +<div class="sourceCode" id="cb8"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb8-1" data-line-number="1">SE_models<span class="op">$</span>small <-<span class="st"> </span>SE_size_model_set<span class="op">$</span>small[[<span class="dv">2</span>]]</a></code></pre></div> <p>Size Medium:</p> -<pre class="sourceCode r" id="cb8"><code class="sourceCode r"><a class="sourceLine" id="cb8-1" data-line-number="1"><span class="kw">pkmSetAICcTab</span>(SE_size_model_set<span class="op">$</span>med)</a> -<a class="sourceLine" id="cb8-2" data-line-number="2"><span class="co">#> p Formula k Formula AICc Delta AICc</span></a> -<a class="sourceLine" id="cb8-3" data-line-number="3"><span class="co">#> 2 p ~ 1 k ~ 1 178.62 0.00</span></a> -<a class="sourceLine" id="cb8-4" data-line-number="4"><span class="co">#> 1 p ~ Season k ~ 1 182.40 3.78</span></a> -<a class="sourceLine" id="cb8-5" data-line-number="5">SE_models<span class="op">$</span>med <-<span class="st"> </span>SE_size_model_set<span class="op">$</span>med[[<span class="dv">2</span>]]</a></code></pre> +<div class="sourceCode" id="cb9"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb9-1" data-line-number="1">SE_models<span class="op">$</span>med <-<span class="st"> </span>SE_size_model_set<span class="op">$</span>med[[<span class="dv">2</span>]]</a></code></pre></div> <p>Size Large:</p> -<pre class="sourceCode r" id="cb9"><code class="sourceCode r"><a class="sourceLine" id="cb9-1" data-line-number="1"><span class="kw">pkmSetAICcTab</span>(SE_size_model_set<span class="op">$</span>lrg)</a> -<a class="sourceLine" id="cb9-2" data-line-number="2"><span class="co">#> p Formula k Formula AICc Delta AICc</span></a> -<a class="sourceLine" id="cb9-3" data-line-number="3"><span class="co">#> 1 p ~ Season k ~ 1 95.65 0.00</span></a> -<a class="sourceLine" id="cb9-4" data-line-number="4"><span class="co">#> 2 p ~ 1 k ~ 1 96.47 0.82</span></a> -<a class="sourceLine" id="cb9-5" data-line-number="5">SE_models<span class="op">$</span>lrg <-<span class="st"> </span>SE_size_model_set<span class="op">$</span>lrg[[<span class="dv">1</span>]]</a></code></pre> +<div class="sourceCode" id="cb10"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb10-1" data-line-number="1">SE_models<span class="op">$</span>lrg <-<span class="st"> </span>SE_size_model_set<span class="op">$</span>lrg[[<span class="dv">1</span>]]</a></code></pre></div> </div> <div id="part-2-carcass-persistence-modeling" class="section level3"> <h3>Part 2: Carcass Persistence Modeling</h3> -<p>A carcass persistence model estimates the amount of time a carcass would persist for, given the conditions under which it arrived. A number of carcasses have been placed in the field and periodically checked for scavanging. Results of the CP field trials used in this example are stored in the <code>CP_data</code> data frame:</p> -<pre class="sourceCode r" id="cb10"><code class="sourceCode r"><a class="sourceLine" id="cb10-1" data-line-number="1">CP_data <-<span class="st"> </span>solar_PV<span class="op">$</span>CP</a> -<a class="sourceLine" id="cb10-2" data-line-number="2"><span class="kw">head</span>(CP_data, <span class="dv">3</span>)</a> -<a class="sourceLine" id="cb10-3" data-line-number="3"><span class="co">#> Index Season Size Left Right</span></a> -<a class="sourceLine" id="cb10-4" data-line-number="4"><span class="co">#> 1 1 winter small 0 1</span></a> -<a class="sourceLine" id="cb10-5" data-line-number="5"><span class="co">#> 2 2 winter small 21 28</span></a> -<a class="sourceLine" id="cb10-6" data-line-number="6"><span class="co">#> 3 3 winter small 4 7</span></a></code></pre> -<p>Left and Right represent the left (start) and right (end) endpoints of the interval over which a carcass went missing. For further information about CP trials and how to format results for use with GenEst, see User Manual Appendix A2 and B2.</p> -<p>Four classes of parameteric models may be used for carcass persistance: Exponential, Weibull, Logistic, and LogNormal. As with Searcher Efficiency we can fit one specific model, test a set of covariates and choose our favorite single model, or fit seperate models dependent on size class. First we will fit a single Weibull models for all birds. Weibull distributions have two parameters, location and scale. We will specify that the location depends on season by setting <code>l ~ season</code>, but scale only depends on the intercept using <code>s ~ 1</code>.</p> -<pre class="sourceCode r" id="cb11"><code class="sourceCode r"><a class="sourceLine" id="cb11-1" data-line-number="1">CP_model <-<span class="st"> </span><span class="kw">cpm</span>(l <span class="op">~</span><span class="st"> </span>Season, s <span class="op">~</span><span class="st"> </span><span class="dv">1</span>, <span class="dt">data =</span> CP_data, </a> -<a class="sourceLine" id="cb11-2" data-line-number="2"> <span class="dt">left =</span> <span class="st">"Left"</span>, </a> -<a class="sourceLine" id="cb11-3" data-line-number="3"> <span class="dt">right =</span> <span class="st">"Right"</span>,</a> -<a class="sourceLine" id="cb11-4" data-line-number="4"> <span class="dt">dist =</span> <span class="st">"weibull"</span>)</a></code></pre> -<p>Next, we try a CP model set considering whether the Season covaritate for location is necessary, by comparing the <code>l ~ season, s ~ 1</code> to <code>l ~ 1, s ~ 1</code>.</p> -<pre class="sourceCode r" id="cb12"><code class="sourceCode r"><a class="sourceLine" id="cb12-1" data-line-number="1"> CP_weibull_set <-<span class="st"> </span><span class="kw">cpmSet</span>(l <span class="op">~</span><span class="st"> </span>Season, s <span class="op">~</span><span class="st"> </span><span class="dv">1</span>, <span class="dt">data =</span> CP_data, </a> -<a class="sourceLine" id="cb12-2" data-line-number="2"> <span class="dt">left =</span> <span class="st">"Left"</span>, </a> -<a class="sourceLine" id="cb12-3" data-line-number="3"> <span class="dt">right =</span> <span class="st">"Right"</span>,</a> -<a class="sourceLine" id="cb12-4" data-line-number="4"> <span class="dt">dist =</span> <span class="st">"weibull"</span>)</a> -<a class="sourceLine" id="cb12-5" data-line-number="5"><span class="kw">class</span>(CP_weibull_set)</a> -<a class="sourceLine" id="cb12-6" data-line-number="6"><span class="co">#> [1] "cpmSet" "list"</span></a> -<a class="sourceLine" id="cb12-7" data-line-number="7"><span class="kw">length</span>(CP_weibull_set)</a> -<a class="sourceLine" id="cb12-8" data-line-number="8"><span class="co">#> [1] 2</span></a> -<a class="sourceLine" id="cb12-9" data-line-number="9"><span class="kw">names</span>(CP_weibull_set)</a> -<a class="sourceLine" id="cb12-10" data-line-number="10"><span class="co">#> [1] "dist: weibull; l ~ Season; s ~ 1" "dist: weibull; l ~ 1; s ~ 1"</span></a></code></pre> -<pre class="sourceCode r" id="cb13"><code class="sourceCode r"><a class="sourceLine" id="cb13-1" data-line-number="1"> <span class="kw">cpmSetAICcTab</span>(CP_weibull_set)</a> -<a class="sourceLine" id="cb13-2" data-line-number="2"><span class="co">#> Distribution Location Formula Scale Formula AICc Delta AICc</span></a> -<a class="sourceLine" id="cb13-3" data-line-number="3"><span class="co">#> 2 weibull l ~ 1 s ~ 1 1046.82 0.00</span></a> -<a class="sourceLine" id="cb13-4" data-line-number="4"><span class="co">#> 1 weibull l ~ Season s ~ 1 1051.77 4.95</span></a></code></pre> -<p>Finally we will construct sets of CP models for each size class, however this time we will also consider models based on both exponential and weibull distributions. To compare models for multiple distributions, set <code>dists</code> to a vector of the distribution names to be considered. cpmSetSize returns a list of cpmSet objects, one for each size class.</p> -<pre class="sourceCode r" id="cb14"><code class="sourceCode r"><a class="sourceLine" id="cb14-1" data-line-number="1">CP_size_model_set <-<span class="st"> </span><span class="kw">cpmSetSize</span>(<span class="dt">formula_l =</span> l <span class="op">~</span><span class="st"> </span>Season, </a> +<p>A carcass persistence model estimates the amount of time a carcass would persist for, given the conditions under which it arrived. A number of carcasses have been placed in the field and periodically checked for scavanging. Results of the CP field trials used in this example are stored in the <code>data_CP</code> data frame:</p> +<div class="sourceCode" id="cb11"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb11-1" data-line-number="1">data_CP <-<span class="st"> </span>solar_PV<span class="op">$</span>CP</a> +<a class="sourceLine" id="cb11-2" data-line-number="2"><span class="kw">head</span>(data_CP)</a> +<a class="sourceLine" id="cb11-3" data-line-number="3"><span class="co">#> cpID Season Size LastPresent FirstAbsent</span></a> +<a class="sourceLine" id="cb11-4" data-line-number="4"><span class="co">#> 1 cp1 winter small 0.00 1.05</span></a> +<a class="sourceLine" id="cb11-5" data-line-number="5"><span class="co">#> 2 cp2 winter small 21.02 27.97</span></a> +<a class="sourceLine" id="cb11-6" data-line-number="6"><span class="co">#> 3 cp3 winter small 4.03 7.01</span></a> +<a class="sourceLine" id="cb11-7" data-line-number="7"><span class="co">#> 4 cp4 winter small 0.00 0.97</span></a> +<a class="sourceLine" id="cb11-8" data-line-number="8"><span class="co">#> 5 cp5 winter small 27.99 NA</span></a> +<a class="sourceLine" id="cb11-9" data-line-number="9"><span class="co">#> 6 cp6 winter small 10.02 13.99</span></a></code></pre></div> +<p> and represent the left (start) and right (end) endpoints of the interval over which a carcass went missing. For further information about CP trials and how to format results for use with GenEst, see the User Guide (link found on help menu of the GUI, which can be accessed by entering <code>runGenEst()</code> from the R console).</p> +<p>Four classes of parameteric models may be used for carcass persistance: exponential, Weibull, logistic, and lognormal. As with Searcher Efficiency we can fit one specific model, test a set of covariates and choose our favorite single model, or fit seperate models dependent on size class. First we will fit a single Weibull models for all birds. Weibull distributions have two parameters, location and scale. We will specify that the location depends on season by setting <code>l ~ season</code>, but scale only depends on the intercept using <code>s ~ 1</code>.</p> +<div class="sourceCode" id="cb12"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb12-1" data-line-number="1"><span class="kw">cpm</span>(l <span class="op">~</span><span class="st"> </span>Season, s <span class="op">~</span><span class="st"> </span><span class="dv">1</span>, <span class="dt">data =</span> data_CP,</a> +<a class="sourceLine" id="cb12-2" data-line-number="2"> <span class="dt">left =</span> <span class="st">"LastPresent"</span>,</a> +<a class="sourceLine" id="cb12-3" data-line-number="3"> <span class="dt">right =</span> <span class="st">"FirstAbsent"</span>,</a> +<a class="sourceLine" id="cb12-4" data-line-number="4"> <span class="dt">dist =</span> <span class="st">"weibull"</span>)</a> +<a class="sourceLine" id="cb12-5" data-line-number="5"><span class="co">#> $call</span></a> +<a class="sourceLine" id="cb12-6" data-line-number="6"><span class="co">#> cpm0(formula_l = formula_l, formula_s = formula_s, data = data, </span></a> +<a class="sourceLine" id="cb12-7" data-line-number="7"><span class="co">#> left = left, right = right, dist = dist, CL = CL, quiet = quiet)</span></a> +<a class="sourceLine" id="cb12-8" data-line-number="8"><span class="co">#> </span></a> +<a class="sourceLine" id="cb12-9" data-line-number="9"><span class="co">#> $formula_l</span></a> +<a class="sourceLine" id="cb12-10" data-line-number="10"><span class="co">#> l ~ Season</span></a> +<a class="sourceLine" id="cb12-11" data-line-number="11"><span class="co">#> </span></a> +<a class="sourceLine" id="cb12-12" data-line-number="12"><span class="co">#> $formula_s</span></a> +<a class="sourceLine" id="cb12-13" data-line-number="13"><span class="co">#> s ~ 1</span></a> +<a class="sourceLine" id="cb12-14" data-line-number="14"><span class="co">#> </span></a> +<a class="sourceLine" id="cb12-15" data-line-number="15"><span class="co">#> $distribution</span></a> +<a class="sourceLine" id="cb12-16" data-line-number="16"><span class="co">#> [1] "weibull"</span></a> +<a class="sourceLine" id="cb12-17" data-line-number="17"><span class="co">#> </span></a> +<a class="sourceLine" id="cb12-18" data-line-number="18"><span class="co">#> $predictors</span></a> +<a class="sourceLine" id="cb12-19" data-line-number="19"><span class="co">#> [1] "Season"</span></a> +<a class="sourceLine" id="cb12-20" data-line-number="20"><span class="co">#> </span></a> +<a class="sourceLine" id="cb12-21" data-line-number="21"><span class="co">#> $AICc</span></a> +<a class="sourceLine" id="cb12-22" data-line-number="22"><span class="co">#> [1] 1051.61</span></a> +<a class="sourceLine" id="cb12-23" data-line-number="23"><span class="co">#> </span></a> +<a class="sourceLine" id="cb12-24" data-line-number="24"><span class="co">#> $convergence</span></a> +<a class="sourceLine" id="cb12-25" data-line-number="25"><span class="co">#> [1] 0</span></a> +<a class="sourceLine" id="cb12-26" data-line-number="26"><span class="co">#> </span></a> +<a class="sourceLine" id="cb12-27" data-line-number="27"><span class="co">#> $cell_ls</span></a> +<a class="sourceLine" id="cb12-28" data-line-number="28"><span class="co">#> cell n l_median l_lower l_upper s_median s_lower s_upper</span></a> +<a class="sourceLine" id="cb12-29" data-line-number="29"><span class="co">#> 1 fall 60 2.473 2.087 2.859 1.637 1.457 1.838</span></a> +<a class="sourceLine" id="cb12-30" data-line-number="30"><span class="co">#> 2 spring 60 2.801 2.395 3.208 1.637 1.457 1.838</span></a> +<a class="sourceLine" id="cb12-31" data-line-number="31"><span class="co">#> 3 summer 60 2.689 2.296 3.083 1.637 1.457 1.838</span></a> +<a class="sourceLine" id="cb12-32" data-line-number="32"><span class="co">#> 4 winter 60 2.509 2.127 2.891 1.637 1.457 1.838</span></a> +<a class="sourceLine" id="cb12-33" data-line-number="33"><span class="co">#> </span></a> +<a class="sourceLine" id="cb12-34" data-line-number="34"><span class="co">#> $cell_ab</span></a> +<a class="sourceLine" id="cb12-35" data-line-number="35"><span class="co">#> cell n pda_median pda_lower pda_upper pdb_median pdb_lower pdb_upper</span></a> +<a class="sourceLine" id="cb12-36" data-line-number="36"><span class="co">#> 1 fall 60 0.611 0.686 0.544 11.858 8.061 17.444</span></a> +<a class="sourceLine" id="cb12-37" data-line-number="37"><span class="co">#> 2 spring 60 0.611 0.686 0.544 16.461 10.968 24.730</span></a> +<a class="sourceLine" id="cb12-38" data-line-number="38"><span class="co">#> 3 summer 60 0.611 0.686 0.544 14.717 9.934 21.824</span></a> +<a class="sourceLine" id="cb12-39" data-line-number="39"><span class="co">#> 4 winter 60 0.611 0.686 0.544 12.293 8.390 18.011</span></a> +<a class="sourceLine" id="cb12-40" data-line-number="40"><span class="co">#> </span></a> +<a class="sourceLine" id="cb12-41" data-line-number="41"><span class="co">#> $CL</span></a> +<a class="sourceLine" id="cb12-42" data-line-number="42"><span class="co">#> [1] 0.9</span></a> +<a class="sourceLine" id="cb12-43" data-line-number="43"><span class="co">#> </span></a> +<a class="sourceLine" id="cb12-44" data-line-number="44"><span class="co">#> $cell_desc</span></a> +<a class="sourceLine" id="cb12-45" data-line-number="45"><span class="co">#> cell medianCP r1 r3 r7 r14 r28</span></a> +<a class="sourceLine" id="cb12-46" data-line-number="46"><span class="co">#> 1 fall 6.508736 0.8733664 0.7695707 0.6489244 0.5240883 0.3856577</span></a> +<a class="sourceLine" id="cb12-47" data-line-number="47"><span class="co">#> 2 spring 9.035276 0.8948948 0.8063180 0.7000989 0.5856841 0.4518313</span></a> +<a class="sourceLine" id="cb12-48" data-line-number="48"><span class="co">#> 3 summer 8.078012 0.8879564 0.7943671 0.6832539 0.5651042 0.4292548</span></a> +<a class="sourceLine" id="cb12-49" data-line-number="49"><span class="co">#> 4 winter 6.747503 0.8759150 0.7738696 0.6548159 0.5310385 0.3929133</span></a></code></pre></div> +<p>Next, we try a CP model set considering whether the <code>season</code> covariate for location is necessary, by comparing the <code>l ~ season, s ~ 1</code> to <code>l ~ 1, s ~ 1</code>.</p> +<div class="sourceCode" id="cb13"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb13-1" data-line-number="1"> CP_weibull_set <-<span class="st"> </span><span class="kw">cpm</span>(l <span class="op">~</span><span class="st"> </span>Season, s <span class="op">~</span><span class="st"> </span><span class="dv">1</span>, <span class="dt">data =</span> data_CP,</a> +<a class="sourceLine" id="cb13-2" data-line-number="2"> <span class="dt">left =</span> <span class="st">"LastPresent"</span>,</a> +<a class="sourceLine" id="cb13-3" data-line-number="3"> <span class="dt">right =</span> <span class="st">"FirstAbsent"</span>,</a> +<a class="sourceLine" id="cb13-4" data-line-number="4"> <span class="dt">dist =</span> <span class="st">"weibull"</span>, <span class="dt">allCombos =</span> <span class="ot">TRUE</span>)</a> +<a class="sourceLine" id="cb13-5" data-line-number="5"><span class="kw">class</span>(CP_weibull_set)</a> +<a class="sourceLine" id="cb13-6" data-line-number="6"><span class="co">#> [1] "cpmSet" "list"</span></a> +<a class="sourceLine" id="cb13-7" data-line-number="7"><span class="kw">aicc</span>(CP_weibull_set)</a> +<a class="sourceLine" id="cb13-8" data-line-number="8"><span class="co">#> Distribution Location Formula Scale Formula AICc <U+0394>AICc</span></a> +<a class="sourceLine" id="cb13-9" data-line-number="9"><span class="co">#> 2 weibull l ~ 1 s ~ 1 1046.65 0.00</span></a> +<a class="sourceLine" id="cb13-10" data-line-number="10"><span class="co">#> 1 weibull l ~ Season s ~ 1 1051.61 4.96</span></a></code></pre></div> +<p>Finally we will construct sets of CP models for each size class, however this time we will also consider models based on both exponential and weibull distributions. To compare models for multiple distributions, set <code>dist</code> to a vector of the distribution names to be considered. With a <code>sizeCol</code> provided and <code>allCombos = TRUE</code>, <code>cpm</code> returns a list of <code>cpmSet</code> objects, one for each size class.</p> +<div class="sourceCode" id="cb14"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb14-1" data-line-number="1">CP_size_model_set <-<span class="st"> </span><span class="kw">cpm</span>(<span class="dt">formula_l =</span> l <span class="op">~</span><span class="st"> </span>Season,</a> <a class="sourceLine" id="cb14-2" data-line-number="2"> <span class="dt">formula_s =</span> s <span class="op">~</span><span class="st"> </span><span class="dv">1</span>, </a> -<a class="sourceLine" id="cb14-3" data-line-number="3"> <span class="dt">left =</span> <span class="st">"Left"</span>,</a> -<a class="sourceLine" id="cb14-4" data-line-number="4"> <span class="dt">right =</span> <span class="st">"Right"</span>,</a> -<a class="sourceLine" id="cb14-5" data-line-number="5"> <span class="dt">dists =</span> <span class="kw">c</span>(<span class="st">"exponential"</span>, <span class="st">"weibull"</span>),</a> -<a class="sourceLine" id="cb14-6" data-line-number="6"> <span class="dt">sizeclassCol =</span> <span class="st">"Size"</span>, </a> -<a class="sourceLine" id="cb14-7" data-line-number="7"> <span class="dt">data =</span> CP_data)</a> +<a class="sourceLine" id="cb14-3" data-line-number="3"> <span class="dt">left =</span> <span class="st">"LastPresent"</span>,</a> +<a class="sourceLine" id="cb14-4" data-line-number="4"> <span class="dt">right =</span> <span class="st">"FirstAbsent"</span>,</a> +<a class="sourceLine" id="cb14-5" data-line-number="5"> <span class="dt">dist =</span> <span class="kw">c</span>(<span class="st">"exponential"</span>, <span class="st">"weibull"</span>),</a> +<a class="sourceLine" id="cb14-6" data-line-number="6"> <span class="dt">sizeCol =</span> <span class="st">"Size"</span>,</a> +<a class="sourceLine" id="cb14-7" data-line-number="7"> <span class="dt">data =</span> data_CP, <span class="dt">allCombos =</span> <span class="ot">TRUE</span>)</a> <a class="sourceLine" id="cb14-8" data-line-number="8"><span class="kw">class</span>(CP_size_model_set)</a> <a class="sourceLine" id="cb14-9" data-line-number="9"><span class="co">#> [1] "cpmSetSize" "list"</span></a> -<a class="sourceLine" id="cb14-10" data-line-number="10"><span class="kw">length</span>(CP_size_model_set)</a> -<a class="sourceLine" id="cb14-11" data-line-number="11"><span class="co">#> [1] 3</span></a> -<a class="sourceLine" id="cb14-12" data-line-number="12"><span class="kw">names</span>(CP_size_model_set)</a> -<a class="sourceLine" id="cb14-13" data-line-number="13"><span class="co">#> [1] "small" "med" "lrg"</span></a> -<a class="sourceLine" id="cb14-14" data-line-number="14"><span class="kw">class</span>(CP_size_model_set<span class="op">$</span>small)</a> -<a class="sourceLine" id="cb14-15" data-line-number="15"><span class="co">#> [1] "cpmSet" "list"</span></a> -<a class="sourceLine" id="cb14-16" data-line-number="16"><span class="kw">length</span>(CP_size_model_set<span class="op">$</span>small)</a> -<a class="sourceLine" id="cb14-17" data-line-number="17"><span class="co">#> [1] 4</span></a> -<a class="sourceLine" id="cb14-18" data-line-number="18"><span class="kw">names</span>(CP_size_model_set<span class="op">$</span>small)</a> -<a class="sourceLine" id="cb14-19" data-line-number="19"><span class="co">#> [1] "dist: exponential; l ~ Season; NULL"</span></a> -<a class="sourceLine" id="cb14-20" data-line-number="20"><span class="co">#> [2] "dist: exponential; l ~ 1; NULL" </span></a> -<a class="sourceLine" id="cb14-21" data-line-number="21"><span class="co">#> [3] "dist: weibull; l ~ Season; s ~ 1" </span></a> -<a class="sourceLine" id="cb14-22" data-line-number="22"><span class="co">#> [4] "dist: weibull; l ~ 1; s ~ 1"</span></a></code></pre> +<a class="sourceLine" id="cb14-10" data-line-number="10"><span class="kw">names</span>(CP_size_model_set)</a> +<a class="sourceLine" id="cb14-11" data-line-number="11"><span class="co">#> [1] "small" "med" "lrg"</span></a> +<a class="sourceLine" id="cb14-12" data-line-number="12"><span class="kw">class</span>(CP_size_model_set<span class="op">$</span>small)</a> +<a class="sourceLine" id="cb14-13" data-line-number="13"><span class="co">#> [1] "cpmSet" "list"</span></a> +<a class="sourceLine" id="cb14-14" data-line-number="14"><span class="kw">length</span>(CP_size_model_set<span class="op">$</span>small)</a> +<a class="sourceLine" id="cb14-15" data-line-number="15"><span class="co">#> [1] 4</span></a> +<a class="sourceLine" id="cb14-16" data-line-number="16"><span class="kw">names</span>(CP_size_model_set<span class="op">$</span>small)</a> +<a class="sourceLine" id="cb14-17" data-line-number="17"><span class="co">#> [1] "dist: exponential; l ~ Season; NULL"</span></a> +<a class="sourceLine" id="cb14-18" data-line-number="18"><span class="co">#> [2] "dist: exponential; l ~ 1; NULL" </span></a> +<a class="sourceLine" id="cb14-19" data-line-number="19"><span class="co">#> [3] "dist: weibull; l ~ Season; s ~ 1" </span></a> +<a class="sourceLine" id="cb14-20" data-line-number="20"><span class="co">#> [4] "dist: weibull; l ~ 1; s ~ 1"</span></a></code></pre></div> <p>We now have the flexibility to select models from different families for different size classes. We will choose to use the models with lower AICc, which requires storing the corresponding <code>cpm</code> objects in a list for later use.</p> -<p>Size Small:</p> -<pre class="sourceCode r" id="cb15"><code class="sourceCode r"><a class="sourceLine" id="cb15-1" data-line-number="1"><span class="kw">cpmSetAICcTab</span>(CP_size_model_set<span class="op">$</span>small)</a> -<a class="sourceLine" id="cb15-2" data-line-number="2"><span class="co">#> Distribution Location Formula Scale Formula AICc Delta AICc</span></a> -<a class="sourceLine" id="cb15-3" data-line-number="3"><span class="co">#> 4 weibull l ~ 1 s ~ 1 346.32 0.00</span></a> -<a class="sourceLine" id="cb15-4" data-line-number="4"><span class="co">#> 3 weibull l ~ Season s ~ 1 349.16 2.84</span></a> -<a class="sourceLine" id="cb15-5" data-line-number="5"><span class="co">#> 1 exponential l ~ Season NULL 380.92 34.60</span></a> -<a class="sourceLine" id="cb15-6" data-line-number="6"><span class="co">#> 2 exponential l ~ 1 NULL 382.44 36.12</span></a> -<a class="sourceLine" id="cb15-7" data-line-number="7">CP_models <-<span class="st"> </span><span class="kw">list</span>(<span class="dt">small =</span> CP_size_model_set<span class="op">$</span>med[[<span class="dv">3</span>]])</a></code></pre> -<p>Size Medium:</p> -<pre class="sourceCode r" id="cb16"><code class="sourceCode r"><a class="sourceLine" id="cb16-1" data-line-number="1"><span class="kw">cpmSetAICcTab</span>(CP_size_model_set<span class="op">$</span>med)</a> -<a class="sourceLine" id="cb16-2" data-line-number="2"><span class="co">#> Distribution Location Formula Scale Formula AICc Delta AICc</span></a> -<a class="sourceLine" id="cb16-3" data-line-number="3"><span class="co">#> 4 weibull l ~ 1 s ~ 1 352.34 0.00</span></a> -<a class="sourceLine" id="cb16-4" data-line-number="4"><span class="co">#> 3 weibull l ~ Season s ~ 1 356.37 4.03</span></a> -<a class="sourceLine" id="cb16-5" data-line-number="5"><span class="co">#> 2 exponential l ~ 1 NULL 358.18 5.84</span></a> -<a class="sourceLine" id="cb16-6" data-line-number="6"><span class="co">#> 1 exponential l ~ Season NULL 361.38 9.04</span></a> -<a class="sourceLine" id="cb16-7" data-line-number="7">CP_models<span class="op">$</span>med <-<span class="st"> </span>CP_size_model_set<span class="op">$</span>med[[<span class="dv">4</span>]]</a></code></pre> -<p>Size Large:</p> -<pre class="sourceCode r" id="cb17"><code class="sourceCode r"><a class="sourceLine" id="cb17-1" data-line-number="1"><span class="kw">cpmSetAICcTab</span>(CP_size_model_set<span class="op">$</span>lrg)</a> -<a class="sourceLine" id="cb17-2" data-line-number="2"><span class="co">#> Distribution Location Formula Scale Formula AICc Delta AICc</span></a> -<a class="sourceLine" id="cb17-3" data-line-number="3"><span class="co">#> 2 exponential l ~ 1 NULL 294.46 0.00</span></a> -<a class="sourceLine" id="cb17-4" data-line-number="4"><span class="co">#> 4 weibull l ~ 1 s ~ 1 295.49 1.03</span></a> -<a class="sourceLine" id="cb17-5" data-line-number="5"><span class="co">#> 1 exponential l ~ Season NULL 299.48 5.02</span></a> -<a class="sourceLine" id="cb17-6" data-line-number="6"><span class="co">#> 3 weibull l ~ Season s ~ 1 300.75 6.29</span></a> -<a class="sourceLine" id="cb17-7" data-line-number="7">CP_models<span class="op">$</span>lrg <-<span class="st"> </span>CP_size_model_set<span class="op">$</span>lrg[[<span class="dv">2</span>]]</a></code></pre> +<div class="sourceCode" id="cb15"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb15-1" data-line-number="1"><span class="kw">aicc</span>(CP_size_model_set)</a> +<a class="sourceLine" id="cb15-2" data-line-number="2"><span class="co">#> $small</span></a> +<a class="sourceLine" id="cb15-3" data-line-number="3"><span class="co">#> Distribution Location Formula Scale Formula AICc <U+0394>AICc</span></a> +<a class="sourceLine" id="cb15-4" data-line-number="4"><span class="co">#> 4 weibull l ~ 1 s ~ 1 346.02 0.00</span></a> +<a class="sourceLine" id="cb15-5" data-line-number="5"><span class="co">#> 3 weibull l ~ Season s ~ 1 348.88 2.86</span></a> +<a class="sourceLine" id="cb15-6" data-line-number="6"><span class="co">#> 1 exponential l ~ Season NULL 380.56 34.54</span></a> +<a class="sourceLine" id="cb15-7" data-line-number="7"><span class="co">#> 2 exponential l ~ 1 NULL 382.04 36.02</span></a> +<a class="sourceLine" id="cb15-8" data-line-number="8"><span class="co">#> </span></a> +<a class="sourceLine" id="cb15-9" data-line-number="9"><span class="co">#> $med</span></a> +<a class="sourceLine" id="cb15-10" data-line-number="10"><span class="co">#> Distribution Location Formula Scale Formula AICc <U+0394>AICc</span></a> +<a class="sourceLine" id="cb15-11" data-line-number="11"><span class="co">#> 4 weibull l ~ 1 s ~ 1 352.44 0.00</span></a> +<a class="sourceLine" id="cb15-12" data-line-number="12"><span class="co">#> 3 weibull l ~ Season s ~ 1 356.47 4.03</span></a> +<a class="sourceLine" id="cb15-13" data-line-number="13"><span class="co">#> 2 exponential l ~ 1 NULL 358.25 5.81</span></a> +<a class="sourceLine" id="cb15-14" data-line-number="14"><span class="co">#> 1 exponential l ~ Season NULL 361.45 9.01</span></a> +<a class="sourceLine" id="cb15-15" data-line-number="15"><span class="co">#> </span></a> +<a class="sourceLine" id="cb15-16" data-line-number="16"><span class="co">#> $lrg</span></a> +<a class="sourceLine" id="cb15-17" data-line-number="17"><span class="co">#> Distribution Location Formula Scale Formula AICc <U+0394>AICc</span></a> +<a class="sourceLine" id="cb15-18" data-line-number="18"><span class="co">#> 2 exponential l ~ 1 NULL 294.59 0.00</span></a> +<a class="sourceLine" id="cb15-19" data-line-number="19"><span class="co">#> 4 weibull l ~ 1 s ~ 1 295.60 1.01</span></a> +<a class="sourceLine" id="cb15-20" data-line-number="20"><span class="co">#> 1 exponential l ~ Season NULL 299.61 5.02</span></a> +<a class="sourceLine" id="cb15-21" data-line-number="21"><span class="co">#> 3 weibull l ~ Season s ~ 1 300.86 6.27</span></a> +<a class="sourceLine" id="cb15-22" data-line-number="22">CP_models <-<span class="st"> </span><span class="kw">list</span>()</a></code></pre></div> +<p>Size small:</p> +<div class="sourceCode" id="cb16"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb16-1" data-line-number="1">CP_models<span class="op">$</span>small <-<span class="st"> </span>CP_size_model_set<span class="op">$</span>small[[<span class="dv">4</span>]]</a></code></pre></div> +<p>Size med:</p> +<div class="sourceCode" id="cb17"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb17-1" data-line-number="1">CP_models<span class="op">$</span>med <-<span class="st"> </span>CP_size_model_set<span class="op">$</span>med[[<span class="dv">4</span>]]</a></code></pre></div> +<p>Size lrg:</p> +<div class="sourceCode" id="cb18"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb18-1" data-line-number="1">CP_models<span class="op">$</span>lrg <-<span class="st"> </span>CP_size_model_set<span class="op">$</span>lrg[[<span class="dv">2</span>]]</a></code></pre></div> </div> <div id="part-3-mortality-estimation" class="section level3"> <h3>Part 3: Mortality Estimation</h3> -<p>Estimating mortality requires bringing together models, carcass observation data (CO), and information on how the data was gathered. In particular the search schedule (SS) and proportion of carcasses in searchable areas (the density weighted proportion, or DWP), are needed. We will breifly inspect the files. Further information on the formatting of the CO, SS, and DWP files can be found in Appendix A.</p> +<p>Estimating mortality requires bringing together models, carcass observation data (CO), and information on how the data was gathered. In particular the search schedule (SS) and proportion of carcasses in searchable areas (the density weighted proportion, or DWP), are needed. We will breifly inspect the files. Further information on the formatting of the CO, SS, and DWP files can be found in the User Guide.</p> <p>Carcass observations:</p> -<pre class="sourceCode r" id="cb18"><code class="sourceCode r"><a class="sourceLine" id="cb18-1" data-line-number="1">CO_data <-<span class="st"> </span>solar_PV<span class="op">$</span>CO</a> -<a class="sourceLine" id="cb18-2" data-line-number="2"><span class="kw">head</span>(CO_data, <span class="dv">3</span>)</a> -<a class="sourceLine" id="cb18-3" data-line-number="3"><span class="co">#> Index Unit Species Size Row Distance DateFound X Y</span></a> -<a class="sourceLine" id="cb18-4" data-line-number="4"><span class="co">#> 1 1 Unit82 SA small 28 13 2018-01-26 524641 3857110</span></a> -<a class="sourceLine" id="cb18-5" data-line-number="5"><span class="co">#> 2 2 Unit147 SA small 30 23 2018-01-13 525440 3857592</span></a> -<a class="sourceLine" id="cb18-6" data-line-number="6"><span class="co">#> 3 3 Unit235 SA small 11 44 2018-03-18 526724 3858148</span></a></code></pre> +<div class="sourceCode" id="cb19"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb19-1" data-line-number="1">data_CO <-<span class="st"> </span>solar_PV<span class="op">$</span>CO</a> +<a class="sourceLine" id="cb19-2" data-line-number="2"><span class="kw">head</span>(data_CO)</a> +<a class="sourceLine" id="cb19-3" data-line-number="3"><span class="co">#> carcID Unit Species Size Row Distance DateFound X Y</span></a> +<a class="sourceLine" id="cb19-4" data-line-number="4"><span class="co">#> 1 x1 Unit82 SA small 28 13 2018-01-26 524641 3857110</span></a> +<a class="sourceLine" id="cb19-5" data-line-number="5"><span class="co">#> 2 x2 Unit147 SA small 30 23 2018-01-13 525440 3857592</span></a> +<a class="sourceLine" id="cb19-6" data-line-number="6"><span class="co">#> 3 x3 Unit235 SA small 11 44 2018-03-18 526724 3858148</span></a> +<a class="sourceLine" id="cb19-7" data-line-number="7"><span class="co">#> 4 x4 Unit213 SA small 31 44 2018-02-04 526408 3858069</span></a> +<a class="sourceLine" id="cb19-8" data-line-number="8"><span class="co">#> 5 x5 Unit204 SA small 34 10 2018-04-29 524953 3858081</span></a> +<a class="sourceLine" id="cb19-9" data-line-number="9"><span class="co">#> 6 x6 Unit117 SA small 25 27 2018-04-06 527023 3857256</span></a></code></pre></div> <p>Search schedule:</p> -<pre class="sourceCode r" id="cb19"><code class="sourceCode r"><a class="sourceLine" id="cb19-1" data-line-number="1">SS_data <-<span class="st"> </span>solar_PV<span class="op">$</span>SS</a> -<a class="sourceLine" id="cb19-2" data-line-number="2">SS_data[<span class="dv">1</span><span class="op">:</span><span class="dv">3</span> , <span class="dv">1</span><span class="op">:</span><span class="dv">10</span>]</a> -<a class="sourceLine" id="cb19-3" data-line-number="3"><span class="co">#> DateSearched Season Unit1 Unit2 Unit3 Unit4 Unit5 Unit6 Unit7 Unit8</span></a> -<a class="sourceLine" id="cb19-4" data-line-number="4"><span class="co">#> 1 2017-12-20 winter 1 1 1 1 1 1 1 1</span></a> -<a class="sourceLine" id="cb19-5" data-line-number="5"><span class="co">#> 1.1 2017-12-21 winter 1 1 1 1 1 1 1 1</span></a> -<a class="sourceLine" id="cb19-6" data-line-number="6"><span class="co">#> 2 2017-12-22 winter 0 0 0 0 0 0 0 0</span></a></code></pre> -<p>(Note that there are 300 arrays columns altogether, Unit1, …, Unit300)</p> +<div class="sourceCode" id="cb20"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb20-1" data-line-number="1">data_SS <-<span class="st"> </span>solar_PV<span class="op">$</span>SS</a> +<a class="sourceLine" id="cb20-2" data-line-number="2">data_SS[<span class="dv">1</span><span class="op">:</span><span class="dv">5</span> , <span class="dv">1</span><span class="op">:</span><span class="dv">10</span>]</a> +<a class="sourceLine" id="cb20-3" data-line-number="3"><span class="co">#> DateSearched Season Unit1 Unit2 Unit3 Unit4 Unit5 Unit6 Unit7 Unit8</span></a> +<a class="sourceLine" id="cb20-4" data-line-number="4"><span class="co">#> 1 2017-12-20 winter 1 1 1 1 1 1 1 1</span></a> +<a class="sourceLine" id="cb20-5" data-line-number="5"><span class="co">#> 2 2017-12-21 winter 1 1 1 1 1 1 1 1</span></a> +<a class="sourceLine" id="cb20-6" data-line-number="6"><span class="co">#> 3 2017-12-22 winter 0 0 0 0 0 0 0 0</span></a> +<a class="sourceLine" id="cb20-7" data-line-number="7"><span class="co">#> 4 2017-12-23 winter 0 0 0 0 0 0 0 0</span></a> +<a class="sourceLine" id="cb20-8" data-line-number="8"><span class="co">#> 5 2017-12-24 winter 0 0 0 0 0 0 0 0</span></a></code></pre></div> +<p>(Note that there are 300 arrays columns altogether: Unit1, …, Unit300)</p> <p>Density weighted proportion:</p> -<pre class="sourceCode r" id="cb20"><code class="sourceCode r"><a class="sourceLine" id="cb20-1" data-line-number="1">DWP_data <-<span class="st"> </span>solar_PV<span class="op">$</span>DWP</a> -<a class="sourceLine" id="cb20-2" data-line-number="2"><span class="kw">head</span>(DWP_data, <span class="dv">3</span>)</a> -<a class="sourceLine" id="cb20-3" data-line-number="3"><span class="co">#> Unit small med lrg</span></a> -<a class="sourceLine" id="cb20-4" data-line-number="4"><span class="co">#> 1 Unit1 0.365 0.777 1</span></a> -<a class="sourceLine" id="cb20-5" data-line-number="5"><span class="co">#> 2 Unit2 0.365 0.777 1</span></a> -<a class="sourceLine" id="cb20-6" data-line-number="6"><span class="co">#> 3 Unit3 0.365 0.777 1</span></a> -<a class="sourceLine" id="cb20-7" data-line-number="7"><span class="kw">names</span>(DWP_data) <-<span class="st"> </span><span class="kw">c</span>(<span class="st">"Unit"</span>, <span class="st">"small"</span>, <span class="st">"med"</span>, <span class="st">"lrg"</span>)</a></code></pre> -<p>These elements combine in the function <code>estM</code>, producing an object containing simulated arrival, detection, and mortality distributions. We also have the opportunity to provide the fraction of the facility being surveyed, <code>frac</code>, if it happens to be less than 100%. Increasing the number of simulations, <code>nsim</code>, will improve the accuracy of the estimates.</p> +<div class="sourceCode" id="cb21"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb21-1" data-line-number="1">data_DWP <-<span class="st"> </span>solar_PV<span class="op">$</span>DWP</a> +<a class="sourceLine" id="cb21-2" data-line-number="2"><span class="kw">head</span>(data_DWP)</a> +<a class="sourceLine" id="cb21-3" data-line-number="3"><span class="co">#> Unit small med lrg</span></a> +<a class="sourceLine" id="cb21-4" data-line-number="4"><span class="co">#> 1 Unit1 1 1 1</span></a> +<a class="sourceLine" id="cb21-5" data-line-number="5"><span class="co">#> 2 Unit2 1 1 1</span></a> +<a class="sourceLine" id="cb21-6" data-line-number="6"><span class="co">#> 3 Unit3 1 1 1</span></a> +<a class="sourceLine" id="cb21-7" data-line-number="7"><span class="co">#> 4 Unit4 1 1 1</span></a> +<a class="sourceLine" id="cb21-8" data-line-number="8"><span class="co">#> 5 Unit5 1 1 1</span></a> +<a class="sourceLine" id="cb21-9" data-line-number="9"><span class="co">#> 6 Unit6 1 1 1</span></a></code></pre></div> +<p>These elements combine in the function <code>estM</code>, producing an object containing simulated arrival, detection, and mortality distributions. We also have the opportunity to provide the fraction of the facility being surveyed, <code>frac</code>, if it happens to be less than 100%. Increasing the number of simulations, <code>nsim</code>, will improve the accuracy of the estimates but comes at a cost of computer runtime.</p> <p>When estimating mortality, it is not currently possible to mix CP and SE models which differ in their dependence on size. Either both models depend on size class, or both models must be independent of size class. In this case we will choose here to use size dependence.</p> -<pre class="sourceCode r" id="cb21"><code class="sourceCode r"><a class="sourceLine" id="cb21-1" data-line-number="1"> Mest <-<span class="st"> </span><span class="kw">estM</span>(</a> -<a class="sourceLine" id="cb21-2" data-line-number="2"> <span class="dt">nsim =</span> <span class="dv">100</span>, <span class="dt">frac =</span> <span class="dv">1</span>, </a> -<a class="sourceLine" id="cb21-3" data-line-number="3"> <span class="dt">data_CO =</span> CO_data, <span class="dt">data_SS =</span> SS_data, <span class="dt">data_DWP =</span> DWP_data, </a> -<a class="sourceLine" id="cb21-4" data-line-number="4"> <span class="dt">model_SE =</span> SE_models, <span class="dt">model_CP =</span> CP_models,</a> -<a class="sourceLine" id="cb21-5" data-line-number="5"> <span class="dt">unitCol =</span> <span class="st">"Unit"</span>, <span class="dt">sizeclassCol =</span> <span class="st">"Size"</span>,</a> -<a class="sourceLine" id="cb21-6" data-line-number="6"> <span class="dt">dateFoundCol =</span> <span class="st">"DateFound"</span>, <span class="dt">datesSearchedCol =</span> <span class="st">"DateSearched"</span></a> -<a class="sourceLine" id="cb21-7" data-line-number="7"> )</a></code></pre> +<div class="sourceCode" id="cb22"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb22-1" data-line-number="1"> Mest <-<span class="st"> </span><span class="kw">estM</span>(</a> +<a class="sourceLine" id="cb22-2" data-line-number="2"> <span class="dt">nsim =</span> <span class="dv">100</span>, <span class="dt">frac =</span> <span class="dv">1</span>, </a> +<a class="sourceLine" id="cb22-3" data-line-number="3"> <span class="dt">data_CO =</span> data_CO, <span class="dt">data_SS =</span> data_SS, <span class="dt">data_DWP =</span> data_DWP,</a> +<a class="sourceLine" id="cb22-4" data-line-number="4"> <span class="dt">model_SE =</span> SE_models, <span class="dt">model_CP =</span> CP_models,</a> +<a class="sourceLine" id="cb22-5" data-line-number="5"> <span class="dt">unitCol =</span> <span class="st">"Unit"</span>, <span class="dt">sizeCol =</span> <span class="st">"Size"</span>,</a> +<a class="sourceLine" id="cb22-6" data-line-number="6"> <span class="dt">COdate =</span> <span class="st">"DateFound"</span>, <span class="dt">SSdate =</span> <span class="st">"DateSearched"</span></a> +<a class="sourceLine" id="cb22-7" data-line-number="7"> )</a></code></pre></div> <p>We are now able to get a confidence interval for estimated total mortality by taking summary of the estM object. Plotting it shows us us the estimated probability density for number of fatalities.</p> -<pre class="sourceCode r" id="cb22"><code class="sourceCode r"><a class="sourceLine" id="cb22-1" data-line-number="1"> <span class="kw">plot</span>(Mest)</a></code></pre> -<p><img src="data:image/png;base64,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" style="display: block; margin: auto;" /> A point estimate for overall sitewide mortality is listed at the top of the plot, satisfying our first objective. The period of inference only covers the period over which we have have fatality monitoring data, which in this case is from 2017-12-20 to 2018-12-19.</p> +<div class="sourceCode" id="cb23"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb23-1" data-line-number="1"><span class="kw">plot</span>(Mest)</a></code></pre></div> +<p><img src="data:image/png;base64,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" style="display: block; margin: auto;" /> A point estimate for overall sitewide mortality is listed at the top of the plot, satisfying our first objective. The period of inference only covers the period over which we have have fatality monitoring data, which in this case is from 2017-12-20 to 2018-12-19.</p> </div> <div id="part-4-summaries" class="section level3"> <h3>Part 4: Summaries</h3> @@ -482,91 +583,98 @@ code > span.fu { color: #900; font-weight: bold; } code > span.er { color: #a61 </ol> <p>To create summaries, we split the data by differnt covariates, using a function called <code>calcSplits</code>. This requires the simulated mortality <code>$Mhat</code> and arrival times <code>$Aj</code> stored in the <code>estM</code> object, plus the search schedule and carcass observation data.</p> <p>Splits to the search schedule (splits in time) are specified by assigning a covariate to <code>split_SS</code>. These must be variables present in the Search Schedule file. To investigate differences in mortality between season, we will set <code>split_SS</code> to <code>Season</code>.</p> -<pre class="sourceCode r" id="cb23"><code class="sourceCode r"><a class="sourceLine" id="cb23-1" data-line-number="1">SS_data[<span class="dv">1</span>, <span class="dv">2</span>] <-<span class="st"> "winter"</span></a> -<a class="sourceLine" id="cb23-2" data-line-number="2"></a> -<a class="sourceLine" id="cb23-3" data-line-number="3">M_season <-<span class="st"> </span><span class="kw">calcSplits</span>(</a> -<a class="sourceLine" id="cb23-4" data-line-number="4"> <span class="dt">M =</span> Mest<span class="op">$</span>Mhat, <span class="dt">Aj =</span> Mest<span class="op">$</span>Aj, </a> -<a class="sourceLine" id="cb23-5" data-line-number="5"> <span class="dt">split_SS =</span> <span class="st">"Season"</span>, <span class="dt">data_SS =</span> SS_data,</a> -<a class="sourceLine" id="cb23-6" data-line-number="6"> <span class="dt">split_CO =</span> <span class="ot">NULL</span>, <span class="dt">data_CO =</span> CO_data</a> -<a class="sourceLine" id="cb23-7" data-line-number="7">)</a></code></pre> -<p>Splitting the estM creates a splitFull object, a plot of which shows boxplots for each season.</p> -<pre class="sourceCode r" id="cb24"><code class="sourceCode r"><a class="sourceLine" id="cb24-1" data-line-number="1"><span class="kw">plot</span>(M_season)</a></code></pre> -<p><img src="data:image/png;base64,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xfZws+Heus3LVkisz+dMUwBip2+ewWLxvvFHTQdNqn0AsI7bf7Y3je5PJICByMLkMyw9lh9KW1RlOQUwUNv8cbuZP2o6aFLtA+A5NHv64/6lyIa03YDfco29olHFoiSQAhipaiEAGH/UdNCkEDphfxA9/uPpxO/HSwDURPCq+TMfL/QBawHUdNCgEAAEe2/6sf/VeLQMQL/loEb++KobKVED6jloSAgAov2vB3Fw7/5kCUCSLTXyR5gYLOd55o9NHDQkBABi3BPCoDMLYCBHQUlZLi39npb5eG/KW6McADUdNCmMCzGf95liXGICiH19HcBDK+YPNO2Qs7AP8nd5TVBc00GD6syV8LaKACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACCLACDLJQDXx4yxR6+xo2FXDgE4U2/ePsSOiFW5AyDyelD4fz9iXXnprRW5AyBQGR95feSYWJU7AMJMyb89Zaz3XGxDcvVAfZyfebyPuJDB/OPBBWwtsMfrTO9blCiXkTsA5mN28Fpv/CK27WEM6kIge4ZBHPviA7zFWwXvXMq9HWRwN+UOgHh+ypJRkM++mvISL7bN2OEFPRruTeXGPFcSxaEIhq2CWF9uGtRROQSAI/jw4oHY7Ur1A2JLrDj+eM6/BgC9g/NP8IXaI2k+3rmE/8kXXZRTAEDzN7w0qyZGwdCfRGMEvYHYnCAW+0HApg6iJyAAGyopxFCmEwCwExN78vyXGxF6cypREIAm5KsNeCSApFOVg6MEz+frI9igxGiCCIAlhXKseTsWXWvvW+hweVcQQid7eyTKff8ThMNGcUYnTABsSY032e5lMs7sTcS+MWrIKYehMOBJgwmARd0c83y9J6++4EJMXGlB6Wf3TqCBmr+F8BMd3Dv8FBMAUoEIALIIALIIALIIALIIALIIALIIALIIALIIALIIALL+DyThfdAQ9XViAAAAAElFTkSuQmCC" style="display: block; margin: auto;" /></p> -<p>Taking a summary of the splitFull gives us a confidence interval for each level of the split covariate. The size of the confidence interval can be specified for both plots or summaries using the CL argument.</p> -<pre class="sourceCode r" id="cb25"><code class="sourceCode r"><a class="sourceLine" id="cb25-1" data-line-number="1"> <span class="kw">summary</span>(M_season, <span class="dt">CL =</span> <span class="fl">0.95</span>)</a> -<a class="sourceLine" id="cb25-2" data-line-number="2"><span class="co">#> 2.5% 25% 50% 75% 97.5%</span></a> -<a class="sourceLine" id="cb25-3" data-line-number="3"><span class="co">#> winter 57.10194 74.63008 86.09892 105.1858 127.7110</span></a> -<a class="sourceLine" id="cb25-4" data-line-number="4"><span class="co">#> spring 344.01117 408.56403 470.29464 507.4447 618.1570</span></a> -<a class="sourceLine" id="cb25-5" data-line-number="5"><span class="co">#> summer 246.82614 301.94204 346.24145 383.1392 475.3823</span></a> -<a class="sourceLine" id="cb25-6" data-line-number="6"><span class="co">#> fall 121.42935 159.37650 175.17390 191.9218 249.6349</span></a> -<a class="sourceLine" id="cb25-7" data-line-number="7"><span class="co">#> attr(,"class")</span></a> -<a class="sourceLine" id="cb25-8" data-line-number="8"><span class="co">#> [1] "splitSummary"</span></a> -<a class="sourceLine" id="cb25-9" data-line-number="9"><span class="co">#> attr(,"CL")</span></a> -<a class="sourceLine" id="cb25-10" data-line-number="10"><span class="co">#> [1] 0.95</span></a> -<a class="sourceLine" id="cb25-11" data-line-number="11"><span class="co">#> attr(,"vars")</span></a> -<a class="sourceLine" id="cb25-12" data-line-number="12"><span class="co">#> [1] "Season"</span></a> -<a class="sourceLine" id="cb25-13" data-line-number="13"><span class="co">#> attr(,"type")</span></a> -<a class="sourceLine" id="cb25-14" data-line-number="14"><span class="co">#> [1] "SS"</span></a> -<a class="sourceLine" id="cb25-15" data-line-number="15"><span class="co">#> attr(,"times")</span></a> -<a class="sourceLine" id="cb25-16" data-line-number="16"><span class="co">#> [1] 0 89 182 276 364</span></a></code></pre> -<p>To get a finer summary of mortality, we need to parse the search schedule, using the function prepSS. This allows us to specify the exact time intervals over which we will split, in this case we will create a weekly summary.</p> -<pre class="sourceCode r" id="cb26"><code class="sourceCode r"><a class="sourceLine" id="cb26-1" data-line-number="1"></a> -<a class="sourceLine" id="cb26-2" data-line-number="2">SSdat <-<span class="st"> </span><span class="kw">prepSS</span>(SS_data) <span class="co"># Creates an object of type prepSS.</span></a> -<a class="sourceLine" id="cb26-3" data-line-number="3">schedule <-<span class="st"> </span><span class="kw">seq</span>(<span class="dt">from =</span> <span class="dv">0</span>, <span class="dt">to =</span> <span class="kw">max</span>(SSdat<span class="op">$</span>days), <span class="dt">by =</span> <span class="dv">7</span>)</a> -<a class="sourceLine" id="cb26-4" data-line-number="4"><span class="kw">tail</span>(schedule)</a> -<a class="sourceLine" id="cb26-5" data-line-number="5"><span class="co">#> [1] 329 336 343 350 357 364</span></a></code></pre> +<div class="sourceCode" id="cb24"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb24-1" data-line-number="1"><span class="kw">unique</span>(data_SS[, <span class="st">"Season"</span>])</a> +<a class="sourceLine" id="cb24-2" data-line-number="2"><span class="co">#> [1] "winter" "spring" "summer" "fall"</span></a> +<a class="sourceLine" id="cb24-3" data-line-number="3"></a> +<a class="sourceLine" id="cb24-4" data-line-number="4">M_season <-<span class="st"> </span><span class="kw">calcSplits</span>(<span class="dt">M =</span> Mest,</a> +<a class="sourceLine" id="cb24-5" data-line-number="5"> <span class="dt">split_SS =</span> <span class="st">"Season"</span>, <span class="dt">data_SS =</span> data_SS,</a> +<a class="sourceLine" id="cb24-6" data-line-number="6"> <span class="dt">split_CO =</span> <span class="ot">NULL</span>, <span class="dt">data_CO =</span> data_CO</a> +<a class="sourceLine" id="cb24-7" data-line-number="7">)</a></code></pre></div> +<p>Splitting the estM creates a <code>splitFull</code> object, a plot of which shows boxplots for each season.</p> +<div class="sourceCode" id="cb25"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb25-1" data-line-number="1"><span class="kw">plot</span>(M_season)</a></code></pre></div> +<p><img src="data:image/png;base64,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VghnmgEAk5DAYfc890dNBy7VPABYyyN4vn093ZlIAAORhOlnWHVFfihtUeXlDIAwKe3m/qjpwKWaB8BTaPbsp91zkQxZvQG/5TorikYVi5JABmCkioUAYPxR04FLITTCwWD65M9nk6CXLABQA8Grpk88nmsDVgKo6cChEACE2297SfDVeLQIQK90UyN9AtWMlCgB9Rw4EgKA6e7XgyR8sDNZAJAmS430ESYGi2me++MuDhwJAYDo90TQ6cwDGMheUJqXS0vka/4jHm9f89qoAEBNBy6FcSMW8DZT9EtMAEmg7wN4aMX0gaodUhbWEP++qApKajpwqNbcCW+qCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyCACyfAJwecgYe/wGOxp25RGAE7Xy9j52RKzKHwDTfgcy/x8HrC2L3lqRPwBClfDTfg85JlblD4Aol/NvjhnrvBDbkFw8VB/jkz5vI85kMP+4dwZbC2zzMtP5DiXKZeQPgHjM9t7ojV/Etj2MQVkIZcswSJJAfIBVvFVw91zu7SCD2yl/ACTxMUt7QQH76prneLFtRpdn9Olw+1puzHMhUeyLYNgqiPXkpkEtlUcAOIKPLx+K3a5UOyC2xEqST6f8awDQ2Tv9DF+oPZLicfcc/qdftFFeAQDFb3luVlWMgqE/icoIWgOxOUEi9oOATR1ES0AA7qg0E0OeTgHATkzs6Ytfr0To1bFEQQBcKFAb8EgAA/217ByleG4vD2CDEqMKIgCWFMm+5s1YNK2d76DB5U1BBI3szYHI973PEA4bxRmNMAGwJdXfZFvnaT+zMxH7xqgup+yGQocnCyYAFnV1yNP1gbz7ghsxcacFuZ89OIIKKn4H4Uc6uLP/OSEApDUiAMgiAMgiAMgiAMgiAMgiAMgiAMgiAMgiAMgiAMj6P7GWX8spmCW5AAAAAElFTkSuQmCC" style="display: block; margin: auto;" /></p> +<p>Taking a summary of the <code>splitFull</code> object gives us a confidence interval for each level of the split covariate. The size of the confidence interval can be specified for both plots or summaries using the CL argument.</p> +<div class="sourceCode" id="cb26"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb26-1" data-line-number="1"><span class="kw">summary</span>(M_season, <span class="dt">CL =</span> <span class="fl">0.95</span>)</a> +<a class="sourceLine" id="cb26-2" data-line-number="2"><span class="co">#> X 2.5% 25% 50% 75% 97.5%</span></a> +<a class="sourceLine" id="cb26-3" data-line-number="3"><span class="co">#> winter 29.22000 41.41550 51.96439 56.58761 61.57726 71.88654</span></a> +<a class="sourceLine" id="cb26-4" data-line-number="4"><span class="co">#> spring 84.59429 153.40828 177.17547 190.81423 208.19640 233.42571</span></a> +<a class="sourceLine" id="cb26-5" data-line-number="5"><span class="co">#> summer 73.59857 130.50199 144.16394 156.32358 170.25260 195.19648</span></a> +<a class="sourceLine" id="cb26-6" data-line-number="6"><span class="co">#> fall 45.58714 76.90624 91.24393 98.16837 107.27153 128.73498</span></a> +<a class="sourceLine" id="cb26-7" data-line-number="7"><span class="co">#> attr(,"class")</span></a> +<a class="sourceLine" id="cb26-8" data-line-number="8"><span class="co">#> [1] "splitSummary"</span></a> +<a class="sourceLine" id="cb26-9" data-line-number="9"><span class="co">#> attr(,"CL")</span></a> +<a class="sourceLine" id="cb26-10" data-line-number="10"><span class="co">#> [1] 0.95</span></a> +<a class="sourceLine" id="cb26-11" data-line-number="11"><span class="co">#> attr(,"vars")</span></a> +<a class="sourceLine" id="cb26-12" data-line-number="12"><span class="co">#> [1] "Season"</span></a> +<a class="sourceLine" id="cb26-13" data-line-number="13"><span class="co">#> attr(,"type")</span></a> +<a class="sourceLine" id="cb26-14" data-line-number="14"><span class="co">#> [1] "SS"</span></a> +<a class="sourceLine" id="cb26-15" data-line-number="15"><span class="co">#> attr(,"times")</span></a> +<a class="sourceLine" id="cb26-16" data-line-number="16"><span class="co">#> [1] 0 89 182 276 364</span></a></code></pre></div> +<p>To get a finer summary of mortality, we need to parse the search schedule, using the function <code>prepSS</code>. This allows us to specify the exact time intervals over which we will split, in this case we will create a weekly summary.</p> +<div class="sourceCode" id="cb27"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb27-1" data-line-number="1"></a> +<a class="sourceLine" id="cb27-2" data-line-number="2">SSdat <-<span class="st"> </span><span class="kw">prepSS</span>(data_SS) <span class="co"># Creates an object of type prepSS.</span></a> +<a class="sourceLine" id="cb27-3" data-line-number="3">schedule <-<span class="st"> </span><span class="kw">seq</span>(<span class="dt">from =</span> <span class="dv">0</span>, <span class="dt">to =</span> <span class="kw">max</span>(SSdat<span class="op">$</span>days), <span class="dt">by =</span> <span class="dv">7</span>)</a> +<a class="sourceLine" id="cb27-4" data-line-number="4"><span class="kw">tail</span>(schedule)</a> +<a class="sourceLine" id="cb27-5" data-line-number="5"><span class="co">#> [1] 329 336 343 350 357 364</span></a></code></pre></div> <p>When we plot the splitFull object for a split with a custom schedule, we must specify that the rate is per split catagory by setting <code>rate = T</code>.</p> -<pre class="sourceCode r" id="cb27"><code class="sourceCode r"><a class="sourceLine" id="cb27-1" data-line-number="1">M_week <-<span class="st"> </span><span class="kw">calcSplits</span>(</a> -<a class="sourceLine" id="cb27-2" data-line-number="2"> <span class="dt">M =</span> Mest<span class="op">$</span>M, <span class="dt">Aj =</span> Mest<span class="op">$</span>Aj,</a> -<a class="sourceLine" id="cb27-3" data-line-number="3"> <span class="dt">split_time =</span> schedule, </a> -<a class="sourceLine" id="cb27-4" data-line-number="4"> <span class="dt">data_SS =</span> SSdat,</a> -<a class="sourceLine" id="cb27-5" data-line-number="5"> <span class="dt">data_CO =</span> CO_data</a> -<a class="sourceLine" id="cb27-6" data-line-number="6">)</a> -<a class="sourceLine" id="cb27-7" data-line-number="7"><span class="kw">plot</span>(<span class="dt">x =</span> M_week, <span class="dt">rate =</span> T)</a></code></pre> -<p><img src="data:image/png;base64,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" style="display: block; margin: auto;" /></p> +<div class="sourceCode" id="cb28"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb28-1" data-line-number="1">M_week <-<span class="st"> </span><span class="kw">calcSplits</span>(<span class="dt">M =</span> Mest,</a> +<a class="sourceLine" id="cb28-2" data-line-number="2"> <span class="dt">split_time =</span> schedule,</a> +<a class="sourceLine" id="cb28-3" data-line-number="3"> <span class="dt">data_SS =</span> SSdat,</a> +<a class="sourceLine" id="cb28-4" data-line-number="4"> <span class="dt">data_CO =</span> data_CO</a> +<a class="sourceLine" id="cb28-5" data-line-number="5">)</a> +<a class="sourceLine" id="cb28-6" data-line-number="6"><span class="kw">plot</span>(<span class="dt">x =</span> M_week, <span class="dt">rate =</span> <span class="ot">TRUE</span>)</a></code></pre></div> +<p><img src="data:image/png;base64,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" style="display: block; margin: auto;" /></p> <p>Next we will look at at splitting by covariates present in the Carcass Observation file. We specify a CO split by assigning split_CO to the name (or names) of the variables we wish to split on. Suppose we would like a summary of estimated mortality by unit.</p> -<pre class="sourceCode r" id="cb28"><code class="sourceCode r"><a class="sourceLine" id="cb28-1" data-line-number="1"></a> -<a class="sourceLine" id="cb28-2" data-line-number="2">M_unit <-<span class="st"> </span><span class="kw">calcSplits</span>(</a> -<a class="sourceLine" id="cb28-3" data-line-number="3"> <span class="dt">M =</span> Mest<span class="op">$</span>M, <span class="dt">Aj =</span> Mest<span class="op">$</span>Aj,</a> -<a class="sourceLine" id="cb28-4" data-line-number="4"> <span class="dt">split_CO =</span> <span class="st">"Unit"</span>, </a> -<a class="sourceLine" id="cb28-5" data-line-number="5"> <span class="dt">data_CO =</span> CO_data, </a> -<a class="sourceLine" id="cb28-6" data-line-number="6"> <span class="dt">data_SS =</span> SS_data</a> -<a class="sourceLine" id="cb28-7" data-line-number="7">)</a> -<a class="sourceLine" id="cb28-8" data-line-number="8"><span class="kw">plot</span>(M_unit, <span class="dt">rate =</span> F)</a></code></pre> -<p><img src="data:image/png;base64,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" style="display: block; margin: auto;" /> There are 300 units in this example, each one gets a boxplot when we plot the splitFull. For those arrays which have at least one observation, we can create a summary. In this case we will only create a summary for arrays 8 and 100.</p> -<pre class="sourceCode r" id="cb29"><code class="sourceCode r"><a class="sourceLine" id="cb29-1" data-line-number="1"><span class="kw">dim</span>(<span class="kw">summary</span>(M_unit)) <span class="co"># only 163 arrays had observations.</span></a> -<a class="sourceLine" id="cb29-2" data-line-number="2"><span class="co">#> [1] 164 5</span></a> -<a class="sourceLine" id="cb29-3" data-line-number="3"></a> -<a class="sourceLine" id="cb29-4" data-line-number="4"><span class="co"># A list of the arrays without observations:</span></a> -<a class="sourceLine" id="cb29-5" data-line-number="5"><span class="kw">which</span>(<span class="op">!</span><span class="kw">c</span>(<span class="dv">1</span><span class="op">:</span><span class="dv">300</span>) <span class="op">%in%</span><span class="st"> </span><span class="kw">sub</span>(<span class="dt">x =</span> CO_data<span class="op">$</span>Unit,</a> -<a class="sourceLine" id="cb29-6" data-line-number="6"> <span class="dt">pattern =</span> <span class="st">"Unit([0-9]+)"</span>,</a> -<a class="sourceLine" id="cb29-7" data-line-number="7"> <span class="dt">replacement =</span> <span class="st">"</span><span class="ch">\\</span><span class="st">1"</span>))</a> -<a class="sourceLine" id="cb29-8" data-line-number="8"><span class="co">#> [1] 2 3 4 5 9 13 17 19 20 24 25 28 29 34 35 36 37</span></a> -<a class="sourceLine" id="cb29-9" data-line-number="9"><span class="co">#> [18] 38 39 40 41 42 45 47 48 51 55 56 57 59 60 62 63 66</span></a> -<a class="sourceLine" id="cb29-10" data-line-number="10"><span class="co">#> [35] 69 70 71 73 74 75 81 84 85 86 88 90 91 93 94 95 97</span></a> -<a class="sourceLine" id="cb29-11" data-line-number="11"><span class="co">#> [52] 99 102 103 104 105 108 109 111 119 120 121 122 124 125 127 128 132</span></a> -<a class="sourceLine" id="cb29-12" data-line-number="12"><span class="co">#> [69] 133 136 143 146 148 149 151 164 166 169 172 175 179 181 185 186 188</span></a> -<a class="sourceLine" id="cb29-13" data-line-number="13"><span class="co">#> [86] 189 191 192 193 197 199 200 201 202 205 209 211 216 221 222 225 226</span></a> -<a class="sourceLine" id="cb29-14" data-line-number="14"><span class="co">#> [103] 228 231 233 234 236 246 247 249 251 254 255 256 257 259 261 262 264</span></a> -<a class="sourceLine" id="cb29-15" data-line-number="15"><span class="co">#> [120] 266 267 272 274 275 280 282 283 285 288 289 291 293 294 295 297 298</span></a> -<a class="sourceLine" id="cb29-16" data-line-number="16"></a> -<a class="sourceLine" id="cb29-17" data-line-number="17"><span class="co"># Only create summaries for Arrays Unit8 and Unit100.</span></a> -<a class="sourceLine" id="cb29-18" data-line-number="18">whichRow <-<span class="st"> </span><span class="kw">rownames</span>(<span class="kw">summary</span>(M_unit)) <span class="op">%in%</span><span class="st"> </span><span class="kw">c</span>(<span class="st">"Unit12"</span>, <span class="st">"Unit100"</span>)</a> -<a class="sourceLine" id="cb29-19" data-line-number="19"><span class="kw">summary</span>(M_unit)[whichRow, ]</a> -<a class="sourceLine" id="cb29-20" data-line-number="20"><span class="co">#> 5% 25% 50% 75% 95%</span></a> -<a class="sourceLine" id="cb29-21" data-line-number="21"><span class="co">#> Unit12 1 1.291228 2.785360 4.369817 7.532313</span></a> -<a class="sourceLine" id="cb29-22" data-line-number="22"><span class="co">#> Unit100 3 5.285432 9.316451 14.549408 23.113066</span></a></code></pre> -<p>It is possible to create summaries that split on both Carcass Observation variables and Search Schedule variables. To do so, include both a split_SS and split_CO argument.</p> -<pre class="sourceCode r" id="cb30"><code class="sourceCode r"><a class="sourceLine" id="cb30-1" data-line-number="1"></a> -<a class="sourceLine" id="cb30-2" data-line-number="2">M_unit_and_species <-<span class="st"> </span><span class="kw">calcSplits</span>(</a> -<a class="sourceLine" id="cb30-3" data-line-number="3"> <span class="dt">M =</span> Mest<span class="op">$</span>M, <span class="dt">Aj =</span> Mest<span class="op">$</span>Aj,</a> -<a class="sourceLine" id="cb30-4" data-line-number="4"> <span class="dt">split_SS =</span> <span class="kw">c</span>(<span class="st">"Season"</span>),</a> -<a class="sourceLine" id="cb30-5" data-line-number="5"> <span class="dt">split_CO =</span> <span class="kw">c</span>(<span class="st">"Size"</span>),</a> -<a class="sourceLine" id="cb30-6" data-line-number="6"> <span class="dt">data_CO =</span> CO_data,</a> -<a class="sourceLine" id="cb30-7" data-line-number="7"> <span class="dt">data_SS =</span> SS_data</a> -<a class="sourceLine" id="cb30-8" data-line-number="8">)</a> -<a class="sourceLine" id="cb30-9" data-line-number="9"><span class="kw">plot</span>(M_unit_and_species, <span class="dt">rate =</span> F)</a></code></pre> -<p><img src="data:image/png;base64,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" style="display: block; margin: auto;" /></p> +<div class="sourceCode" id="cb29"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb29-1" data-line-number="1"></a> +<a class="sourceLine" id="cb29-2" data-line-number="2">M_unit <-<span class="st"> </span><span class="kw">calcSplits</span>(<span class="dt">M =</span> Mest,</a> +<a class="sourceLine" id="cb29-3" data-line-number="3"> <span class="dt">split_CO =</span> <span class="st">"Unit"</span>,</a> +<a class="sourceLine" id="cb29-4" data-line-number="4"> <span class="dt">data_CO =</span> data_CO,</a> +<a class="sourceLine" id="cb29-5" data-line-number="5"> <span class="dt">data_SS =</span> data_SS</a> +<a class="sourceLine" id="cb29-6" data-line-number="6">)</a> +<a class="sourceLine" id="cb29-7" data-line-number="7"><span class="kw">plot</span>(M_unit, <span class="dt">rate =</span> <span class="ot">FALSE</span>)</a></code></pre></div> +<p><img src="data:image/png;base64,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" style="display: block; margin: auto;" /> There are 300 units in this example, each one gets a boxplot when we plot the splitFull. For those arrays which have at least one observation, we can create a summary. In this case we will only create a summary for arrays 8 and 100.</p> +<div class="sourceCode" id="cb30"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb30-1" data-line-number="1"><span class="kw">dim</span>(<span class="kw">summary</span>(M_unit)) <span class="co"># only 164 arrays had observations.</span></a> +<a class="sourceLine" id="cb30-2" data-line-number="2"><span class="co">#> [1] 164 6</span></a> +<a class="sourceLine" id="cb30-3" data-line-number="3"></a> +<a class="sourceLine" id="cb30-4" data-line-number="4"><span class="co"># A list of the arrays without observed carcasses:</span></a> +<a class="sourceLine" id="cb30-5" data-line-number="5"><span class="kw">setdiff</span>(<span class="kw">paste0</span>(<span class="st">"Unit"</span>, <span class="dv">1</span><span class="op">:</span><span class="dv">300</span>), data_CO<span class="op">$</span>Unit)</a> +<a class="sourceLine" id="cb30-6" data-line-number="6"><span class="co">#> [1] "Unit2" "Unit3" "Unit4" "Unit5" "Unit9" "Unit13" "Unit17" </span></a> +<a class="sourceLine" id="cb30-7" data-line-number="7"><span class="co">#> [8] "Unit19" "Unit20" "Unit24" "Unit25" "Unit28" "Unit29" "Unit34" </span></a> +<a class="sourceLine" id="cb30-8" data-line-number="8"><span class="co">#> [15] "Unit35" "Unit36" "Unit37" "Unit38" "Unit39" "Unit40" "Unit41" </span></a> +<a class="sourceLine" id="cb30-9" data-line-number="9"><span class="co">#> [22] "Unit42" "Unit45" "Unit47" "Unit48" "Unit51" "Unit55" "Unit56" </span></a> +<a class="sourceLine" id="cb30-10" data-line-number="10"><span class="co">#> [29] "Unit57" "Unit59" "Unit60" "Unit62" "Unit63" "Unit66" "Unit69" </span></a> +<a class="sourceLine" id="cb30-11" data-line-number="11"><span class="co">#> [36] "Unit70" "Unit71" "Unit73" "Unit74" "Unit75" "Unit81" "Unit84" </span></a> +<a class="sourceLine" id="cb30-12" data-line-number="12"><span class="co">#> [43] "Unit85" "Unit86" "Unit88" "Unit90" "Unit91" "Unit93" "Unit94" </span></a> +<a class="sourceLine" id="cb30-13" data-line-number="13"><span class="co">#> [50] "Unit95" "Unit97" "Unit99" "Unit102" "Unit103" "Unit104" "Unit105"</span></a> +<a class="sourceLine" id="cb30-14" data-line-number="14"><span class="co">#> [57] "Unit108" "Unit109" "Unit111" "Unit119" "Unit120" "Unit121" "Unit122"</span></a> +<a class="sourceLine" id="cb30-15" data-line-number="15"><span class="co">#> [64] "Unit124" "Unit125" "Unit127" "Unit128" "Unit132" "Unit133" "Unit136"</span></a> +<a class="sourceLine" id="cb30-16" data-line-number="16"><span class="co">#> [71] "Unit143" "Unit146" "Unit148" "Unit149" "Unit151" "Unit164" "Unit166"</span></a> +<a class="sourceLine" id="cb30-17" data-line-number="17"><span class="co">#> [78] "Unit169" "Unit172" "Unit175" "Unit179" "Unit181" "Unit185" "Unit186"</span></a> +<a class="sourceLine" id="cb30-18" data-line-number="18"><span class="co">#> [85] "Unit188" "Unit189" "Unit191" "Unit192" "Unit193" "Unit197" "Unit199"</span></a> +<a class="sourceLine" id="cb30-19" data-line-number="19"><span class="co">#> [92] "Unit200" "Unit201" "Unit202" "Unit205" "Unit209" "Unit211" "Unit216"</span></a> +<a class="sourceLine" id="cb30-20" data-line-number="20"><span class="co">#> [99] "Unit221" "Unit222" "Unit225" "Unit226" "Unit228" "Unit231" "Unit233"</span></a> +<a class="sourceLine" id="cb30-21" data-line-number="21"><span class="co">#> [106] "Unit234" "Unit236" "Unit246" "Unit247" "Unit249" "Unit251" "Unit254"</span></a> +<a class="sourceLine" id="cb30-22" data-line-number="22"><span class="co">#> [113] "Unit255" "Unit256" "Unit257" "Unit259" "Unit261" "Unit262" "Unit264"</span></a> +<a class="sourceLine" id="cb30-23" data-line-number="23"><span class="co">#> [120] "Unit266" "Unit267" "Unit272" "Unit274" "Unit275" "Unit280" "Unit282"</span></a> +<a class="sourceLine" id="cb30-24" data-line-number="24"><span class="co">#> [127] "Unit283" "Unit285" "Unit288" "Unit289" "Unit291" "Unit293" "Unit294"</span></a> +<a class="sourceLine" id="cb30-25" data-line-number="25"><span class="co">#> [134] "Unit295" "Unit297" "Unit298"</span></a> +<a class="sourceLine" id="cb30-26" data-line-number="26"></a> +<a class="sourceLine" id="cb30-27" data-line-number="27"><span class="co"># Create summaries for arrays Unit12 and Unit100.</span></a> +<a class="sourceLine" id="cb30-28" data-line-number="28">whichRow <-<span class="st"> </span><span class="kw">rownames</span>(<span class="kw">summary</span>(M_unit)) <span class="op">%in%</span><span class="st"> </span><span class="kw">c</span>(<span class="st">"Unit12"</span>, <span class="st">"Unit100"</span>)</a> +<a class="sourceLine" id="cb30-29" data-line-number="29"><span class="kw">summary</span>(M_unit)[whichRow, ]</a> +<a class="sourceLine" id="cb30-30" data-line-number="30"><span class="co">#> X 5% 25% 50% 75% 95%</span></a> +<a class="sourceLine" id="cb30-31" data-line-number="31"><span class="co">#> Unit12 1 1 1.380721 2.092318 3.827085 5.544573</span></a> +<a class="sourceLine" id="cb30-32" data-line-number="32"><span class="co">#> Unit100 3 3 4.002142 5.591761 7.889745 10.516961</span></a></code></pre></div> +<p>It is possible to create summaries that split on both Carcass Observation variables and Search Schedule variables. To do so, include both a <code>split_SS</code> and a <code>split_CO</code> argument.</p> +<div class="sourceCode" id="cb31"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb31-1" data-line-number="1"></a> +<a class="sourceLine" id="cb31-2" data-line-number="2">M_unit_and_species <-<span class="st"> </span><span class="kw">calcSplits</span>(<span class="dt">M =</span> Mest,</a> +<a class="sourceLine" id="cb31-3" data-line-number="3"> <span class="dt">split_SS =</span> <span class="kw">c</span>(<span class="st">"Season"</span>),</a> +<a class="sourceLine" id="cb31-4" data-line-number="4"> <span class="dt">split_CO =</span> <span class="kw">c</span>(<span class="st">"Size"</span>),</a> +<a class="sourceLine" id="cb31-5" data-line-number="5"> <span class="dt">data_CO =</span> data_CO,</a> +<a class="sourceLine" id="cb31-6" data-line-number="6"> <span class="dt">data_SS =</span> data_SS</a> +<a class="sourceLine" id="cb31-7" data-line-number="7">)</a> +<a class="sourceLine" id="cb31-8" data-line-number="8"><span class="kw">plot</span>(M_unit_and_species, <span class="dt">rate =</span> <span class="ot">FALSE</span>)</a></code></pre></div> +<p><img src="data:image/png;base64,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" style="display: block; margin: auto;" /></p> <p>Two CO variables can be compared simultaneously by specifying an ordered pair of covariates for <code>split_CO</code>, however currently there are a limited total number (two) of splits which can be allocated among temporal or carcass covariates.</p> </div> diff --git a/inst/doc/wind-examples.R b/inst/doc/wind-examples.R index 96ab3392533dbcf81b77167ec66ecbbe6f9770a4..4deeb45f7e3f2ac1778b470a81cae51f58c92630 100644 --- a/inst/doc/wind-examples.R +++ b/inst/doc/wind-examples.R @@ -4,60 +4,56 @@ knitr::opts_chunk$set( comment = "#>" ) -## ---- include=FALSE------------------------------------------------------ +## ----set-options, echo=FALSE, cache=FALSE----------------------------------------------------------------------------- +options(width = 120) + +## ---- include=FALSE--------------------------------------------------------------------------------------------------- library(GenEst) vers <- packageVersion("GenEst") today <- Sys.Date() -## ------------------------------------------------------------------------ +## --------------------------------------------------------------------------------------------------------------------- data(wind_RPbat) names(wind_RPbat) -## ------------------------------------------------------------------------ +## --------------------------------------------------------------------------------------------------------------------- data_SE <- wind_RPbat$SE data_CP <- wind_RPbat$CP data_SS <- wind_RPbat$SS data_DWP <- wind_RPbat$DWP data_CO <- wind_RPbat$CO -## ---- include = FALSE---------------------------------------------------- +## ---- include = FALSE------------------------------------------------------------------------------------------------- daterange <- range(data_SS$SearchDate) seasons <- paste(unique(data_SS$Season), collapse = ', ') -## ------------------------------------------------------------------------ +## --------------------------------------------------------------------------------------------------------------------- head(data_SE) -## ------------------------------------------------------------------------ +## --------------------------------------------------------------------------------------------------------------------- head(data_CP) -## ------------------------------------------------------------------------ +## --------------------------------------------------------------------------------------------------------------------- head(data_SS[, 1:10]) -## ------------------------------------------------------------------------ +## --------------------------------------------------------------------------------------------------------------------- head(data_DWP) -## ------------------------------------------------------------------------ +## --------------------------------------------------------------------------------------------------------------------- head(data_CO) -## ---- eval = FALSE------------------------------------------------------- -# ?pkm - -## ------------------------------------------------------------------------ +## --------------------------------------------------------------------------------------------------------------------- model_SE <- pkm(p ~ Season, k ~ 1, data = data_SE) +class(model_SE) model_SE -## ---- eval = FALSE------------------------------------------------------- -# ?cpm - -## ------------------------------------------------------------------------ +## --------------------------------------------------------------------------------------------------------------------- model_CP <- cpm(l ~ Season, s ~ Season, data = data_CP, dist = "weibull", left = "LastPresent", right = "FirstAbsent") +class(model_CP) model_CP -## ---- eval = FALSE------------------------------------------------------- -# ?estM - -## ---- fig.width = 7, fig.height = 5, fig.align = 'center'---------------- +## ---- fig.width = 7, fig.height = 5, fig.align = 'center'------------------------------------------------------------- Mhat <- estM(nsim = 1000, data_CO = data_CO, data_SS = data_SS, data_DWP = data_DWP, model_SE = model_SE, model_CP = model_CP, unitCol = "Turbine", COdate = "DateFound") @@ -65,128 +61,110 @@ Mhat <- estM(nsim = 1000, data_CO = data_CO, data_SS = data_SS, summary(Mhat) plot(Mhat) -## ---- eval = FALSE------------------------------------------------------- -# ?calcSplits - -## ---- fig.width = 5, fig.height = 5, fig.align = 'center'---------------- +## ---- fig.width = 5, fig.height = 5, fig.align = 'center'------------------------------------------------------------- M_species <- calcSplits(M = Mhat, split_CO = "Species", data_CO = data_CO) summary(M_species) plot(M_species) -## ------------------------------------------------------------------------ +## --------------------------------------------------------------------------------------------------------------------- SSdat <- prepSS(data_SS) -## ----Season Split, fig.width = 4, fig.height = 4, fig.align = 'center'---- +## ----Season Split, fig.width = 6.5, fig.height = 5.25, fig.align = 'center'------------------------------------------- M_season <- calcSplits(M = Mhat, split_SS = "Season", data_SS = SSdat, split_CO = NULL, data_CO = data_CO) summary(M_season) plot(M_season) -## ----Temporal Split, fig.width = 7, fig.height = 5, fig.align = 'center'---- -M_month <- calcSplits(M = Mhat, data_SS = SSdat, data_CO = data_CO, - split_time = seq(0, max(SSdat$days), by = 28)) +## ----Temporal Split, fig.width = 7, fig.height = 5, fig.align = 'center'---------------------------------------------- +M_month <- calcSplits(M = Mhat, split_time = seq(0, max(SSdat$days), by = 28), + data_SS = SSdat, data_CO = data_CO) summary(M_month) plot(M_month) -## ----Time unit Split, fig.width = 7, fig.height = 5, fig.align = 'center'---- -M_various_times <- calcSplits(M = Mhat, data_SS = SSdat, data_CO = data_CO, - split_time = c(seq(0, 90, by = 15), 120, 150, seq(155, 200, by = 5))) +## ----Time unit Split, fig.width = 7, fig.height = 5, fig.align = 'center'--------------------------------------------- +M_various_times <- calcSplits(M = Mhat, + split_time = c(seq(0, 90, by = 15), 120, 150, seq(155, 200, by = 5)), + data_SS = SSdat, data_CO = data_CO) plot(M_various_times) plot(M_various_times, rate = TRUE) -## ----Species and Season, fig.width = 4, fig.height = 6, fig.align = 'center'---- +## ----Species and Season, fig.width = 4, fig.height = 6, fig.align = 'center'------------------------------------------ M_species_by_season <- calcSplits(M = Mhat, - split_CO = "Species", data_CO = data_CO, split_SS = "Season", data_SS = SSdat) + split_CO = "Species", data_CO = data_CO, + split_SS = "Season", data_SS = SSdat) plot(M_species_by_season) -## ------------------------------------------------------------------------ +## --------------------------------------------------------------------------------------------------------------------- data(wind_cleared) names(wind_cleared) -## ------------------------------------------------------------------------ +## --------------------------------------------------------------------------------------------------------------------- data_SE <- wind_cleared$SE data_CP <- wind_cleared$CP data_SS <- wind_cleared$SS data_DWP <- wind_cleared$DWP data_CO <- wind_cleared$CO -## ------------------------------------------------------------------------ +## --------------------------------------------------------------------------------------------------------------------- head(data_SE) head(data_CP) -## ---- eval = FALSE------------------------------------------------------- -# ?pkm -# ?pkmSet +## --------------------------------------------------------------------------------------------------------------------- +pkModels <- pkm(p ~ Visibility * Season, k ~ Visibility * Season, data = data_SE, + allCombos = TRUE, sizeCol = "Size") +class(pkModels) +names(pkModels) -## ------------------------------------------------------------------------ -SEsml <- data_SE[data_SE$Size == "sml", ] -pkSet_sml <- pkmSet(p ~ Visibility * Season, k ~ Visibility * Season, - data = SEsml) -names(pkSet_sml) +## --------------------------------------------------------------------------------------------------------------------- +names(pkModels[["sml"]]) +class(pkModels[["sml"]]) -## ------------------------------------------------------------------------ -aicc(pkSet_sml) +## --------------------------------------------------------------------------------------------------------------------- +aicc(pkModels[["sml"]]) -## ---- eval = F, fig.show = "hold", fig.width = 7, fig.height = 7--------- -# plot(pkSet_sml, specificModel = "p ~ Visibility; k ~ 1") +## ---- fig.show = "hold", fig.width = 7, fig.height = 7---------------------------------------------------------------- +plot(pkModels[["sml"]], specificModel = "p ~ Visibility; k ~ 1") -## ---- eval = F, fig.show = "hold", fig.width = 7, fig.height = 7--------- -# plot(pkSet_sml, specificModel = "p ~ Visibility; k ~ 1") - -## ---- eval = F, fig.show = "hold", fig.width = 7, fig.height = 7--------- -# plot(pkSet_sml, specificModel = "p ~ Season; k ~ Season") - -## ------------------------------------------------------------------------ -pk_med <- pkm(p ~ Visibility, k ~ 1, data = data_SE[data_SE$Size == "med", ]) -pk_lrg <- pkm(p ~ Visibility, k ~ 1, data = data_SE[data_SE$Size == "lrg", ]) -pk_bat <- pkm(p ~ Visibility, k ~ 1, data = data_SE[data_SE$Size == "bat", ]) +## ---- fig.show = "hold", fig.width = 7, fig.height = 7---------------------------------------------------------------- +plot(pkModels[["sml"]], specificModel = "p ~ Season; k ~ Visibility * Season") +## --------------------------------------------------------------------------------------------------------------------- pkMods <- list( - sml = pkSet_sml[["p ~ Visibility; k ~ 1"]], - med = pk_med, - lrg = pk_lrg, - bat = pk_bat + sml = pkModels[["sml"]][["p ~ Visibility; k ~ 1"]], + med = pkModels[["med"]][["p ~ Visibility; k ~ 1"]], + lrg = pkModels[["lrg"]][["p ~ Visibility; k ~ 1"]], + bat = pkModels[["bat"]][["p ~ Visibility; k ~ 1"]] ) -## ---- eval = F----------------------------------------------------------- -# ? pkm -# vignette("command-line-example", package = "GenEst") - -## ---- eval = F----------------------------------------------------------- -# ? cpm -# ? cpmSet - -## ------------------------------------------------------------------------ -cpSet_sml <- cpmSet( +## --------------------------------------------------------------------------------------------------------------------- +cpModels <- cpm( l ~ Visibility * Season, s ~ Visibility * Season, - data = data_CP[data_CP$Size == "sml", ], left = "LastPresent", right = "FirstAbsent", - dist = c( "weibull", "lognormal", "loglogistic", "exponential") + data = data_CP, left = "LastPresent", right = "FirstAbsent", + dist = c( "weibull", "lognormal", "loglogistic", "exponential"), + allCombos = TRUE, sizeCol = "Size" ) -## ------------------------------------------------------------------------ -aicc(cpSet_sml) +## --------------------------------------------------------------------------------------------------------------------- +lapply(aicc(cpModels), nrow) +aicc(cpModels[["sml"]]) -## ------------------------------------------------------------------------ -cp_smlCandidates <- names(cpSet_sml)[c(24, 19, 14, 9, 25, 17, 20, 22, 15, 44)] +## --------------------------------------------------------------------------------------------------------------------- +cp_smlCandidates <- + names(cpModels[["sml"]])[c(25, 24, 15, 19, 20, 10, 14, 22, 74, 21)] cp_smlCandidates -## ---- eval = F----------------------------------------------------------- +## ---- eval = F-------------------------------------------------------------------------------------------------------- # plot(cpSet_sml, specificModel = cp_smlCandidates) -## ------------------------------------------------------------------------ -cp_sml <- cpSet_sml[[cp_smlCandidates[1]]] +## --------------------------------------------------------------------------------------------------------------------- +cp_sml <- cpModels[["sml"]][[cp_smlCandidates[1]]] -## ------------------------------------------------------------------------ -cp_med <- cpm(l ~ Visibility, s ~ Season, - data = data_CP[data_CP$Size == "med", ], left = "LastPresent", right = "FirstAbsent", - dist = "weibull") -cp_lrg <- cpm(l ~ Visibility + Season, data = data_CP[data_CP$Size == "lrg", ], - left = "LastPresent", right = "FirstAbsent", dist = "exponential") -cp_bat <- cpm(l ~ Visibility + Season, s ~ 1, - data = data_CP[data_CP$Size == "med", ], left = "LastPresent", right = "FirstAbsent", - dist = "weibull") +## --------------------------------------------------------------------------------------------------------------------- +cp_med <- cpModels[["med"]][["dist: weibull; l ~ Visibility; s ~ Season"]] +cp_lrg <- cpModels[["lrg"]][["dist: exponential; l ~ Visibility + Season; NULL"]] +cp_bat <- cpModels[["bat"]][["dist: weibull; l ~ Visibility + Season; s ~ 1"]] -## ------------------------------------------------------------------------ +## --------------------------------------------------------------------------------------------------------------------- cpMods <- list( sml = cp_sml, med = cp_med, @@ -194,7 +172,7 @@ cpMods <- list( bat = cp_bat ) -## ----Mhat plot, fig.height = 4, fig.width = 7, fig.align = 'center'------ +## ----Mhat plot, fig.height = 4, fig.width = 7, fig.align = 'center'--------------------------------------------------- Mhat <- estM(nsim = 1000, data_CO = data_CO, data_SS = data_SS, frac = 0.23, data_DWP = data_DWP, model_SE = pkMods, model_CP = cpMods, sizeCol = "Size", unitCol = "Turbine", COdate = "DateFound") @@ -202,23 +180,18 @@ Mhat <- estM(nsim = 1000, data_CO = data_CO, data_SS = data_SS, frac = 0.23, summary(Mhat) plot(Mhat) -## ----Species Group Plot, , fig.height = 5, fig.width = 5, fig.align = 'center'---- +## ----Species Group Plot, fig.height = 5, fig.width = 5, fig.align = 'center'------------------------------------------ M_speciesGroup <- calcSplits(M = Mhat, split_CO = "SpeciesGroup", data_CO = data_CO) summary(M_speciesGroup) plot(M_speciesGroup) -## ----Split Species and Season, fig.height = 12, fig.width = 4, fig.align = 'center'---- -M_speciesseason <- calcSplits(M = Mhat, split_CO = "Species", - data_CO = data_CO, split_SS = "Season", data_SS = data_SS) +## ----Split Species and Season, fig.height = 12, fig.width = 4, fig.align = 'center'----------------------------------- +M_speciesseason <- calcSplits(M = Mhat, + split_CO = "Species", data_CO = data_CO, split_SS = "Season", data_SS = data_SS) summary(M_speciesseason) plot(M_speciesseason) -## ----Transposed Species Season, fig.height = 7, fig.width = 7, fig.align = 'center'---- +## ----Transposed Species Season, fig.height = 7, fig.width = 7, fig.align = 'center'----------------------------------- plot(transposeSplits(M_speciesseason)) -## ---- fig.width = 4, fig.height = 6, fig.align = 'center'---------------- -M_distance <- calcSplits(M = Mhat, split_CO = c("Distance", "Size"), - data_CO = data_CO) -plot(M_distance) - diff --git a/inst/doc/wind-examples.html b/inst/doc/wind-examples.html index 0930482906ca77e91d96a114a6f164e5ea040783..84690e67896ccffa31f52237632ee8a69c226efb 100644 --- a/inst/doc/wind-examples.html +++ b/inst/doc/wind-examples.html @@ -12,7 +12,7 @@ <meta name="author" content="Daniel Dalthorp" /> -<meta name="date" content="2018-09-29" /> +<meta name="date" content="2018-11-02" /> <title>GenEst - A Tutorial with Wind Examples</title> @@ -20,20 +20,26 @@ <style type="text/css">code{white-space: pre;}</style> <style type="text/css"> -a.sourceLine { display: inline-block; min-height: 1.25em; } +a.sourceLine { display: inline-block; line-height: 1.25; } a.sourceLine { pointer-events: none; color: inherit; text-decoration: inherit; } +a.sourceLine:empty { height: 1.2em; } .sourceCode { overflow: visible; } -code.sourceCode { white-space: pre; } +code.sourceCode { white-space: pre; position: relative; } +div.sourceCode { margin: 1em 0; } +pre.sourceCode { margin: 0; } +@media screen { +div.sourceCode { overflow: auto; } +} @media print { code.sourceCode { white-space: pre-wrap; } a.sourceLine { text-indent: -1em; padding-left: 1em; } } pre.numberSource a.sourceLine - { position: relative; } + { position: relative; left: -4em; } pre.numberSource a.sourceLine::before { content: attr(data-line-number); - position: absolute; left: -5em; text-align: right; vertical-align: baseline; - border: none; pointer-events: all; + position: relative; left: -1em; text-align: right; vertical-align: baseline; + border: none; pointer-events: all; display: inline-block; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; @@ -41,38 +47,40 @@ pre.numberSource a.sourceLine::before color: #aaaaaa; } pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; } +div.sourceCode + { } @media screen { -a.sourceLine::before { text-decoration: underline; color: initial; } +a.sourceLine::before { text-decoration: underline; } } -code span.kw { color: #007020; font-weight: bold; } /* Keyword */ -code span.dt { color: #902000; } /* DataType */ -code span.dv { color: #40a070; } /* DecVal */ +code span.al { color: #ff0000; font-weight: bold; } /* Alert */ +code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */ +code span.at { color: #7d9029; } /* Attribute */ code span.bn { color: #40a070; } /* BaseN */ -code span.fl { color: #40a070; } /* Float */ +code span.bu { } /* BuiltIn */ +code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */ code span.ch { color: #4070a0; } /* Char */ -code span.st { color: #4070a0; } /* String */ +code span.cn { color: #880000; } /* Constant */ code span.co { color: #60a0b0; font-style: italic; } /* Comment */ -code span.ot { color: #007020; } /* Other */ -code span.al { color: #ff0000; font-weight: bold; } /* Alert */ -code span.fu { color: #06287e; } /* Function */ +code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */ +code span.do { color: #ba2121; font-style: italic; } /* Documentation */ +code span.dt { color: #902000; } /* DataType */ +code span.dv { color: #40a070; } /* DecVal */ code span.er { color: #ff0000; font-weight: bold; } /* Error */ -code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */ -code span.cn { color: #880000; } /* Constant */ -code span.sc { color: #4070a0; } /* SpecialChar */ -code span.vs { color: #4070a0; } /* VerbatimString */ -code span.ss { color: #bb6688; } /* SpecialString */ +code span.ex { } /* Extension */ +code span.fl { color: #40a070; } /* Float */ +code span.fu { color: #06287e; } /* Function */ code span.im { } /* Import */ -code span.va { color: #19177c; } /* Variable */ -code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */ +code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */ +code span.kw { color: #007020; font-weight: bold; } /* Keyword */ code span.op { color: #666666; } /* Operator */ -code span.bu { } /* BuiltIn */ -code span.ex { } /* Extension */ +code span.ot { color: #007020; } /* Other */ code span.pp { color: #bc7a00; } /* Preprocessor */ -code span.at { color: #7d9029; } /* Attribute */ -code span.do { color: #ba2121; font-style: italic; } /* Documentation */ -code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */ -code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */ -code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */ +code span.sc { color: #4070a0; } /* SpecialChar */ +code span.ss { color: #bb6688; } /* SpecialString */ +code span.st { color: #4070a0; } /* String */ +code span.va { color: #19177c; } /* Variable */ +code span.vs { color: #4070a0; } /* VerbatimString */ +code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */ </style> @@ -270,10 +278,11 @@ code > span.fu { color: #900; font-weight: bold; } code > span.er { color: #a61 <h1 class="title toc-ignore">GenEst - A Tutorial with Wind Examples</h1> <h4 class="author"><em>Daniel Dalthorp</em></h4> -<h4 class="date"><em>2018-09-29</em></h4> +<h4 class="date"><em>2018-11-02</em></h4> +<p>```</p> <div id="introduction-tutorial-with-examples" class="section level2"> <h2>Introduction: Tutorial with Examples</h2> <p>This tutorial provides an introduction to the array of command line tools <strong>GenEst</strong> provides for estimating carcass arrivals and detection probabilities. The approach is to walk through analyses of realistic but fictitious data sets representing studies of bird and bat mortality at a wind power facility.</p> @@ -284,7 +293,7 @@ code > span.fu { color: #900; font-weight: bold; } code > span.er { color: #a61 <li>Estimate mortality</li> <li>Specify the type of summary desired (e.g., mortality by species and season)</li> </ol> -<p>Data required for a full analysis include results of searcher efficiency trials, results of carcass persistence trials, search schedules for all units searched, the search coverage within each unit, and results of periodic carcass surveys. More information about the kinds of data required can be found in Appendix A. Example data sets are located in folders in <code>...GenEst\inst\extdata\</code>. For convenience, data required in this tutorial are available in R as packaged lists, which can readily be loaded as described below.</p> +<p>Data required for a full analysis include results of searcher efficiency trials, results of carcass persistence trials, search schedules for all units searched, the search coverage within each unit, and results of periodic carcass surveys. More information about the kinds of data required can be found in the User Guide. For convenience, data required in this tutorial are available in R as packaged lists, which can readily be loaded as described below. Alternatively, the data may be downloaded into zipped .csv files from the GUI.</p> <p>To perform the analyses illustrated in the tutorial, begin by starting R and loading GenEst from the command line: <code>library(GenEst)</code></p> </div> <div id="example-1-estimating-bat-mortality-from-searches-on-roads-and-pads" class="section level2"> @@ -292,260 +301,261 @@ code > span.fu { color: #900; font-weight: bold; } code > span.er { color: #a61 <p>Searcher efficiency and carcass persistence would be expected to vary with carcass size (sparrow, eagle, bat), ground characteristics (road & pad, cleared field, vegetation type), season, etc. In this first example, we limit the analysis to one carcass size (<code>bat</code>) and one ground visibility class (<code>RP</code> = road and pad). A more complicated scenario is analyzed in example 2.</p> <p>The required data is stored in <code>wind_RPbat</code>, a list of data frames with results for searcher efficiency (<code>SE</code>) and carcass persistence trials (<code>CP</code>), search schedules for all turbines (<code>SS</code>), the search coverage or density weighted proportion (<code>DWP</code>) of area searched at each turbine (i.e., the fraction of carcasses expected to fall in the search plots), and carcass observation (<code>CO</code>) data.</p> <p>Load the full data set into R:</p> -<pre class="sourceCode r" id="cb1"><code class="sourceCode r"><a class="sourceLine" id="cb1-1" data-line-number="1"><span class="kw">data</span>(wind_RPbat)</a> +<div class="sourceCode" id="cb1"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb1-1" data-line-number="1"><span class="kw">data</span>(wind_RPbat)</a> <a class="sourceLine" id="cb1-2" data-line-number="2"><span class="kw">names</span>(wind_RPbat)</a> -<a class="sourceLine" id="cb1-3" data-line-number="3"><span class="co">#> [1] "SE" "CP" "SS" "DWP" "CO"</span></a></code></pre> +<a class="sourceLine" id="cb1-3" data-line-number="3"><span class="co">#> [1] "SE" "CP" "SS" "DWP" "CO"</span></a></code></pre></div> <p>To streamline the notation, extract the data from the <code>wind_RPbat</code> list into its components:</p> -<pre class="sourceCode r" id="cb2"><code class="sourceCode r"><a class="sourceLine" id="cb2-1" data-line-number="1">data_SE <-<span class="st"> </span>wind_RPbat<span class="op">$</span>SE</a> +<div class="sourceCode" id="cb2"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb2-1" data-line-number="1">data_SE <-<span class="st"> </span>wind_RPbat<span class="op">$</span>SE</a> <a class="sourceLine" id="cb2-2" data-line-number="2">data_CP <-<span class="st"> </span>wind_RPbat<span class="op">$</span>CP</a> <a class="sourceLine" id="cb2-3" data-line-number="3">data_SS <-<span class="st"> </span>wind_RPbat<span class="op">$</span>SS</a> <a class="sourceLine" id="cb2-4" data-line-number="4">data_DWP <-<span class="st"> </span>wind_RPbat<span class="op">$</span>DWP</a> -<a class="sourceLine" id="cb2-5" data-line-number="5">data_CO <-<span class="st"> </span>wind_RPbat<span class="op">$</span>CO</a></code></pre> +<a class="sourceLine" id="cb2-5" data-line-number="5">data_CO <-<span class="st"> </span>wind_RPbat<span class="op">$</span>CO</a></code></pre></div> <div id="searcher-efficiency-se" class="section level3"> <h3>Searcher Efficiency (<code>SE</code>)</h3> <p>Searcher efficiency trials were conducted on roads and pads, with a total of 60 fresh carcasses placed in the field over the course of the entire monitoring period, evenly divided among seasons (spring, summer, fall). Carcasses that were later discovered by search teams during the course of normal carcass surveys were removed from the field. Carcasses were left in the field for up to 5 searches after carcass placement.</p> <p>Results of the SE field trials are stored in the <code>data_SE</code> data frame:</p> -<pre class="sourceCode r" id="cb3"><code class="sourceCode r"><a class="sourceLine" id="cb3-1" data-line-number="1"><span class="kw">head</span>(data_SE)</a> +<div class="sourceCode" id="cb3"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb3-1" data-line-number="1"><span class="kw">head</span>(data_SE)</a> <a class="sourceLine" id="cb3-2" data-line-number="2"><span class="co">#> pkID Season s1 s2 s3 s4 s5</span></a> <a class="sourceLine" id="cb3-3" data-line-number="3"><span class="co">#> 1 pk1 spring 0 NA NA NA NA</span></a> <a class="sourceLine" id="cb3-4" data-line-number="4"><span class="co">#> 2 pk2 spring 0 0 NA NA NA</span></a> <a class="sourceLine" id="cb3-5" data-line-number="5"><span class="co">#> 3 pk3 spring 1 NA NA NA NA</span></a> <a class="sourceLine" id="cb3-6" data-line-number="6"><span class="co">#> 4 pk4 spring 1 NA NA NA NA</span></a> <a class="sourceLine" id="cb3-7" data-line-number="7"><span class="co">#> 5 pk5 spring 0 NA NA NA NA</span></a> -<a class="sourceLine" id="cb3-8" data-line-number="8"><span class="co">#> 6 pk6 spring 1 NA NA NA NA</span></a></code></pre> +<a class="sourceLine" id="cb3-8" data-line-number="8"><span class="co">#> 6 pk6 spring 1 NA NA NA NA</span></a></code></pre></div> <p>Columns <code>s1, s2, ..., s5</code> show the fate of carcass <code>pkID</code> on the 1st, 2nd, … 5th searches after the carcass was placed. A 1 indicates that the carcass was discovered, a 0 indicates that the carcass was present but not discovered, and NA indicates that the carcass was no longer present for discovery or no search was conducted.</p> </div> <div id="carcass-persistence-cp" class="section level3"> <h3>Carcass Persistence (<code>CP</code>)</h3> <p>Carcass persistence trials were conducted on roads and pads, with a total of 60 fresh carcasses placed in the field over the course of the entire monitoring period, evenly divided among seasons (spring, summer, fall). Carcasses were checked approximately 1, 2, 3, 4, 7, 10, 14, 21, and 28 days after placement in the field. Exact times were entered as decimal fractions of days after placement.</p> <p>Results of the SE field trials are stored in the <code>data_CP</code> data frame:</p> -<pre class="sourceCode r" id="cb4"><code class="sourceCode r"><a class="sourceLine" id="cb4-1" data-line-number="1"><span class="kw">head</span>(data_CP)</a> -<a class="sourceLine" id="cb4-2" data-line-number="2"><span class="co">#> cpID Season Left Right</span></a> -<a class="sourceLine" id="cb4-3" data-line-number="3"><span class="co">#> 1 cp1 spring 0.00 0.93</span></a> -<a class="sourceLine" id="cb4-4" data-line-number="4"><span class="co">#> 2 cp2 spring 0.98 1.97</span></a> -<a class="sourceLine" id="cb4-5" data-line-number="5"><span class="co">#> 3 cp3 spring 0.00 1.01</span></a> -<a class="sourceLine" id="cb4-6" data-line-number="6"><span class="co">#> 4 cp4 spring 13.99 21.13</span></a> -<a class="sourceLine" id="cb4-7" data-line-number="7"><span class="co">#> 5 cp5 spring 0.00 1.17</span></a> -<a class="sourceLine" id="cb4-8" data-line-number="8"><span class="co">#> 6 cp6 spring 20.95 27.97</span></a></code></pre> -<p>Exact persistence times are not known, but a carcass that was present at one check and absent at the next check is assumed to have been removed at some point in the interval. The left endpoint of the interval was entered as <code>Left</code> and the right endpoint as <code>Right</code>. For carcasses that had not been scavenged by the end of the study, <code>Left</code> is the time of the last check and <code>Right</code> is <code>Inf</code>. For carcasses whose removal time is known exactly (e.g., scavenging was recorded by camera), <code>Left = Right</code>. The <code>Season</code> column gives the season at the time the carcass was placed in the field.</p> +<div class="sourceCode" id="cb4"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb4-1" data-line-number="1"><span class="kw">head</span>(data_CP)</a> +<a class="sourceLine" id="cb4-2" data-line-number="2"><span class="co">#> cpID Season LastPresent FirstAbsent</span></a> +<a class="sourceLine" id="cb4-3" data-line-number="3"><span class="co">#> 1 cp1 spring 0.00 0.93</span></a> +<a class="sourceLine" id="cb4-4" data-line-number="4"><span class="co">#> 2 cp2 spring 0.98 1.97</span></a> +<a class="sourceLine" id="cb4-5" data-line-number="5"><span class="co">#> 3 cp3 spring 0.00 1.01</span></a> +<a class="sourceLine" id="cb4-6" data-line-number="6"><span class="co">#> 4 cp4 spring 13.99 21.13</span></a> +<a class="sourceLine" id="cb4-7" data-line-number="7"><span class="co">#> 5 cp5 spring 0.00 1.17</span></a> +<a class="sourceLine" id="cb4-8" data-line-number="8"><span class="co">#> 6 cp6 spring 20.95 27.97</span></a></code></pre></div> +<p>Exact persistence times are not known, but a carcass that was present at one check and absent at the next check is assumed to have been removed at some point in the interval. The left endpoint of the interval was entered as <code>LastPresent</code> and the right endpoint as <code>FirstAbsent</code>. For carcasses that had not been scavenged by the end of the study, <code>LastPresent</code> is the time of the last check and <code>FirstAbsent</code> is <code>Inf</code>. For carcasses whose removal time is known exactly (e.g., scavenging was recorded by camera), <code>LastPresent = FirstAbsent</code>. The <code>Season</code> column gives the season at the time the carcass was placed in the field.</p> </div> <div id="search-schedules-ss" class="section level3"> <h3>Search Schedules (<code>SS</code>)</h3> -<p>Carcass searches were conducted on roads and pads within a 120 m radius from all 101 turbines at a fictitious wind power facility. Monitoring began on 1955-04-15 and continued through 1955-11-01. Searches spanned 3 seasons: spring, summer, fall. Search intervals varied by turbine and by time of year, ranging from daily searches at some turbines in the fall and searches once every 12 days in the spring at some other turbines. Search schedules for all turbines are stored in <code>data_SS</code>, which is a data frame with a column for search dates (including all dates that any turbine was searched); a column of 0s and 1s for each turbine, indication whether it was searched on the given date; and zero or more optional columns giving additional information about the date (e.g., season).</p> -<pre class="sourceCode r" id="cb5"><code class="sourceCode r"><a class="sourceLine" id="cb5-1" data-line-number="1"><span class="kw">head</span>(data_SS[, <span class="dv">1</span><span class="op">:</span><span class="dv">10</span>])</a> +<p>Carcass searches were conducted on roads and pads within a 120 m radius from all 100 turbines at a fictitious wind power facility. Monitoring began on 1955-04-15 and continued through 1955-11-01. Searches spanned 3 seasons: spring, summer, fall. Search intervals varied by turbine and by time of year, ranging from daily searches at some turbines in the fall and searches once every 12 days in the spring at some other turbines. Search schedules for all turbines are stored in <code>data_SS</code>, which is a data frame with a column for search dates (including all dates that any turbine was searched); a column of 0s and 1s for each turbine, indication whether it was searched on the given date; and zero or more optional columns giving additional information about the date (e.g., season).</p> +<div class="sourceCode" id="cb5"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb5-1" data-line-number="1"><span class="kw">head</span>(data_SS[, <span class="dv">1</span><span class="op">:</span><span class="dv">10</span>])</a> <a class="sourceLine" id="cb5-2" data-line-number="2"><span class="co">#> SearchDate Season t1 t2 t3 t4 t5 t6 t7 t8</span></a> -<a class="sourceLine" id="cb5-3" data-line-number="3"><span class="co">#> 1 1955-04-15 spring 1 1 1 1 1 1 1 1</span></a> +<a class="sourceLine" id="cb5-3" data-line-number="3"><span class="co">#> 1 1955-04-15 spring 0 0 0 1 0 0 0 1</span></a> <a class="sourceLine" id="cb5-4" data-line-number="4"><span class="co">#> 2 1955-04-18 spring 1 0 0 0 1 0 0 0</span></a> <a class="sourceLine" id="cb5-5" data-line-number="5"><span class="co">#> 3 1955-04-21 spring 0 1 0 0 0 1 0 0</span></a> <a class="sourceLine" id="cb5-6" data-line-number="6"><span class="co">#> 4 1955-04-24 spring 0 0 1 0 0 0 1 0</span></a> <a class="sourceLine" id="cb5-7" data-line-number="7"><span class="co">#> 5 1955-04-27 spring 0 0 0 1 0 0 0 1</span></a> -<a class="sourceLine" id="cb5-8" data-line-number="8"><span class="co">#> 6 1955-04-30 spring 1 0 0 0 1 0 0 0</span></a></code></pre> +<a class="sourceLine" id="cb5-8" data-line-number="8"><span class="co">#> 6 1955-04-30 spring 1 0 0 0 1 0 0 0</span></a></code></pre></div> <p>Note that we have only displayed a few of the turbine columns - there are 100 turbine columns altogether (t1, …, t100).</p> </div> <div id="density-weighted-proportion-dwp" class="section level3"> <h3>Density Weighted Proportion (<code>DWP</code>)</h3> -<p>The density-weighted proportion (<code>DWP</code>) is the expected fraction of carcasses that fell in the searched area. Carcass density is not the same at all distances from a turbine, but typically rises over a short distance then decreases eventually to 0. Searches were conducted on roads and pads within a 120 m radius from all 100 turbines to provide sufficient data with which to model the change in density with distance and from this, accurately calculate the fraction of all carcasses that are expected to land on road and pad surrounding each turbine (density-weighted proportion or DWP). The exact configuration of the roads and pads differs among turbines, hence the DWP must be calculated for each turbine. DWPs for bats at each turbine are stored in <code>data_DWP</code>, which is a data frame with a column for turbine name (values must match column names in <code>data_SS</code>); a column of DWP labeled <code>bat</code>. In other studies where, for example, mortality of birds might be of interest, <code>DWP</code> would be expected vary with carcass size or species (e.g., the spatial distributions of bats and large birds around a turbine would like differ from one another). In that case, each carcass size class (<code>large</code>, <code>medium</code>, <code>small</code>, <code>bat</code>) would have its own column.</p> -<pre class="sourceCode r" id="cb6"><code class="sourceCode r"><a class="sourceLine" id="cb6-1" data-line-number="1"><span class="kw">head</span>(data_DWP)</a> -<a class="sourceLine" id="cb6-2" data-line-number="2"><span class="co">#> Turbine bat</span></a> -<a class="sourceLine" id="cb6-3" data-line-number="3"><span class="co">#> 1 t1 0.1830528</span></a> -<a class="sourceLine" id="cb6-4" data-line-number="4"><span class="co">#> 2 t2 0.1924998</span></a> -<a class="sourceLine" id="cb6-5" data-line-number="5"><span class="co">#> 3 t3 0.2047069</span></a> -<a class="sourceLine" id="cb6-6" data-line-number="6"><span class="co">#> 4 t4 0.1936261</span></a> -<a class="sourceLine" id="cb6-7" data-line-number="7"><span class="co">#> 5 t5 0.1789439</span></a> -<a class="sourceLine" id="cb6-8" data-line-number="8"><span class="co">#> 6 t6 0.1714035</span></a></code></pre> +<p>The density-weighted proportion (<code>DWP</code>) is the expected fraction of carcasses that fell in the searched area. Carcass density is not the same at all distances from a turbine, but typically rises over a short distance then decreases eventually to 0. Searches were conducted on roads and pads within a 120 m radius from all 100 turbines to provide sufficient data with which to model the change in density with distance and from this, accurately calculate the fraction of all carcasses that are expected to land on road and pad surrounding each turbine (density-weighted proportion or DWP). The configuration of the roads and pads differs among turbines, hence the DWP must be calculated for each turbine. DWPs for bats at each turbine are stored in <code>data_DWP</code>, which is a data frame with a column for turbine name (note that turbine names also must be included among column names in <code>data_SS</code>, which gives the search schedule at each turbine) and a column of DWP labeled <code>bat</code>. In other studies where, for example, mortality of birds might be of interest, <code>DWP</code> would be expected vary with carcass size or species (e.g., the spatial distributions of bats and large birds around a turbine would likely differ from one another). In that case, each carcass size class (<code>large</code>, <code>medium</code>, <code>small</code>, <code>bat</code>) would have its own column.</p> +<div class="sourceCode" id="cb6"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb6-1" data-line-number="1"><span class="kw">head</span>(data_DWP)</a> +<a class="sourceLine" id="cb6-2" data-line-number="2"><span class="co">#> Turbine bat</span></a> +<a class="sourceLine" id="cb6-3" data-line-number="3"><span class="co">#> 1 t1 0.183</span></a> +<a class="sourceLine" id="cb6-4" data-line-number="4"><span class="co">#> 2 t2 0.192</span></a> +<a class="sourceLine" id="cb6-5" data-line-number="5"><span class="co">#> 3 t3 0.205</span></a> +<a class="sourceLine" id="cb6-6" data-line-number="6"><span class="co">#> 4 t4 0.194</span></a> +<a class="sourceLine" id="cb6-7" data-line-number="7"><span class="co">#> 5 t5 0.179</span></a> +<a class="sourceLine" id="cb6-8" data-line-number="8"><span class="co">#> 6 t6 0.171</span></a></code></pre></div> </div> <div id="carcass-observations-co" class="section level3"> <h3>Carcass Observations (<code>CO</code>)</h3> -<p>Information about each (non-trial) carcass observed during searches is stored in <code>CO_data</code> which is a data frame with at least 4 columns: carcass ID, the turbine (or unit) at which it was found, the date it was found and its distance from the turbine center. In <code>CO_data</code> we also have turbine type, species, and species group variables by which we will later summarize mortality estimates.</p> -<pre class="sourceCode r" id="cb7"><code class="sourceCode r"><a class="sourceLine" id="cb7-1" data-line-number="1"><span class="kw">head</span>(data_CO)</a> -<a class="sourceLine" id="cb7-2" data-line-number="2"><span class="co">#> carcID Turbine TurbineType DateFound Species SpeciesGroup Distance</span></a> -<a class="sourceLine" id="cb7-3" data-line-number="3"><span class="co">#> 79 x79 t86 Z 1955-05-03 BA bat1 7.1</span></a> -<a class="sourceLine" id="cb7-4" data-line-number="4"><span class="co">#> 37 x37 t19 X 1955-05-06 BB bat1 5.3</span></a> -<a class="sourceLine" id="cb7-5" data-line-number="5"><span class="co">#> 175 x175 t37 Y 1955-05-12 BB bat1 9.8</span></a> -<a class="sourceLine" id="cb7-6" data-line-number="6"><span class="co">#> 181 x181 t91 Z 1955-05-12 BA bat1 2.7</span></a> -<a class="sourceLine" id="cb7-7" data-line-number="7"><span class="co">#> 203 x203 t38 Y 1955-05-15 BA bat1 3.8</span></a> -<a class="sourceLine" id="cb7-8" data-line-number="8"><span class="co">#> 291 x291 t7 X 1955-05-18 BB bat1 112.3</span></a></code></pre> +<p>Information about each (non-trial) carcass observed during searches is stored in <code>CO_data</code> which is a data frame with at least 4 columns: carcass ID, the turbine (or unit) at which it was found, the date it was found and its distance from the turbine center. In <code>data_CO</code> we also have turbine type, species, and species group variables by which we will later summarize mortality estimates.</p> +<div class="sourceCode" id="cb7"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb7-1" data-line-number="1"><span class="kw">head</span>(data_CO)</a> +<a class="sourceLine" id="cb7-2" data-line-number="2"><span class="co">#> carcID Turbine TurbineType DateFound Species SpeciesGroup Distance</span></a> +<a class="sourceLine" id="cb7-3" data-line-number="3"><span class="co">#> 1 x79 t86 Z 1955-05-03 BA bat1 7.1</span></a> +<a class="sourceLine" id="cb7-4" data-line-number="4"><span class="co">#> 2 x37 t19 X 1955-05-06 BB bat1 5.3</span></a> +<a class="sourceLine" id="cb7-5" data-line-number="5"><span class="co">#> 3 x175 t37 Y 1955-05-12 BB bat1 9.8</span></a> +<a class="sourceLine" id="cb7-6" data-line-number="6"><span class="co">#> 4 x181 t91 Z 1955-05-12 BA bat1 2.7</span></a> +<a class="sourceLine" id="cb7-7" data-line-number="7"><span class="co">#> 5 x203 t38 Y 1955-05-15 BA bat1 3.8</span></a> +<a class="sourceLine" id="cb7-8" data-line-number="8"><span class="co">#> 6 x291 t7 X 1955-05-18 BB bat1 112.3</span></a></code></pre></div> </div> <div id="estimating-searcher-efficiency-and-carcass-persistence-parameters" class="section level3"> <h3>Estimating Searcher Efficiency and Carcass Persistence Parameters</h3> -<p>Searcher efficiency and carcass persistence parameters are estimated by fitting models using functions <code>pkm</code> and <code>cpm</code> which are patterned after familar R functions such as <code>lm</code> and <code>glm</code>. In this relatively simple example, our SE and CP field trials were conducted for one carcass size (bat) on one type of terrain (roads and pads) in three seasons (spring, summer, fall). The only potential predictor variable we have is <code>Season</code>, which is entered as a column in both <code>data_SE</code> and <code>data_CP</code>.</p> -<p>Searcher efficiency is the probability of detection of a carcass that is present in the searched area at the time of search. Searcher efficiency typically decreases with carcass age because older carcasses tend to become harder to find as they accumulate dust or debris, fall deeper into vegetation, get blown against objects or into holes, decay, or get partially scavenged. In addition, carcasses missed in one search tend to be more likely to be missed in subsequent searches because the easy-to-find carcasses are preferentially removed in the first searches after carcass arrival, leaving mostly the harder-to-find carcasses available in subsequences searches. GenEst accounts for a non-constant searcher efficiency using two parameters, <code>p</code> (searcher efficiency on the first search after carcass arrivals) and <code>k</code> (proportional change in searcher efficiency with each successive search). The <code>k</code> parameter can be estimated from field trials if carcasses that are not discovered in the first search after arrival are left in the field for possible discovery in later searches.</p> +<p>Searcher efficiency and carcass persistence parameters are estimated by fitting models using functions <code>pkm</code> and <code>cpm</code> (carcass persistence model) which are patterned after familar R functions such as <code>lm</code> and <code>glm</code>. The “pk†in <code>pkm</code> refers to GenEst’s model of searcher efficiency which includes two parameters: <code>p</code>, which is the initial searcher efficiency for carcasses on the first search after they have arrived, and <code>k</code>, which is a parameter governing the decrease in searcher efficiency in later searches. In this relatively simple example, our SE and CP field trials were conducted for one carcass size (bat) on one type of terrain (roads and pads) in three seasons (spring, summer, fall). The only potential predictor variable we have is <code>Season</code>, which is entered as a column in both <code>data_SE</code> and <code>data_CP</code>.</p> +<p>Searcher efficiency is the probability of detection of a carcass that is present in the searched area at the time of search. Searcher efficiency typically decreases with carcass age because older carcasses tend to become harder to find as they accumulate dust or debris, fall deeper into vegetation, get blown against objects or into holes, decay, or get partially scavenged. In addition, carcasses missed in one search tend to be more likely to be missed in subsequent searches because the relatively easy-to-find carcasses are preferentially removed in the first searches after carcass arrival, leaving mostly the harder-to-find carcasses available in subsequences searches. GenEst accounts for a non-constant searcher efficiency using two parameters, <code>p</code> (searcher efficiency on the first search after carcass arrivals) and <code>k</code> (proportional change in searcher efficiency with each successive search). The <code>k</code> parameter can be estimated from field trials if carcasses that are not discovered in the first search after arrival are left in the field for possible discovery in later searches.</p> <p><code>p</code> and <code>k</code> may both depend on covariates such as season, visibility class, or carcass size, and GenEst allows for them to be modeled as functions of different covariate combinations.</p> -<pre class="sourceCode r" id="cb8"><code class="sourceCode r"><a class="sourceLine" id="cb8-1" data-line-number="1">?pkm</a></code></pre> -<pre class="sourceCode r" id="cb9"><code class="sourceCode r"><a class="sourceLine" id="cb9-1" data-line-number="1">model_SE <-<span class="st"> </span><span class="kw">pkm</span>(p <span class="op">~</span><span class="st"> </span>Season, k <span class="op">~</span><span class="st"> </span><span class="dv">1</span>, <span class="dt">data =</span> data_SE)</a> -<a class="sourceLine" id="cb9-2" data-line-number="2">model_SE</a> -<a class="sourceLine" id="cb9-3" data-line-number="3"><span class="co">#> $call</span></a> -<a class="sourceLine" id="cb9-4" data-line-number="4"><span class="co">#> pkm(formula_p = p ~ Season, formula_k = k ~ 1, data = data_SE)</span></a> -<a class="sourceLine" id="cb9-5" data-line-number="5"><span class="co">#> </span></a> -<a class="sourceLine" id="cb9-6" data-line-number="6"><span class="co">#> $formula_p</span></a> -<a class="sourceLine" id="cb9-7" data-line-number="7"><span class="co">#> p ~ Season</span></a> -<a class="sourceLine" id="cb9-8" data-line-number="8"><span class="co">#> </span></a> -<a class="sourceLine" id="cb9-9" data-line-number="9"><span class="co">#> $formula_k</span></a> -<a class="sourceLine" id="cb9-10" data-line-number="10"><span class="co">#> k ~ 1</span></a> -<a class="sourceLine" id="cb9-11" data-line-number="11"><span class="co">#> </span></a> -<a class="sourceLine" id="cb9-12" data-line-number="12"><span class="co">#> $predictors</span></a> -<a class="sourceLine" id="cb9-13" data-line-number="13"><span class="co">#> [1] "Season"</span></a> -<a class="sourceLine" id="cb9-14" data-line-number="14"><span class="co">#> </span></a> -<a class="sourceLine" id="cb9-15" data-line-number="15"><span class="co">#> $AICc</span></a> -<a class="sourceLine" id="cb9-16" data-line-number="16"><span class="co">#> [1] 104.42</span></a> -<a class="sourceLine" id="cb9-17" data-line-number="17"><span class="co">#> </span></a> -<a class="sourceLine" id="cb9-18" data-line-number="18"><span class="co">#> $convergence</span></a> -<a class="sourceLine" id="cb9-19" data-line-number="19"><span class="co">#> [1] 0</span></a> -<a class="sourceLine" id="cb9-20" data-line-number="20"><span class="co">#> </span></a> -<a class="sourceLine" id="cb9-21" data-line-number="21"><span class="co">#> $cellwiseTable</span></a> -<a class="sourceLine" id="cb9-22" data-line-number="22"><span class="co">#> cell p_median p_lower p_upper k_median k_lower k_upper</span></a> -<a class="sourceLine" id="cb9-23" data-line-number="23"><span class="co">#> 1 fall 0.618 0.431 0.776 0.921 0.177 0.998</span></a> -<a class="sourceLine" id="cb9-24" data-line-number="24"><span class="co">#> 2 spring 0.440 0.280 0.613 0.921 0.177 0.998</span></a> -<a class="sourceLine" id="cb9-25" data-line-number="25"><span class="co">#> 3 summer 0.619 0.437 0.773 0.921 0.177 0.998</span></a> -<a class="sourceLine" id="cb9-26" data-line-number="26"><span class="co">#> </span></a> -<a class="sourceLine" id="cb9-27" data-line-number="27"><span class="co">#> $CL</span></a> -<a class="sourceLine" id="cb9-28" data-line-number="28"><span class="co">#> [1] 0.9</span></a></code></pre> +<div class="sourceCode" id="cb8"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb8-1" data-line-number="1">model_SE <-<span class="st"> </span><span class="kw">pkm</span>(p <span class="op">~</span><span class="st"> </span>Season, k <span class="op">~</span><span class="st"> </span><span class="dv">1</span>, <span class="dt">data =</span> data_SE)</a> +<a class="sourceLine" id="cb8-2" data-line-number="2"><span class="kw">class</span>(model_SE)</a> +<a class="sourceLine" id="cb8-3" data-line-number="3"><span class="co">#> [1] "pkm" "list"</span></a> +<a class="sourceLine" id="cb8-4" data-line-number="4">model_SE</a> +<a class="sourceLine" id="cb8-5" data-line-number="5"><span class="co">#> $call</span></a> +<a class="sourceLine" id="cb8-6" data-line-number="6"><span class="co">#> pkm0(formula_p = formula_p, formula_k = formula_k, data = data, </span></a> +<a class="sourceLine" id="cb8-7" data-line-number="7"><span class="co">#> obsCol = obsCol, kFixed = kFixed, kInit = kInit, CL = CL, </span></a> +<a class="sourceLine" id="cb8-8" data-line-number="8"><span class="co">#> quiet = quiet)</span></a> +<a class="sourceLine" id="cb8-9" data-line-number="9"><span class="co">#> </span></a> +<a class="sourceLine" id="cb8-10" data-line-number="10"><span class="co">#> $formula_p</span></a> +<a class="sourceLine" id="cb8-11" data-line-number="11"><span class="co">#> p ~ Season</span></a> +<a class="sourceLine" id="cb8-12" data-line-number="12"><span class="co">#> </span></a> +<a class="sourceLine" id="cb8-13" data-line-number="13"><span class="co">#> $formula_k</span></a> +<a class="sourceLine" id="cb8-14" data-line-number="14"><span class="co">#> k ~ 1</span></a> +<a class="sourceLine" id="cb8-15" data-line-number="15"><span class="co">#> </span></a> +<a class="sourceLine" id="cb8-16" data-line-number="16"><span class="co">#> $predictors</span></a> +<a class="sourceLine" id="cb8-17" data-line-number="17"><span class="co">#> [1] "Season"</span></a> +<a class="sourceLine" id="cb8-18" data-line-number="18"><span class="co">#> </span></a> +<a class="sourceLine" id="cb8-19" data-line-number="19"><span class="co">#> $AICc</span></a> +<a class="sourceLine" id="cb8-20" data-line-number="20"><span class="co">#> [1] 104.42</span></a> +<a class="sourceLine" id="cb8-21" data-line-number="21"><span class="co">#> </span></a> +<a class="sourceLine" id="cb8-22" data-line-number="22"><span class="co">#> $convergence</span></a> +<a class="sourceLine" id="cb8-23" data-line-number="23"><span class="co">#> [1] 0</span></a> +<a class="sourceLine" id="cb8-24" data-line-number="24"><span class="co">#> </span></a> +<a class="sourceLine" id="cb8-25" data-line-number="25"><span class="co">#> $cell_pk</span></a> +<a class="sourceLine" id="cb8-26" data-line-number="26"><span class="co">#> cell n p_median p_lower p_upper k_median k_lower k_upper</span></a> +<a class="sourceLine" id="cb8-27" data-line-number="27"><span class="co">#> 1 fall 20 0.618 0.431 0.776 0.921 0.177 0.998</span></a> +<a class="sourceLine" id="cb8-28" data-line-number="28"><span class="co">#> 2 spring 20 0.440 0.280 0.613 0.921 0.177 0.998</span></a> +<a class="sourceLine" id="cb8-29" data-line-number="29"><span class="co">#> 3 summer 20 0.619 0.437 0.773 0.921 0.177 0.998</span></a> +<a class="sourceLine" id="cb8-30" data-line-number="30"><span class="co">#> </span></a> +<a class="sourceLine" id="cb8-31" data-line-number="31"><span class="co">#> $CL</span></a> +<a class="sourceLine" id="cb8-32" data-line-number="32"><span class="co">#> [1] 0.9</span></a></code></pre></div> <p>NOTE: The <code>pkm</code> family of functions by default interprets columns with names that begin with and “s†or “S†and end with a number contain search results data (carcass found = 0, not found = 1). A user can override the auto-parsing by explicitly listing the names of the search data columns in a vector of character strings in the <code>obsCol</code> argument.</p> -<p>The probability of a carcass persisting a given length of time with being removed by scavengers (or other factors) is modeled as a Weibull, lognormal, loglogistic, or exponential distribution. Like the <code>p</code> and <code>k</code> parameters for searcher efficiency, the location and scale parameters (Therneau 2015) of the persistence distribution may depend on covariates. GenEst allows for them to be modeled as separate functions combinations.</p> -<pre class="sourceCode r" id="cb10"><code class="sourceCode r"><a class="sourceLine" id="cb10-1" data-line-number="1">?cpm</a></code></pre> -<pre class="sourceCode r" id="cb11"><code class="sourceCode r"><a class="sourceLine" id="cb11-1" data-line-number="1">model_CP <-<span class="st"> </span><span class="kw">cpm</span>(l <span class="op">~</span><span class="st"> </span>Season, s <span class="op">~</span><span class="st"> </span>Season, <span class="dt">data =</span> data_CP, <span class="dt">dist =</span> <span class="st">"weibull"</span>,</a> -<a class="sourceLine" id="cb11-2" data-line-number="2"> <span class="dt">left =</span> <span class="st">"Left"</span>, <span class="dt">right =</span> <span class="st">"Right"</span>)</a> -<a class="sourceLine" id="cb11-3" data-line-number="3">model_CP</a> -<a class="sourceLine" id="cb11-4" data-line-number="4"><span class="co">#> $call</span></a> -<a class="sourceLine" id="cb11-5" data-line-number="5"><span class="co">#> cpm(formula_l = l ~ Season, formula_s = s ~ Season, data = data_CP, </span></a> -<a class="sourceLine" id="cb11-6" data-line-number="6"><span class="co">#> left = "Left", right = "Right", dist = "weibull")</span></a> -<a class="sourceLine" id="cb11-7" data-line-number="7"><span class="co">#> </span></a> -<a class="sourceLine" id="cb11-8" data-line-number="8"><span class="co">#> $formula_l</span></a> -<a class="sourceLine" id="cb11-9" data-line-number="9"><span class="co">#> l ~ Season</span></a> -<a class="sourceLine" id="cb11-10" data-line-number="10"><span class="co">#> </span></a> -<a class="sourceLine" id="cb11-11" data-line-number="11"><span class="co">#> $formula_s</span></a> -<a class="sourceLine" id="cb11-12" data-line-number="12"><span class="co">#> s ~ Season</span></a> -<a class="sourceLine" id="cb11-13" data-line-number="13"><span class="co">#> </span></a> -<a class="sourceLine" id="cb11-14" data-line-number="14"><span class="co">#> $distribution</span></a> -<a class="sourceLine" id="cb11-15" data-line-number="15"><span class="co">#> [1] "weibull"</span></a> -<a class="sourceLine" id="cb11-16" data-line-number="16"><span class="co">#> </span></a> -<a class="sourceLine" id="cb11-17" data-line-number="17"><span class="co">#> $predictors</span></a> -<a class="sourceLine" id="cb11-18" data-line-number="18"><span class="co">#> [1] "Season"</span></a> -<a class="sourceLine" id="cb11-19" data-line-number="19"><span class="co">#> </span></a> -<a class="sourceLine" id="cb11-20" data-line-number="20"><span class="co">#> $AICc</span></a> -<a class="sourceLine" id="cb11-21" data-line-number="21"><span class="co">#> [1] 235.508</span></a> -<a class="sourceLine" id="cb11-22" data-line-number="22"><span class="co">#> </span></a> -<a class="sourceLine" id="cb11-23" data-line-number="23"><span class="co">#> $convergence</span></a> -<a class="sourceLine" id="cb11-24" data-line-number="24"><span class="co">#> [1] 0</span></a> -<a class="sourceLine" id="cb11-25" data-line-number="25"><span class="co">#> </span></a> -<a class="sourceLine" id="cb11-26" data-line-number="26"><span class="co">#> $cellwiseTable_ls</span></a> -<a class="sourceLine" id="cb11-27" data-line-number="27"><span class="co">#> cell l_median l_lower l_upper s_median s_lower s_upper</span></a> -<a class="sourceLine" id="cb11-28" data-line-number="28"><span class="co">#> 1 fall 1.163 0.612 1.715 1.360 0.932 1.986</span></a> -<a class="sourceLine" id="cb11-29" data-line-number="29"><span class="co">#> 2 spring 0.857 0.169 1.545 1.679 1.198 2.354</span></a> -<a class="sourceLine" id="cb11-30" data-line-number="30"><span class="co">#> 3 summer 1.246 0.561 1.930 1.688 1.155 2.467</span></a> -<a class="sourceLine" id="cb11-31" data-line-number="31"><span class="co">#> </span></a> -<a class="sourceLine" id="cb11-32" data-line-number="32"><span class="co">#> $cellwiseTable_ab</span></a> -<a class="sourceLine" id="cb11-33" data-line-number="33"><span class="co">#> cell pda_median pda_lower pda_upper pdb_median pdb_lower pdb_upper</span></a> -<a class="sourceLine" id="cb11-34" data-line-number="34"><span class="co">#> 1 fall 0.735 1.073 0.504 3.200 1.844 5.557</span></a> -<a class="sourceLine" id="cb11-35" data-line-number="35"><span class="co">#> 2 spring 0.596 0.835 0.425 2.356 1.184 4.688</span></a> -<a class="sourceLine" id="cb11-36" data-line-number="36"><span class="co">#> 3 summer 0.592 0.866 0.405 3.476 1.752 6.890</span></a> -<a class="sourceLine" id="cb11-37" data-line-number="37"><span class="co">#> </span></a> -<a class="sourceLine" id="cb11-38" data-line-number="38"><span class="co">#> $CL</span></a> -<a class="sourceLine" id="cb11-39" data-line-number="39"><span class="co">#> [1] 0.9</span></a> -<a class="sourceLine" id="cb11-40" data-line-number="40"><span class="co">#> </span></a> -<a class="sourceLine" id="cb11-41" data-line-number="41"><span class="co">#> $cellwiseTable_desc</span></a> -<a class="sourceLine" id="cb11-42" data-line-number="42"><span class="co">#> cell median r1 r3 r7 r14 r28</span></a> -<a class="sourceLine" id="cb11-43" data-line-number="43"><span class="co">#> 1 fall 1.943506 0.7877998 0.5968500 0.4035271 0.2504831 0.1362684</span></a> -<a class="sourceLine" id="cb11-44" data-line-number="44"><span class="co">#> 2 spring 1.273808 0.6946923 0.5067622 0.3406993 0.2163474 0.1221627</span></a> -<a class="sourceLine" id="cb11-45" data-line-number="45"><span class="co">#> 3 summer 1.871560 0.7459730 0.5779176 0.4168571 0.2838980 0.1714068</span></a></code></pre> -<p>In other scenarios we might consider other predictors like visibility of the ground searched or search team. We might also be interested in carcasses of different sizes (e.g., large, medium, and small birds instead of or in addition to bats). We are not restricted to using the same predictors of both SE and CP. The modeling complexity increases with each additional predictor, but, in theory, any number of predictors can be used. The only rule is that sufficient numbers of trial carcasses must be placed in each cell combination of factor levels among the selected predictors. For example, if we were to place 15 carcasses for each cell for predictors that include season (spring, summer, fall, winter), size (S, M, L, B), visibility (RP, M, D), search team (dogs, humans), and turbine type (small, medium, large), we’d need 15 x 4 x 4 x 3 x 2 x 2 = 2880 carcasses. Typically, the number of predictors is limited to a few key variables.</p> +<p>The probability of a carcass persisting a given length of time without being removed by scavengers (or other factors) is modeled as a Weibull, lognormal, loglogistic, or exponential distribution. Like the <code>p</code> and <code>k</code> parameters for searcher efficiency, the location and scale parameters (Therneau 2015) of the persistence distribution may depend on covariates. GenEst allows for them to be modeled as separate functions of predictor combinations.</p> +<div class="sourceCode" id="cb9"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb9-1" data-line-number="1">model_CP <-<span class="st"> </span><span class="kw">cpm</span>(l <span class="op">~</span><span class="st"> </span>Season, s <span class="op">~</span><span class="st"> </span>Season, <span class="dt">data =</span> data_CP, <span class="dt">dist =</span> <span class="st">"weibull"</span>,</a> +<a class="sourceLine" id="cb9-2" data-line-number="2"> <span class="dt">left =</span> <span class="st">"LastPresent"</span>, <span class="dt">right =</span> <span class="st">"FirstAbsent"</span>)</a> +<a class="sourceLine" id="cb9-3" data-line-number="3"><span class="kw">class</span>(model_CP)</a> +<a class="sourceLine" id="cb9-4" data-line-number="4"><span class="co">#> [1] "cpm" "list"</span></a> +<a class="sourceLine" id="cb9-5" data-line-number="5">model_CP</a> +<a class="sourceLine" id="cb9-6" data-line-number="6"><span class="co">#> $call</span></a> +<a class="sourceLine" id="cb9-7" data-line-number="7"><span class="co">#> cpm0(formula_l = formula_l, formula_s = formula_s, data = data, </span></a> +<a class="sourceLine" id="cb9-8" data-line-number="8"><span class="co">#> left = left, right = right, dist = dist, CL = CL, quiet = quiet)</span></a> +<a class="sourceLine" id="cb9-9" data-line-number="9"><span class="co">#> </span></a> +<a class="sourceLine" id="cb9-10" data-line-number="10"><span class="co">#> $formula_l</span></a> +<a class="sourceLine" id="cb9-11" data-line-number="11"><span class="co">#> l ~ Season</span></a> +<a class="sourceLine" id="cb9-12" data-line-number="12"><span class="co">#> </span></a> +<a class="sourceLine" id="cb9-13" data-line-number="13"><span class="co">#> $formula_s</span></a> +<a class="sourceLine" id="cb9-14" data-line-number="14"><span class="co">#> s ~ Season</span></a> +<a class="sourceLine" id="cb9-15" data-line-number="15"><span class="co">#> </span></a> +<a class="sourceLine" id="cb9-16" data-line-number="16"><span class="co">#> $distribution</span></a> +<a class="sourceLine" id="cb9-17" data-line-number="17"><span class="co">#> [1] "weibull"</span></a> +<a class="sourceLine" id="cb9-18" data-line-number="18"><span class="co">#> </span></a> +<a class="sourceLine" id="cb9-19" data-line-number="19"><span class="co">#> $predictors</span></a> +<a class="sourceLine" id="cb9-20" data-line-number="20"><span class="co">#> [1] "Season"</span></a> +<a class="sourceLine" id="cb9-21" data-line-number="21"><span class="co">#> </span></a> +<a class="sourceLine" id="cb9-22" data-line-number="22"><span class="co">#> $AICc</span></a> +<a class="sourceLine" id="cb9-23" data-line-number="23"><span class="co">#> [1] 235.51</span></a> +<a class="sourceLine" id="cb9-24" data-line-number="24"><span class="co">#> </span></a> +<a class="sourceLine" id="cb9-25" data-line-number="25"><span class="co">#> $convergence</span></a> +<a class="sourceLine" id="cb9-26" data-line-number="26"><span class="co">#> [1] 0</span></a> +<a class="sourceLine" id="cb9-27" data-line-number="27"><span class="co">#> </span></a> +<a class="sourceLine" id="cb9-28" data-line-number="28"><span class="co">#> $cell_ls</span></a> +<a class="sourceLine" id="cb9-29" data-line-number="29"><span class="co">#> cell n l_median l_lower l_upper s_median s_lower s_upper</span></a> +<a class="sourceLine" id="cb9-30" data-line-number="30"><span class="co">#> 1 fall 20 1.163 0.612 1.715 1.360 0.932 1.986</span></a> +<a class="sourceLine" id="cb9-31" data-line-number="31"><span class="co">#> 2 spring 20 0.857 0.169 1.545 1.679 1.198 2.354</span></a> +<a class="sourceLine" id="cb9-32" data-line-number="32"><span class="co">#> 3 summer 20 1.246 0.561 1.930 1.688 1.155 2.467</span></a> +<a class="sourceLine" id="cb9-33" data-line-number="33"><span class="co">#> </span></a> +<a class="sourceLine" id="cb9-34" data-line-number="34"><span class="co">#> $cell_ab</span></a> +<a class="sourceLine" id="cb9-35" data-line-number="35"><span class="co">#> cell n pda_median pda_lower pda_upper pdb_median pdb_lower pdb_upper</span></a> +<a class="sourceLine" id="cb9-36" data-line-number="36"><span class="co">#> 1 fall 20 0.735 1.073 0.504 3.200 1.844 5.557</span></a> +<a class="sourceLine" id="cb9-37" data-line-number="37"><span class="co">#> 2 spring 20 0.596 0.835 0.425 2.356 1.184 4.688</span></a> +<a class="sourceLine" id="cb9-38" data-line-number="38"><span class="co">#> 3 summer 20 0.592 0.866 0.405 3.476 1.752 6.890</span></a> +<a class="sourceLine" id="cb9-39" data-line-number="39"><span class="co">#> </span></a> +<a class="sourceLine" id="cb9-40" data-line-number="40"><span class="co">#> $CL</span></a> +<a class="sourceLine" id="cb9-41" data-line-number="41"><span class="co">#> [1] 0.9</span></a> +<a class="sourceLine" id="cb9-42" data-line-number="42"><span class="co">#> </span></a> +<a class="sourceLine" id="cb9-43" data-line-number="43"><span class="co">#> $cell_desc</span></a> +<a class="sourceLine" id="cb9-44" data-line-number="44"><span class="co">#> cell medianCP r1 r3 r7 r14 r28</span></a> +<a class="sourceLine" id="cb9-45" data-line-number="45"><span class="co">#> 1 fall 1.943506 0.7877998 0.5968500 0.4035271 0.2504831 0.1362684</span></a> +<a class="sourceLine" id="cb9-46" data-line-number="46"><span class="co">#> 2 spring 1.273808 0.6946923 0.5067622 0.3406993 0.2163474 0.1221627</span></a> +<a class="sourceLine" id="cb9-47" data-line-number="47"><span class="co">#> 3 summer 1.871560 0.7459730 0.5779176 0.4168571 0.2838980 0.1714068</span></a></code></pre></div> +<p>The model summary shows descriptive statistics for the cellwise estimates of the <code>l</code> and <code>s</code> parameters. The <code>location</code> and <code>scale</code> parameterization is common in survival analysis, but the <code>pda</code> and <code>pdb</code> parameterization (Dalthorp and Huso, 2014) is also shown. These parameterizations are convenient to work with in statistical calculations but are not as convenient for giving users quick insight into the distributions, so a third set of summary statistics about the fitted distributions is also given. Namely, the median persistence time and the <code>r</code> statistic, which is the probability that a carcass persists until the first search after arrival (assuming uniformly distributed arrival times within the interval). Clearly, <code>r</code> depends on the length of the search interval, and the table shows <code>r</code> for intervals of 1, 3, 7, 14, and 28 days. A rough, back-of-the-envelope calculation for the probability of observing a carcass that arrives at a site during the monitored period would be <code>DWP * r * p * f</code>, which is <code>DWP</code> = fraction of carcasses that arrive in the area searched at a unit, <code>r</code> = fraction of carcasses that persist until a search, <code>p</code> = fraction of carcasses found on the first search after arrival (given that they persisted), and <code>f</code> = fraction of carcasses that arrive at the units searched.</p> +<p>In other scenarios we might consider other predictors, like the visibility of the ground searched or the search team. We might also be interested in carcasses of different sizes (e.g., large, medium, and small birds instead of or in addition to bats). We are not restricted to using the same predictors of both SE and CP. The modeling complexity increases with each additional predictor, but, in theory, any number of predictors can be used. The only rule is that sufficient numbers of trial carcasses must be placed in each cell combination of factor levels among the selected predictors. For example, if we were to place 15 carcasses for each cell for predictors that include season (spring, summer, fall, winter), size (S, M, L, B), visibility (RP, M, D), search team (dogs, humans), and turbine type (small, medium, large), we’d need 15 x 4 x 4 x 3 x 2 x 2 = 2880 carcasses. Typically, the number of predictors is limited to a few key variables.</p> </div> <div id="mortality-estimation" class="section level3"> <h3>Mortality Estimation</h3> <p>Each carcass’s contribution to the total mortality in each search interval is estimated using the <code>estM</code> function.</p> -<pre class="sourceCode r" id="cb12"><code class="sourceCode r"><a class="sourceLine" id="cb12-1" data-line-number="1">?estM</a></code></pre> -<pre class="sourceCode r" id="cb13"><code class="sourceCode r"><a class="sourceLine" id="cb13-1" data-line-number="1">Mhat <-<span class="st"> </span><span class="kw">estM</span>(<span class="dt">nsim =</span> <span class="dv">1000</span>, <span class="dt">data_CO =</span> data_CO, <span class="dt">data_SS =</span> data_SS,</a> -<a class="sourceLine" id="cb13-2" data-line-number="2"> <span class="dt">data_DWP =</span> data_DWP, <span class="dt">model_SE =</span> model_SE, <span class="dt">model_CP =</span> model_CP,</a> -<a class="sourceLine" id="cb13-3" data-line-number="3"> <span class="dt">unitCol =</span> <span class="st">"Turbine"</span>, <span class="dt">dateFoundCol =</span> <span class="st">"DateFound"</span>)</a> -<a class="sourceLine" id="cb13-4" data-line-number="4"></a> -<a class="sourceLine" id="cb13-5" data-line-number="5"><span class="kw">summary</span>(Mhat)</a> -<a class="sourceLine" id="cb13-6" data-line-number="6"><span class="co">#> median 5% 95% </span></a> -<a class="sourceLine" id="cb13-7" data-line-number="7"><span class="co">#> 1461.28 1012.15 2148.02</span></a> -<a class="sourceLine" id="cb13-8" data-line-number="8"><span class="kw">plot</span>(Mhat)</a></code></pre> -<p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAqAAAAHgCAMAAABNUi8GAAAA81BMVEUAAAAAADoAAGYAOjoAOmYAOpAAZrY6AAA6ADo6AGY6OgA6Ojo6OmY6OpA6ZmY6ZpA6ZrY6kJA6kLY6kNtmAABmADpmAGZmOgBmOjpmZjpmZmZmZpBmkJBmkLZmkNtmtttmtv+QOgCQOjqQOmaQZgCQZjqQZmaQkDqQkGaQkJCQtpCQtraQttuQ27aQ2/+2ZgC2Zjq2kDq2kGa2kJC2kLa2tra2ttu225C229u22/+2/7a2///bkDrbkGbbkJDbtmbbtpDbtrbb25Db27bb29vb2//b/7bb/9vb///m5ub/tmb/25D/27b/29v//7b//9v///9d/3d0AAAACXBIWXMAAA7DAAAOwwHHb6hkAAAdHElEQVR4nO2dC5vctnWGsZJ2x7pYUTub+pLa3nVqNXEdjazWbt1lazmWk90ZaWf+/68JCPAGEuCQwCFxMPzeJ7GGHOIyxLsAAZKAOADAGBE7AwD0AUEBayAoYA0EBayBoIA1EBSwBoIC1kBQwBoIClgDQQFrIChgDQQFrIGggDUQFLAGggLWQFDAGggKWANBAWsgKGANBAWsiSLo/eWDG/nP/lr9U7N9cHP/+1c9AffXV/rD7qP8sI0QZ6+M/TJqIfJY838vjCT19v5aiLX8NxNCBtl9fNs8IP9m9/imseuiirwMWG6XCTUztlvJOM6rKBvHmBlvZq6Mtzh2I1rnZOnEEfT3T1R5Pn3cEbQ3nCzMq+JDLuZmXQSp9stilvuyBzf76wu5d90IeVH9Pz9GepKH3JReS7eu8tAXhqDqj0VHXgYst8uEjIxtm38SzWPMjDczV8ZbHbt7DEGbRBL0T3lRZv8qCyOvQfJKR9YgZ3/SNaiqiK7kUd+uRCliTiYefaLLOXsuKyJdixr7ta8yjvtLuSO7qMKq/TKACrM9v5Ua5P+rKtDCl+3Zq1yQIpAStIi8DFhulwkZGah9NzLTzniVuUMdb3UsBDWJJOhf/kWq+cf/fnyjzMjOb/N/85a/lGsjP+YXAptGi/n/N0VLufv4r7Jct+VX1f4CWejtGjTTfwNXKkyupqpBX79qBCk/tWrQIvIyoJFYGarYt//6idHCV8e0Mt7MXBVveSwENYkk6CtZ2exeyMIomugr9W/jGjT/eHnVbvWLy8GvVU2YnX/fucTTG3nltBGisU/XoKsrJaoKLL/evTC/V3SaeB15FbCRmE6ozphqphuXtY1jjIw3M9eIVx8LQU1iCZqtD9laFoYUJWedFTWJkkJ3GJyCZuvCsfIa1BBUFbNyZVNfEuZXl1KLq6YPh9evslIUH0Ebfhq9tGZlXh5jZLyZOSPeiwMEbRNL0N3Hf/86v97LiiaxIajUc91Xg+Z1lK5Bb+sudqO3k7ed26aIKknp/FfXV80WdXuR50N/Luuw31yCNgKWzfWqvoJoZMCozKtjjIw3M1fHWxwLQU1iCbr/+tuPb8sm/lCIqJt4VWY9ghaVrpatLej2rFHuH5lDVrpnVHyp2tvHN5WE2o7VlUPQZkCVWJFQM2NGx+lgHNPNeJG5Kt7yWAhqEktQ1UDv8k6SLhw93KIFzQdbVmevnE38QRdvLUV7fLRs4usOiz5+3RgtyseE6hpU11/WYSYdeSOgFtaUvzimrGrNzLQz2MxcY9yrOACCGkQTtOyx5sNMeeUh/y2HmWQX4sH/Xl5Vgm6qttQUMQ/a7CTJ48pKSjXpuQJl2K0ehq/H22UFqvY2R/jLgfrmMJNjoL5KaFNL2060OsY2UF8eV8RbHQtBTU79VufuS/+w/Xe1JkoUgpqcuqD/5+lYjregIYlCUJNTFzSE4l78rOBefAsIClgDQQFrIChgDQQFrJlcUPwFgBAgKGANBAWsgaCANRAUsAaCAtZAUMAaCApYA0EBayAoYA0EBayBoIA1JyyoEPjjSJ+UBBWe0OUAzE5Sgg4/Mueu0BOCpsxJCprbqUENmjpjS29bzhmbkxUb6p1yxwtm8wsqaj+1oXQ5ALMzsvTyCVqqCV3y+VbVRnuOmYAE+hgWVVNPGJo84wpPT2FUTMymZnBRU7L1zYw8t6AtP7WidHkAMzOu7NRE2fXM14dC0Kzn9fGZBe36iTo0aUYKqtryZoWZqTm6n4py4qLABHoZJmjbzzuMOKXMuCLTl5/1rIJb5eX9ZXOaLh3tFE4MiMpSgRqCYvg0NcIEzZv4crpBx4XorILa/LwT9VXoGO0gKAtCm/jaVn19GphAL0ejsvppXINC0NQI7STVXjrGmuYV1OKn2YsfbigEZUHAMJNWU1an1YfwBHo5FpW9AoWgSRMyUJ/PYq2UVcZu7N34+QR1+AlBk2ZsMWTlhN3FWkR6Cu3qQ3gCPRwV1OonBE2a03lYxFWBQtCkOSVB7X5C0KQ5GUGdFSiGmZLmVAR1+4mB+qQ5HUFdfkpBvW7HQ1AWLENQH0MhKAtORNCeFv7O8/llCMqCkxHU6acp6PC3lCAoC05D0L4K9M7yhP2gJ0vpMg78ORVB3X52BB1oKARlwUkI2luBdgUd1sxDUBaciKA9floEHVSJQlAWLFTQAZUoBGXBKQja38LbBT1eiUJQFpyGoH1+ugQ9ZigEZcEJCHqkAnUKesRQCMqCkxC010+3oP2GQlAWLFrQXkMhKAvSF/RYC98naN+8TRCUBacgaL+fvYL2GApBWbB0Qd2GQlAWJC/o0RYegibNCQh6xM8jgjoNhaAsgKAuQyEoC1IX9HgLD0GTJn1Bj/l5VNA7CMoYCOqqQiEoCyCoqwqFoCxIXNABl6CDBLVFTZdx4E/ygh61b4Cg1ioUgrIAgrqqUAjKgrQFHdLCQ9CkSV3Q4/INEdTWxkNQFkDQQtBO5BCUBRC0NHTCjAN/khZ00CUoBE2ascVgXS/e3BuWQA8WQQe5N0zQduwQlAUji8G+XryxNyyBPqYUtFuFQlAWjCsG+3rxxt6wBHqBoAtkXDHY14u3LJDom0AvEwsqjqQGYjBSUOt68ZYlZidZ1bpTx1EK2qlCISgLxhWDfb347iLd3gn00hV0mHkQNGHCBNXrxZ+KoKI3NRCF0CY+99Ky1zeBXiDoAgntJOW7InWSBl6CDhW03cZDUBYEDDNVy8RHGmYa6CcETZqQgfpqvfg4A/X0goqe1EAcxhaDfb34LMatTmpB7yAoQxJ+WASCLoF0BR3aRxojqHCmBiKRsqBDvRsq6B0E5QcEhaCsgaAQlDXJCjr4EnSUoMKRGohFwoIO1m6woHcQlB0QFIKyBoJCUNZAUFNQYU8NxAKCtgydIuPAn1QFHd6Jh6BJk66gw6WDoAkDQVuCCltqIBoQtG3oBBkH/kBQCMqaRAUd0UeCoEmTrKAjnBsnqOimBuIBQSEoayBox1D6jAN/ICgEZU2ago7pI0HQpElV0DHKjRRUkGcc+ANBu4aSZxz4A0EhKGsgKARlTZKCjuojjRdUUGcc+JOooKOMg6AJA0EthlJnHPgDQSEoayAoBGUNBLUIKogzDvxJUdBxnfjRgt5BUEakKeg43yBowkBQCMqascXQXHh7fy3USnOH+8t8zcPZVvmAoAtiZDE01/PYX8sPWe6lXsmLJIE+5hNU0GYc+DOuGCzrJKlF4+1reHkk0Mtcgt5BUD6MKwbLmnJ5fZrZW3ePBHopn+KAoAtipKDdVTk3cmPztLgYraOdcDnukX5C0KQZVwzddY23Usz7y/NbaeraGgSCghACBd3WfffZVjueQ1ABQZkQ1sRvGw27vj4NTKCX2QS9g6BsCOokZc0LT8dYEwQFIQQMM0k/dZ1ZrcsdnkAvxVNGEHRJBAzU71Zl/amMnauTNNZPCJo0Y4uhsRx3poeR8s1qXe7wBHqYU1ABQXmQ3sMicwh6B0G5AEEhKGsgKARlTXKCju7EewpKeY8W+NMshv1/3U6bAEVUo/30EvQOgjKhWQz3l+LhF9SOQlAQglGDvl7Jcnn0HamjEBSE0CqGX7+hdhSCghC6xaAdffbdZAmERQVBl4W1GH59mTv6u58mSyAgqpkEvYOgPLAVw4c3T/RdzBcELT2xoONHmSBo0nSK4cMbVXv+z+HwduV4kzgsgbCoxvsJQZPGLAZtZ3n9uVv1vK3pl0BwVDMKCkM50BoHNXrw95cLFhRVKA9MQc1x+vcvCbryEBSEYJTCb1MnEB4VBF0YRil8qA19/+MUCQRH5dGJh6BJYzbx1TUnyeVnJ4HwqDz89BcUhjLAIShJB76TQHhUEHRplIWgZ1BscE50Ox6CghCqQtiafj5yT6jomQBJVBB0aTia+GkSCI8Kgi4N43nQl3+gf6SeVFCfTnyAoDA0Pmm9k+Tjp7egGGjiQNVJ+vTZzf2nT2uecezFQ9DFUffiH9wYPXmWw0wQdHGUZbD/5cfb/S8/1PzIcZhpbkFhaHRwDQpBWQNBe4JB0PjUnaSnJhw7SV6jTBA0aZy3Ojl2krz8hKBJU3eSfjDh2EmaX1AYGpukrkHnFhRVaHwgKARlTVJ3kiDo8hh7J8m6HLex15EARV4jCApDIzPyTpJ9Oe7mXlcCFHn1fMMdgibMuAKwL8dtrp4UlEAv8wuKNj46nQL4VdaezteP7ctxW/b2JOAPBF0gZgHs1dQ38oLyK/vR9uW4LXunWY4bgi4PowBUr+fp5/nq7y+sR9uX4+7udSUQRhRBYWhcjPOflVXnz46F4+zLcc8kqGcnPkhQVKGxMd5Juq60zOyvHduX47Y08fYEArMaZBoETZNxM4vYl+OeqZMEQZfIOEHty3HPNMwUSVAYGhXj9G+qJn7rmFzZvhz3PAP1UQRFFRoZ4/TfX57pGUF3q0eOW/H25bizOW51QtAlUt3qfPm55DMpmvzniRDPqeZwICtf3048BE2adJ6ojyYoDI1JOk/URxIUVWhc0nlgGYIuEufZ/zB1AqMjiiYoDI2IefI/vCkfqsc1aBUMgsakNczEt5Pk+VI8BE2c1kD92fPPV2fPP1uJLydJICQeEWwaBE2Q7sMi+e0kwrmWT0FQGBqP7r149QSIfkyJOoGgeKIJiio0Jl1B1W34+0tuq3xA0GViNvENQfl1kiIKCkOj0X2aSa3hxW4hLwFBl4lx6rdCvLiVXaX1uw23hbzyMaZYgqKNj4h56rN8+FMv6WV9Jyk4Af9oIOgyaZ3693+WFefbJ873joMT8I4mrqAwNBapPCwSVVBUofEYN7MIRQKe0UDQZTJuZpHgBLxjiS0oDI3EuJlFQhPwj0XQmAZBU2PczCKhCfjHEldQtPHRGDezSGACAbFEFxSGxmHcxA2BCQTEAkEXCgQdFgyCRmLkzCKBCXhHAkGXytiZRcIS8I5EkJnmLSgMjUIaM4vEFxRVaCTSmFkEgi6WNGYWYSEoDI1BGg+LMBAUVWgcOmf9wy8//MjtYRHBQ1AYGoHWSf+Z5cMixZQNEHSBmCf9df6wyNMn3B4WYSEo2vgotN9J+ue8b7T/ntfDIlwEhaHz07qTVE7XkLG6kwRBl4t5L76aaN752nFr4e3d45tDOYg62SofgoegaONjMPJhkdZ6HsVheiWv4wn45lG4lJlbUBg6O+bzoI0a1Po8aGtFpG1xw8mxyFwnAd88MhEUVWgEWteghZb7a3uDba4ptxVrrWbWc8F6WoLC0LkxzvhuJR599+7du7efOJY96qzKqT9u8reYHNPhQVAQgnnGtytRr85lobvacS6ongpv0zSUdL14NoKijZ+f1hnfv8lH6R9+4XhSxC5o52NPAj5Z5CQoDJ2ZcSfc0cTr71bWsX0KQelNg6Cp4OjFO+gsvN0U1D7WdFKCoo2fHcc4qIPOwttKUK3thE08J0Fh6LyMq0E7C28Xvfjc2I29G39agqIKnRvzYZHV+U9Hjm8sx61C6Gpz455QNLhABTNBYeisGDXoy0/U43aKZ1zeSarX74KgC8S8BuX40lw0QX2hOGugxKhBf+H40hyvGvR4FQpBSWH/0pxgJujRbhIEJSUBQacyzTPYsSoUgpLSOJ0/PxHi0XcTJuAXHoIumvp0bvQl/ovJEvAMz03QY4ZCUFKq07kVZ1+8e0f4tlw7Ad/wEHTRVKezeGGO7m25dgKewfkJeqSbBEFJqeZmKm5zOt71CE/AN7gYooynaZ7B+qtQCEpKPbudHpmnm1q5lYBvcIaC9lehEJQUCOoRrLcKhaCkMBdUQNCFw17QSU3zDdZnKAQlBYL6BIOgswFBvYL1GApBSakFbT00xuNxOwi6dHgLKrgK2mMoBCWF99NMhp8QdIlAUM9gEHQeIKhnMGcVCkFJYS2oYCyoswqFoKQwF3QO0zyDuapQCEoKBPUOBkHnAIJ6B3NUoRCUFM6CCt6COqpQCEoKb0EP85jmGcxehUJQUiBoQDAIOj0QNCCYtQqFoKQwFlSwF9RahUJQUlgLeuAvaPfnQVBSIGhQMIuhEJQUCBoUDIJODV9BRQqCWgyFoKRwFvQAQcHY02ldjru9NySBOmASgnYNhaCkjDyd9uW422t/BCTQCJiMoOZPhKCkjDud9uW4O6sn+SfQCJeIoJ0qFIKSMu502pfj7qw/559AI5wKOKdpvsFahkJQUkYKal2rs7PXP4FGuJQEbf5ICErKuNNpX+24s/cQvhy3SEfQOwg6IRMJ6ptAHUyHm9c032CGoRCUFK5NfGqC1j8TgpIS0kk6GKsd03aSkhL0DoJORtAwUyHoBMNMIi1Bm4ZCUFLCBuqLdp1+oL4s79lN8w1WGwpBSRl7Ou3LcWfEtzpFioKKgB8MXPB8WKSqjuY3zTdYZSgEJQWCUgWDoJMAQcmCFYZCUFJYCiqSFLQwFIKSwlTQ8lMc03yDKUMhKCkQlDCY6ihBUFI4CipSFfQu4OkYYIenoNXHWKb5BoOg1EBQ2mAQlBiGgoqUBYWhxLAUtP4c0zS/YDCUFn6CivQFhaF0cBS0sRHRNAjKAghKHEyGg6GEsBNUpC8oDCUkhqDCl1lNCxMUhhIRRdDe441vI5oWICiqUDq4CSpOQlAYSgY/QY3NiKYFCQpDqWAmaLtcI5oGQVnATlBzO6JpYYLCUCIgKHGwKhwMJYGXoJ1CjWgaBGUBN0FbOyKaFiooDCUBghIHMwSFocGwErRbohFNCxYUVSgFzARt74loWrigMJQAToJayjOiaRCUBbwE7eyKaBqBoDA0HEaC2kozomkQlAWsBO3ui2gahaAwNBg+glrLMqJpJILafxUYDidBLTsjmgZBWcBGUHtJRjSNRlAYGggjQW17I5oGQVkAQYmDtQWFoWGMPXnGyvDlxv1lft958DI0tjQdxRjRNCpBYWgQI8+dseBMtaGXmhucgF1Qa+iIpkFQFow7d8aSXfWGYxVEVwL2N5GtoSOaRiYoDA1h3KkzFj2sNzJ76+5KwCqoPXRE0yAoC0YK2lw2tt7YPJVlsDairRmSprMII5pGJygMDWDcmTMW3q427i/Pb2Vbv7YGGSioI8GIpoVMHubDqIJYDhSCFt8NXu24s8tdPBFNI6xBh1ShENQOSROvv1OXpEMSsAjqSjCiaZSCDjAUgtoh6STp7+xjTQME7Sm9iKZBUBZQDDNpU/2b+J7Ci2gaqaDHDYWgdkgG6pWx3p2kvrKLaBqtoEcNhaB2xp4XY734apn4jTz91ivQYYK6k4toGgRlQfyHRXpLLqJpxIIeMxSC2okuaH+5RTSNWtAjvxSC2mEgaF/oiKZNIWjPb4WgdmILeqThi2gauaD9hkJQO/EF7Q0d0TR6QXv/GiGonciCHuvbRjRtAkH7fi4EtRNd0P7QEU2bQtAeQyGonbiCHr2/EtG0qQR1/GIIaieqoMfvUEc0bRJB3YZCUDuRBT0WOqJp0wjqNBSC2okp6ICnJCOaNpGgLkMhqJ24gh4NHdG0qQR1GApB7UQUdMhrDhFNm0zQg/UNDwhqJ6qgx0NHNG06Qa2GQlA78QQd9J5YRNMmFNTWzENQO9EEHfYeY0TTJhW0W4lCUDsRBR0SOqJp0wraMRSC2okl6MAXwSOaNrGgbUUhqJ1Igg6dqCCiaZMLahoKQe3EEXTwRBoRTZteUENRCGonlqADQ0c0bQ5BD/WsNxDUThRBh89EFNG0WQStK1EIaieSoENDRzRtJkHLWhSC2okj6ODQEU2bTdBmQw/axH4n6QgRTZtR0KoWFd09S1cXghIH8xPUFHIMw1NIEwhKHMxbUPUfm3jLlhSCEgcLErT/iEVaCkGJg00nqCvYaVsKQYmDzS+o/vdUJYWgxMEiCao3TlBTCEocLKagaseJXZhCUOJgcwvqi19y8wNBiYPFrkHNb51CQtCeBCDosPNEFMwq6ckKal2O29x7NAEIOuw8EQbrSHqqgtpX+TD2Hk8Agg47T8TBjPb+RAW1r5Nk7B2QAAQddp6mCBbWUYrQJRsX1L7SXGvJuaMJQNBh52mqYN6a+eP348b/QPtana1FO1vngMUJAnGZS1D7asetZY9DEgDABIIC1kzUxPsmAIBJjE4SAIOJMcwEwGBiDNQDMJix/tiX485G3eoEYDAxHhYBYDAQFLAGggLWQFDAGggKWANBAWumFxQAKwP9mVbPMCbJ3BSRJpPRdH79LJGHsuwiSiZSCMo+0mQyms6vnyXyUJZdRMlECkHZR5pMRtP59bNEHsqyiyiZSCEo+0iTyWg6v36WyENZdhElEykEZR9pMhlN59fPEjkAoUBQwBoIClgDQQFrIChgDQQFrIGggDUQFLAGggLWQFDAGggKWANBAWsgKGANM0F3j9UsuN0VwnqWChsY6f1l/q7rBUWk+2sZ05o4o1WkhBltzDtImNMyTtKMuuAl6P2lmqa5O/Fo3wykAyPVE5VbYx/J/loGyvKSIcxoHSldRvW0144MekdaxUmZUSesBJV/f7lL3ambe+dwHhZpNYd+eKTVlOeUGa3nUafLqPzbXOu5XAlzWsVJmVE3nATdirX6zd3J73tnwR8W6SErzhtFpCris1ekGS0jJc9oLhN1TpWg1Bm1wknQQ/FH2V0+pHcdkWGRHjZP9TUeUaSHjS1/gXHmkZJnNJPSU+c0j5M8o1Y4CtpdgKl3JaZhkd5fnt/Kc7oeuLzT8UiFLaqwOFWkxBndKodoc6rjpD6jdhYjaPWRqtwvJsioqC7fyDKaN8fnt9Q5zeMkz6gVjoJO08Qr5FUSSaRbNSBEnFEdKW1GVbzyapn6YqSykDKjNlgKSnxF3xT0I0vPZnyMmVaJNqNZw0+qjB6KbJJ353Rw4oza4Cgo7TCTYf3WNjY0mkzo0iHNaBkpZUZ74gocZNuWOtJk1A1HQYkH6stefH7eNmuCSHersqojzGgdKV1GZTTyUlFpQ5jTKk7KjDphKahlhbCepcKGRroRQldSoZFmeobgPChdRhuRkmX00BuXd6RVnJQZdcFMUABMIChgDQQFrIGggDUQFLAGggLWQFDAGggKWANBAWsgKGANBAWsgaCANRAUsAaCAtZAUMAaCApYA0FnY38b8vVSgaCBbM+ef/Fb8Xn/n5995Hye/O0nV+1d95f6qfwL+9fgAEGD2RYTvOX0vfCwvxZ9gtq+BgcIGsxWPFwVkxjsrx+uPAR1fg0OEDSYrTj/t0Kz+8t/uoSgxEDQQKSg3xczLmzP/lIY9/4b2fA/+0l/v96uxKPP1DubuYNvP5UfHn6RV7p1E6/f6bzalZXxpjmJw6KBoIFIQf9aaLU5/5sWVBqpXiFWExuI53Lrwb+Xgr7WrxeLPEhHUDWL7cGoWpcOBA1ECvr36wd6jvELLdZuJc5/Onz4RvWYZCdKbvxWtuFbcfaVbNBfK1m7naSsnFn8HINOGggaSO5SVrh3pY3bFHpt1Ax4Rce+MLBou+XW2iZo0cajha+AoIHkguppEzcPbpRxVX9H1YNbPQF5qxfkElS38WjhayBoILmFapkG2cJrsyq9dqt8xvmiOq0F3f/6w8snwi6obuPRwtdA0ECUTBtpl2zhS0GL+QfVh7agPz8pekl2QdW0xWjhayBoIErAvN7bqFr0WA2aLyT07A//8c7RxMsLhbNXaOEbQNBAlICyb/M32cIfrNegTUH1taf7GlSPmwrSGTbTBoIGogSUfZtvV5VxRS9eOndxaAlaNv/blUtQ2cZ/j5tKNRA0EC1gJp7W3e/WOGgl6Jdq9cAL6fObleUa9Esd4ebsCekc2okDQQPRAm6bt4Zad5Kqu5e5lMU8tbKWvDAft9s0lv9EC18DQQPZFmYW68AW9+Lz++2/+6n+XrL/RpmX9+IffqV3NwUtvlZRoYWvgaDcqEapQA4E5Qb68AYQlBnvMQhqAEFZsRHoIplAUFbITv4L3IZvAkEBayAoYA0EBaz5B7dpumBbS7AAAAAAAElFTkSuQmCC" style="display: block; margin: auto;" /></p> -<p>Mortality estimates may be partitioned or split into desired categories, such as species, season, or unit. Splits may be performed according to characteristics of the carcasses or where they were found (e.g., species, turbine or other variable found in <code>data_CO</code>) or when they were found (e.g., season or other variable associated with search schedule and found in <code>data_SS</code>, or a vector of specific times).</p> -<pre class="sourceCode r" id="cb14"><code class="sourceCode r"><a class="sourceLine" id="cb14-1" data-line-number="1">?calcSplits</a></code></pre> -<p>Species (a CO split because it is a column in the CO file):</p> -<pre class="sourceCode r" id="cb15"><code class="sourceCode r"><a class="sourceLine" id="cb15-1" data-line-number="1">M_species <-<span class="st"> </span><span class="kw">calcSplits</span>(<span class="dt">M =</span> Mhat<span class="op">$</span>Mhat, <span class="dt">Aj =</span> Mhat<span class="op">$</span>Aj, <span class="dt">split_CO =</span> <span class="st">"Species"</span>,</a> -<a class="sourceLine" id="cb15-2" data-line-number="2"> <span class="dt">data_CO =</span> data_CO)</a> -<a class="sourceLine" id="cb15-3" data-line-number="3"><span class="kw">summary</span>(M_species)</a> -<a class="sourceLine" id="cb15-4" data-line-number="4"><span class="co">#> 5% 25% 50% 75% 95%</span></a> -<a class="sourceLine" id="cb15-5" data-line-number="5"><span class="co">#> BA 548.94959 713.939776 835.09626 987.58078 1227.33387</span></a> -<a class="sourceLine" id="cb15-6" data-line-number="6"><span class="co">#> BB 184.92165 270.303236 347.31537 446.31211 674.18114</span></a> -<a class="sourceLine" id="cb15-7" data-line-number="7"><span class="co">#> BC 67.75186 117.380667 160.92797 204.17135 291.06128</span></a> -<a class="sourceLine" id="cb15-8" data-line-number="8"><span class="co">#> BD 25.98468 57.116542 85.89207 121.55449 192.44647</span></a> -<a class="sourceLine" id="cb15-9" data-line-number="9"><span class="co">#> BE 1.00000 3.311054 11.98225 23.28937 44.97219</span></a> -<a class="sourceLine" id="cb15-10" data-line-number="10"><span class="co">#> attr(,"class")</span></a> -<a class="sourceLine" id="cb15-11" data-line-number="11"><span class="co">#> [1] "splitSummary"</span></a> -<a class="sourceLine" id="cb15-12" data-line-number="12"><span class="co">#> attr(,"CL")</span></a> -<a class="sourceLine" id="cb15-13" data-line-number="13"><span class="co">#> [1] 0.9</span></a> -<a class="sourceLine" id="cb15-14" data-line-number="14"><span class="co">#> attr(,"vars")</span></a> -<a class="sourceLine" id="cb15-15" data-line-number="15"><span class="co">#> [1] "Species"</span></a> -<a class="sourceLine" id="cb15-16" data-line-number="16"><span class="co">#> attr(,"type")</span></a> -<a class="sourceLine" id="cb15-17" data-line-number="17"><span class="co">#> [1] "CO"</span></a> -<a class="sourceLine" id="cb15-18" data-line-number="18"><span class="kw">plot</span>(M_species)</a></code></pre> -<p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAHgCAMAAABKCk6nAAABBVBMVEUAAAAAADoAAGYAOjoAOmYAOpAAZpAAZrY6AAA6ADo6AGY6OgA6Ojo6OmY6OpA6ZmY6ZpA6ZrY6kJA6kLY6kNtmAABmADpmAGZmOgBmOjpmZgBmZjpmZmZmZpBmkGZmkJBmkLZmkNtmtttmtv+QOgCQOjqQOmaQZgCQZjqQZmaQkDqQkGaQkLaQtpCQtraQttuQ27aQ29uQ2/+2ZgC2Zjq2Zma2kDq2kGa2tpC2tra2ttu225C227a229u22/+2/7a2/9u2///bkDrbkGbbtmbbtpDbtrbbttvb25Db27bb29vb2//b/9vb////tmb/tpD/trb/25D/27b/29v//7b//9v///9qykvnAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAXW0lEQVR4nO2djX/btpnHIceelKRpnU3qkl17y2L15qxbszN9TXO7JA2bdHVS8yZH1P//pwyvJKgXiqRAAHz8+32SWDGA5wHxFV4JgmwFkRYLnQGoXwEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcfkGnLFC02rIzV9l8HRrsrVom1pMxm2ysW4lnx+91c63Osjno4s6c+cTxkanr5s533+RDhUNYEVo77XvAtkO8EbsEvB2Q/WA0x3f2R0iDnjHxTUk1CfgGkO1gBcT9rtrHufFpLaahxEASx0EuLim1GfVbKjAgN/d533Xk2vdyk1lMC/sHy8Ze7jKz/m/PIx3cTwae/C6iLZavX/E2J2n0sbNYx7tl4LLZnLpRUVOj948Ykfn2kppt2iilYPF5OS6klsO+L8vVdSNsOo1afcPVH9sZTO/nLDRn6z4VlhRDO4VFrDuvHiJVQH/Qfzv6Vxz4E2gFK9EBrBO+HBlQr+wAVeT5/PCCwfMw06+VyGW3TXApsImpt7yX9wvoq6FcTujpwUcbukvOmYlmzoX06IMrLCyGNwr3CCLl+hyJorhRpZYOcjiRXH0evWOX/Dr1U/iqhPZxd3MyjFQxo5f8d88YmciNq+m7yasBLyWPGWj57y+TNQXQxa8smLZXR9kKQYL61sjjOSJ8LIexn8jxtBffHetY7KnRcwim9zz8WvxVbjQBqwwuxicKzTg5yagApgXiLrq5cz0jbqH02hUWSxnY9NipjbgSnJT42RE3UtWOtp0C+DlTNZ3YckyqrKzHiaCX8j6fSwbe+lCxrSyqXORKrbTyiXYxeBcYZvohJfKnScfxUcbsLh2NezRgPOrl88es6L8TaMrWrVMkbUrWzW54qF/o7GY2IXdjWlSKhuH4ttlPiaqMlbCtK445GoLbmfT5MKUgR1mF4NzhQWcX8prPH5bBSzKzgKcn5fTTBltOSubgWy9Tq4nLwHLPtwCbNndACx+WPXc8JTp18JKiWbEAOYx7WyuA7bD7GJwruDTpKtnvHUb1wJO2Oirv778mFo1uKw+W2rwLsDrNdiyuwFY/MJqhYsabFoHK6zsRoSrSg0us7lZg6stgCkG5woOmGshLn43YF02qnMzaIri3dIHV5Ov9cElYNvu5kpWxofhJQO7D14P47l5Wual0gfb35BydKf6YLsPL4vBuYICXkzEsISPeCXg31zvAizGIHy8qcpfRRvxMs2/F1T5ePVajJF3AV4bRWvA3Ipt1wb8G1nMy9mdSZlVNYq+mSsv1TAxcHzIO9Ccuzgz4+25GkWX2ZSj6Bv5PdGj6CLMLgbnCrgWrUcXes4oJqXTXU201thEW10W/de2efBaF27Pgw1gYcWyawPWS8oJs6YtZnKt620lzFqLfljOmGVMK5s6FyfX5ktuhVnF4FxhAcslHKbuwvwkKuH2QdblRIwyf5GN8U+qrsq1H7VOdSNWrHb3wavKSpZuGKUVy651N0k74P+zKpRenzq9NldRrWx6Sez5qljz0jGtbMqVLPlRt2JWmFUMroX7wbuU1Cws14TtubHoXQC8Q+8n6xPdZmEAPAglbPfN3bowAB6Ivtc3ftqGATDkWQBMXABMXABMXABMXABMXABMXABMXABMXABMXABMXABMXABMXABMXADcqz6EzkAowOaJhfXnA7Kjt8svd95PXdwzu9fkvvVyG1udMu1CbDU3yfTDX2IT++f7kjP2W52jbPc+DktW/vN5/eOkNZfqTKEAf3lf7H5bfHZvA3BNKgF4ITesJnK3pDCxrxCNyXw+Lv4uZ9PV4u6FCEnWdyevK7GeMWsE2NKtBvytKLj0j/fUtlZRDXkVG32rarDcCnvGY/1tYm8m5YBNmSVjDXiVWVV4PZ02KaPJLbZ3L/gfmYbbEn/KCszTCks6N8ZEwtjRG54jY2kteC2VurQLHSp+OTZB+TffstH9scp6kU/5QGyvW0CCAf7773lp/dc/NLJU7Fydqn3uvIBmZ7KSql3RJUAFxXzcBLyezpgUYan6Dp3J6MKQrMGXF1ZaEV1UcJG0cM1x8BwZSyazJrhINdUeFGDLf3l5PDiTDyeeFfn8UrYirVuGNgoG+II3jouHvKQztY35TP60+mDxURSEdfkidllPFGDR3FZkpTMm9a9FfTuTGEQ1Fn3w4qGdTLtYFQxkGy4BG0smsxUPOrH+wpkvaKa+DiZIghYB5nqyAnCvCgc4na7SKS9P/VjANNVVSwIWI6L9gM3jDpbdSjpjUoXIx1xKwEKXF2qotSrqX6Ya3OkaYGPJZLbioXi0YapzZgM2QQo/t5aMy3yqi9g3DDhI4QAvPv/1mwtRZhqZBXgpHrrfXoPXm+jErgHr6WzAskyfzosmWvwqG4t83Cub8P2AzfdrDbA1DlgHrIMU4OzozeyszKdsrJJeO+FwgPNv/vb5tWmiVxqkbrfkEzxbAcuWLhuXgyyb8Ho6u4k2BiRP1Q7k8gumu4QWTfSqBGw30eWlbTTRKwN4ORPDyiKfyvXeicAhCgdYHmcgkYnRhxhzjs0gSxSKOM5iC2A1TUrUs/SqyKrzGDudMSnT3r1YmVGU7rczya5ows9W6dgaZFUAG0smsya4SKV+rS/NBlxenmyJ5WOuRT71pd4lWYPldS30NEk9V11Mk+TkxK5G6iteLnQwVhSZeAJch2+k0yZXKp7qJM1Ch6jA8re6C+RTF/MUoJgHVQEXlnRmi2ArlW5oLcD6kX9Wfh3FMM/Kp7rUXjvhYSxVLjYfJfj/i/pwSGkYgH/a04btC7/FGgZgqLMAmLgAmLgAmLgAmLgAmLgAmLgAmLgAmLgAmLgAmLgAmLgAmLgAmLgAmLgAmLgAmLgAmLgAmLgAmLj8AWZQvXoq9m7J1G5xuUVZ7SE324KznU9Doq2oV1SA1eMC+mVxYqs+/yA39hcfXHm6PYoJcGbeWCS25Kf6qVn1uJD+4MrTLVJEgDM2tR4Y4hW2IF18cOTpNikiwKvKE2HJ0Vv19FRmfXDn6dYoVsDiNV6q1+X/Fh8sBz2PEskoUsCZGWPtAnyop1ujOAHr99mjiT5cUQJOzeu3Mcg6WDECNu/ydDNNuuWddYSAF8Vbkp0tdNxSuEIRAtYnBAmexXltuw9uA+B6xQW4L08APBCzXT0B8EDMdvUEwAMx29UTAA/EbFdPADwQs109AfBAzHb1BMADMdvVEwAPxGxXTwA8ELNdPQHwQMx29QTAAzHb1RMAD8RsV08APBCzXT0B8EDMdvUEwAMx29UTAA/EbFdPADwQs109AfBAzHb1BMADMdvVEwAPxGxXTwA8ELNdPQHwQMx29QTAAzHb1RMAD8RsV08APBCzXT0B8EDMdvUEwAMx29UTAA/EbFdPADwQs109AfBAzHb1BMADMdvVEwBHYladVbnliMoDz6oE4DjMqrMqt5zcgCMcOismwPqsys2zVw4+qxKAYzBrzqrcPD3p4GOUADgSswrwxvlnWw5Ca3eUIQBHYlYy3DzB8OCjDAE4ErMA7FwRAm7URDfz5OkFBjErRsDuBlnrgQAc2GzmeJoEwDECdrjQAcBRAt5yRGXHsyoBODLArj0BMABTFwATFwATFwATFwATFwATFwATFwATFwATFwATFwATFwATFwATFwATFwATFwATFwATFwATFwATFwATFwATFwATFwATFwATl1fAnz5Y+tinpx2BANyr2XxuP8m59VlBR552BQJwv2ZTNvqq0NfXPXraEQjA/Zr9dD5hD5778GQC8QC470HW1TnjjN1U3npPqy18byHhAKPo948YO3bGGDW4XkGmSfmL+4ydoA/2oTDz4E+ccM0oOuV1TZzKcfBZlQAcAvCnFxOO64+vd0ZIxYENgjCOcDhcvgHL1vnOk7pVjnwuTlvBISxu5BWwpLt3fFUAxjFKDuR5oeP4uwZLlaaJPvysSgCOc6lSD6kOP8oQgP0C/p+vvmqyVJlw9ovJFIBdKMLbhWXXe/hZlQ6zNVBFCLiorxhkOVCEgBVOXl8xTXKgCAEXfTAWOhwoRsCrhA+yRZ3FWZWHK0rAzjwBMABTFzbdEZdPwMsZNt15l9eVrJ9fcp2z0+9eno+e/C9u+PuQ9z44M+Pjs749bQkE4N7N6vdPFj/787QtEIB7NwvAnuV9R8dctc0pNt35UYA+mJ2+/OF818KUQ09bAgHYg9nFIzFJOnbEF4D3KMRK1qerV+4ebcDG93rRXqpsFYmmQgD++duvf/2nF0+tItGUf8DvJowdvZk5GkQD8B4FGEUf/x+fAydqQatPT20j0ZT/efDoQixyLCY+5sGtItFUiJUs87dfT60j0RQAE5f3PjhhZwJuxrbukXTpqW0kmvIOeDEZfTEZ/efEy1Jlq0g0RXupslUkmgqx0JFfvXK0IWufp1aRaMr7IOvxAzm4yucYZHmRX8AfPlzNjl6JPZXvJwDsRV4BV7ZVYqHDi/zW4JuXP0xG34m9lS8dbaoE4D3yvlT5zNEZlXs9tY5EU7gfTFwBAH+QTfQPX2OQ5UMBVrI8PrrSKlI1BZVNPgHWoh9MRl889rOrslUkR6kik/+7SaOLhMNN6274i1ou70UcelZlq0iOUkWmELcLxXNJdTf8Mx60nI0dHOHQKpKjVJEpBGDx/FnN/WB15Erq4hCWVpEcpYpM/vtgcTySOIdyJ2B1KtZq5eCsylaRHKWKTAE23R39OGe/ne++4Z8dvZnJQ1gOP6tyf3bcp4pMAbbN3nsrbgkf75wlpWIGJY6cPfwow1aRHKWKTIFWsj7V3BBOR7q+ArADRbhUqfpa3u8eflblYdkB4E5m3+87bVaB5FDdDLK6r0kBcBez6d5TdpYzZ2dVHiYA7mB2Odv/zEp6cq2YOlvo6CYA7mC20Yb3zNVZlYcJgDuYFc8m+fEUtWl/CnC7cOx0SwcA1yvAKHrCPhN64PF+cHSm/SnEKHoEwP4UYBT91I+nqE37U5SjaCeeojbtTyFuF3ryFLNpf/IOOJ+f7H7vqFNPMZv2J/8Pn30WYFdldKb9KQBgLYyivSjC24XReAJg72b9egLglmbV6To+X8oRrWl/8glYPFmYP9v/etnDPbkRAHs369cTAHcwG+aMjuhM+5NfwKHO6IjOtD95BRzsjI7oTPuT3xoc6oyO6Ez7k/ctO0HO6IjOtD9hFB3EtD+FAfz+8amrW0oAXK8AtwvFA8I7d8E69BSzaX/yf8Ofnfw6Z1O/50VHZ9qfQuyLXkzUexv69RS1aX8KsScrY76P9I/OtD+FAJyyce0hLG48HWCS0gvxAvTBDybsjP+Itw9eNwnAbczmc8Ye8oq8+wgHV56cmQTgdmY/8bY5/+DDkyOTAOzNrB9PANzRbP5zeYdh35p0Isdgro4ybCcA7mhWTY3ULf8906RM3k0M9IQ/AHc0qwFb/+7ScsbMMQ4BzugA4I5mmwNOT/7MAbs7yrCdALij2caAF3cvRB/s7pysdgLgjmabAhYtsgBcd9Jdn8tMANzRbFPA4hilfYDrPR0mAO5otiFg2SCjiXYkz4BfmY2zV7sBm7PwzjDIciC/gO1bNPW3CxNMk9zI70rWS0v1+2YTLHS4Uaxr0WqpMsxRhgAczKwfTwAczKwfTwAczKwfTwAczKwfT9iTFcysF08bfAdNGIC3mCTEF4AbmARgb2b9eALgYGb9eALgYGb9eALgYGb9eALgYGb9eALgYGb9eALgYGb9eALgYGb9eALgYGb9eALgYGb9eALgYGb9eALgYGb9eALgYGb9eALgYGb9eOoMOMb7iwC8xeQh94NjgisEwI5NA/BwPAGwd7N+PQGwd7N+PQGwd7N+PQGwd7N+PQGwd7N+PQGwd7N+PQGwd7N+PQGwd7N+PQFwT2bFicNMHNoQ6KzKg0wD8F6J1zqsxKnwoY5wOMg0AO9VcaZOqENYDjINwA2VibezhDlG6SDTANxQiXX+meeD0KTZtrcKY33mNFbAGR9lhTqrspNi3QYSKeDMjLFCnFXZSQDcRpmcJYVsolsLgFsoVbPg0IOsVgLg5krZmfwZeprUSrHu1IvQ7GIy1Z8CL3S00kE1OLa5Xr9m9XHCgmeYsyo7CYB7UjSAI91rC8BudNjpaQAcg6d6oQb3pGgA7/l/q8QOBcCOBMA9CYCDmAZgAB6cp3oBcE8C4CCmARiAB+epXp0Ae9gGAsCO1ImVh3uMAOxYBzXNABzSUzMB8GA9NRMAD9ZTMwHwYD01EwAP1lMztQOMaVJEnpqp1X3+g3YJuM9PeLNBPe1Xa0yowTF56kHog2Py1IMAOCZPPQiAY/LUgwA4Jk89CIOsmDz1KNwPjsFTjwLgGDz1qPYX0bhRB+AY1O0iOu0pcCQAbqzuAywAJi4AJqpWk6uBAA5yVmWsarU8MgzAAzjCwaPo1eAhHMLiT+3uIg8C8BCOUfIoejV4y0FofS7fxi56gIdwlGGsAmDiGgTgIZxVGauGARiDrM4aBGBMk7prEICx0NFdwwA8gLMqY9VAAMfgaZgCYOIaPmCoXj0Vez9mu6rHLTHhEgUtZADuPxEAlwJg1wLg/hMBcCkAdi0A7j8RAJcCYNcC4P4TAXApAHYtAO4/EQBD/QmAiQuAiQuAiQuAiQuAiQuAiQuAiQuAiQuAiQuAiQuAiQuAiSsKwIncF2weeUnYtG2qqoGmnvI5/3xy3d4RO+uUv0bOXCsOwPLCU1Xui7v/sfXx07pUFQNNPWXyi5S0SqQ+LiZbn5/clyyIIgK8nMmamx79Y9KshpSpKgYaplHPMvNqvLfwNxzteoByX7IQigqwKPF8PuZ/WqayDTRNk+pC/9fe5mLD0apRDjeThVBEgFNZaKJyNGhrq6lsAw3TNPwWbXXUjNiWZAEUB2BrCCLKokFbW02VNB3DlBGb+dhwpF1sP6ViX/4ajh6dKg7AstgyNhY9oxz5NBlmWamsj03TtAG87qgh4M1kARQRYIk1ZY0nIlYq62PTNK2baNtRiya6kiyAYgKcFsW+nDUexMjKZH1snMYMsrK9X6ZNRy0GWXayEIoJMP9h5h9NhlllKvtj4zRtp0m2oxbTJDtZCEUEWFQlUxKqK26ayv7YOI1a6MjnTRc6LEdNcrclWRDFAdgs6i2KJY4Gw6yDlyqXM99LlY2mf24VBWCoPwEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcQEwcdEF/P4xY+zB8wYxG7z8bLgiC/hSv4vq4f6oADxALSYjUXl/edTsLWV0RRVwqsEuJo3fIktTVAFXXlSZHP3IW+wHr8Xnm3PGRk9kk3zziLHPX5smugzILycm9vBFFXA+Z6fPTc+aHP3BvBpyMZE9s6jW6uPRWwXYCmj8qsshiCrgVX7OilF0wniHnF/Kl62z312Lj2fiKzBd5d/LT+IVv0XAciYq9DvW+BXwUYssYI7452f31etjE1kb8/nRW90lizd4l28ZF4ArAaPTlx9D5dq1CAMW4jV0XLyMOB1d6IZYcC/f8qwAFwF8gMaKfnrwIgpYNbMrVW23ARaVeStgEfXqnDV7dfQARBSwbpUNYKuJLnrW9Sa62uV+ev+IxiiLKuBMtbE3czWyOn6tBln5fPQnMYKaiI/s6Wr1Xn46ubYCeHf8UaQE4KiV6ib3+K2ozvdN66ub4nLGxD/Z0yQRoKZJjMYKCVnAq6vHHNkdOVRKjn7kveqpWt0Q/eupWvN4xETVthY6VED+QqR8GjLz7kQXsCU9yLqVAmDiAmDiAmDiuhWAb7MAmLgAmLgAmLgAmLgAmLgAmLj+DSa3EAD9POCpAAAAAElFTkSuQmCC" style="display: block; margin: auto;" /></p> +<div class="sourceCode" id="cb10"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb10-1" data-line-number="1">Mhat <-<span class="st"> </span><span class="kw">estM</span>(<span class="dt">nsim =</span> <span class="dv">1000</span>, <span class="dt">data_CO =</span> data_CO, <span class="dt">data_SS =</span> data_SS,</a> +<a class="sourceLine" id="cb10-2" data-line-number="2"> <span class="dt">data_DWP =</span> data_DWP, <span class="dt">model_SE =</span> model_SE, <span class="dt">model_CP =</span> model_CP,</a> +<a class="sourceLine" id="cb10-3" data-line-number="3"> <span class="dt">unitCol =</span> <span class="st">"Turbine"</span>, <span class="dt">COdate =</span> <span class="st">"DateFound"</span>)</a> +<a class="sourceLine" id="cb10-4" data-line-number="4"></a> +<a class="sourceLine" id="cb10-5" data-line-number="5"><span class="kw">summary</span>(Mhat)</a> +<a class="sourceLine" id="cb10-6" data-line-number="6"><span class="co">#> median 5% 95% </span></a> +<a class="sourceLine" id="cb10-7" data-line-number="7"><span class="co">#> 1457.87 1027.92 2177.95</span></a> +<a class="sourceLine" id="cb10-8" data-line-number="8"><span class="kw">plot</span>(Mhat)</a></code></pre></div> +<p><img src="data:image/png;base64,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" style="display: block; margin: auto;" /></p> +<p>Mortality estimates may be partitioned or split into desired categories, such as species, season, or turbine type. Splits may be performed according to characteristics of the carcasses or where they were found (e.g., species, turbine or other variable found in <code>data_CO</code>) or when they were found (e.g., season or other variable associated with search schedule and found in <code>data_SS</code>, or a vector of specific times).</p> +<p>Mortality by <code>Species</code> (a CO split because it is a column in the CO file):</p> +<div class="sourceCode" id="cb11"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb11-1" data-line-number="1">M_species <-<span class="st"> </span><span class="kw">calcSplits</span>(<span class="dt">M =</span> Mhat, <span class="dt">split_CO =</span> <span class="st">"Species"</span>, <span class="dt">data_CO =</span> data_CO)</a> +<a class="sourceLine" id="cb11-2" data-line-number="2"><span class="kw">summary</span>(M_species)</a> +<a class="sourceLine" id="cb11-3" data-line-number="3"><span class="co">#> X 5% 25% 50% 75% 95%</span></a> +<a class="sourceLine" id="cb11-4" data-line-number="4"><span class="co">#> BA 42 562.05742 705.483583 842.17155 986.66568 1253.7295</span></a> +<a class="sourceLine" id="cb11-5" data-line-number="5"><span class="co">#> BB 14 189.66016 269.971089 351.32136 441.60869 657.0634</span></a> +<a class="sourceLine" id="cb11-6" data-line-number="6"><span class="co">#> BC 9 69.95536 118.334193 159.46872 206.97082 284.9061</span></a> +<a class="sourceLine" id="cb11-7" data-line-number="7"><span class="co">#> BD 5 25.65579 58.760764 88.77560 121.95287 184.6385</span></a> +<a class="sourceLine" id="cb11-8" data-line-number="8"><span class="co">#> BE 1 1.00000 4.328299 12.63751 23.87036 43.3970</span></a> +<a class="sourceLine" id="cb11-9" data-line-number="9"><span class="co">#> attr(,"class")</span></a> +<a class="sourceLine" id="cb11-10" data-line-number="10"><span class="co">#> [1] "splitSummary"</span></a> +<a class="sourceLine" id="cb11-11" data-line-number="11"><span class="co">#> attr(,"CL")</span></a> +<a class="sourceLine" id="cb11-12" data-line-number="12"><span class="co">#> [1] 0.9</span></a> +<a class="sourceLine" id="cb11-13" data-line-number="13"><span class="co">#> attr(,"vars")</span></a> +<a class="sourceLine" id="cb11-14" data-line-number="14"><span class="co">#> [1] "Species"</span></a> +<a class="sourceLine" id="cb11-15" data-line-number="15"><span class="co">#> attr(,"type")</span></a> +<a class="sourceLine" id="cb11-16" data-line-number="16"><span class="co">#> [1] "CO"</span></a> +<a class="sourceLine" id="cb11-17" data-line-number="17"><span class="kw">plot</span>(M_species)</a></code></pre></div> +<p><img src="data:image/png;base64,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" style="display: block; margin: auto;" /></p> <p>Mortality estimates may also be split by temporal variables that are represented as columns in <code>data_SS</code> or as numeric vectors spanning the monitoring season (from day 0 to length of monitoring season). If several temporal splits are to be calculated, creating a specially formatted <code>prepSS</code> object for the search schedule can streamline the calculations.</p> -<pre class="sourceCode r" id="cb16"><code class="sourceCode r"><a class="sourceLine" id="cb16-1" data-line-number="1">SSdat <-<span class="st"> </span><span class="kw">prepSS</span>(data_SS)</a></code></pre> -<p>Season (a SS split because it is a column in the SS file):</p> -<pre class="sourceCode r" id="cb17"><code class="sourceCode r"><a class="sourceLine" id="cb17-1" data-line-number="1">M_season <-<span class="st"> </span><span class="kw">calcSplits</span>(<span class="dt">M =</span> Mhat<span class="op">$</span>Mhat, <span class="dt">Aj =</span> Mhat<span class="op">$</span>Aj,</a> -<a class="sourceLine" id="cb17-2" data-line-number="2"> <span class="dt">split_SS =</span> <span class="st">"Season"</span>, <span class="dt">data_SS =</span> SSdat, <span class="dt">split_CO =</span> <span class="ot">NULL</span>, <span class="dt">data_CO =</span> data_CO)</a> -<a class="sourceLine" id="cb17-3" data-line-number="3"><span class="kw">summary</span>(M_season)</a> -<a class="sourceLine" id="cb17-4" data-line-number="4"><span class="co">#> 5% 25% 50% 75% 95%</span></a> -<a class="sourceLine" id="cb17-5" data-line-number="5"><span class="co">#> spring 303.93079 459.9008 599.5937 786.4139 1213.5910</span></a> -<a class="sourceLine" id="cb17-6" data-line-number="6"><span class="co">#> summer 91.20643 146.2762 193.7982 251.1961 352.6593</span></a> -<a class="sourceLine" id="cb17-7" data-line-number="7"><span class="co">#> fall 414.23769 523.4087 623.2170 738.3362 967.8723</span></a> -<a class="sourceLine" id="cb17-8" data-line-number="8"><span class="co">#> attr(,"class")</span></a> -<a class="sourceLine" id="cb17-9" data-line-number="9"><span class="co">#> [1] "splitSummary"</span></a> -<a class="sourceLine" id="cb17-10" data-line-number="10"><span class="co">#> attr(,"CL")</span></a> -<a class="sourceLine" id="cb17-11" data-line-number="11"><span class="co">#> [1] 0.9</span></a> -<a class="sourceLine" id="cb17-12" data-line-number="12"><span class="co">#> attr(,"vars")</span></a> -<a class="sourceLine" id="cb17-13" data-line-number="13"><span class="co">#> [1] "Season"</span></a> -<a class="sourceLine" id="cb17-14" data-line-number="14"><span class="co">#> attr(,"type")</span></a> -<a class="sourceLine" id="cb17-15" data-line-number="15"><span class="co">#> [1] "SS"</span></a> -<a class="sourceLine" id="cb17-16" data-line-number="16"><span class="co">#> attr(,"times")</span></a> -<a class="sourceLine" id="cb17-17" data-line-number="17"><span class="co">#> [1] 0 60 130 200</span></a> -<a class="sourceLine" id="cb17-18" data-line-number="18"><span class="kw">plot</span>(M_season)</a></code></pre> -<p><img src="data:image/png;base64,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" style="display: block; margin: auto;" /></p> -<p>Month (a temporal split that as a vector of times spanning monitoring season):</p> -<pre class="sourceCode r" id="cb18"><code class="sourceCode r"><a class="sourceLine" id="cb18-1" data-line-number="1">M_month <-<span class="st"> </span><span class="kw">calcSplits</span>(<span class="dt">M =</span> Mhat<span class="op">$</span>Mhat, <span class="dt">Aj =</span> Mhat<span class="op">$</span>Aj,</a> -<a class="sourceLine" id="cb18-2" data-line-number="2"> <span class="dt">split_time =</span> <span class="kw">seq</span>(<span class="dv">0</span>, <span class="kw">max</span>(SSdat<span class="op">$</span>days), <span class="dt">by =</span> <span class="dv">28</span>),</a> -<a class="sourceLine" id="cb18-3" data-line-number="3"> <span class="dt">data_SS =</span> SSdat, <span class="dt">data_CO =</span> data_CO)</a> -<a class="sourceLine" id="cb18-4" data-line-number="4"><span class="kw">summary</span>(M_month)</a> -<a class="sourceLine" id="cb18-5" data-line-number="5"><span class="co">#> 5% 25% 50% 75% 95%</span></a> -<a class="sourceLine" id="cb18-6" data-line-number="6"><span class="co">#> 28 85.074062 155.44858 226.09292 328.37678 517.3819</span></a> -<a class="sourceLine" id="cb18-7" data-line-number="7"><span class="co">#> 56 171.002457 273.17601 360.29364 482.89144 774.0682</span></a> -<a class="sourceLine" id="cb18-8" data-line-number="8"><span class="co">#> 84 2.123575 27.49166 56.78030 92.23426 163.0540</span></a> -<a class="sourceLine" id="cb18-9" data-line-number="9"><span class="co">#> 112 24.737979 51.78530 74.24965 104.56242 164.2460</span></a> -<a class="sourceLine" id="cb18-10" data-line-number="10"><span class="co">#> 140 74.659712 115.72291 144.26369 180.04088 250.4803</span></a> -<a class="sourceLine" id="cb18-11" data-line-number="11"><span class="co">#> 168 262.270948 337.40923 420.22518 510.86340 677.4497</span></a> -<a class="sourceLine" id="cb18-12" data-line-number="12"><span class="co">#> 196 50.831518 82.39511 111.65514 147.50313 212.5686</span></a> -<a class="sourceLine" id="cb18-13" data-line-number="13"><span class="co">#> 200 0.000000 0.00000 0.00000 0.00000 0.0000</span></a> -<a class="sourceLine" id="cb18-14" data-line-number="14"><span class="co">#> attr(,"class")</span></a> -<a class="sourceLine" id="cb18-15" data-line-number="15"><span class="co">#> [1] "splitSummary"</span></a> -<a class="sourceLine" id="cb18-16" data-line-number="16"><span class="co">#> attr(,"CL")</span></a> -<a class="sourceLine" id="cb18-17" data-line-number="17"><span class="co">#> [1] 0.9</span></a> -<a class="sourceLine" id="cb18-18" data-line-number="18"><span class="co">#> attr(,"vars")</span></a> -<a class="sourceLine" id="cb18-19" data-line-number="19"><span class="co">#> [1] "time"</span></a> -<a class="sourceLine" id="cb18-20" data-line-number="20"><span class="co">#> attr(,"type")</span></a> -<a class="sourceLine" id="cb18-21" data-line-number="21"><span class="co">#> [1] "time"</span></a> -<a class="sourceLine" id="cb18-22" data-line-number="22"><span class="co">#> attr(,"times")</span></a> -<a class="sourceLine" id="cb18-23" data-line-number="23"><span class="co">#> [1] 0 28 56 84 112 140 168 196 200</span></a> -<a class="sourceLine" id="cb18-24" data-line-number="24"><span class="kw">plot</span>(M_month)</a></code></pre> -<p><img src="data:image/png;base64,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" style="display: block; margin: auto;" /> Temporal splits that divide the monitoring season into separate time intervals (like season or month) can be plotted as the number per interval (<code>rate = FALSE</code>, which is the default arg in <code>calcSplits</code>) or the number per unit time (<code>rate = TRUE</code>).</p> -<pre class="sourceCode r" id="cb19"><code class="sourceCode r"><a class="sourceLine" id="cb19-1" data-line-number="1">M_various_times <-<span class="st"> </span><span class="kw">calcSplits</span>(<span class="dt">M =</span> Mhat<span class="op">$</span>Mhat, <span class="dt">Aj =</span> Mhat<span class="op">$</span>Aj,</a> -<a class="sourceLine" id="cb19-2" data-line-number="2"> <span class="dt">split_time =</span> <span class="kw">c</span>(<span class="kw">seq</span>(<span class="dv">0</span>, <span class="dv">90</span>, <span class="dt">by =</span> <span class="dv">15</span>), <span class="dv">120</span>, <span class="dv">150</span>, <span class="kw">seq</span>(<span class="dv">155</span>, <span class="dv">200</span>, <span class="dt">by =</span> <span class="dv">5</span>)),</a> -<a class="sourceLine" id="cb19-3" data-line-number="3"> <span class="dt">data_SS =</span> SSdat, <span class="dt">data_CO =</span> data_CO)</a> -<a class="sourceLine" id="cb19-4" data-line-number="4"><span class="kw">plot</span>(M_various_times)</a></code></pre> -<p><img src="data:image/png;base64,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" style="display: block; margin: auto;" /></p> -<pre class="sourceCode r" id="cb20"><code class="sourceCode r"><a class="sourceLine" id="cb20-1" data-line-number="1"><span class="kw">plot</span>(M_various_times, <span class="dt">rate =</span> <span class="ot">TRUE</span>)</a></code></pre> -<p><img src="data:image/png;base64,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" style="display: block; margin: auto;" /></p> +<div class="sourceCode" id="cb12"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb12-1" data-line-number="1">SSdat <-<span class="st"> </span><span class="kw">prepSS</span>(data_SS)</a></code></pre></div> +<p>Mortality by <code>Season</code> (an SS split because it is a column in the SS file):</p> +<div class="sourceCode" id="cb13"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb13-1" data-line-number="1">M_season <-<span class="st"> </span><span class="kw">calcSplits</span>(<span class="dt">M =</span> Mhat, <span class="dt">split_SS =</span> <span class="st">"Season"</span>, <span class="dt">data_SS =</span> SSdat,</a> +<a class="sourceLine" id="cb13-2" data-line-number="2"> <span class="dt">split_CO =</span> <span class="ot">NULL</span>, <span class="dt">data_CO =</span> data_CO)</a> +<a class="sourceLine" id="cb13-3" data-line-number="3"><span class="kw">summary</span>(M_season)</a> +<a class="sourceLine" id="cb13-4" data-line-number="4"><span class="co">#> X 5% 25% 50% 75% 95%</span></a> +<a class="sourceLine" id="cb13-5" data-line-number="5"><span class="co">#> spring 18.11331 307.6727 451.8903 593.5578 780.0817 1193.1393</span></a> +<a class="sourceLine" id="cb13-6" data-line-number="6"><span class="co">#> summer 10.15669 90.1590 151.9573 198.8226 257.1914 365.1305</span></a> +<a class="sourceLine" id="cb13-7" data-line-number="7"><span class="co">#> fall 42.73000 403.5761 522.0817 621.6166 752.3871 999.6055</span></a> +<a class="sourceLine" id="cb13-8" data-line-number="8"><span class="co">#> attr(,"class")</span></a> +<a class="sourceLine" id="cb13-9" data-line-number="9"><span class="co">#> [1] "splitSummary"</span></a> +<a class="sourceLine" id="cb13-10" data-line-number="10"><span class="co">#> attr(,"CL")</span></a> +<a class="sourceLine" id="cb13-11" data-line-number="11"><span class="co">#> [1] 0.9</span></a> +<a class="sourceLine" id="cb13-12" data-line-number="12"><span class="co">#> attr(,"vars")</span></a> +<a class="sourceLine" id="cb13-13" data-line-number="13"><span class="co">#> [1] "Season"</span></a> +<a class="sourceLine" id="cb13-14" data-line-number="14"><span class="co">#> attr(,"type")</span></a> +<a class="sourceLine" id="cb13-15" data-line-number="15"><span class="co">#> [1] "SS"</span></a> +<a class="sourceLine" id="cb13-16" data-line-number="16"><span class="co">#> attr(,"times")</span></a> +<a class="sourceLine" id="cb13-17" data-line-number="17"><span class="co">#> [1] 0 60 130 200</span></a> +<a class="sourceLine" id="cb13-18" data-line-number="18"><span class="kw">plot</span>(M_season)</a></code></pre></div> +<p><img src="data:image/png;base64,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" style="display: block; margin: auto;" /></p> +<p>Mortality by month (a temporal split that spans the monitoring period):</p> +<div class="sourceCode" id="cb14"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb14-1" data-line-number="1">M_month <-<span class="st"> </span><span class="kw">calcSplits</span>(<span class="dt">M =</span> Mhat, <span class="dt">split_time =</span> <span class="kw">seq</span>(<span class="dv">0</span>, <span class="kw">max</span>(SSdat<span class="op">$</span>days), <span class="dt">by =</span> <span class="dv">28</span>),</a> +<a class="sourceLine" id="cb14-2" data-line-number="2"> <span class="dt">data_SS =</span> SSdat, <span class="dt">data_CO =</span> data_CO)</a> +<a class="sourceLine" id="cb14-3" data-line-number="3"><span class="kw">summary</span>(M_month)</a> +<a class="sourceLine" id="cb14-4" data-line-number="4"><span class="co">#> X 5% 25% 50% 75% 95%</span></a> +<a class="sourceLine" id="cb14-5" data-line-number="5"><span class="co">#> 28 6.254333 88.176125 156.08772 225.67599 328.40069 528.8066</span></a> +<a class="sourceLine" id="cb14-6" data-line-number="6"><span class="co">#> 56 11.723103 167.753413 267.47481 357.83076 462.26043 719.7039</span></a> +<a class="sourceLine" id="cb14-7" data-line-number="7"><span class="co">#> 84 2.139136 3.633028 33.24148 58.55599 91.30798 153.3302</span></a> +<a class="sourceLine" id="cb14-8" data-line-number="8"><span class="co">#> 112 4.542143 24.883302 53.40321 77.88638 110.46036 168.4615</span></a> +<a class="sourceLine" id="cb14-9" data-line-number="9"><span class="co">#> 140 10.051190 75.664568 114.88699 146.92582 181.69289 250.3884</span></a> +<a class="sourceLine" id="cb14-10" data-line-number="10"><span class="co">#> 168 27.792476 261.413684 343.08319 420.71694 520.23245 702.0181</span></a> +<a class="sourceLine" id="cb14-11" data-line-number="11"><span class="co">#> 196 8.497619 55.400138 84.97888 112.07590 148.69338 214.7019</span></a> +<a class="sourceLine" id="cb14-12" data-line-number="12"><span class="co">#> 200 0.000000 0.000000 0.00000 0.00000 0.00000 0.0000</span></a> +<a class="sourceLine" id="cb14-13" data-line-number="13"><span class="co">#> attr(,"class")</span></a> +<a class="sourceLine" id="cb14-14" data-line-number="14"><span class="co">#> [1] "splitSummary"</span></a> +<a class="sourceLine" id="cb14-15" data-line-number="15"><span class="co">#> attr(,"CL")</span></a> +<a class="sourceLine" id="cb14-16" data-line-number="16"><span class="co">#> [1] 0.9</span></a> +<a class="sourceLine" id="cb14-17" data-line-number="17"><span class="co">#> attr(,"vars")</span></a> +<a class="sourceLine" id="cb14-18" data-line-number="18"><span class="co">#> [1] "time"</span></a> +<a class="sourceLine" id="cb14-19" data-line-number="19"><span class="co">#> attr(,"type")</span></a> +<a class="sourceLine" id="cb14-20" data-line-number="20"><span class="co">#> [1] "time"</span></a> +<a class="sourceLine" id="cb14-21" data-line-number="21"><span class="co">#> attr(,"times")</span></a> +<a class="sourceLine" id="cb14-22" data-line-number="22"><span class="co">#> [1] 0 28 56 84 112 140 168 196 200</span></a> +<a class="sourceLine" id="cb14-23" data-line-number="23"><span class="kw">plot</span>(M_month)</a></code></pre></div> +<p><img src="data:image/png;base64,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" style="display: block; margin: auto;" /> Temporal splits that divide the monitoring season into separate time intervals (like season or month) can be plotted as the number per interval (<code>rate = FALSE</code>, which is the default arg in <code>calcSplits</code>) or the number per unit time (<code>rate = TRUE</code>).</p> +<div class="sourceCode" id="cb15"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb15-1" data-line-number="1">M_various_times <-<span class="st"> </span><span class="kw">calcSplits</span>(<span class="dt">M =</span> Mhat,</a> +<a class="sourceLine" id="cb15-2" data-line-number="2"> <span class="dt">split_time =</span> <span class="kw">c</span>(<span class="kw">seq</span>(<span class="dv">0</span>, <span class="dv">90</span>, <span class="dt">by =</span> <span class="dv">15</span>), <span class="dv">120</span>, <span class="dv">150</span>, <span class="kw">seq</span>(<span class="dv">155</span>, <span class="dv">200</span>, <span class="dt">by =</span> <span class="dv">5</span>)),</a> +<a class="sourceLine" id="cb15-3" data-line-number="3"> <span class="dt">data_SS =</span> SSdat, <span class="dt">data_CO =</span> data_CO)</a> +<a class="sourceLine" id="cb15-4" data-line-number="4"><span class="kw">plot</span>(M_various_times)</a></code></pre></div> +<p><img src="data:image/png;base64,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" style="display: block; margin: auto;" /></p> +<div class="sourceCode" id="cb16"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb16-1" data-line-number="1"><span class="kw">plot</span>(M_various_times, <span class="dt">rate =</span> <span class="ot">TRUE</span>)</a></code></pre></div> +<p><img src="data:image/png;base64,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" style="display: block; margin: auto;" /></p> <p>Finally, splits can be calculated for combinations of splitting covariates, like species by season or species group by turbine type. No more than two splitting covariates may be used in one call to <code>calcSplits</code> and at most one temporal split may be used (whether it is an SS split or a vector of times).</p> -<pre class="sourceCode r" id="cb21"><code class="sourceCode r"><a class="sourceLine" id="cb21-1" data-line-number="1">M_species_by_season <-<span class="st"> </span><span class="kw">calcSplits</span>(<span class="dt">M =</span> Mhat<span class="op">$</span>Mhat, <span class="dt">Aj =</span> Mhat<span class="op">$</span>Aj,</a> -<a class="sourceLine" id="cb21-2" data-line-number="2"> <span class="dt">split_CO =</span> <span class="st">"Species"</span>, <span class="dt">data_CO =</span> data_CO,</a> -<a class="sourceLine" id="cb21-3" data-line-number="3"> <span class="dt">split_SS =</span> <span class="st">"Season"</span>, <span class="dt">data_SS =</span> SSdat)</a> -<a class="sourceLine" id="cb21-4" data-line-number="4"><span class="kw">plot</span>(M_species_by_season)</a></code></pre> -<p><img src="data:image/png;base64,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" style="display: block; margin: auto;" /></p> +<div class="sourceCode" id="cb17"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb17-1" data-line-number="1">M_species_by_season <-<span class="st"> </span><span class="kw">calcSplits</span>(<span class="dt">M =</span> Mhat,</a> +<a class="sourceLine" id="cb17-2" data-line-number="2"> <span class="dt">split_CO =</span> <span class="st">"Species"</span>, <span class="dt">data_CO =</span> data_CO,</a> +<a class="sourceLine" id="cb17-3" data-line-number="3"> <span class="dt">split_SS =</span> <span class="st">"Season"</span>, <span class="dt">data_SS =</span> SSdat)</a> +<a class="sourceLine" id="cb17-4" data-line-number="4"><span class="kw">plot</span>(M_species_by_season)</a></code></pre></div> +<p><img src="data:image/png;base64,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" style="display: block; margin: auto;" /></p> </div> </div> <div id="example-2-estimating-bird-and-bat-mortality-from-searches-on-varied-ground" class="section level2"> @@ -554,528 +564,428 @@ code > span.fu { color: #900; font-weight: bold; } code > span.er { color: #a61 <p>Searcher efficiency and carcass persistence would be expected to vary with carcass size (sparrow, eagle, bat), ground characteristics (road & pad, cleared field, vegetation type), season, etc. In this example, we perform a full analysis of scenario with four classes of carcass (<code>lrg</code>, <code>med</code>, <code>sml</code>, and <code>bat</code>), three visibility classes (difficult = <code>D</code>, moderate = <code>M</code>, and road & pad = <code>RP</code>), and three seasons (<code>spring</code>, <code>summer</code>, and <code>fall</code>).</p> <p>The required data is stored in <code>wind_cleared</code>, a list of data frames with results for searcher efficiency (<code>SE</code>) and carcass persistence trials (<code>CP</code>), search schedules for all turbines (<code>SS</code>), the search coverage or density weighted proportion (<code>DWP</code>) of area searched at each turbine (i.e., the fraction of carcasses expected to fall in the search plots), and carcass observation (<code>CO</code>) data.</p> <p>Load the full data set into R:</p> -<pre class="sourceCode r" id="cb22"><code class="sourceCode r"><a class="sourceLine" id="cb22-1" data-line-number="1"><span class="kw">data</span>(wind_cleared)</a> -<a class="sourceLine" id="cb22-2" data-line-number="2"><span class="kw">names</span>(wind_cleared)</a> -<a class="sourceLine" id="cb22-3" data-line-number="3"><span class="co">#> [1] "SE" "CP" "SS" "DWP" "CO"</span></a></code></pre> +<div class="sourceCode" id="cb18"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb18-1" data-line-number="1"><span class="kw">data</span>(wind_cleared)</a> +<a class="sourceLine" id="cb18-2" data-line-number="2"><span class="kw">names</span>(wind_cleared)</a> +<a class="sourceLine" id="cb18-3" data-line-number="3"><span class="co">#> [1] "SE" "CP" "SS" "DWP" "CO"</span></a></code></pre></div> <p>To streamline the notation, extract the data from the <code>wind_cleared</code> list into its components:</p> -<pre class="sourceCode r" id="cb23"><code class="sourceCode r"><a class="sourceLine" id="cb23-1" data-line-number="1">data_SE <-<span class="st"> </span>wind_cleared<span class="op">$</span>SE</a> -<a class="sourceLine" id="cb23-2" data-line-number="2">data_CP <-<span class="st"> </span>wind_cleared<span class="op">$</span>CP</a> -<a class="sourceLine" id="cb23-3" data-line-number="3">data_SS <-<span class="st"> </span>wind_cleared<span class="op">$</span>SS</a> -<a class="sourceLine" id="cb23-4" data-line-number="4">data_DWP <-<span class="st"> </span>wind_cleared<span class="op">$</span>DWP</a> -<a class="sourceLine" id="cb23-5" data-line-number="5">data_CO <-<span class="st"> </span>wind_cleared<span class="op">$</span>CO</a></code></pre> +<div class="sourceCode" id="cb19"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb19-1" data-line-number="1">data_SE <-<span class="st"> </span>wind_cleared<span class="op">$</span>SE</a> +<a class="sourceLine" id="cb19-2" data-line-number="2">data_CP <-<span class="st"> </span>wind_cleared<span class="op">$</span>CP</a> +<a class="sourceLine" id="cb19-3" data-line-number="3">data_SS <-<span class="st"> </span>wind_cleared<span class="op">$</span>SS</a> +<a class="sourceLine" id="cb19-4" data-line-number="4">data_DWP <-<span class="st"> </span>wind_cleared<span class="op">$</span>DWP</a> +<a class="sourceLine" id="cb19-5" data-line-number="5">data_CO <-<span class="st"> </span>wind_cleared<span class="op">$</span>CO</a></code></pre></div> <div id="searcher-efficiency-and-carcass-persistence-trials" class="section level3"> <h3>Searcher Efficiency and Carcass Persistence Trials</h3> -<p>In searcher efficiency and carcass persistence trials, 15 carcasses trial carcasses were placed in each combination of visibility class (<code>D</code>, <code>M</code>, <code>RP</code>), season (<code>spring</code>, <code>summer</code>, <code>fall</code>), and size class (<code>lrg</code>, <code>med</code>, <code>sml</code>, <code>bat</code>). Data formats are like those of example 1:</p> -<pre class="sourceCode r" id="cb24"><code class="sourceCode r"><a class="sourceLine" id="cb24-1" data-line-number="1"><span class="kw">head</span>(data_SE)</a> -<a class="sourceLine" id="cb24-2" data-line-number="2"><span class="co">#> pkID Size Season Visibility s1 s2 s3 s4 s5</span></a> -<a class="sourceLine" id="cb24-3" data-line-number="3"><span class="co">#> 1 pk1 bat spring RP 0 NA NA NA NA</span></a> -<a class="sourceLine" id="cb24-4" data-line-number="4"><span class="co">#> 2 pk2 bat spring RP 0 0 NA NA NA</span></a> -<a class="sourceLine" id="cb24-5" data-line-number="5"><span class="co">#> 3 pk3 bat spring RP 1 NA NA NA NA</span></a> -<a class="sourceLine" id="cb24-6" data-line-number="6"><span class="co">#> 4 pk4 bat spring RP 1 NA NA NA NA</span></a> -<a class="sourceLine" id="cb24-7" data-line-number="7"><span class="co">#> 5 pk5 bat spring RP 0 NA NA NA NA</span></a> -<a class="sourceLine" id="cb24-8" data-line-number="8"><span class="co">#> 6 pk6 bat spring RP 1 NA NA NA NA</span></a> -<a class="sourceLine" id="cb24-9" data-line-number="9"><span class="kw">head</span>(data_CP)</a> -<a class="sourceLine" id="cb24-10" data-line-number="10"><span class="co">#> cpID Size Season Visibility Left Right</span></a> -<a class="sourceLine" id="cb24-11" data-line-number="11"><span class="co">#> 1 cp1 bat spring RP 0.00 0.93</span></a> -<a class="sourceLine" id="cb24-12" data-line-number="12"><span class="co">#> 2 cp2 bat spring RP 0.98 1.97</span></a> -<a class="sourceLine" id="cb24-13" data-line-number="13"><span class="co">#> 3 cp3 bat spring RP 0.00 1.01</span></a> -<a class="sourceLine" id="cb24-14" data-line-number="14"><span class="co">#> 4 cp4 bat spring RP 13.99 21.13</span></a> -<a class="sourceLine" id="cb24-15" data-line-number="15"><span class="co">#> 5 cp5 bat spring RP 0.00 1.17</span></a> -<a class="sourceLine" id="cb24-16" data-line-number="16"><span class="co">#> 6 cp6 bat spring RP 20.95 27.97</span></a></code></pre> +<p>In searcher efficiency and carcass persistence trials, 15 trial carcasses were placed in each combination of visibility class (<code>D</code>, <code>M</code>, <code>RP</code>), season (<code>spring</code>, <code>summer</code>, <code>fall</code>), and size class (<code>lrg</code>, <code>med</code>, <code>sml</code>, <code>bat</code>). Data formats are like those of example 1:</p> +<div class="sourceCode" id="cb20"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb20-1" data-line-number="1"><span class="kw">head</span>(data_SE)</a> +<a class="sourceLine" id="cb20-2" data-line-number="2"><span class="co">#> pkID Size Season Visibility s1 s2 s3 s4 s5</span></a> +<a class="sourceLine" id="cb20-3" data-line-number="3"><span class="co">#> 1 pk1 bat spring RP 0 NA NA NA NA</span></a> +<a class="sourceLine" id="cb20-4" data-line-number="4"><span class="co">#> 2 pk2 bat spring RP 0 0 NA NA NA</span></a> +<a class="sourceLine" id="cb20-5" data-line-number="5"><span class="co">#> 3 pk3 bat spring RP 1 NA NA NA NA</span></a> +<a class="sourceLine" id="cb20-6" data-line-number="6"><span class="co">#> 4 pk4 bat spring RP 1 NA NA NA NA</span></a> +<a class="sourceLine" id="cb20-7" data-line-number="7"><span class="co">#> 5 pk5 bat spring RP 0 NA NA NA NA</span></a> +<a class="sourceLine" id="cb20-8" data-line-number="8"><span class="co">#> 6 pk6 bat spring RP 1 NA NA NA NA</span></a> +<a class="sourceLine" id="cb20-9" data-line-number="9"><span class="kw">head</span>(data_CP)</a> +<a class="sourceLine" id="cb20-10" data-line-number="10"><span class="co">#> cpID Size Season Visibility LastPresent FirstAbsent</span></a> +<a class="sourceLine" id="cb20-11" data-line-number="11"><span class="co">#> 1 cp1 bat spring RP 0.00 0.93</span></a> +<a class="sourceLine" id="cb20-12" data-line-number="12"><span class="co">#> 2 cp2 bat spring RP 0.98 1.97</span></a> +<a class="sourceLine" id="cb20-13" data-line-number="13"><span class="co">#> 3 cp3 bat spring RP 0.00 1.01</span></a> +<a class="sourceLine" id="cb20-14" data-line-number="14"><span class="co">#> 4 cp4 bat spring RP 13.99 21.13</span></a> +<a class="sourceLine" id="cb20-15" data-line-number="15"><span class="co">#> 5 cp5 bat spring RP 0.00 1.17</span></a> +<a class="sourceLine" id="cb20-16" data-line-number="16"><span class="co">#> 6 cp6 bat spring RP 20.95 27.97</span></a></code></pre></div> </div> <div id="searcher-efficiency-modeling" class="section level3"> <h3>Searcher Efficiency Modeling</h3> -<p>With 36 combinations of covariate levels (3 visibilities x 3 seasons x 4 sizes) and two parameters (<code>p</code> and <code>k</code>), the number of possible models to consider for searcher efficiency is unwieldy using the simple <code>pkm</code> function, which fits only one model at a time.</p> -<p><code>pkmSet</code> is a wrapper function for <code>pkm</code> that fits a set of submodels of the given covariate combination, including the full model, the null model, and everything in between. For example, if the parameter models are <code>p ~ Visibility * Season</code> and <code>k ~ Visibility</code>, <code>pkmSet</code> would fit all combinations of possible <code>p</code> models (<code>p ~ Visibility * Season</code>, <code>p ~ Visibility + Season</code>, <code>p ~ Visibility</code>, <code>p ~ Season</code>, and <code>p ~ 1</code>) with possible <code>k</code> models (<code>k ~ Visibility</code> and <code>k ~ 1</code>), or 10 models in all.</p> -<pre class="sourceCode r" id="cb25"><code class="sourceCode r"><a class="sourceLine" id="cb25-1" data-line-number="1">?pkm</a> -<a class="sourceLine" id="cb25-2" data-line-number="2">?pkmSet</a></code></pre> -<p><code>cpmSet</code> does not distinguish between carcass size classes and should be used with caution when analyzing data sets with multiple size classes. For example, to model searcher efficiency for small birds, <code>pkmSet</code> can be called with <code>data</code> subsetted to include only the small carcasses:</p> -<pre class="sourceCode r" id="cb26"><code class="sourceCode r"><a class="sourceLine" id="cb26-1" data-line-number="1">SEsml <-<span class="st"> </span>data_SE[data_SE<span class="op">$</span>Size <span class="op">==</span><span class="st"> "sml"</span>, ]</a> -<a class="sourceLine" id="cb26-2" data-line-number="2">pkSet_sml <-<span class="st"> </span><span class="kw">pkmSet</span>(p <span class="op">~</span><span class="st"> </span>Visibility <span class="op">*</span><span class="st"> </span>Season, k <span class="op">~</span><span class="st"> </span>Visibility <span class="op">*</span><span class="st"> </span>Season,</a> -<a class="sourceLine" id="cb26-3" data-line-number="3"> <span class="dt">data =</span> SEsml)</a> -<a class="sourceLine" id="cb26-4" data-line-number="4"><span class="kw">names</span>(pkSet_sml)</a> -<a class="sourceLine" id="cb26-5" data-line-number="5"><span class="co">#> [1] "p ~ Visibility * Season; k ~ Visibility * Season"</span></a> -<a class="sourceLine" id="cb26-6" data-line-number="6"><span class="co">#> [2] "p ~ Visibility + Season; k ~ Visibility * Season"</span></a> -<a class="sourceLine" id="cb26-7" data-line-number="7"><span class="co">#> [3] "p ~ Season; k ~ Visibility * Season" </span></a> -<a class="sourceLine" id="cb26-8" data-line-number="8"><span class="co">#> [4] "p ~ Visibility; k ~ Visibility * Season" </span></a> -<a class="sourceLine" id="cb26-9" data-line-number="9"><span class="co">#> [5] "p ~ 1; k ~ Visibility * Season" </span></a> -<a class="sourceLine" id="cb26-10" data-line-number="10"><span class="co">#> [6] "p ~ Visibility * Season; k ~ Visibility + Season"</span></a> -<a class="sourceLine" id="cb26-11" data-line-number="11"><span class="co">#> [7] "p ~ Visibility + Season; k ~ Visibility + Season"</span></a> -<a class="sourceLine" id="cb26-12" data-line-number="12"><span class="co">#> [8] "p ~ Season; k ~ Visibility + Season" </span></a> -<a class="sourceLine" id="cb26-13" data-line-number="13"><span class="co">#> [9] "p ~ Visibility; k ~ Visibility + Season" </span></a> -<a class="sourceLine" id="cb26-14" data-line-number="14"><span class="co">#> [10] "p ~ 1; k ~ Visibility + Season" </span></a> -<a class="sourceLine" id="cb26-15" data-line-number="15"><span class="co">#> [11] "p ~ Visibility * Season; k ~ Season" </span></a> -<a class="sourceLine" id="cb26-16" data-line-number="16"><span class="co">#> [12] "p ~ Visibility + Season; k ~ Season" </span></a> -<a class="sourceLine" id="cb26-17" data-line-number="17"><span class="co">#> [13] "p ~ Season; k ~ Season" </span></a> -<a class="sourceLine" id="cb26-18" data-line-number="18"><span class="co">#> [14] "p ~ Visibility; k ~ Season" </span></a> -<a class="sourceLine" id="cb26-19" data-line-number="19"><span class="co">#> [15] "p ~ 1; k ~ Season" </span></a> -<a class="sourceLine" id="cb26-20" data-line-number="20"><span class="co">#> [16] "p ~ Visibility * Season; k ~ Visibility" </span></a> -<a class="sourceLine" id="cb26-21" data-line-number="21"><span class="co">#> [17] "p ~ Visibility + Season; k ~ Visibility" </span></a> -<a class="sourceLine" id="cb26-22" data-line-number="22"><span class="co">#> [18] "p ~ Season; k ~ Visibility" </span></a> -<a class="sourceLine" id="cb26-23" data-line-number="23"><span class="co">#> [19] "p ~ Visibility; k ~ Visibility" </span></a> -<a class="sourceLine" id="cb26-24" data-line-number="24"><span class="co">#> [20] "p ~ 1; k ~ Visibility" </span></a> -<a class="sourceLine" id="cb26-25" data-line-number="25"><span class="co">#> [21] "p ~ Visibility * Season; k ~ 1" </span></a> -<a class="sourceLine" id="cb26-26" data-line-number="26"><span class="co">#> [22] "p ~ Visibility + Season; k ~ 1" </span></a> -<a class="sourceLine" id="cb26-27" data-line-number="27"><span class="co">#> [23] "p ~ Season; k ~ 1" </span></a> -<a class="sourceLine" id="cb26-28" data-line-number="28"><span class="co">#> [24] "p ~ Visibility; k ~ 1" </span></a> -<a class="sourceLine" id="cb26-29" data-line-number="29"><span class="co">#> [25] "p ~ 1; k ~ 1"</span></a></code></pre> -<p>One model must be selected from the long list of models fit. GenEst provides several tools for guiding the selection. First, the models can be listed by AICc, which gives a score for the quality of the model for the given data. Complicated models that use many parameters may fit the data more closely than a simpler model but are penalized because of their complexity and relative instability. The scores have meaning only in comparison with other models’. AICc provides a rough but useful guide for model selection, but should in no way be relied upon as definitive. Its utility is in identifying relatively poor models and in narrowing the choice of plausible models to a manageable number.</p> -<p>The <code>pkmSetAICcTab</code> function lists the fitted models in order of <span class="math inline">\({\small \Delta}\)</span>AICc.</p> -<pre class="sourceCode r" id="cb27"><code class="sourceCode r"><a class="sourceLine" id="cb27-1" data-line-number="1"><span class="kw">pkmSetAICcTab</span>(pkSet_sml)</a> -<a class="sourceLine" id="cb27-2" data-line-number="2"><span class="co">#> p Formula k Formula AICc Delta AICc</span></a> -<a class="sourceLine" id="cb27-3" data-line-number="3"><span class="co">#> 24 p ~ Visibility k ~ 1 318.55 0.00</span></a> -<a class="sourceLine" id="cb27-4" data-line-number="4"><span class="co">#> 19 p ~ Visibility k ~ Visibility 319.69 1.14</span></a> -<a class="sourceLine" id="cb27-5" data-line-number="5"><span class="co">#> 14 p ~ Visibility k ~ Season 321.42 2.87</span></a> -<a class="sourceLine" id="cb27-6" data-line-number="6"><span class="co">#> 21 p ~ Visibility * Season k ~ 1 321.53 2.98</span></a> -<a class="sourceLine" id="cb27-7" data-line-number="7"><span class="co">#> 22 p ~ Visibility + Season k ~ 1 322.17 3.62</span></a> -<a class="sourceLine" id="cb27-8" data-line-number="8"><span class="co">#> 16 p ~ Visibility * Season k ~ Visibility 322.98 4.43</span></a> -<a class="sourceLine" id="cb27-9" data-line-number="9"><span class="co">#> 17 p ~ Visibility + Season k ~ Visibility 323.14 4.59</span></a> -<a class="sourceLine" id="cb27-10" data-line-number="10"><span class="co">#> 9 p ~ Visibility k ~ Visibility + Season 323.44 4.89</span></a> -<a class="sourceLine" id="cb27-11" data-line-number="11"><span class="co">#> 11 p ~ Visibility * Season k ~ Season 323.97 5.42</span></a> -<a class="sourceLine" id="cb27-12" data-line-number="12"><span class="co">#> 12 p ~ Visibility + Season k ~ Season 324.33 5.78</span></a> -<a class="sourceLine" id="cb27-13" data-line-number="13"><span class="co">#> 7 p ~ Visibility + Season k ~ Visibility + Season 326.33 7.78</span></a> -<a class="sourceLine" id="cb27-14" data-line-number="14"><span class="co">#> 6 p ~ Visibility * Season k ~ Visibility + Season 326.51 7.96</span></a> -<a class="sourceLine" id="cb27-15" data-line-number="15"><span class="co">#> 4 p ~ Visibility k ~ Visibility * Season 327.99 9.44</span></a> -<a class="sourceLine" id="cb27-16" data-line-number="16"><span class="co">#> 2 p ~ Visibility + Season k ~ Visibility * Season 331.07 12.52</span></a> -<a class="sourceLine" id="cb27-17" data-line-number="17"><span class="co">#> 1 p ~ Visibility * Season k ~ Visibility * Season 333.47 14.92</span></a> -<a class="sourceLine" id="cb27-18" data-line-number="18"><span class="co">#> 20 p ~ 1 k ~ Visibility 339.51 20.96</span></a> -<a class="sourceLine" id="cb27-19" data-line-number="19"><span class="co">#> 10 p ~ 1 k ~ Visibility + Season 342.41 23.86</span></a> -<a class="sourceLine" id="cb27-20" data-line-number="20"><span class="co">#> 18 p ~ Season k ~ Visibility 342.74 24.19</span></a> -<a class="sourceLine" id="cb27-21" data-line-number="21"><span class="co">#> 8 p ~ Season k ~ Visibility + Season 344.10 25.55</span></a> -<a class="sourceLine" id="cb27-22" data-line-number="22"><span class="co">#> 25 p ~ 1 k ~ 1 346.45 27.90</span></a> -<a class="sourceLine" id="cb27-23" data-line-number="23"><span class="co">#> 5 p ~ 1 k ~ Visibility * Season 347.47 28.92</span></a> -<a class="sourceLine" id="cb27-24" data-line-number="24"><span class="co">#> 15 p ~ 1 k ~ Season 347.66 29.11</span></a> -<a class="sourceLine" id="cb27-25" data-line-number="25"><span class="co">#> 23 p ~ Season k ~ 1 350.35 31.80</span></a> -<a class="sourceLine" id="cb27-26" data-line-number="26"><span class="co">#> 13 p ~ Season k ~ Season 350.44 31.89</span></a> -<a class="sourceLine" id="cb27-27" data-line-number="27"><span class="co">#> 3 p ~ Season k ~ Visibility * Season 350.49 31.94</span></a></code></pre> -<p>When AICc differences exceed 6 or 7, preference should normally be given to the models with the lower scores. Models with differences of less than 3 or 4 are generally considered indistinguishable by this measure. Choices among such models should be based on other criteria.</p> -<p>Diagnostic plots can be used to identify potential problems with model fits and to help distinguish between models with similar AICc scores. The <code>plot</code> function is defined for the <code>pkmSet</code> class, and by default, creates a new plot window on command for each sub-model. To plot a specific single model from the full set, use the <code>specificModel</code> argument. For example, diagnostic plots for the model with the lowest AICc score are shown below:</p> -<pre class="sourceCode r" id="cb28"><code class="sourceCode r"><a class="sourceLine" id="cb28-1" data-line-number="1"><span class="kw">plot</span>(pkSet_sml, <span class="dt">specificModel =</span> <span class="st">"p ~ Visibility; k ~ 1"</span>)</a></code></pre> +<p>With 36 combinations of covariate levels (3 visibilities x 3 seasons x 4 sizes) and two parameters (<code>p</code> and <code>k</code>), the number of possible models to consider for searcher efficiency is unwieldy using simple calls to <code>pkm</code>, but <code>pkm</code> has powerful model building and model selection capabilities that can be accessed via the arg list: <code>allCombos</code> and <code>sizeCol</code>, which are discussed below.</p> +<p>When <code>allCombos = TRUE</code>, <code>pkm</code> fits the set of submodels of the given covariate combinations, including the full model, the null model, and everything in between. For example, if the parameter models are <code>p ~ Visibility * Season</code> and <code>k ~ Visibility</code>, <code>pkm</code> with <code>allCombos = TRUE</code> would fit all combinations of possible <code>p</code> models (<code>p ~ Visibility * Season</code>, <code>p ~ Visibility + Season</code>, <code>p ~ Visibility</code>, <code>p ~ Season</code>, and <code>p ~ 1</code>) and possible <code>k</code> models (<code>k ~ Visibility</code> and <code>k ~ 1</code>), or 10 models in all.</p> +<p>Carcasses in different size classes would be expected to have different searcher efficiency and carcass persistence parameters and would even be likely to be affected by covariates in different ways. When analyzing data with carcasses in different size classes, it is recommended that separate CP and SE models be fit for size classes separately. This can be accomplished using the <code>sizeCol</code> argument in <code>pkm</code> and <code>cpm</code>, where <code>sizeCol</code> gives the name of the column that gives the carcass size classes in <code>data_SE</code>.</p> +<div class="sourceCode" id="cb21"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb21-1" data-line-number="1">pkModels <-<span class="st"> </span><span class="kw">pkm</span>(p <span class="op">~</span><span class="st"> </span>Visibility <span class="op">*</span><span class="st"> </span>Season, k <span class="op">~</span><span class="st"> </span>Visibility <span class="op">*</span><span class="st"> </span>Season, <span class="dt">data =</span> data_SE,</a> +<a class="sourceLine" id="cb21-2" data-line-number="2"> <span class="dt">allCombos =</span> <span class="ot">TRUE</span>, <span class="dt">sizeCol =</span> <span class="st">"Size"</span>)</a> +<a class="sourceLine" id="cb21-3" data-line-number="3"><span class="kw">class</span>(pkModels)</a> +<a class="sourceLine" id="cb21-4" data-line-number="4"><span class="co">#> [1] "pkmSetSize" "list"</span></a> +<a class="sourceLine" id="cb21-5" data-line-number="5"><span class="kw">names</span>(pkModels)</a> +<a class="sourceLine" id="cb21-6" data-line-number="6"><span class="co">#> [1] "bat" "lrg" "med" "sml"</span></a></code></pre></div> +<p>When <code>allCombos = TRUE</code> and <code>sizeCol</code> is defined, <code>pkm</code> returns a list of sets of models for each size class. The sets of models for each size class include the full spectrum of models that can be constructed using simple combinations of the covariates.</p> +<div class="sourceCode" id="cb22"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb22-1" data-line-number="1"><span class="kw">names</span>(pkModels[[<span class="st">"sml"</span>]])</a> +<a class="sourceLine" id="cb22-2" data-line-number="2"><span class="co">#> [1] "p ~ Visibility * Season; k ~ Visibility * Season" "p ~ Visibility + Season; k ~ Visibility * Season"</span></a> +<a class="sourceLine" id="cb22-3" data-line-number="3"><span class="co">#> [3] "p ~ Season; k ~ Visibility * Season" "p ~ Visibility; k ~ Visibility * Season" </span></a> +<a class="sourceLine" id="cb22-4" data-line-number="4"><span class="co">#> [5] "p ~ 1; k ~ Visibility * Season" "p ~ Visibility * Season; k ~ Visibility + Season"</span></a> +<a class="sourceLine" id="cb22-5" data-line-number="5"><span class="co">#> [7] "p ~ Visibility + Season; k ~ Visibility + Season" "p ~ Season; k ~ Visibility + Season" </span></a> +<a class="sourceLine" id="cb22-6" data-line-number="6"><span class="co">#> [9] "p ~ Visibility; k ~ Visibility + Season" "p ~ 1; k ~ Visibility + Season" </span></a> +<a class="sourceLine" id="cb22-7" data-line-number="7"><span class="co">#> [11] "p ~ Visibility * Season; k ~ Season" "p ~ Visibility + Season; k ~ Season" </span></a> +<a class="sourceLine" id="cb22-8" data-line-number="8"><span class="co">#> [13] "p ~ Season; k ~ Season" "p ~ Visibility; k ~ Season" </span></a> +<a class="sourceLine" id="cb22-9" data-line-number="9"><span class="co">#> [15] "p ~ 1; k ~ Season" "p ~ Visibility * Season; k ~ Visibility" </span></a> +<a class="sourceLine" id="cb22-10" data-line-number="10"><span class="co">#> [17] "p ~ Visibility + Season; k ~ Visibility" "p ~ Season; k ~ Visibility" </span></a> +<a class="sourceLine" id="cb22-11" data-line-number="11"><span class="co">#> [19] "p ~ Visibility; k ~ Visibility" "p ~ 1; k ~ Visibility" </span></a> +<a class="sourceLine" id="cb22-12" data-line-number="12"><span class="co">#> [21] "p ~ Visibility * Season; k ~ 1" "p ~ Visibility + Season; k ~ 1" </span></a> +<a class="sourceLine" id="cb22-13" data-line-number="13"><span class="co">#> [23] "p ~ Season; k ~ 1" "p ~ Visibility; k ~ 1" </span></a> +<a class="sourceLine" id="cb22-14" data-line-number="14"><span class="co">#> [25] "p ~ 1; k ~ 1"</span></a> +<a class="sourceLine" id="cb22-15" data-line-number="15"><span class="kw">class</span>(pkModels[[<span class="st">"sml"</span>]])</a> +<a class="sourceLine" id="cb22-16" data-line-number="16"><span class="co">#> [1] "pkmSet" "list"</span></a></code></pre></div> +<p>To estimate mortality, one model for each size class must be selected from the long list of models fit. GenEst provides several tools for guiding the selection. First, the models can be listed by AICc, which gives a score for the quality of the model for the given data. Complicated models that use many parameters may fit the data more closely than a simpler model but are penalized because of their complexity and relative instability. The scores have meaning only in comparison with other models’. AICc provides a rough but useful guide for model selection, but should in no way be relied upon as definitive. Its utility is in identifying relatively poor models and in narrowing the choice of plausible models to a manageable number.</p> +<p>The <code>aicc</code> function lists the fitted models in order of <span class="math inline">\({\small \Delta}\)</span>AICc for each size class (if applicable). For this discussion, we will focus on <code>sml</code> only, but for a full analysis, all size classes would need to be similarly analyzed.</p> +<div class="sourceCode" id="cb23"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb23-1" data-line-number="1"><span class="kw">aicc</span>(pkModels[[<span class="st">"sml"</span>]])</a> +<a class="sourceLine" id="cb23-2" data-line-number="2"><span class="co">#> p Formula k Formula AICc <U+0394>AICc</span></a> +<a class="sourceLine" id="cb23-3" data-line-number="3"><span class="co">#> 24 p ~ Visibility k ~ 1 318.55 0.00</span></a> +<a class="sourceLine" id="cb23-4" data-line-number="4"><span class="co">#> 19 p ~ Visibility k ~ Visibility 319.69 1.14</span></a> +<a class="sourceLine" id="cb23-5" data-line-number="5"><span class="co">#> 14 p ~ Visibility k ~ Season 321.42 2.87</span></a> +<a class="sourceLine" id="cb23-6" data-line-number="6"><span class="co">#> 21 p ~ Visibility * Season k ~ 1 321.53 2.98</span></a> +<a class="sourceLine" id="cb23-7" data-line-number="7"><span class="co">#> 22 p ~ Visibility + Season k ~ 1 322.17 3.62</span></a> +<a class="sourceLine" id="cb23-8" data-line-number="8"><span class="co">#> 16 p ~ Visibility * Season k ~ Visibility 322.98 4.43</span></a> +<a class="sourceLine" id="cb23-9" data-line-number="9"><span class="co">#> 17 p ~ Visibility + Season k ~ Visibility 323.14 4.59</span></a> +<a class="sourceLine" id="cb23-10" data-line-number="10"><span class="co">#> 9 p ~ Visibility k ~ Visibility + Season 323.44 4.89</span></a> +<a class="sourceLine" id="cb23-11" data-line-number="11"><span class="co">#> 11 p ~ Visibility * Season k ~ Season 323.97 5.42</span></a> +<a class="sourceLine" id="cb23-12" data-line-number="12"><span class="co">#> 12 p ~ Visibility + Season k ~ Season 324.33 5.78</span></a> +<a class="sourceLine" id="cb23-13" data-line-number="13"><span class="co">#> 7 p ~ Visibility + Season k ~ Visibility + Season 326.33 7.78</span></a> +<a class="sourceLine" id="cb23-14" data-line-number="14"><span class="co">#> 6 p ~ Visibility * Season k ~ Visibility + Season 326.51 7.96</span></a> +<a class="sourceLine" id="cb23-15" data-line-number="15"><span class="co">#> 4 p ~ Visibility k ~ Visibility * Season 327.99 9.44</span></a> +<a class="sourceLine" id="cb23-16" data-line-number="16"><span class="co">#> 2 p ~ Visibility + Season k ~ Visibility * Season 331.07 12.52</span></a> +<a class="sourceLine" id="cb23-17" data-line-number="17"><span class="co">#> 1 p ~ Visibility * Season k ~ Visibility * Season 333.47 14.92</span></a> +<a class="sourceLine" id="cb23-18" data-line-number="18"><span class="co">#> 20 p ~ 1 k ~ Visibility 339.51 20.96</span></a> +<a class="sourceLine" id="cb23-19" data-line-number="19"><span class="co">#> 10 p ~ 1 k ~ Visibility + Season 342.41 23.86</span></a> +<a class="sourceLine" id="cb23-20" data-line-number="20"><span class="co">#> 18 p ~ Season k ~ Visibility 342.74 24.19</span></a> +<a class="sourceLine" id="cb23-21" data-line-number="21"><span class="co">#> 8 p ~ Season k ~ Visibility + Season 344.10 25.55</span></a> +<a class="sourceLine" id="cb23-22" data-line-number="22"><span class="co">#> 25 p ~ 1 k ~ 1 346.45 27.90</span></a> +<a class="sourceLine" id="cb23-23" data-line-number="23"><span class="co">#> 5 p ~ 1 k ~ Visibility * Season 347.47 28.92</span></a> +<a class="sourceLine" id="cb23-24" data-line-number="24"><span class="co">#> 15 p ~ 1 k ~ Season 347.66 29.11</span></a> +<a class="sourceLine" id="cb23-25" data-line-number="25"><span class="co">#> 23 p ~ Season k ~ 1 350.35 31.80</span></a> +<a class="sourceLine" id="cb23-26" data-line-number="26"><span class="co">#> 13 p ~ Season k ~ Season 350.44 31.89</span></a> +<a class="sourceLine" id="cb23-27" data-line-number="27"><span class="co">#> 3 p ~ Season k ~ Visibility * Season 350.49 31.94</span></a></code></pre></div> +<p>Preference should normally be given to models with <span class="math inline">\({\small \Delta}\)</span>AICc less than 6 or 7. Models with differences of less than 3 or 4 are generally considered indistinguishable by this measure. Choices among such models should be based on other criteria.</p> +<p>Diagnostic plots can be used to identify potential problems with model fits and to help distinguish between models with similar AICc scores. The <code>plot</code> function is defined for <code>pkm</code> (one model) and <code>pkmSet</code> (set of models for a given size class) objects. For example, <code>plot(pkModels[["sml"]][[1]])</code> would produce the single figure for the first model for the <code>sml</code> size class. <code>plot(pkModels[["sml"]])</code> would create plots for each model fit for the <code>sml</code> size class. To plot a specific single model from the full set, use the <code>specificModel</code> argument. For example, diagnostic plots for the model with the lowest AICc score are shown below:</p> +<div class="sourceCode" id="cb24"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb24-1" data-line-number="1"><span class="kw">plot</span>(pkModels[[<span class="st">"sml"</span>]], <span class="dt">specificModel =</span> <span class="st">"p ~ Visibility; k ~ 1"</span>)</a></code></pre></div> +<p><img src="data:image/png;base64,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" /><!-- --></p> <p>The top row shows box plots of estimated <code>p</code> and <code>k</code> parameters for all cells (i.e., combinations of covariate levels, like <code>D.fall</code> for difficult visibility in the fall) for both the selected model (black) and the full model (gray). With the full model, the fits for each cell are based solely on data from that specific cell. The advantage is that each cell’s estimates are untainted by data from other cells. The disadvantage is that the sample size for each estimate is relatively small and the error bars large. In the reduced models, estimates for one cell borrow strength from estimates in related cells. This gives smaller error bars but can lead to errors if the model structure does not properly reflect the dependence of searcher efficiency parameters on cell characteristics.</p> -<p>In the figure, the estimates of <code>p</code> from the selected model are markedly less variable than the estimates from the full model, while the locations of the boxes are very similar for the two models. Thus, this selected model (the one with the lowest AICc) is a clear improvement over the full cell model for estimating <code>p</code>.</p> -<p>However, the boxplots for <code>k</code> indicate a problem with the fit. In particular, in most of the cells, the boxes extend from 0 to 1, which suggests that the selected model is unable to estimate <code>k</code> for the given cell. Selecting a simpler model for <code>k</code> often remedies this problem.</p> -<p>In this example, the second best model in terms of AICc (<code>p ~ Visibility; k ~ 1</code>, with <span class="math inline">\({\small \Delta}\)</span>AICc = 1.596) is able to succesfully estimate <code>k</code> while still providing a good fit for <code>p</code>.</p> -<pre class="sourceCode r" id="cb29"><code class="sourceCode r"><a class="sourceLine" id="cb29-1" data-line-number="1"><span class="kw">plot</span>(pkSet_sml, <span class="dt">specificModel =</span> <span class="st">"p ~ Visibility; k ~ 1"</span>)</a></code></pre> -<p>By comparison, the model with the highest <span class="math inline">\({\small \Delta}\)</span>AICc (= 41.5) has<br /> -routinely estimates <code>p</code> and <code>k</code> either well above or well below the full cell model but has fairly tight error bars–bad estimates but quite confident about them!</p> -<pre class="sourceCode r" id="cb30"><code class="sourceCode r"><a class="sourceLine" id="cb30-1" data-line-number="1"><span class="kw">plot</span>(pkSet_sml, <span class="dt">specificModel =</span> <span class="st">"p ~ Season; k ~ Season"</span>)</a></code></pre> +<p>In the figure, the estimates of <code>p</code> from the selected model are markedly less variable than the estimates from the full model, while the locations of the boxes are very similar for the two models. Thus, this selected model (the one with the lowest AICc) appears to be an improvement over the full cell model for estimating <code>p</code>.</p> +<p>The <span class="math inline">\({\small \Delta}\)</span>AICc for the full model is 12.52, which indicates a serious deficiency in comparison to the model with the best fit, <code>"p ~ Visibility; k ~ 1"</code>. The boxplots for <code>k</code> highlight one particular problem with the fit of the reference model. In some of the cells, the boxes extend from 0 to 1, which suggests that the reference model is unable to estimate <code>k</code> for the given cell. Selecting a simpler model for <code>k</code> often remedies this problem. If all models display this 0-1 phenomenon, a fixed <code>k</code> of 1 is appropriate if a smaller proportion of carcasses was found on the first search occasion than on later searches.</p> +<p>By comparison, the model with the highest <span class="math inline">\({\small \Delta}\)</span>AICc (= <code>{r max(aicc(pkModels[["sml"]]))}</code> routinely estimates <code>p</code> and <code>k</code> either well above or well below the reference model but has fairly tight error bars–bad estimates but quite confident about them!</p> +<div class="sourceCode" id="cb25"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb25-1" data-line-number="1"><span class="kw">plot</span>(pkModels[[<span class="st">"sml"</span>]], <span class="dt">specificModel =</span> <span class="st">"p ~ Season; k ~ Visibility * Season"</span>)</a></code></pre></div> +<p><img src="data:image/png;base64,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" /><!-- --></p> <p>A similar model selection exercise gives the same form of model (<code>p ~ Visibility; k ~ 1</code>) for large birds, medium birds, and bats. These can all be collated into a list for later analysis of detection probabilities and mortality rates.</p> -<pre class="sourceCode r" id="cb31"><code class="sourceCode r"><a class="sourceLine" id="cb31-1" data-line-number="1">pk_med <-<span class="st"> </span><span class="kw">pkm</span>(p <span class="op">~</span><span class="st"> </span>Visibility, k <span class="op">~</span><span class="st"> </span><span class="dv">1</span>, <span class="dt">data =</span> data_SE[data_SE<span class="op">$</span>Size <span class="op">==</span><span class="st"> "med"</span>, ])</a> -<a class="sourceLine" id="cb31-2" data-line-number="2">pk_lrg <-<span class="st"> </span><span class="kw">pkm</span>(p <span class="op">~</span><span class="st"> </span>Visibility, k <span class="op">~</span><span class="st"> </span><span class="dv">1</span>, <span class="dt">data =</span> data_SE[data_SE<span class="op">$</span>Size <span class="op">==</span><span class="st"> "lrg"</span>, ])</a> -<a class="sourceLine" id="cb31-3" data-line-number="3">pk_bat <-<span class="st"> </span><span class="kw">pkm</span>(p <span class="op">~</span><span class="st"> </span>Visibility, k <span class="op">~</span><span class="st"> </span><span class="dv">1</span>, <span class="dt">data =</span> data_SE[data_SE<span class="op">$</span>Size <span class="op">==</span><span class="st"> "bat"</span>, ])</a> -<a class="sourceLine" id="cb31-4" data-line-number="4"></a> -<a class="sourceLine" id="cb31-5" data-line-number="5">pkMods <-<span class="st"> </span><span class="kw">list</span>(</a> -<a class="sourceLine" id="cb31-6" data-line-number="6"> <span class="dt">sml =</span> pkSet_sml[[<span class="st">"p ~ Visibility; k ~ 1"</span>]],</a> -<a class="sourceLine" id="cb31-7" data-line-number="7"> <span class="dt">med =</span> pk_med,</a> -<a class="sourceLine" id="cb31-8" data-line-number="8"> <span class="dt">lrg =</span> pk_lrg,</a> -<a class="sourceLine" id="cb31-9" data-line-number="9"> <span class="dt">bat =</span> pk_bat</a> -<a class="sourceLine" id="cb31-10" data-line-number="10">)</a></code></pre> -<p>GenEst also has a wrapper function for <code>pkModSet</code> so that different size classes can be considered in bulk at one time. Read more about it:</p> -<pre class="sourceCode r" id="cb32"><code class="sourceCode r"><a class="sourceLine" id="cb32-1" data-line-number="1">? pkmSetSize</a> -<a class="sourceLine" id="cb32-2" data-line-number="2"><span class="kw">vignette</span>(<span class="st">"command-line-example"</span>, <span class="dt">package =</span> <span class="st">"GenEst"</span>)</a></code></pre> +<div class="sourceCode" id="cb26"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb26-1" data-line-number="1">pkMods <-<span class="st"> </span><span class="kw">list</span>(</a> +<a class="sourceLine" id="cb26-2" data-line-number="2"> <span class="dt">sml =</span> pkModels[[<span class="st">"sml"</span>]][[<span class="st">"p ~ Visibility; k ~ 1"</span>]],</a> +<a class="sourceLine" id="cb26-3" data-line-number="3"> <span class="dt">med =</span> pkModels[[<span class="st">"med"</span>]][[<span class="st">"p ~ Visibility; k ~ 1"</span>]],</a> +<a class="sourceLine" id="cb26-4" data-line-number="4"> <span class="dt">lrg =</span> pkModels[[<span class="st">"lrg"</span>]][[<span class="st">"p ~ Visibility; k ~ 1"</span>]],</a> +<a class="sourceLine" id="cb26-5" data-line-number="5"> <span class="dt">bat =</span> pkModels[[<span class="st">"bat"</span>]][[<span class="st">"p ~ Visibility; k ~ 1"</span>]]</a> +<a class="sourceLine" id="cb26-6" data-line-number="6">)</a></code></pre></div> </div> <div id="carcass-persistence-modeling" class="section level3"> <h3>Carcass Persistence Modeling</h3> <p>The work flow for carcass persistence modeling is similar to that for searcher efficiency except that in addition to selecting covariates for two different parameters (location = <code>l</code> and scale = <code>s</code>), there are four model forms to choose from: Weibull, lognormal, loglogistic, and exponential.</p> -<pre class="sourceCode r" id="cb33"><code class="sourceCode r"><a class="sourceLine" id="cb33-1" data-line-number="1">? cpm</a> -<a class="sourceLine" id="cb33-2" data-line-number="2">? cpmSet</a></code></pre> -<pre class="sourceCode r" id="cb34"><code class="sourceCode r"><a class="sourceLine" id="cb34-1" data-line-number="1">cpSet_sml <-<span class="st"> </span><span class="kw">cpmSet</span>(</a> -<a class="sourceLine" id="cb34-2" data-line-number="2"> l <span class="op">~</span><span class="st"> </span>Visibility <span class="op">*</span><span class="st"> </span>Season, s <span class="op">~</span><span class="st"> </span>Visibility <span class="op">*</span><span class="st"> </span>Season,</a> -<a class="sourceLine" id="cb34-3" data-line-number="3"> <span class="dt">data =</span> data_CP[data_CP<span class="op">$</span>Size <span class="op">==</span><span class="st"> "sml"</span>, ], <span class="dt">left =</span> <span class="st">"Left"</span>, <span class="dt">right =</span> <span class="st">"Right"</span>,</a> -<a class="sourceLine" id="cb34-4" data-line-number="4"> <span class="dt">dists =</span> <span class="kw">c</span>( <span class="st">"weibull"</span>, <span class="st">"lognormal"</span>, <span class="st">"loglogistic"</span>, <span class="st">"exponential"</span>)</a> -<a class="sourceLine" id="cb34-5" data-line-number="5">)</a></code></pre> +<div class="sourceCode" id="cb27"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb27-1" data-line-number="1">cpModels <-<span class="st"> </span><span class="kw">cpm</span>(</a> +<a class="sourceLine" id="cb27-2" data-line-number="2"> l <span class="op">~</span><span class="st"> </span>Visibility <span class="op">*</span><span class="st"> </span>Season, s <span class="op">~</span><span class="st"> </span>Visibility <span class="op">*</span><span class="st"> </span>Season,</a> +<a class="sourceLine" id="cb27-3" data-line-number="3"> <span class="dt">data =</span> data_CP, <span class="dt">left =</span> <span class="st">"LastPresent"</span>, <span class="dt">right =</span> <span class="st">"FirstAbsent"</span>,</a> +<a class="sourceLine" id="cb27-4" data-line-number="4"> <span class="dt">dist =</span> <span class="kw">c</span>( <span class="st">"weibull"</span>, <span class="st">"lognormal"</span>, <span class="st">"loglogistic"</span>, <span class="st">"exponential"</span>),</a> +<a class="sourceLine" id="cb27-5" data-line-number="5"> <span class="dt">allCombos =</span> <span class="ot">TRUE</span>, <span class="dt">sizeCol =</span> <span class="st">"Size"</span></a> +<a class="sourceLine" id="cb27-6" data-line-number="6">)</a></code></pre></div> <p>The list of models is long:</p> -<pre class="sourceCode r" id="cb35"><code class="sourceCode r"><a class="sourceLine" id="cb35-1" data-line-number="1"><span class="kw">cpmSetAICcTab</span>(cpSet_sml)</a> -<a class="sourceLine" id="cb35-2" data-line-number="2"><span class="co">#> Distribution Location Formula Scale Formula AICc</span></a> -<a class="sourceLine" id="cb35-3" data-line-number="3"><span class="co">#> 25 weibull l ~ 1 s ~ 1 780.00</span></a> -<a class="sourceLine" id="cb35-4" data-line-number="4"><span class="co">#> 24 weibull l ~ Visibility s ~ 1 780.16</span></a> -<a class="sourceLine" id="cb35-5" data-line-number="5"><span class="co">#> 15 weibull l ~ 1 s ~ Season 780.38</span></a> -<a class="sourceLine" id="cb35-6" data-line-number="6"><span class="co">#> 19 weibull l ~ Visibility s ~ Visibility 780.97</span></a> -<a class="sourceLine" id="cb35-7" data-line-number="7"><span class="co">#> 20 weibull l ~ 1 s ~ Visibility 781.32</span></a> -<a class="sourceLine" id="cb35-8" data-line-number="8"><span class="co">#> 10 weibull l ~ 1 s ~ Visibility + Season 782.00</span></a> -<a class="sourceLine" id="cb35-9" data-line-number="9"><span class="co">#> 14 weibull l ~ Visibility s ~ Season 782.04</span></a> -<a class="sourceLine" id="cb35-10" data-line-number="10"><span class="co">#> 22 weibull l ~ Visibility + Season s ~ 1 782.55</span></a> -<a class="sourceLine" id="cb35-11" data-line-number="11"><span class="co">#> 74 loglogistic l ~ Visibility s ~ 1 782.57</span></a> -<a class="sourceLine" id="cb35-12" data-line-number="12"><span class="co">#> 21 weibull l ~ Visibility * Season s ~ 1 782.77</span></a> -<a class="sourceLine" id="cb35-13" data-line-number="13"><span class="co">#> 49 lognormal l ~ Visibility s ~ 1 782.84</span></a> -<a class="sourceLine" id="cb35-14" data-line-number="14"><span class="co">#> 23 weibull l ~ Season s ~ 1 782.88</span></a> -<a class="sourceLine" id="cb35-15" data-line-number="15"><span class="co">#> 71 loglogistic l ~ Visibility * Season s ~ 1 783.06</span></a> -<a class="sourceLine" id="cb35-16" data-line-number="16"><span class="co">#> 13 weibull l ~ Season s ~ Season 783.16</span></a> -<a class="sourceLine" id="cb35-17" data-line-number="17"><span class="co">#> 50 lognormal l ~ 1 s ~ 1 783.18</span></a> -<a class="sourceLine" id="cb35-18" data-line-number="18"><span class="co">#> 75 loglogistic l ~ 1 s ~ 1 783.30</span></a> -<a class="sourceLine" id="cb35-19" data-line-number="19"><span class="co">#> 9 weibull l ~ Visibility s ~ Visibility + Season 783.33</span></a> -<a class="sourceLine" id="cb35-20" data-line-number="20"><span class="co">#> 16 weibull l ~ Visibility * Season s ~ Visibility 783.42</span></a> -<a class="sourceLine" id="cb35-21" data-line-number="21"><span class="co">#> 46 lognormal l ~ Visibility * Season s ~ 1 783.86</span></a> -<a class="sourceLine" id="cb35-22" data-line-number="22"><span class="co">#> 47 lognormal l ~ Visibility + Season s ~ 1 783.86</span></a> -<a class="sourceLine" id="cb35-23" data-line-number="23"><span class="co">#> 40 lognormal l ~ 1 s ~ Season 783.88</span></a> -<a class="sourceLine" id="cb35-24" data-line-number="24"><span class="co">#> 11 weibull l ~ Visibility * Season s ~ Season 783.95</span></a> -<a class="sourceLine" id="cb35-25" data-line-number="25"><span class="co">#> 72 loglogistic l ~ Visibility + Season s ~ 1 784.00</span></a> -<a class="sourceLine" id="cb35-26" data-line-number="26"><span class="co">#> 17 weibull l ~ Visibility + Season s ~ Visibility 784.09</span></a> -<a class="sourceLine" id="cb35-27" data-line-number="27"><span class="co">#> 48 lognormal l ~ Season s ~ 1 784.13</span></a> -<a class="sourceLine" id="cb35-28" data-line-number="28"><span class="co">#> 69 loglogistic l ~ Visibility s ~ Visibility 784.28</span></a> -<a class="sourceLine" id="cb35-29" data-line-number="29"><span class="co">#> 65 loglogistic l ~ 1 s ~ Season 784.30</span></a> -<a class="sourceLine" id="cb35-30" data-line-number="30"><span class="co">#> 12 weibull l ~ Visibility + Season s ~ Season 784.48</span></a> -<a class="sourceLine" id="cb35-31" data-line-number="31"><span class="co">#> 73 loglogistic l ~ Season s ~ 1 784.54</span></a> -<a class="sourceLine" id="cb35-32" data-line-number="32"><span class="co">#> 44 lognormal l ~ Visibility s ~ Visibility 784.58</span></a> -<a class="sourceLine" id="cb35-33" data-line-number="33"><span class="co">#> 18 weibull l ~ Season s ~ Visibility 784.85</span></a> -<a class="sourceLine" id="cb35-34" data-line-number="34"><span class="co">#> 66 loglogistic l ~ Visibility * Season s ~ Visibility 784.85</span></a> -<a class="sourceLine" id="cb35-35" data-line-number="35"><span class="co">#> 64 loglogistic l ~ Visibility s ~ Season 784.95</span></a> -<a class="sourceLine" id="cb35-36" data-line-number="36"><span class="co">#> 39 lognormal l ~ Visibility s ~ Season 785.01</span></a> -<a class="sourceLine" id="cb35-37" data-line-number="37"><span class="co">#> 38 lognormal l ~ Season s ~ Season 785.09</span></a> -<a class="sourceLine" id="cb35-38" data-line-number="38"><span class="co">#> 45 lognormal l ~ 1 s ~ Visibility 785.14</span></a> -<a class="sourceLine" id="cb35-39" data-line-number="39"><span class="co">#> 6 weibull l ~ Visibility * Season s ~ Visibility + Season 785.29</span></a> -<a class="sourceLine" id="cb35-40" data-line-number="40"><span class="co">#> 70 loglogistic l ~ 1 s ~ Visibility 785.31</span></a> -<a class="sourceLine" id="cb35-41" data-line-number="41"><span class="co">#> 8 weibull l ~ Season s ~ Visibility + Season 785.43</span></a> -<a class="sourceLine" id="cb35-42" data-line-number="42"><span class="co">#> 61 loglogistic l ~ Visibility * Season s ~ Season 785.47</span></a> -<a class="sourceLine" id="cb35-43" data-line-number="43"><span class="co">#> 41 lognormal l ~ Visibility * Season s ~ Visibility 785.68</span></a> -<a class="sourceLine" id="cb35-44" data-line-number="44"><span class="co">#> 63 loglogistic l ~ Season s ~ Season 785.71</span></a> -<a class="sourceLine" id="cb35-45" data-line-number="45"><span class="co">#> 36 lognormal l ~ Visibility * Season s ~ Season 785.89</span></a> -<a class="sourceLine" id="cb35-46" data-line-number="46"><span class="co">#> 35 lognormal l ~ 1 s ~ Visibility + Season 786.07</span></a> -<a class="sourceLine" id="cb35-47" data-line-number="47"><span class="co">#> 42 lognormal l ~ Visibility + Season s ~ Visibility 786.15</span></a> -<a class="sourceLine" id="cb35-48" data-line-number="48"><span class="co">#> 37 lognormal l ~ Visibility + Season s ~ Season 786.29</span></a> -<a class="sourceLine" id="cb35-49" data-line-number="49"><span class="co">#> 67 loglogistic l ~ Visibility + Season s ~ Visibility 786.30</span></a> -<a class="sourceLine" id="cb35-50" data-line-number="50"><span class="co">#> 7 weibull l ~ Visibility + Season s ~ Visibility + Season 786.48</span></a> -<a class="sourceLine" id="cb35-51" data-line-number="51"><span class="co">#> 43 lognormal l ~ Season s ~ Visibility 786.48</span></a> -<a class="sourceLine" id="cb35-52" data-line-number="52"><span class="co">#> 60 loglogistic l ~ 1 s ~ Visibility + Season 786.56</span></a> -<a class="sourceLine" id="cb35-53" data-line-number="53"><span class="co">#> 62 loglogistic l ~ Visibility + Season s ~ Season 786.56</span></a> -<a class="sourceLine" id="cb35-54" data-line-number="54"><span class="co">#> 68 loglogistic l ~ Season s ~ Visibility 786.89</span></a> -<a class="sourceLine" id="cb35-55" data-line-number="55"><span class="co">#> 59 loglogistic l ~ Visibility s ~ Visibility + Season 786.94</span></a> -<a class="sourceLine" id="cb35-56" data-line-number="56"><span class="co">#> 34 lognormal l ~ Visibility s ~ Visibility + Season 787.01</span></a> -<a class="sourceLine" id="cb35-57" data-line-number="57"><span class="co">#> 56 loglogistic l ~ Visibility * Season s ~ Visibility + Season 787.41</span></a> -<a class="sourceLine" id="cb35-58" data-line-number="58"><span class="co">#> 33 lognormal l ~ Season s ~ Visibility + Season 787.71</span></a> -<a class="sourceLine" id="cb35-59" data-line-number="59"><span class="co">#> 31 lognormal l ~ Visibility * Season s ~ Visibility + Season 787.87</span></a> -<a class="sourceLine" id="cb35-60" data-line-number="60"><span class="co">#> 58 loglogistic l ~ Season s ~ Visibility + Season 788.35</span></a> -<a class="sourceLine" id="cb35-61" data-line-number="61"><span class="co">#> 32 lognormal l ~ Visibility + Season s ~ Visibility + Season 788.83</span></a> -<a class="sourceLine" id="cb35-62" data-line-number="62"><span class="co">#> 57 loglogistic l ~ Visibility + Season s ~ Visibility + Season 789.12</span></a> -<a class="sourceLine" id="cb35-63" data-line-number="63"><span class="co">#> 5 weibull l ~ 1 s ~ Visibility * Season 789.98</span></a> -<a class="sourceLine" id="cb35-64" data-line-number="64"><span class="co">#> 4 weibull l ~ Visibility s ~ Visibility * Season 791.45</span></a> -<a class="sourceLine" id="cb35-65" data-line-number="65"><span class="co">#> 3 weibull l ~ Season s ~ Visibility * Season 793.01</span></a> -<a class="sourceLine" id="cb35-66" data-line-number="66"><span class="co">#> 1 weibull l ~ Visibility * Season s ~ Visibility * Season 794.00</span></a> -<a class="sourceLine" id="cb35-67" data-line-number="67"><span class="co">#> 30 lognormal l ~ 1 s ~ Visibility * Season 794.47</span></a> -<a class="sourceLine" id="cb35-68" data-line-number="68"><span class="co">#> 2 weibull l ~ Visibility + Season s ~ Visibility * Season 794.50</span></a> -<a class="sourceLine" id="cb35-69" data-line-number="69"><span class="co">#> 55 loglogistic l ~ 1 s ~ Visibility * Season 794.95</span></a> -<a class="sourceLine" id="cb35-70" data-line-number="70"><span class="co">#> 29 lognormal l ~ Visibility s ~ Visibility * Season 795.13</span></a> -<a class="sourceLine" id="cb35-71" data-line-number="71"><span class="co">#> 54 loglogistic l ~ Visibility s ~ Visibility * Season 795.14</span></a> -<a class="sourceLine" id="cb35-72" data-line-number="72"><span class="co">#> 28 lognormal l ~ Season s ~ Visibility * Season 795.65</span></a> -<a class="sourceLine" id="cb35-73" data-line-number="73"><span class="co">#> 53 loglogistic l ~ Season s ~ Visibility * Season 796.37</span></a> -<a class="sourceLine" id="cb35-74" data-line-number="74"><span class="co">#> 51 loglogistic l ~ Visibility * Season s ~ Visibility * Season 796.80</span></a> -<a class="sourceLine" id="cb35-75" data-line-number="75"><span class="co">#> 26 lognormal l ~ Visibility * Season s ~ Visibility * Season 797.20</span></a> -<a class="sourceLine" id="cb35-76" data-line-number="76"><span class="co">#> 27 lognormal l ~ Visibility + Season s ~ Visibility * Season 797.36</span></a> -<a class="sourceLine" id="cb35-77" data-line-number="77"><span class="co">#> 52 loglogistic l ~ Visibility + Season s ~ Visibility * Season 797.70</span></a> -<a class="sourceLine" id="cb35-78" data-line-number="78"><span class="co">#> 76 exponential l ~ Visibility * Season NULL 835.23</span></a> -<a class="sourceLine" id="cb35-79" data-line-number="79"><span class="co">#> 79 exponential l ~ Visibility NULL 839.78</span></a> -<a class="sourceLine" id="cb35-80" data-line-number="80"><span class="co">#> 77 exponential l ~ Visibility + Season NULL 840.96</span></a> -<a class="sourceLine" id="cb35-81" data-line-number="81"><span class="co">#> 80 exponential l ~ 1 NULL 842.24</span></a> -<a class="sourceLine" id="cb35-82" data-line-number="82"><span class="co">#> 78 exponential l ~ Season NULL 844.75</span></a> -<a class="sourceLine" id="cb35-83" data-line-number="83"><span class="co">#> Delta AICc</span></a> -<a class="sourceLine" id="cb35-84" data-line-number="84"><span class="co">#> 25 0.00</span></a> -<a class="sourceLine" id="cb35-85" data-line-number="85"><span class="co">#> 24 0.16</span></a> -<a class="sourceLine" id="cb35-86" data-line-number="86"><span class="co">#> 15 0.38</span></a> -<a class="sourceLine" id="cb35-87" data-line-number="87"><span class="co">#> 19 0.97</span></a> -<a class="sourceLine" id="cb35-88" data-line-number="88"><span class="co">#> 20 1.32</span></a> -<a class="sourceLine" id="cb35-89" data-line-number="89"><span class="co">#> 10 2.00</span></a> -<a class="sourceLine" id="cb35-90" data-line-number="90"><span class="co">#> 14 2.04</span></a> -<a class="sourceLine" id="cb35-91" data-line-number="91"><span class="co">#> 22 2.55</span></a> -<a class="sourceLine" id="cb35-92" data-line-number="92"><span class="co">#> 74 2.57</span></a> -<a class="sourceLine" id="cb35-93" data-line-number="93"><span class="co">#> 21 2.77</span></a> -<a class="sourceLine" id="cb35-94" data-line-number="94"><span class="co">#> 49 2.84</span></a> -<a class="sourceLine" id="cb35-95" data-line-number="95"><span class="co">#> 23 2.88</span></a> -<a class="sourceLine" id="cb35-96" data-line-number="96"><span class="co">#> 71 3.06</span></a> -<a class="sourceLine" id="cb35-97" data-line-number="97"><span class="co">#> 13 3.16</span></a> -<a class="sourceLine" id="cb35-98" data-line-number="98"><span class="co">#> 50 3.18</span></a> -<a class="sourceLine" id="cb35-99" data-line-number="99"><span class="co">#> 75 3.30</span></a> -<a class="sourceLine" id="cb35-100" data-line-number="100"><span class="co">#> 9 3.33</span></a> -<a class="sourceLine" id="cb35-101" data-line-number="101"><span class="co">#> 16 3.42</span></a> -<a class="sourceLine" id="cb35-102" data-line-number="102"><span class="co">#> 46 3.86</span></a> -<a class="sourceLine" id="cb35-103" data-line-number="103"><span class="co">#> 47 3.86</span></a> -<a class="sourceLine" id="cb35-104" data-line-number="104"><span class="co">#> 40 3.88</span></a> -<a class="sourceLine" id="cb35-105" data-line-number="105"><span class="co">#> 11 3.95</span></a> -<a class="sourceLine" id="cb35-106" data-line-number="106"><span class="co">#> 72 4.00</span></a> -<a class="sourceLine" id="cb35-107" data-line-number="107"><span class="co">#> 17 4.09</span></a> -<a class="sourceLine" id="cb35-108" data-line-number="108"><span class="co">#> 48 4.13</span></a> -<a class="sourceLine" id="cb35-109" data-line-number="109"><span class="co">#> 69 4.28</span></a> -<a class="sourceLine" id="cb35-110" data-line-number="110"><span class="co">#> 65 4.30</span></a> -<a class="sourceLine" id="cb35-111" data-line-number="111"><span class="co">#> 12 4.48</span></a> -<a class="sourceLine" id="cb35-112" data-line-number="112"><span class="co">#> 73 4.54</span></a> -<a class="sourceLine" id="cb35-113" data-line-number="113"><span class="co">#> 44 4.58</span></a> -<a class="sourceLine" id="cb35-114" data-line-number="114"><span class="co">#> 18 4.85</span></a> -<a class="sourceLine" id="cb35-115" data-line-number="115"><span class="co">#> 66 4.85</span></a> -<a class="sourceLine" id="cb35-116" data-line-number="116"><span class="co">#> 64 4.95</span></a> -<a class="sourceLine" id="cb35-117" data-line-number="117"><span class="co">#> 39 5.01</span></a> -<a class="sourceLine" id="cb35-118" data-line-number="118"><span class="co">#> 38 5.09</span></a> -<a class="sourceLine" id="cb35-119" data-line-number="119"><span class="co">#> 45 5.14</span></a> -<a class="sourceLine" id="cb35-120" data-line-number="120"><span class="co">#> 6 5.29</span></a> -<a class="sourceLine" id="cb35-121" data-line-number="121"><span class="co">#> 70 5.31</span></a> -<a class="sourceLine" id="cb35-122" data-line-number="122"><span class="co">#> 8 5.43</span></a> -<a class="sourceLine" id="cb35-123" data-line-number="123"><span class="co">#> 61 5.47</span></a> -<a class="sourceLine" id="cb35-124" data-line-number="124"><span class="co">#> 41 5.68</span></a> -<a class="sourceLine" id="cb35-125" data-line-number="125"><span class="co">#> 63 5.71</span></a> -<a class="sourceLine" id="cb35-126" data-line-number="126"><span class="co">#> 36 5.89</span></a> -<a class="sourceLine" id="cb35-127" data-line-number="127"><span class="co">#> 35 6.07</span></a> -<a class="sourceLine" id="cb35-128" data-line-number="128"><span class="co">#> 42 6.15</span></a> -<a class="sourceLine" id="cb35-129" data-line-number="129"><span class="co">#> 37 6.29</span></a> -<a class="sourceLine" id="cb35-130" data-line-number="130"><span class="co">#> 67 6.30</span></a> -<a class="sourceLine" id="cb35-131" data-line-number="131"><span class="co">#> 7 6.48</span></a> -<a class="sourceLine" id="cb35-132" data-line-number="132"><span class="co">#> 43 6.48</span></a> -<a class="sourceLine" id="cb35-133" data-line-number="133"><span class="co">#> 60 6.56</span></a> -<a class="sourceLine" id="cb35-134" data-line-number="134"><span class="co">#> 62 6.56</span></a> -<a class="sourceLine" id="cb35-135" data-line-number="135"><span class="co">#> 68 6.89</span></a> -<a class="sourceLine" id="cb35-136" data-line-number="136"><span class="co">#> 59 6.94</span></a> -<a class="sourceLine" id="cb35-137" data-line-number="137"><span class="co">#> 34 7.01</span></a> -<a class="sourceLine" id="cb35-138" data-line-number="138"><span class="co">#> 56 7.41</span></a> -<a class="sourceLine" id="cb35-139" data-line-number="139"><span class="co">#> 33 7.71</span></a> -<a class="sourceLine" id="cb35-140" data-line-number="140"><span class="co">#> 31 7.87</span></a> -<a class="sourceLine" id="cb35-141" data-line-number="141"><span class="co">#> 58 8.35</span></a> -<a class="sourceLine" id="cb35-142" data-line-number="142"><span class="co">#> 32 8.83</span></a> -<a class="sourceLine" id="cb35-143" data-line-number="143"><span class="co">#> 57 9.12</span></a> -<a class="sourceLine" id="cb35-144" data-line-number="144"><span class="co">#> 5 9.98</span></a> -<a class="sourceLine" id="cb35-145" data-line-number="145"><span class="co">#> 4 11.45</span></a> -<a class="sourceLine" id="cb35-146" data-line-number="146"><span class="co">#> 3 13.01</span></a> -<a class="sourceLine" id="cb35-147" data-line-number="147"><span class="co">#> 1 14.00</span></a> -<a class="sourceLine" id="cb35-148" data-line-number="148"><span class="co">#> 30 14.47</span></a> -<a class="sourceLine" id="cb35-149" data-line-number="149"><span class="co">#> 2 14.50</span></a> -<a class="sourceLine" id="cb35-150" data-line-number="150"><span class="co">#> 55 14.95</span></a> -<a class="sourceLine" id="cb35-151" data-line-number="151"><span class="co">#> 29 15.13</span></a> -<a class="sourceLine" id="cb35-152" data-line-number="152"><span class="co">#> 54 15.14</span></a> -<a class="sourceLine" id="cb35-153" data-line-number="153"><span class="co">#> 28 15.65</span></a> -<a class="sourceLine" id="cb35-154" data-line-number="154"><span class="co">#> 53 16.37</span></a> -<a class="sourceLine" id="cb35-155" data-line-number="155"><span class="co">#> 51 16.80</span></a> -<a class="sourceLine" id="cb35-156" data-line-number="156"><span class="co">#> 26 17.20</span></a> -<a class="sourceLine" id="cb35-157" data-line-number="157"><span class="co">#> 27 17.36</span></a> -<a class="sourceLine" id="cb35-158" data-line-number="158"><span class="co">#> 52 17.70</span></a> -<a class="sourceLine" id="cb35-159" data-line-number="159"><span class="co">#> 76 55.23</span></a> -<a class="sourceLine" id="cb35-160" data-line-number="160"><span class="co">#> 79 59.78</span></a> -<a class="sourceLine" id="cb35-161" data-line-number="161"><span class="co">#> 77 60.96</span></a> -<a class="sourceLine" id="cb35-162" data-line-number="162"><span class="co">#> 80 62.24</span></a> -<a class="sourceLine" id="cb35-163" data-line-number="163"><span class="co">#> 78 64.75</span></a></code></pre> +<div class="sourceCode" id="cb28"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb28-1" data-line-number="1"><span class="kw">lapply</span>(<span class="kw">aicc</span>(cpModels), nrow)</a> +<a class="sourceLine" id="cb28-2" data-line-number="2"><span class="co">#> $bat</span></a> +<a class="sourceLine" id="cb28-3" data-line-number="3"><span class="co">#> [1] 80</span></a> +<a class="sourceLine" id="cb28-4" data-line-number="4"><span class="co">#> </span></a> +<a class="sourceLine" id="cb28-5" data-line-number="5"><span class="co">#> $lrg</span></a> +<a class="sourceLine" id="cb28-6" data-line-number="6"><span class="co">#> [1] 80</span></a> +<a class="sourceLine" id="cb28-7" data-line-number="7"><span class="co">#> </span></a> +<a class="sourceLine" id="cb28-8" data-line-number="8"><span class="co">#> $med</span></a> +<a class="sourceLine" id="cb28-9" data-line-number="9"><span class="co">#> [1] 80</span></a> +<a class="sourceLine" id="cb28-10" data-line-number="10"><span class="co">#> </span></a> +<a class="sourceLine" id="cb28-11" data-line-number="11"><span class="co">#> $sml</span></a> +<a class="sourceLine" id="cb28-12" data-line-number="12"><span class="co">#> [1] 80</span></a> +<a class="sourceLine" id="cb28-13" data-line-number="13"><span class="kw">aicc</span>(cpModels[[<span class="st">"sml"</span>]])</a> +<a class="sourceLine" id="cb28-14" data-line-number="14"><span class="co">#> Distribution Location Formula Scale Formula AICc <U+0394>AICc</span></a> +<a class="sourceLine" id="cb28-15" data-line-number="15"><span class="co">#> 25 weibull l ~ 1 s ~ 1 780.00 0.00</span></a> +<a class="sourceLine" id="cb28-16" data-line-number="16"><span class="co">#> 24 weibull l ~ Visibility s ~ 1 780.16 0.16</span></a> +<a class="sourceLine" id="cb28-17" data-line-number="17"><span class="co">#> 15 weibull l ~ 1 s ~ Season 780.38 0.38</span></a> +<a class="sourceLine" id="cb28-18" data-line-number="18"><span class="co">#> 19 weibull l ~ Visibility s ~ Visibility 780.97 0.97</span></a> +<a class="sourceLine" id="cb28-19" data-line-number="19"><span class="co">#> 20 weibull l ~ 1 s ~ Visibility 781.32 1.32</span></a> +<a class="sourceLine" id="cb28-20" data-line-number="20"><span class="co">#> 10 weibull l ~ 1 s ~ Visibility + Season 782.00 2.00</span></a> +<a class="sourceLine" id="cb28-21" data-line-number="21"><span class="co">#> 14 weibull l ~ Visibility s ~ Season 782.04 2.04</span></a> +<a class="sourceLine" id="cb28-22" data-line-number="22"><span class="co">#> 22 weibull l ~ Visibility + Season s ~ 1 782.55 2.55</span></a> +<a class="sourceLine" id="cb28-23" data-line-number="23"><span class="co">#> 74 loglogistic l ~ Visibility s ~ 1 782.57 2.57</span></a> +<a class="sourceLine" id="cb28-24" data-line-number="24"><span class="co">#> 21 weibull l ~ Visibility * Season s ~ 1 782.77 2.77</span></a> +<a class="sourceLine" id="cb28-25" data-line-number="25"><span class="co">#> 49 lognormal l ~ Visibility s ~ 1 782.84 2.84</span></a> +<a class="sourceLine" id="cb28-26" data-line-number="26"><span class="co">#> 23 weibull l ~ Season s ~ 1 782.88 2.88</span></a> +<a class="sourceLine" id="cb28-27" data-line-number="27"><span class="co">#> 71 loglogistic l ~ Visibility * Season s ~ 1 783.06 3.06</span></a> +<a class="sourceLine" id="cb28-28" data-line-number="28"><span class="co">#> 13 weibull l ~ Season s ~ Season 783.16 3.16</span></a> +<a class="sourceLine" id="cb28-29" data-line-number="29"><span class="co">#> 50 lognormal l ~ 1 s ~ 1 783.18 3.18</span></a> +<a class="sourceLine" id="cb28-30" data-line-number="30"><span class="co">#> 75 loglogistic l ~ 1 s ~ 1 783.30 3.30</span></a> +<a class="sourceLine" id="cb28-31" data-line-number="31"><span class="co">#> 9 weibull l ~ Visibility s ~ Visibility + Season 783.33 3.33</span></a> +<a class="sourceLine" id="cb28-32" data-line-number="32"><span class="co">#> 16 weibull l ~ Visibility * Season s ~ Visibility 783.42 3.42</span></a> +<a class="sourceLine" id="cb28-33" data-line-number="33"><span class="co">#> 46 lognormal l ~ Visibility * Season s ~ 1 783.86 3.86</span></a> +<a class="sourceLine" id="cb28-34" data-line-number="34"><span class="co">#> 47 lognormal l ~ Visibility + Season s ~ 1 783.86 3.86</span></a> +<a class="sourceLine" id="cb28-35" data-line-number="35"><span class="co">#> 40 lognormal l ~ 1 s ~ Season 783.88 3.88</span></a> +<a class="sourceLine" id="cb28-36" data-line-number="36"><span class="co">#> 11 weibull l ~ Visibility * Season s ~ Season 783.95 3.95</span></a> +<a class="sourceLine" id="cb28-37" data-line-number="37"><span class="co">#> 72 loglogistic l ~ Visibility + Season s ~ 1 784.00 4.00</span></a> +<a class="sourceLine" id="cb28-38" data-line-number="38"><span class="co">#> 17 weibull l ~ Visibility + Season s ~ Visibility 784.09 4.09</span></a> +<a class="sourceLine" id="cb28-39" data-line-number="39"><span class="co">#> 48 lognormal l ~ Season s ~ 1 784.13 4.13</span></a> +<a class="sourceLine" id="cb28-40" data-line-number="40"><span class="co">#> 69 loglogistic l ~ Visibility s ~ Visibility 784.28 4.28</span></a> +<a class="sourceLine" id="cb28-41" data-line-number="41"><span class="co">#> 65 loglogistic l ~ 1 s ~ Season 784.30 4.30</span></a> +<a class="sourceLine" id="cb28-42" data-line-number="42"><span class="co">#> 12 weibull l ~ Visibility + Season s ~ Season 784.48 4.48</span></a> +<a class="sourceLine" id="cb28-43" data-line-number="43"><span class="co">#> 73 loglogistic l ~ Season s ~ 1 784.54 4.54</span></a> +<a class="sourceLine" id="cb28-44" data-line-number="44"><span class="co">#> 44 lognormal l ~ Visibility s ~ Visibility 784.58 4.58</span></a> +<a class="sourceLine" id="cb28-45" data-line-number="45"><span class="co">#> 18 weibull l ~ Season s ~ Visibility 784.85 4.85</span></a> +<a class="sourceLine" id="cb28-46" data-line-number="46"><span class="co">#> 66 loglogistic l ~ Visibility * Season s ~ Visibility 784.85 4.85</span></a> +<a class="sourceLine" id="cb28-47" data-line-number="47"><span class="co">#> 64 loglogistic l ~ Visibility s ~ Season 784.95 4.95</span></a> +<a class="sourceLine" id="cb28-48" data-line-number="48"><span class="co">#> 39 lognormal l ~ Visibility s ~ Season 785.01 5.01</span></a> +<a class="sourceLine" id="cb28-49" data-line-number="49"><span class="co">#> 38 lognormal l ~ Season s ~ Season 785.09 5.09</span></a> +<a class="sourceLine" id="cb28-50" data-line-number="50"><span class="co">#> 45 lognormal l ~ 1 s ~ Visibility 785.14 5.14</span></a> +<a class="sourceLine" id="cb28-51" data-line-number="51"><span class="co">#> 6 weibull l ~ Visibility * Season s ~ Visibility + Season 785.29 5.29</span></a> +<a class="sourceLine" id="cb28-52" data-line-number="52"><span class="co">#> 70 loglogistic l ~ 1 s ~ Visibility 785.31 5.31</span></a> +<a class="sourceLine" id="cb28-53" data-line-number="53"><span class="co">#> 8 weibull l ~ Season s ~ Visibility + Season 785.43 5.43</span></a> +<a class="sourceLine" id="cb28-54" data-line-number="54"><span class="co">#> 61 loglogistic l ~ Visibility * Season s ~ Season 785.47 5.47</span></a> +<a class="sourceLine" id="cb28-55" data-line-number="55"><span class="co">#> 41 lognormal l ~ Visibility * Season s ~ Visibility 785.68 5.68</span></a> +<a class="sourceLine" id="cb28-56" data-line-number="56"><span class="co">#> 63 loglogistic l ~ Season s ~ Season 785.71 5.71</span></a> +<a class="sourceLine" id="cb28-57" data-line-number="57"><span class="co">#> 36 lognormal l ~ Visibility * Season s ~ Season 785.89 5.89</span></a> +<a class="sourceLine" id="cb28-58" data-line-number="58"><span class="co">#> 35 lognormal l ~ 1 s ~ Visibility + Season 786.07 6.07</span></a> +<a class="sourceLine" id="cb28-59" data-line-number="59"><span class="co">#> 42 lognormal l ~ Visibility + Season s ~ Visibility 786.15 6.15</span></a> +<a class="sourceLine" id="cb28-60" data-line-number="60"><span class="co">#> 37 lognormal l ~ Visibility + Season s ~ Season 786.29 6.29</span></a> +<a class="sourceLine" id="cb28-61" data-line-number="61"><span class="co">#> 67 loglogistic l ~ Visibility + Season s ~ Visibility 786.30 6.30</span></a> +<a class="sourceLine" id="cb28-62" data-line-number="62"><span class="co">#> 7 weibull l ~ Visibility + Season s ~ Visibility + Season 786.48 6.48</span></a> +<a class="sourceLine" id="cb28-63" data-line-number="63"><span class="co">#> 43 lognormal l ~ Season s ~ Visibility 786.48 6.48</span></a> +<a class="sourceLine" id="cb28-64" data-line-number="64"><span class="co">#> 60 loglogistic l ~ 1 s ~ Visibility + Season 786.56 6.56</span></a> +<a class="sourceLine" id="cb28-65" data-line-number="65"><span class="co">#> 62 loglogistic l ~ Visibility + Season s ~ Season 786.56 6.56</span></a> +<a class="sourceLine" id="cb28-66" data-line-number="66"><span class="co">#> 68 loglogistic l ~ Season s ~ Visibility 786.89 6.89</span></a> +<a class="sourceLine" id="cb28-67" data-line-number="67"><span class="co">#> 59 loglogistic l ~ Visibility s ~ Visibility + Season 786.94 6.94</span></a> +<a class="sourceLine" id="cb28-68" data-line-number="68"><span class="co">#> 34 lognormal l ~ Visibility s ~ Visibility + Season 787.01 7.01</span></a> +<a class="sourceLine" id="cb28-69" data-line-number="69"><span class="co">#> 56 loglogistic l ~ Visibility * Season s ~ Visibility + Season 787.41 7.41</span></a> +<a class="sourceLine" id="cb28-70" data-line-number="70"><span class="co">#> 33 lognormal l ~ Season s ~ Visibility + Season 787.71 7.71</span></a> +<a class="sourceLine" id="cb28-71" data-line-number="71"><span class="co">#> 31 lognormal l ~ Visibility * Season s ~ Visibility + Season 787.87 7.87</span></a> +<a class="sourceLine" id="cb28-72" data-line-number="72"><span class="co">#> 58 loglogistic l ~ Season s ~ Visibility + Season 788.35 8.35</span></a> +<a class="sourceLine" id="cb28-73" data-line-number="73"><span class="co">#> 32 lognormal l ~ Visibility + Season s ~ Visibility + Season 788.83 8.83</span></a> +<a class="sourceLine" id="cb28-74" data-line-number="74"><span class="co">#> 57 loglogistic l ~ Visibility + Season s ~ Visibility + Season 789.12 9.12</span></a> +<a class="sourceLine" id="cb28-75" data-line-number="75"><span class="co">#> 5 weibull l ~ 1 s ~ Visibility * Season 789.98 9.98</span></a> +<a class="sourceLine" id="cb28-76" data-line-number="76"><span class="co">#> 4 weibull l ~ Visibility s ~ Visibility * Season 791.45 11.45</span></a> +<a class="sourceLine" id="cb28-77" data-line-number="77"><span class="co">#> 3 weibull l ~ Season s ~ Visibility * Season 793.01 13.01</span></a> +<a class="sourceLine" id="cb28-78" data-line-number="78"><span class="co">#> 1 weibull l ~ Visibility * Season s ~ Visibility * Season 794.00 14.00</span></a> +<a class="sourceLine" id="cb28-79" data-line-number="79"><span class="co">#> 30 lognormal l ~ 1 s ~ Visibility * Season 794.47 14.47</span></a> +<a class="sourceLine" id="cb28-80" data-line-number="80"><span class="co">#> 2 weibull l ~ Visibility + Season s ~ Visibility * Season 794.50 14.50</span></a> +<a class="sourceLine" id="cb28-81" data-line-number="81"><span class="co">#> 55 loglogistic l ~ 1 s ~ Visibility * Season 794.95 14.95</span></a> +<a class="sourceLine" id="cb28-82" data-line-number="82"><span class="co">#> 29 lognormal l ~ Visibility s ~ Visibility * Season 795.13 15.13</span></a> +<a class="sourceLine" id="cb28-83" data-line-number="83"><span class="co">#> 54 loglogistic l ~ Visibility s ~ Visibility * Season 795.14 15.14</span></a> +<a class="sourceLine" id="cb28-84" data-line-number="84"><span class="co">#> 28 lognormal l ~ Season s ~ Visibility * Season 795.65 15.65</span></a> +<a class="sourceLine" id="cb28-85" data-line-number="85"><span class="co">#> 53 loglogistic l ~ Season s ~ Visibility * Season 796.37 16.37</span></a> +<a class="sourceLine" id="cb28-86" data-line-number="86"><span class="co">#> 51 loglogistic l ~ Visibility * Season s ~ Visibility * Season 796.80 16.80</span></a> +<a class="sourceLine" id="cb28-87" data-line-number="87"><span class="co">#> 26 lognormal l ~ Visibility * Season s ~ Visibility * Season 797.20 17.20</span></a> +<a class="sourceLine" id="cb28-88" data-line-number="88"><span class="co">#> 27 lognormal l ~ Visibility + Season s ~ Visibility * Season 797.36 17.36</span></a> +<a class="sourceLine" id="cb28-89" data-line-number="89"><span class="co">#> 52 loglogistic l ~ Visibility + Season s ~ Visibility * Season 797.70 17.70</span></a> +<a class="sourceLine" id="cb28-90" data-line-number="90"><span class="co">#> 76 exponential l ~ Visibility * Season NULL 835.23 55.23</span></a> +<a class="sourceLine" id="cb28-91" data-line-number="91"><span class="co">#> 79 exponential l ~ Visibility NULL 839.78 59.78</span></a> +<a class="sourceLine" id="cb28-92" data-line-number="92"><span class="co">#> 77 exponential l ~ Visibility + Season NULL 840.96 60.96</span></a> +<a class="sourceLine" id="cb28-93" data-line-number="93"><span class="co">#> 80 exponential l ~ 1 NULL 842.24 62.24</span></a> +<a class="sourceLine" id="cb28-94" data-line-number="94"><span class="co">#> 78 exponential l ~ Season NULL 844.75 64.75</span></a></code></pre></div> <p>It is not uncommon to see the fits for the exponential distribution at the bottom of the AIC list. The exponential distribution has only one parameter and does not have nearly as much flexibility as the others, which each have two-parameters. An implicit assumption of the exponential model is that the scavenging rate is constant, regardless of carcass age. When that assumption is not met, the exponential provides an inferior fit.</p> -<p>To compare among a set of cp models with plausible AICs, use <code>plot(cpSet, ...)</code> with desired models specified by name. It can be seen from the AICc table (<code>cpmSetAICcTab(cpSet_sml)</code>) that the top 10 models according to AICc are:</p> -<pre class="sourceCode r" id="cb36"><code class="sourceCode r"><a class="sourceLine" id="cb36-1" data-line-number="1">cp_smlCandidates <-<span class="st"> </span><span class="kw">names</span>(cpSet_sml)[<span class="kw">c</span>(<span class="dv">24</span>, <span class="dv">19</span>, <span class="dv">14</span>, <span class="dv">9</span>, <span class="dv">25</span>, <span class="dv">17</span>, <span class="dv">20</span>, <span class="dv">22</span>, <span class="dv">15</span>, <span class="dv">44</span>)]</a> -<a class="sourceLine" id="cb36-2" data-line-number="2">cp_smlCandidates</a> -<a class="sourceLine" id="cb36-3" data-line-number="3"><span class="co">#> [1] "dist: weibull; l ~ Visibility; s ~ 1" </span></a> -<a class="sourceLine" id="cb36-4" data-line-number="4"><span class="co">#> [2] "dist: weibull; l ~ Visibility; s ~ Visibility" </span></a> -<a class="sourceLine" id="cb36-5" data-line-number="5"><span class="co">#> [3] "dist: weibull; l ~ Visibility; s ~ Season" </span></a> -<a class="sourceLine" id="cb36-6" data-line-number="6"><span class="co">#> [4] "dist: weibull; l ~ Visibility; s ~ Visibility + Season"</span></a> -<a class="sourceLine" id="cb36-7" data-line-number="7"><span class="co">#> [5] "dist: weibull; l ~ 1; s ~ 1" </span></a> -<a class="sourceLine" id="cb36-8" data-line-number="8"><span class="co">#> [6] "dist: weibull; l ~ Visibility + Season; s ~ Visibility"</span></a> -<a class="sourceLine" id="cb36-9" data-line-number="9"><span class="co">#> [7] "dist: weibull; l ~ 1; s ~ Visibility" </span></a> -<a class="sourceLine" id="cb36-10" data-line-number="10"><span class="co">#> [8] "dist: weibull; l ~ Visibility + Season; s ~ 1" </span></a> -<a class="sourceLine" id="cb36-11" data-line-number="11"><span class="co">#> [9] "dist: weibull; l ~ 1; s ~ Season" </span></a> -<a class="sourceLine" id="cb36-12" data-line-number="12"><span class="co">#> [10] "dist: lognormal; l ~ Visibility; s ~ Visibility"</span></a></code></pre> +<p>To compare among a set of cp models with plausible AICs, use, for example, <code>plot(cpModels[["sml"]])</code> to browse through all the models or <code>plot(cpModels[["sml"]][["p ~ Visibility; k ~ 1"]])</code> to view a single model specified by name. It can be seen from the AICc table (<code>aicc(cpModels[["sml"]])</code>) that the top 10 models according to AICc are:</p> +<div class="sourceCode" id="cb29"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb29-1" data-line-number="1">cp_smlCandidates <-</a> +<a class="sourceLine" id="cb29-2" data-line-number="2"><span class="st"> </span><span class="kw">names</span>(cpModels[[<span class="st">"sml"</span>]])[<span class="kw">c</span>(<span class="dv">25</span>, <span class="dv">24</span>, <span class="dv">15</span>, <span class="dv">19</span>, <span class="dv">20</span>, <span class="dv">10</span>, <span class="dv">14</span>, <span class="dv">22</span>, <span class="dv">74</span>, <span class="dv">21</span>)]</a> +<a class="sourceLine" id="cb29-3" data-line-number="3">cp_smlCandidates</a> +<a class="sourceLine" id="cb29-4" data-line-number="4"><span class="co">#> [1] "dist: weibull; l ~ 1; s ~ 1" "dist: weibull; l ~ Visibility; s ~ 1" </span></a> +<a class="sourceLine" id="cb29-5" data-line-number="5"><span class="co">#> [3] "dist: weibull; l ~ 1; s ~ Season" "dist: weibull; l ~ Visibility; s ~ Visibility"</span></a> +<a class="sourceLine" id="cb29-6" data-line-number="6"><span class="co">#> [5] "dist: weibull; l ~ 1; s ~ Visibility" "dist: weibull; l ~ 1; s ~ Visibility + Season"</span></a> +<a class="sourceLine" id="cb29-7" data-line-number="7"><span class="co">#> [7] "dist: weibull; l ~ Visibility; s ~ Season" "dist: weibull; l ~ Visibility + Season; s ~ 1"</span></a> +<a class="sourceLine" id="cb29-8" data-line-number="8"><span class="co">#> [9] "dist: loglogistic; l ~ Visibility; s ~ 1" "dist: weibull; l ~ Visibility * Season; s ~ 1"</span></a></code></pre></div> <p>These can be compared in graphs as follows:</p> -<pre class="sourceCode r" id="cb37"><code class="sourceCode r"><a class="sourceLine" id="cb37-1" data-line-number="1"><span class="kw">plot</span>(cpSet_sml, <span class="dt">specificModel =</span> cp_smlCandidates)</a></code></pre> +<div class="sourceCode" id="cb30"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb30-1" data-line-number="1"><span class="kw">plot</span>(cpSet_sml, <span class="dt">specificModel =</span> cp_smlCandidates)</a></code></pre></div> <p>The figure shows the raw persistence data (fraction of carcasses remaining after the given time) for each cell, as a black stair case with Kaplan-Meier confidence intervals as dashed lines. In addition, the fitted curves for each of the distributions are shown in color, with the <code>specificModel</code> distribution having a thicker than the others. The two-parameter models (Weibull, lognormal, and loglogistic) tend to be very similar and a relatively close fit to the data. The exponential model tends to be somewhat removed from the others. Clicking on the graphing window brings up the next set of figures.</p> <p>We’re looking for a good fit between the selected model and the data in as many cells as possible. The first several models among the <code>cp_smlCandidates</code> seems to provide a reasonably good fit in all cells, although there seems to be a trade-off between fitting the RP.spring cell well or fitting the RP.summer cell well. <code>Visibility</code> occurs frequently in the top models, while <code>Season</code> appears more frequently in the bottom models. This indicates that <code>Season</code> is probably not a strong predictor of carcass persistence, while <code>Visibility</code> is.</p> <p>Selecting the top AICc model for use in mortality estimation:</p> -<pre class="sourceCode r" id="cb38"><code class="sourceCode r"><a class="sourceLine" id="cb38-1" data-line-number="1">cp_sml <-<span class="st"> </span>cpSet_sml[[cp_smlCandidates[<span class="dv">1</span>]]]</a></code></pre> +<div class="sourceCode" id="cb31"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb31-1" data-line-number="1">cp_sml <-<span class="st"> </span>cpModels[[<span class="st">"sml"</span>]][[cp_smlCandidates[<span class="dv">1</span>]]]</a></code></pre></div> <p>Following a similar model selection process for the other size classes, we select the following:</p> -<pre class="sourceCode r" id="cb39"><code class="sourceCode r"><a class="sourceLine" id="cb39-1" data-line-number="1">cp_med <-<span class="st"> </span><span class="kw">cpm</span>(l <span class="op">~</span><span class="st"> </span>Visibility, s <span class="op">~</span><span class="st"> </span>Season,</a> -<a class="sourceLine" id="cb39-2" data-line-number="2"> <span class="dt">data =</span> data_CP[data_CP<span class="op">$</span>Size <span class="op">==</span><span class="st"> "med"</span>, ], <span class="dt">left =</span> <span class="st">"Left"</span>, <span class="dt">right =</span> <span class="st">"Right"</span>,</a> -<a class="sourceLine" id="cb39-3" data-line-number="3"> <span class="dt">dist =</span> <span class="st">"weibull"</span>)</a> -<a class="sourceLine" id="cb39-4" data-line-number="4">cp_lrg <-<span class="st"> </span><span class="kw">cpm</span>(l <span class="op">~</span><span class="st"> </span>Visibility <span class="op">+</span><span class="st"> </span>Season, <span class="dt">data =</span> data_CP[data_CP<span class="op">$</span>Size <span class="op">==</span><span class="st"> "lrg"</span>, ],</a> -<a class="sourceLine" id="cb39-5" data-line-number="5"> <span class="dt">left =</span> <span class="st">"Left"</span>, <span class="dt">right =</span> <span class="st">"Right"</span>, <span class="dt">dist =</span> <span class="st">"exponential"</span>)</a> -<a class="sourceLine" id="cb39-6" data-line-number="6">cp_bat <-<span class="st"> </span><span class="kw">cpm</span>(l <span class="op">~</span><span class="st"> </span>Visibility <span class="op">+</span><span class="st"> </span>Season, s <span class="op">~</span><span class="st"> </span><span class="dv">1</span>,</a> -<a class="sourceLine" id="cb39-7" data-line-number="7"> <span class="dt">data =</span> data_CP[data_CP<span class="op">$</span>Size <span class="op">==</span><span class="st"> "med"</span>, ], <span class="dt">left =</span> <span class="st">"Left"</span>, <span class="dt">right =</span> <span class="st">"Right"</span>,</a> -<a class="sourceLine" id="cb39-8" data-line-number="8"> <span class="dt">dist =</span> <span class="st">"weibull"</span>)</a></code></pre> +<div class="sourceCode" id="cb32"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb32-1" data-line-number="1">cp_med <-<span class="st"> </span>cpModels[[<span class="st">"med"</span>]][[<span class="st">"dist: weibull; l ~ Visibility; s ~ Season"</span>]]</a> +<a class="sourceLine" id="cb32-2" data-line-number="2">cp_lrg <-<span class="st"> </span>cpModels[[<span class="st">"lrg"</span>]][[<span class="st">"dist: exponential; l ~ Visibility + Season; NULL"</span>]]</a> +<a class="sourceLine" id="cb32-3" data-line-number="3">cp_bat <-<span class="st"> </span>cpModels[[<span class="st">"bat"</span>]][[<span class="st">"dist: weibull; l ~ Visibility + Season; s ~ 1"</span>]]</a></code></pre></div> <p>NOTE: For large carcasses, the exponential distribution was at the top of the AICc list. The exponential requires only one parameter (<code>l</code>), so no scale parameter is provided in the model.</p> <p>Again, we collate the models into a list for later analysis of detection probabilities and mortality rates.</p> -<pre class="sourceCode r" id="cb40"><code class="sourceCode r"><a class="sourceLine" id="cb40-1" data-line-number="1">cpMods <-<span class="st"> </span><span class="kw">list</span>(</a> -<a class="sourceLine" id="cb40-2" data-line-number="2"> <span class="dt">sml =</span> cp_sml,</a> -<a class="sourceLine" id="cb40-3" data-line-number="3"> <span class="dt">med =</span> cp_med,</a> -<a class="sourceLine" id="cb40-4" data-line-number="4"> <span class="dt">lrg =</span> cp_lrg,</a> -<a class="sourceLine" id="cb40-5" data-line-number="5"> <span class="dt">bat =</span> cp_bat</a> -<a class="sourceLine" id="cb40-6" data-line-number="6">)</a></code></pre> +<div class="sourceCode" id="cb33"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb33-1" data-line-number="1">cpMods <-<span class="st"> </span><span class="kw">list</span>(</a> +<a class="sourceLine" id="cb33-2" data-line-number="2"> <span class="dt">sml =</span> cp_sml,</a> +<a class="sourceLine" id="cb33-3" data-line-number="3"> <span class="dt">med =</span> cp_med,</a> +<a class="sourceLine" id="cb33-4" data-line-number="4"> <span class="dt">lrg =</span> cp_lrg,</a> +<a class="sourceLine" id="cb33-5" data-line-number="5"> <span class="dt">bat =</span> cp_bat</a> +<a class="sourceLine" id="cb33-6" data-line-number="6">)</a></code></pre></div> </div> <div id="mortality-estimation-1" class="section level3"> <h3>Mortality Estimation</h3> -<p>Each carcass’s contribution to the total mortality in each search interval is estimated using the <code>estM</code> function. The function call is largely similar that used in the simple scenario discussed in example 1. However, there are some important differences. First, <code>model_SE</code> and <code>model_CP</code> are lists of models, one element for each size class. In addition, the name of the size class variable is provided as <code>sizeclassCol = "Size"</code>. Finally, the <code>frac</code> argument represents the sampling fraction or the fraction of carcasses expected to fall at the units that were searched. In this example, 23 out of 100 turbines were searched, so <code>frac</code> is set equal to 0.23 under the assumption that the mortality rates at the unsearched turbines did not differ substantially from the rates at the searched turbines.</p> -<pre class="sourceCode r" id="cb41"><code class="sourceCode r"><a class="sourceLine" id="cb41-1" data-line-number="1">Mhat <-<span class="st"> </span><span class="kw">estM</span>(<span class="dt">nsim =</span> <span class="dv">1000</span>, <span class="dt">data_CO =</span> data_CO, <span class="dt">data_SS =</span> data_SS, <span class="dt">frac =</span> <span class="fl">0.23</span>,</a> -<a class="sourceLine" id="cb41-2" data-line-number="2"> <span class="dt">data_DWP =</span> data_DWP, <span class="dt">model_SE =</span> pkMods, <span class="dt">model_CP =</span> cpMods,</a> -<a class="sourceLine" id="cb41-3" data-line-number="3"> <span class="dt">sizeclassCol =</span> <span class="st">"Size"</span>, <span class="dt">unitCol =</span> <span class="st">"Turbine"</span>, <span class="dt">dateFoundCol =</span> <span class="st">"DateFound"</span>)</a> -<a class="sourceLine" id="cb41-4" data-line-number="4"></a> -<a class="sourceLine" id="cb41-5" data-line-number="5"><span class="kw">summary</span>(Mhat)</a> -<a class="sourceLine" id="cb41-6" data-line-number="6"><span class="co">#> median 5% 95% </span></a> -<a class="sourceLine" id="cb41-7" data-line-number="7"><span class="co">#> 1529.65 1188.15 1991.05</span></a> -<a class="sourceLine" id="cb41-8" data-line-number="8"><span class="kw">plot</span>(Mhat)</a></code></pre> -<p><img src="data:image/png;base64,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" style="display: block; margin: auto;" /></p> -<p>This estimate is for the total number of fatalities among all size classes combined, from hummingbirds and bats to eagles. Fortunately, mortality estimates may be partitioned or split into desired categories, such as species, size, or season. Splits may be performed according to characteristics of the carcasses or where they were found (e.g., species, turbine or other variable found in <code>data_CO</code>) or when they were found (e.g., season or other variable associated with search schedule and found in <code>data_SS</code>, or a vector of specific times).</p> +<p>Each carcass’s contribution to the total mortality in each search interval is estimated using the <code>estM</code> function. The function call is largely similar that used in the simple scenario discussed in example 1. However, there are some important differences. First, <code>model_SE</code> and <code>model_CP</code> are lists of models, one element for each size class. In addition, the name of the size class variable is provided as <code>sizeCol = "Size"</code>. Finally, the <code>frac</code> argument represents the sampling fraction or the fraction of carcasses expected to fall at the units that were searched. In this example, 23 out of 100 turbines were searched, and <code>frac</code> is set equal to 0.23 under the assumption that the mortality rates at the unsearched turbines did not differ substantially from the rates at the searched turbines.</p> +<div class="sourceCode" id="cb34"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb34-1" data-line-number="1">Mhat <-<span class="st"> </span><span class="kw">estM</span>(<span class="dt">nsim =</span> <span class="dv">1000</span>, <span class="dt">data_CO =</span> data_CO, <span class="dt">data_SS =</span> data_SS, <span class="dt">frac =</span> <span class="fl">0.23</span>,</a> +<a class="sourceLine" id="cb34-2" data-line-number="2"> <span class="dt">data_DWP =</span> data_DWP, <span class="dt">model_SE =</span> pkMods, <span class="dt">model_CP =</span> cpMods,</a> +<a class="sourceLine" id="cb34-3" data-line-number="3"> <span class="dt">sizeCol =</span> <span class="st">"Size"</span>, <span class="dt">unitCol =</span> <span class="st">"Turbine"</span>, <span class="dt">COdate =</span> <span class="st">"DateFound"</span>)</a> +<a class="sourceLine" id="cb34-4" data-line-number="4"></a> +<a class="sourceLine" id="cb34-5" data-line-number="5"><span class="kw">summary</span>(Mhat)</a> +<a class="sourceLine" id="cb34-6" data-line-number="6"><span class="co">#> median 5% 95% </span></a> +<a class="sourceLine" id="cb34-7" data-line-number="7"><span class="co">#> 1921.91 1525.40 2470.37</span></a> +<a class="sourceLine" id="cb34-8" data-line-number="8"><span class="kw">plot</span>(Mhat)</a></code></pre></div> +<p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAqAAAAGACAMAAABFpiBcAAAA81BMVEUAAAAAADoAAGYAOjoAOmYAOpAAZrY6AAA6ADo6AGY6OgA6Ojo6OmY6OpA6ZmY6ZpA6ZrY6kJA6kLY6kNtmAABmADpmAGZmOgBmOjpmZjpmZmZmZpBmkJBmkLZmkNtmtttmtv+QOgCQOjqQOmaQZgCQZjqQZmaQkDqQkGaQkJCQtpCQtraQttuQ27aQ2/+2ZgC2Zjq2kDq2kGa2kJC2kLa2tra2ttu225C229u22/+2/7a2///bkDrbkGbbkJDbtmbbtpDbtrbb25Db27bb29vb2//b/7bb/9vb///m5ub/tmb/25D/27b/29v//7b//9v///9d/3d0AAAACXBIWXMAAA7DAAAOwwHHb6hkAAAaXUlEQVR4nO2dCZ/bNnqHMbZnFB/xutVsc2ydzGQbdzfNWo7bpHWtNs7G2Z2R7JG+/6dZXCQBAqB4Ai/I//NLPBKvlwQfAQRIAuwIAGFY6h0AoAkICkgDQQFpICggDQQFpIGggDQQFJAGggLSQFBAGggKSANBAWkgKCANBAWkgaCANBAUkAaCAtJAUEAaCApIA0EBaSAoIA0EBaSBoIA0EBSQJo2gd5f33vI/h2v5p2J37+3d7182rHi4vpKrM3ah/6otqOlHY545zZx+uGZszf9uGeOz95/emAuIOfuHb41JF+WG9is+//ymDFp81+w/eVlt3NymPkQxf8ckV9Zy4jOPUszbsFqaLJxEgv7+kTznjx86gjaux0/mlfj3Qv5/d8lP8lasoqarJdQ8c5o5vViP+yKCbcpF9qsrIdSFJaj8segN7ZT2ZVD9vdz+2ctqp4r1yx1U8yWb8xtruY3YqXU5z4wP0gn6J3F6t//KT4bIQURGxHObsz+pHFRmTld8qe9WTJzXjT5/W/bgsyutsTZMSqSnC4p55TS9bjFdZnS78xuugfivzEC1I7uzl0IQvZIUtNzQVbUhMWNj5s/H7VO+4WLjxcRyWT2/mGYuJz9v1We1kxDUJJWgf/kXruYf//vhW2nGVuQqa1ny8/N5d8nP/YZ/FBcCm+p8H///rSxtt8pnJYg4wXq6oJxnTDOnSy2EmtLvV+XlxP6T4mM9B9UbOnzzqCrR+dLWd36p8FdRhOuNW8cqt6zmH/UPob6c/nWoPxDUIpWgL3kGtH/GT8ZOFdFX8q9xDSo+Xl7VS33pispoVldqwkU5Xa9WzLMELaZLUVUOy672z+z5EqeIVxuSRbLOccsiusiBD9/IrLncuLXHF+X8Io69HC9CjAwUgtokE3S7Pm7X/GRsVeVgvdW5ipRCVS5CgoorxeOGKQlrFSJrniFoMd1y49VLVVU6thBUb8UMWmXj2/UxIKhaVs8vMklnOf0rXdfig4SC7j/9+zfiek9ffh0NQbme66YcVPr7tfi0X63N6UdznqcWz6ebpevuQuyH+qx1OfzWKOjBClrOERnp3lvEq2WL+UUYZzm1XbULENQimaCHb7779KYo4o9aRFXEy/PXJKhAnMddUTOuyajOsT1NT5ezVP3kIH8gpYQq+1pdBQQtKzw6qFEBOupS4MrYuEIvW8wvZprLqe1cXlW1JghqkkxQftbW4mQcrvl54SdSXdcpQUVFd3X2MiSoyGqEUEYhWcpYzDvWBC2mGy08u4tjlYOqvM7bzKQ2pCzl1X8dtPhuB7CbmcxSXH3e6CvmarlqO2oeBLVJJ6g4Y3vdzHSmGrmLZqYNvwL938urUtBNrUzdqSb1KmPS08Vyep417VitU7WR8wxUTjWvDYqGerOZybyu4B6VQfX3YlmroV5PM3awELTYtWq5opmt3BAENZn9rc79V/3Xbb6rNVFQCGoxe0H/r6djgt6CDgkKQS1mL+gQ9L34qOBevA0EBaSZXFD8AsAQICggDQQFpIGggDQQFJAGggLSQFBAGgjaAaZJvR9LAoK2hzEYGh0Iepq6mDA0IhA0BHNpmOVZCowBBA2hdlwYdysxzWuyMNsDpgkEDSF3vNQTgiYCgoZgZvYJQVMBQUMwM/uEoKmAoCGY7ScETQMEDVHzE4KmAYIGqPt5azUzNa0YYecWBAT14/hpGNrc1pnpAVMFgnqpX4AWhrZojc/zgMkCQb1wPV1B2xma5wGTBYL6YH5BLVOD68bc0fkDQT3I8r1J0CZDczxgwkBQF3X92SjoLQSNBAR10PWjZkHDhuZ3wKSBoA66/n5C0KCh+R0waSBoHdZS0JCh2R0wbSBojer5z1OCBgzN7YCJA0Ftqgb6VoJ6ji6zA6YOBLUxHlA+Kag/C83sgKkDQS1YJ0G9huZ1wOSBoCbWE/QtBPUZmtUB0weCGlhPiLQS1GNoTgecAV2Tc6eG5JCI8SnkYBVygIxAb9kZna/aKx6tBHUNzeiAc6BjcoqRqYrhs+QI01vhZW14yiEBElJ/xaO1oPYh5nPAWdAtOdUQWcWIU3LIVjl0ekO///mcr/orHu0EdQzN54CzoFtyVk6WiPx02zAWRjbny3kHqaWg9UI+mwPOg46CqrFQTUE3YiS4x6wY3m1ggHS47yC1FbRmaC4HnAndklNdflZjuIpK05rXkYwhAfVmc+uqyH3Fo72gtqGZHHAuDBR0V9XdAxeieZwv3zty7QW1DM3jgLNhWBG/Mwp2dX06MEAivK/IdRDUeic55YHMj0GVpK154Rloa8rhfPn87CaoYWgOB5wRA5qZuJ8qz1Ta5lvEe/3sLmjx1nzag5kbAxrq96si/5TGbvzV+AzOl9fPjoJWhmZwwDnRNTm36lbn4fpCfBSIrxv+13sFmsH58vbR0F3Q0lDyB5wXeFjEr2d3QQtDyR9wXixe0ED+2UNQbSj1A86MpQsa9LOHoMpQ4gecGwsXNOxnH0FvM7p1lgsLEJT1pIegjZ02gT4sQdDwnCYLewkKQ8dmyYI255L9BIWhI7NgQU+U4j0FhaHjslxBT11l9ha0oec70JnFCnqyFtRfUBg6IksV9HQtfYCgMHQ8Fipoi1akIYLC0NFYpqBtWjkHCYqq0lgsUtBWrfDDBIWhI7FQQduL1ldQGDoOSxS03W3MoYLC0FFYoKAtb7MPFhSGjsHyBG37GMhwQWHoCCxO0NaPKY0gKAwdzgIF7SFaX0Fh6GCWJmj75zxHERQt9kNZmKAdnkMeR1AYOpBlCdrlOfmRBIWhw1iaoP1F670eDB3CogTt9KLRmIKmT4RsWZKg3V6EG01QGDqEZQk6TLTe60HQ/ixI0I5vEo8oKAztz3IE7fqm+5iCwtDeLEbQzj0xjC1o+oTIkgUJOoZovdeDoD1ZiqDdu7IZV1AY2pPlCDqSaL3Xg6G9WIigPfoCm0DQ9GmRH2aaHf7r5uTy3tGOrakNAdLAevk5uqDIQnthptndJbv/vNlR/2jH5tSmAGlgfQr4YX0z9SF1MhHFykFfrXhCPfg+7Kh/tGN7cJqGAGlgvTLQ8XPQ5iw0fTrRpJYuv37b6Kh/tGPP1GCABLBeGegEgjYamj6daOKmi3L0yfe+pf2jHXumUiq6WK8MdApBmwxNn0408abLry+Eo79748zwj3bsTj0VICr9/ISgNPCly8fXj1Tm96xe0vtHOyYv6Oii9V4vbGj6dKKJky4fX8vc83+Ox3crVq/3+Ec79hTxDQFi0zMDhaA0sNNF2Vlcf+5Xdef8ox3TriT19HMaQcOGJk8notTaQa0a/N1l3Tn/aMekm5n6ZqATCRo0NHU6UcUW1G6n//DCqcr7Rzum3FAPQfPGSpffTi/vH+14S/ZWZ882ptOi9V4vYCgE9WOly8fK0A8/TREgPlxPYoLeQtAu2EV8ec3pXn6OESA+jKSgvjSBoH4CgroV+DECxEeU79QE9WehENRPkS6yBm9yfvrRu04BksCICupJFAjqp0yXne3ng0Cdp3+ABKgKEjlBvVkoBPUTKOKnCRAbVYGnKKibKhDUj/U86Is/jFSuBwLEhqqgviwUgvqZ8ztJjLCgTrJAUD9lJenzJ2/vPn9c8ST/WrxuoicoqMdQCOqnqsXfe2vV5PNvZmIQdAYU6XL45aebwy8/VvyUfTNTcY+ToqCuoRDUz3yvQRkEnQNzFnSYadMK6hgKQf1UlaTHNrlXkhgEnQXBW525V5Kqp+xoClo3FIL6qSpJP9rkXkmCoPNgrtegjLygNUMhqJ/5CjrUNAhKgpneSWIZCGobCkH9zPROkvkiEgTNmXneSWJZCGoZCkH9zPMa1HqTE4LmjJMuv/Lcs8Xrx/0DxCATQU1DIagfO10Osusbxs6+nihAHBgEnQ1WushO5x9/+Vh0bDdJgEjYfTUQFtQwFIL6sdJlW2SdPzPd7dLIAeLAIOh8sN5Jui613Ob82nGtsxvKgt5C0BPMsWeRvARlydIpC2YoaL27MNKC3kLQZqx02ZRF/M7pXHmUAFGod2dHXVCWKJ3ywEqXu8sz1SPofvVgrC4cIOip5SFoE+Wtzhdfcr5g7Iz/ecTY07H6cIie8E6HoOQFZUnSKRPm90S902EtcUFvIWgTXZ+orw0bu38oPFZ20+ij3u1Rmb6gLEE65ULHdKn1Rq8r+2ocmlECDMbt8Zu6oLcQtIFgunz0TayN57HTVwKBIZKaA0xEloIyCBrCTpePr4uH6v3XoPaISDu2VmpuG9qkIie8Z8wE8oLeQtAwtWamE5UkZ0w59XEjHi9Zmwsata1JdjuIZ0yPHARlEDRAraH+7OmXq7OnX6zYV96l3bE6haB3l+LG/WbtXQWCtlkHgoZwHxYRt5NCdzr9gjofQwGmx1PC5yEogWHLaeLei5cDcO6YNz8MFPFq3sr7hF5sQUczLaagTeN0LxxXUHkbXpXaDs6wsaag/ramqAnvy0AhaNbYRbwhqLfAdoaNlYIqbSkU8d5hDyFozrhPM8kxvEIDedWHjdW1eGEshUpStoLC0BBWsuwYe3bDq0rr95vQE/XGYLJyDeXxhgXfEYGg7daCoH7sZNmK5k81pFeO7yR5L0HzEBSGBqilyoc/84zz3aMR3zuOK+iYxvRbDYKOy6x6FslcUBjqYU49i/hL+FwEDYwjv3Tm1LOI38+MBIWhLnPqWSRzQZGF+phRzyKBEj4nQWGow4x6Fgn4mY+gyEI9zKfjhlAGmpWgMLTOnAQd35iI60FQP/PpWWQGgsJQl9n0LBIs4SFo1symZ5GgnzkJCkMdZtOzCASdJ117FukdYGLCJXxWgsLQOnN5WCTsZ16Coi20hpMcH3/58acMHxaZkaAw1KSWGj/n+rDIbARFFmpjp8Yr8bDI40dEHxZhPYkq2giCwlCD+jtJ/yzqRocfSD4s0rCpJgszExRZqEXtTlLxZuaW4p2kxQgKQyvse/HlC8Wh146HBZhsU43leG6CwlCTnB4WaRL0OKUxMdaDoH7s50GNHJTg86BLERSGGtSuQbWWh+usrkEZBJ0tVkrsV+zB9+/fv3/3mTVSwngBJtqUOJ+TGhNhPWs1GFpiJ8RupZsOR/MTgvZaDYIW1BLi8Fq00t9/PtIFqBtgik2xOQoKQxU5PSwSFvQ4N0GRhRYEavHTBJhoU/MUFIZKAu2g0wSYZlNsjoIiC9XMIAdVp3JyYyZezxUUhgrsh0VW528mDTDJpuYpKAxVWDnoi8/k43aSJ/7S3juYbH1qKMBA/JtiEHTO2NegJ1+a8w8mW++5PhRgxH01pqrJ0xsz7XruajBUYOWgv5x6ac4/mKwz9kcowIj7akyFoHOmWxr4B5N1Rk/qH6AR76bYbAWFoYKOgnpHmnOm9g/QSEBQ9TeGMVOu51sNhlon/edHjD34vnFp/1idzlTr9aFJ9tWMpP5GMWbC9SConyoFNsqnZ01LtxbUF2Awvk2xOQsKQ42TvmNnz9+/P/G2HL0ivjyDcYyZbj0I6qdMAP3CXPPbcv7BZFNWkuYtKAyt+mbStzmb3/XwDyabsJmJQdCZUxx/8aDIiQdG/IPJpmuor85fJGMmWy+w2uIN7ShoYDDZbapbnbMXdPFPNXUVtHeASTbFliDosg3NXdDyYzRjJlovuNrCDYWgI6/WO1xPxktemmQtKJuToOE5TRYuSNDaLzOHrm/MMxfRmEnWa+pcqsFQCDpWgCk2BUGXI2gOAeqbYgsRtMlQCEoogCuo8SWqMROs17gaBM0iwJIFDSUjBCUUoLYpthxBw4ZCUEIBHEHNb5GNiRwu2OIJQQkFWLCgwSwUghIKYG+KLUrQkKEQlFCAuqDW1+jGRA4HQekHsDZVP2HRjYkdzm8oBCUUoCaoPTO+MbHDeQ2FoIQCmJtyzlYCYyKHg6DUA9iC1mYmMCZ2OJ+hEJRQgKUL6jMUghIKYGzKPVVJjIkcDoLSDmAJWp+ZxJjY4VxDISihABDUNRSCEgpQbcpT1iUyJna4+pFDUEIBTEGdmamMiRyu/tQIBCUUoNyUr70llTGxw0FQugEMQd2ZyYyJHc42FIISCgBB1ZLm4UNQQgGKTXnv+SU0JnI46zIUghIKUAnqmZnQmNjhTEMhKKEAelP+585SGhM7nGEoBCUUoBTUNzOpMbHDQVCSAdSmAo+WpzUmdrgyESAooQCFoN6ZiY2JHa4wFILWsIaNLb6ojp3i9FEfer0xtTGRwxWXoRDUxuqNvvyixqEZJUATWlD/zNTGxA6nDYWgFtZ4HtWXwBBJPQI0Ik8IBC1WkEkBQS2sEZGqL9uGsZVGFzQwM70xscNJQyGohTWmXPVl85in1XqMAI2whgx0gYLeLqoL8HZYo3KWX+4uxeBfG9PQSTpRZw0Z6BIFDffYNCPGEFTPizAUYsMJIWFM7HALMHSUIl7Nk5ekAwM0whoy0GUKugBDR6kkqXn+tqYxBW06G0SMiRyuOU3mwBjNTMrUCEV807kgYkx0QZtTJX9GaaiXxm781fhRBW2YScSY+ILOPBPtemjWYLLlGLIbnkbeK9AxBW0+D0SMSSDovA3N6GGR5rNAxJgUgs7a0HwEPXESiBiTRNA5G5qNoKfOARFj0gh6nO9NpYwEbd4UEWMSCTrfTDQXQU8+GEHEmGSCztXQTAQ9/WgZEWPSCTrTYj4PQVs8nEvEmISCztPQXAQ9uSkixqQUdJaKZiFom/dviBiTVtAZGpqDoK3eYCRiTGJB56doBoK2eweciDHJBT2O/Zh4YugL2rIXDSLGpBd0ZpkoeUHbdpRFxBgKgs5KUeqCtu5qkIgxNASdUTlPXND2nbUSMYaIoMfZ5KK0Be3Q3TURY1K88tGLIaclJqQFraUjBHVoTpMGFyHoCAHqaQtBHU4mb8hRCDo8gJOuENShRfL6y3QIOjSA53cPQR3aJa/HUQg6MEDnYomIMSQFPbp9EUHQQQH8l/YQ1KFT8mZZxacoaK+aJxFjKAtaJm5OmtITNJw0ENRh0CV+H3qG608KQfsmDgR16C9oi0U8Cb8QQYPLNlsIQR2mFFQtZ0u6ZEFPZ5IQ1GFyQdXCpaSLFbTVBQ4EdYgj6NHJSeNBQNDWBw5BHaIJKtdJ4WhqQbscMgR1iCroMUVGmlLQrocKQR2iC3qMnZGmErTPQUJQhxSCyr/RJE0kaK+Dg6AOqQQ9Rivt0wja76ggqEO6a9Bu9NzLHjvqHe3YnnoywCSJSsSYuQvqm3Zax3iC+gdRsKaeDgBBR1uNgqB6Dokc1D8MjTW1RQAIOtpqdAQ1lkkoqH8gr9qIXicDQNDRVqMo6HirdV/VPxRibUxEudmmH0/fK22QLbEE9Q8mWxtVdkgAAGwgKCDNREV83wAA2KSoJAHQmumbmQDwMoWgPRrqpyd9Ho09mG4Xum7WP9rxNnyrc3rSnxzswXS7QODIhpL+ELAH0+0CgSMbSvpDwB5MtwsEjmwo6Q8BezDdLhA4sqGkPwTswXS7QODIhpL+ELAH0+0CgSMbSvpDwB5MtwsEjmwo6Q8BezDdLhA4MgDCQFBAGggKSANBAWkgKCANBAWkgaCANBAUkAaCAtJAUEAaCApIA0EBaSAoIE2Wgu4filfw7y7Fy6vi5b02/ZSOyOGax11b8VLtQbI0MF6UnDYRchT07lL2EaE6NDlGf/35cM1DbIUVbuDYe5AqDVQ/HYFjH3UXMhSU/z6loEVfO+06kBiPsiMVN3DsPUiWBjyTWKuXz6dOhPwE3bG1Oi1bnQTtuuAZfTfOXrqBY+9B4jQQgk6dCPkJeizyzs1jdSHWrhOzsdkY8ZLtQeI02PKfyNSJkK+gd5fnN/wsrVt2Azn2LjBf4Nh7kDQNdvKnMXUi5Cto+THNybmY/tyc3gP9MU0aiCL+/AaCejAE5Rc8CYq3nWzjSVnEqz1QpEkDuRf8QhxFvIsp6CeeusrU8bfKjoSVpK3hZ5o0UJH5TwOVJBcpqEqHna+1Z2K27Er+TdbMVO5BujRoiLz0ZqZjWYsXSbBZR2+k3q+K3CtVQ321B6nSgAfl1TOpIhrqXXQRv2FM5SRx+yndqg6CRSA3cOw9SJQGx8bIY+5CloKC5QBBAWkgKCANBAWkgaCANBAUkAaCAtJAUEAaCApIA0EBaSAoIA0EBaSBoIA0EBSQBoIC0kBQQBoIGo3DzZDZSwWCDmR39vT5b/rz4T+/+CT4JPm7z67qk+4u1WP5F/7Z4AhBB7PTvcsJml51OFyzJkF9s8ERgg5mx+6vzlXpfLi+v+ohaHA2OELQwezY+b9pze4u/+kSgo4MBB0IF/QH3YvC7uwv2rgP3/KC/8kbNX+9W7EHX8j3MIWD7z7nH+4/F5luVcSr9zSv9kVmvDE7Zlg0EHQgXNC/aq02539TgnIj5WvBsm8D9pR/u/fvhaCv1CvDTKziCCp7pj1aWevSgaAD4YL+/fqe6pL8Qom1X7HzN8eP38oaE69E8S+/FWX4jp19zQv0V1JWt5K0LboWP0ejkwKCDkS4tNXuXSnjNlqvjewCT1fstYG67Obf1j5BdRmPEr4Egg5ECKq6QtzceyuNK+s7Mh/cqf7Ka7WgkKCqjEcJXwFBByIslKM68BJemVXqtV+JXuR1dloJevj1xxePmF9QVcajhK+AoAORMm24XbyELwTVPQ/KD3VBf36ka0l+QWWfySjhKyDoQKSAIt/byFz0VA4qhhB68of/eB8o4vmFwtlLlPAGEHQgUkBet/kbL+GP3mtQU1B17Rm+BlXtpmzy7j3zAYIORArI6zbfrUrjdC2eO3dxrAlaFP+7VUhQXsb/gJtKFRB0IErALXtcVb9r7aCloF/JoQsvuM+vV55r0K/UBjdnjyJ14J0FEHQgSsCdeWuodiepvHsppNR9z/Jc8sJ+3G5jjP+JEr4Cgg5kp83UY7vqe/Hifvvv3lTzOYdvpXmiFn//azXZFFTPlptCCV8BQalRtlIBAQSlBurwFhCUGB/QCGoBQUmxYagi2UBQUvBK/jPchjeBoIA0EBSQBoIC0vwDUPAF1NikoYAAAAAASUVORK5CYII=" style="display: block; margin: auto;" /></p> +<p>This estimate is for the total number of fatalities among all size classes combined, from hummingbirds and bats to eagles and may be too vague to be very useful. Fortunately, mortality estimates may be partitioned or split into desired categories, such as species, size, or season. Splits may be performed according to characteristics of the carcasses or where they were found (e.g., species, turbine or other variable found in <code>data_CO</code>) or when they were found (e.g., season or other variable associated with search schedule and found in <code>data_SS</code>, or a vector of specific times).</p> <p>Carcasses were categorized not only by size but also by species, species group, the type of turbine they were found at, the visibility class of the ground where they were found, and distance from nearest turbine.</p> <p>Although species groups may extend across different size classes (e.g., <code>raptors</code> could include kestrels, red-tailed hawks, and golden eagles; <code>passerines</code> could include sparrows and ravens), splits according to species group can easily be accomplished:</p> -<pre class="sourceCode r" id="cb42"><code class="sourceCode r"><a class="sourceLine" id="cb42-1" data-line-number="1">M_speciesGroup <-<span class="st"> </span><span class="kw">calcSplits</span>(<span class="dt">M =</span> Mhat<span class="op">$</span>Mhat, <span class="dt">Aj =</span> Mhat<span class="op">$</span>Aj,</a> -<a class="sourceLine" id="cb42-2" data-line-number="2"> <span class="dt">split_CO =</span> <span class="st">"SpeciesGroup"</span>, <span class="dt">data_CO =</span> data_CO)</a> -<a class="sourceLine" id="cb42-3" data-line-number="3"><span class="kw">summary</span>(M_speciesGroup)</a> -<a class="sourceLine" id="cb42-4" data-line-number="4"><span class="co">#> 5% 25% 50% 75% 95%</span></a> -<a class="sourceLine" id="cb42-5" data-line-number="5"><span class="co">#> bat0 13.35605 31.72142 48.31768 64.81744 98.38965</span></a> -<a class="sourceLine" id="cb42-6" data-line-number="6"><span class="co">#> bat1 581.30793 703.91460 795.16685 908.45680 1067.25961</span></a> -<a class="sourceLine" id="cb42-7" data-line-number="7"><span class="co">#> brd1 275.48027 378.69988 470.07990 586.52151 813.61731</span></a> -<a class="sourceLine" id="cb42-8" data-line-number="8"><span class="co">#> brd2 66.22104 101.94382 134.07278 169.21049 230.14851</span></a> -<a class="sourceLine" id="cb42-9" data-line-number="9"><span class="co">#> brd3 19.99678 39.12947 54.71419 71.90471 96.40898</span></a> -<a class="sourceLine" id="cb42-10" data-line-number="10"><span class="co">#> attr(,"class")</span></a> -<a class="sourceLine" id="cb42-11" data-line-number="11"><span class="co">#> [1] "splitSummary"</span></a> -<a class="sourceLine" id="cb42-12" data-line-number="12"><span class="co">#> attr(,"CL")</span></a> -<a class="sourceLine" id="cb42-13" data-line-number="13"><span class="co">#> [1] 0.9</span></a> -<a class="sourceLine" id="cb42-14" data-line-number="14"><span class="co">#> attr(,"vars")</span></a> -<a class="sourceLine" id="cb42-15" data-line-number="15"><span class="co">#> [1] "SpeciesGroup"</span></a> -<a class="sourceLine" id="cb42-16" data-line-number="16"><span class="co">#> attr(,"type")</span></a> -<a class="sourceLine" id="cb42-17" data-line-number="17"><span class="co">#> [1] "CO"</span></a> -<a class="sourceLine" id="cb42-18" data-line-number="18"><span class="kw">plot</span>(M_speciesGroup)</a></code></pre> -<p><img src="data:image/png;base64,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" style="display: block; margin: auto;" /></p> +<div class="sourceCode" id="cb35"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb35-1" data-line-number="1">M_speciesGroup <-<span class="st"> </span><span class="kw">calcSplits</span>(<span class="dt">M =</span> Mhat,</a> +<a class="sourceLine" id="cb35-2" data-line-number="2"> <span class="dt">split_CO =</span> <span class="st">"SpeciesGroup"</span>, <span class="dt">data_CO =</span> data_CO)</a> +<a class="sourceLine" id="cb35-3" data-line-number="3"><span class="kw">summary</span>(M_speciesGroup)</a> +<a class="sourceLine" id="cb35-4" data-line-number="4"><span class="co">#> X 5% 25% 50% 75% 95%</span></a> +<a class="sourceLine" id="cb35-5" data-line-number="5"><span class="co">#> bat0 4 17.21714 42.10470 64.69548 88.84729 128.08301</span></a> +<a class="sourceLine" id="cb35-6" data-line-number="6"><span class="co">#> bat1 49 821.11177 978.63267 1097.97114 1253.53887 1532.75458</span></a> +<a class="sourceLine" id="cb35-7" data-line-number="7"><span class="co">#> brd1 19 323.48470 424.31686 522.08370 655.85726 881.33781</span></a> +<a class="sourceLine" id="cb35-8" data-line-number="8"><span class="co">#> brd2 10 68.65538 110.04018 137.75471 170.48321 232.67520</span></a> +<a class="sourceLine" id="cb35-9" data-line-number="9"><span class="co">#> brd3 5 21.13987 38.50453 55.07894 71.49692 95.28758</span></a> +<a class="sourceLine" id="cb35-10" data-line-number="10"><span class="co">#> attr(,"class")</span></a> +<a class="sourceLine" id="cb35-11" data-line-number="11"><span class="co">#> [1] "splitSummary"</span></a> +<a class="sourceLine" id="cb35-12" data-line-number="12"><span class="co">#> attr(,"CL")</span></a> +<a class="sourceLine" id="cb35-13" data-line-number="13"><span class="co">#> [1] 0.9</span></a> +<a class="sourceLine" id="cb35-14" data-line-number="14"><span class="co">#> attr(,"vars")</span></a> +<a class="sourceLine" id="cb35-15" data-line-number="15"><span class="co">#> [1] "SpeciesGroup"</span></a> +<a class="sourceLine" id="cb35-16" data-line-number="16"><span class="co">#> attr(,"type")</span></a> +<a class="sourceLine" id="cb35-17" data-line-number="17"><span class="co">#> [1] "CO"</span></a> +<a class="sourceLine" id="cb35-18" data-line-number="18"><span class="kw">plot</span>(M_speciesGroup)</a></code></pre></div> +<p><img src="data:image/png;base64,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" style="display: block; margin: auto;" /></p> <p>Split by species and season:</p> -<pre class="sourceCode r" id="cb43"><code class="sourceCode r"><a class="sourceLine" id="cb43-1" data-line-number="1">M_speciesseason <-<span class="st"> </span><span class="kw">calcSplits</span>(<span class="dt">M =</span> Mhat<span class="op">$</span>Mhat, <span class="dt">Aj =</span> Mhat<span class="op">$</span>Aj,</a> -<a class="sourceLine" id="cb43-2" data-line-number="2"> <span class="dt">split_CO =</span> <span class="st">"Species"</span>, <span class="dt">data_CO =</span> data_CO, <span class="dt">split_SS =</span> <span class="st">"Season"</span>, <span class="dt">data_SS =</span> data_SS)</a> -<a class="sourceLine" id="cb43-3" data-line-number="3"><span class="kw">summary</span>(M_speciesseason)</a> -<a class="sourceLine" id="cb43-4" data-line-number="4"><span class="co">#> $BA</span></a> -<a class="sourceLine" id="cb43-5" data-line-number="5"><span class="co">#> mean 5% 25% 50% 75% 95%</span></a> -<a class="sourceLine" id="cb43-6" data-line-number="6"><span class="co">#> spring 148.41692 57.48323 100.2312 140.12113 184.04954 262.65111</span></a> -<a class="sourceLine" id="cb43-7" data-line-number="7"><span class="co">#> summer 46.02317 10.75665 27.7604 42.69406 60.11499 94.21104</span></a> -<a class="sourceLine" id="cb43-8" data-line-number="8"><span class="co">#> fall 333.14457 204.78035 273.4434 326.77257 383.04968 490.34779</span></a> -<a class="sourceLine" id="cb43-9" data-line-number="9"><span class="co">#> </span></a> -<a class="sourceLine" id="cb43-10" data-line-number="10"><span class="co">#> $BB</span></a> -<a class="sourceLine" id="cb43-11" data-line-number="11"><span class="co">#> mean 5% 25% 50% 75% 95%</span></a> -<a class="sourceLine" id="cb43-12" data-line-number="12"><span class="co">#> spring 71.75847 10.44907 40.20149 68.07956 96.83727 149.87172</span></a> -<a class="sourceLine" id="cb43-13" data-line-number="13"><span class="co">#> summer 26.46824 1.37100 8.35496 22.22722 39.81243 70.28516</span></a> -<a class="sourceLine" id="cb43-14" data-line-number="14"><span class="co">#> fall 106.00347 41.10910 74.99834 101.77134 131.88899 188.36551</span></a> -<a class="sourceLine" id="cb43-15" data-line-number="15"><span class="co">#> </span></a> -<a class="sourceLine" id="cb43-16" data-line-number="16"><span class="co">#> $BC</span></a> -<a class="sourceLine" id="cb43-17" data-line-number="17"><span class="co">#> mean 5% 25% 50% 75% 95%</span></a> -<a class="sourceLine" id="cb43-18" data-line-number="18"><span class="co">#> spring 20.73279 1.0542308 6.624197 17.20178 31.69430 56.77793</span></a> -<a class="sourceLine" id="cb43-19" data-line-number="19"><span class="co">#> summer 12.97930 0.9637692 3.180912 10.67512 19.82935 36.91907</span></a> -<a class="sourceLine" id="cb43-20" data-line-number="20"><span class="co">#> fall 44.95903 5.3877312 24.613251 42.64405 61.78692 94.16881</span></a> -<a class="sourceLine" id="cb43-21" data-line-number="21"><span class="co">#> </span></a> -<a class="sourceLine" id="cb43-22" data-line-number="22"><span class="co">#> $BD</span></a> -<a class="sourceLine" id="cb43-23" data-line-number="23"><span class="co">#> mean 5% 25% 50% 75% 95%</span></a> -<a class="sourceLine" id="cb43-24" data-line-number="24"><span class="co">#> spring 0.000000 0.000 0.00000 0.00000 0.00000 0.00000</span></a> -<a class="sourceLine" id="cb43-25" data-line-number="25"><span class="co">#> summer 0.278658 0.015 0.01500 0.01500 0.01500 0.01500</span></a> -<a class="sourceLine" id="cb43-26" data-line-number="26"><span class="co">#> fall 21.176459 1.985 10.57037 19.74498 30.24453 47.15645</span></a> -<a class="sourceLine" id="cb43-27" data-line-number="27"><span class="co">#> </span></a> -<a class="sourceLine" id="cb43-28" data-line-number="28"><span class="co">#> $BE</span></a> -<a class="sourceLine" id="cb43-29" data-line-number="29"><span class="co">#> mean 5% 25% 50% 75% 95%</span></a> -<a class="sourceLine" id="cb43-30" data-line-number="30"><span class="co">#> spring 0.00000 0 0.00000 0.00000 0.00000 0.00000</span></a> -<a class="sourceLine" id="cb43-31" data-line-number="31"><span class="co">#> summer 0.00000 0 0.00000 0.00000 0.00000 0.00000</span></a> -<a class="sourceLine" id="cb43-32" data-line-number="32"><span class="co">#> fall 28.84992 2 13.74708 25.79479 41.29231 70.21066</span></a> -<a class="sourceLine" id="cb43-33" data-line-number="33"><span class="co">#> </span></a> -<a class="sourceLine" id="cb43-34" data-line-number="34"><span class="co">#> $LA</span></a> -<a class="sourceLine" id="cb43-35" data-line-number="35"><span class="co">#> mean 5% 25% 50% 75% 95%</span></a> -<a class="sourceLine" id="cb43-36" data-line-number="36"><span class="co">#> spring 18.28705 2 9.951699 17.43003 25.71788 37.27136</span></a> -<a class="sourceLine" id="cb43-37" data-line-number="37"><span class="co">#> summer 0.00000 0 0.000000 0.00000 0.00000 0.00000</span></a> -<a class="sourceLine" id="cb43-38" data-line-number="38"><span class="co">#> fall 21.72124 2 10.651358 19.81861 30.33555 49.65458</span></a> -<a class="sourceLine" id="cb43-39" data-line-number="39"><span class="co">#> </span></a> -<a class="sourceLine" id="cb43-40" data-line-number="40"><span class="co">#> $LB</span></a> -<a class="sourceLine" id="cb43-41" data-line-number="41"><span class="co">#> mean 5% 25% 50% 75% 95%</span></a> -<a class="sourceLine" id="cb43-42" data-line-number="42"><span class="co">#> spring 10.13299 1 2.358247 8.980783 15.92927 29.46703</span></a> -<a class="sourceLine" id="cb43-43" data-line-number="43"><span class="co">#> summer 0.00000 0 0.000000 0.000000 0.00000 0.00000</span></a> -<a class="sourceLine" id="cb43-44" data-line-number="44"><span class="co">#> fall 0.00000 0 0.000000 0.000000 0.00000 0.00000</span></a> -<a class="sourceLine" id="cb43-45" data-line-number="45"><span class="co">#> </span></a> -<a class="sourceLine" id="cb43-46" data-line-number="46"><span class="co">#> $LC</span></a> -<a class="sourceLine" id="cb43-47" data-line-number="47"><span class="co">#> mean 5% 25% 50% 75% 95%</span></a> -<a class="sourceLine" id="cb43-48" data-line-number="48"><span class="co">#> spring 10.168444 1.0139 3.036152 8.801157 15.61231 26.78478</span></a> -<a class="sourceLine" id="cb43-49" data-line-number="49"><span class="co">#> summer 8.942365 0.9861 2.316827 7.784383 14.12727 23.78609</span></a> -<a class="sourceLine" id="cb43-50" data-line-number="50"><span class="co">#> fall 0.000000 0.0000 0.000000 0.000000 0.00000 0.00000</span></a> -<a class="sourceLine" id="cb43-51" data-line-number="51"><span class="co">#> </span></a> -<a class="sourceLine" id="cb43-52" data-line-number="52"><span class="co">#> $LE</span></a> -<a class="sourceLine" id="cb43-53" data-line-number="53"><span class="co">#> mean 5% 25% 50% 75% 95%</span></a> -<a class="sourceLine" id="cb43-54" data-line-number="54"><span class="co">#> spring 0.8248399 0.077 0.077000 0.07700 0.07700 5.469554</span></a> -<a class="sourceLine" id="cb43-55" data-line-number="55"><span class="co">#> summer 8.6824974 0.923 1.323008 7.11305 14.47252 25.478729</span></a> -<a class="sourceLine" id="cb43-56" data-line-number="56"><span class="co">#> fall 0.0000000 0.000 0.000000 0.00000 0.00000 0.000000</span></a> -<a class="sourceLine" id="cb43-57" data-line-number="57"><span class="co">#> </span></a> -<a class="sourceLine" id="cb43-58" data-line-number="58"><span class="co">#> $MA</span></a> -<a class="sourceLine" id="cb43-59" data-line-number="59"><span class="co">#> mean 5% 25% 50% 75% 95%</span></a> -<a class="sourceLine" id="cb43-60" data-line-number="60"><span class="co">#> spring 18.79637 1.000 5.430367 16.92073 28.49749 50.85255</span></a> -<a class="sourceLine" id="cb43-61" data-line-number="61"><span class="co">#> summer 13.58725 1.002 3.831068 11.51390 21.00405 38.83707</span></a> -<a class="sourceLine" id="cb43-62" data-line-number="62"><span class="co">#> fall 12.82441 0.998 3.694923 10.58611 20.05816 34.92848</span></a> -<a class="sourceLine" id="cb43-63" data-line-number="63"><span class="co">#> </span></a> -<a class="sourceLine" id="cb43-64" data-line-number="64"><span class="co">#> $MB</span></a> -<a class="sourceLine" id="cb43-65" data-line-number="65"><span class="co">#> mean 5% 25% 50% 75% 95%</span></a> -<a class="sourceLine" id="cb43-66" data-line-number="66"><span class="co">#> spring 0.0000000 0.000 0.000000 0.00000 0.00000 0.00000</span></a> -<a class="sourceLine" id="cb43-67" data-line-number="67"><span class="co">#> summer 0.1977606 0.018 0.018000 0.01800 0.01800 0.01800</span></a> -<a class="sourceLine" id="cb43-68" data-line-number="68"><span class="co">#> fall 12.3972304 0.982 3.371567 10.67758 19.35692 34.34524</span></a> -<a class="sourceLine" id="cb43-69" data-line-number="69"><span class="co">#> </span></a> -<a class="sourceLine" id="cb43-70" data-line-number="70"><span class="co">#> $MC</span></a> -<a class="sourceLine" id="cb43-71" data-line-number="71"><span class="co">#> mean 5% 25% 50% 75% 95%</span></a> -<a class="sourceLine" id="cb43-72" data-line-number="72"><span class="co">#> spring 23.56168 1.277 7.491563 20.374094 35.57757 61.64673</span></a> -<a class="sourceLine" id="cb43-73" data-line-number="73"><span class="co">#> summer 13.89120 0.723 0.723000 9.021613 23.56789 46.10336</span></a> -<a class="sourceLine" id="cb43-74" data-line-number="74"><span class="co">#> fall 0.00000 0.000 0.000000 0.000000 0.00000 0.00000</span></a> -<a class="sourceLine" id="cb43-75" data-line-number="75"><span class="co">#> </span></a> -<a class="sourceLine" id="cb43-76" data-line-number="76"><span class="co">#> $MD</span></a> -<a class="sourceLine" id="cb43-77" data-line-number="77"><span class="co">#> mean 5% 25% 50% 75% 95%</span></a> -<a class="sourceLine" id="cb43-78" data-line-number="78"><span class="co">#> spring 14.7671 1 3.930405 12.87309 22.3921 42.39844</span></a> -<a class="sourceLine" id="cb43-79" data-line-number="79"><span class="co">#> summer 0.0000 0 0.000000 0.00000 0.0000 0.00000</span></a> -<a class="sourceLine" id="cb43-80" data-line-number="80"><span class="co">#> fall 0.0000 0 0.000000 0.00000 0.0000 0.00000</span></a> -<a class="sourceLine" id="cb43-81" data-line-number="81"><span class="co">#> </span></a> -<a class="sourceLine" id="cb43-82" data-line-number="82"><span class="co">#> $ME</span></a> -<a class="sourceLine" id="cb43-83" data-line-number="83"><span class="co">#> mean 5% 25% 50% 75% 95%</span></a> -<a class="sourceLine" id="cb43-84" data-line-number="84"><span class="co">#> spring 0.0000000 0.000 0.000000 0.00000 0.00000 0.00000</span></a> -<a class="sourceLine" id="cb43-85" data-line-number="85"><span class="co">#> summer 0.0090467 0.001 0.001000 0.00100 0.00100 0.00100</span></a> -<a class="sourceLine" id="cb43-86" data-line-number="86"><span class="co">#> fall 11.7454559 0.999 2.954486 10.20956 18.73836 33.15434</span></a> -<a class="sourceLine" id="cb43-87" data-line-number="87"><span class="co">#> </span></a> -<a class="sourceLine" id="cb43-88" data-line-number="88"><span class="co">#> $MF</span></a> -<a class="sourceLine" id="cb43-89" data-line-number="89"><span class="co">#> mean 5% 25% 50% 75% 95%</span></a> -<a class="sourceLine" id="cb43-90" data-line-number="90"><span class="co">#> spring 0.00000 0.000000 0.00000 0.00000 0.00000 0.0000</span></a> -<a class="sourceLine" id="cb43-91" data-line-number="91"><span class="co">#> summer 0.00000 0.000000 0.00000 0.00000 0.00000 0.0000</span></a> -<a class="sourceLine" id="cb43-92" data-line-number="92"><span class="co">#> fall 46.77124 6.092578 27.55282 43.58347 61.90984 100.9798</span></a> -<a class="sourceLine" id="cb43-93" data-line-number="93"><span class="co">#> </span></a> -<a class="sourceLine" id="cb43-94" data-line-number="94"><span class="co">#> $MH</span></a> -<a class="sourceLine" id="cb43-95" data-line-number="95"><span class="co">#> mean 5% 25% 50% 75% 95%</span></a> -<a class="sourceLine" id="cb43-96" data-line-number="96"><span class="co">#> spring 14.71023 1 3.671075 12.60641 23.26732 40.79687</span></a> -<a class="sourceLine" id="cb43-97" data-line-number="97"><span class="co">#> summer 12.49424 1 3.742736 10.66975 19.15468 34.64019</span></a> -<a class="sourceLine" id="cb43-98" data-line-number="98"><span class="co">#> fall 0.00000 0 0.000000 0.00000 0.00000 0.00000</span></a> -<a class="sourceLine" id="cb43-99" data-line-number="99"><span class="co">#> </span></a> -<a class="sourceLine" id="cb43-100" data-line-number="100"><span class="co">#> $SA</span></a> -<a class="sourceLine" id="cb43-101" data-line-number="101"><span class="co">#> mean 5% 25% 50% 75% 95%</span></a> -<a class="sourceLine" id="cb43-102" data-line-number="102"><span class="co">#> spring 35.78975 1 8.959838 29.40904 52.77091 107.7607</span></a> -<a class="sourceLine" id="cb43-103" data-line-number="103"><span class="co">#> summer 0.00000 0 0.000000 0.00000 0.00000 0.0000</span></a> -<a class="sourceLine" id="cb43-104" data-line-number="104"><span class="co">#> fall 0.00000 0 0.000000 0.00000 0.00000 0.0000</span></a> -<a class="sourceLine" id="cb43-105" data-line-number="105"><span class="co">#> </span></a> -<a class="sourceLine" id="cb43-106" data-line-number="106"><span class="co">#> $SB</span></a> -<a class="sourceLine" id="cb43-107" data-line-number="107"><span class="co">#> mean 5% 25% 50% 75% 95%</span></a> -<a class="sourceLine" id="cb43-108" data-line-number="108"><span class="co">#> spring 16.25021 0.476 0.476 0.476 24.80569 75.17382</span></a> -<a class="sourceLine" id="cb43-109" data-line-number="109"><span class="co">#> summer 16.01380 0.524 0.524 0.524 25.67661 73.56018</span></a> -<a class="sourceLine" id="cb43-110" data-line-number="110"><span class="co">#> fall 0.00000 0.000 0.000 0.000 0.00000 0.00000</span></a> -<a class="sourceLine" id="cb43-111" data-line-number="111"><span class="co">#> </span></a> -<a class="sourceLine" id="cb43-112" data-line-number="112"><span class="co">#> $SC</span></a> -<a class="sourceLine" id="cb43-113" data-line-number="113"><span class="co">#> mean 5% 25% 50% 75% 95%</span></a> -<a class="sourceLine" id="cb43-114" data-line-number="114"><span class="co">#> spring 101.2064 19.48464 53.07503 89.02602 133.6862 223.7062</span></a> -<a class="sourceLine" id="cb43-115" data-line-number="115"><span class="co">#> summer 0.0000 0.00000 0.00000 0.00000 0.0000 0.0000</span></a> -<a class="sourceLine" id="cb43-116" data-line-number="116"><span class="co">#> fall 0.0000 0.00000 0.00000 0.00000 0.0000 0.0000</span></a> -<a class="sourceLine" id="cb43-117" data-line-number="117"><span class="co">#> </span></a> -<a class="sourceLine" id="cb43-118" data-line-number="118"><span class="co">#> $SD</span></a> -<a class="sourceLine" id="cb43-119" data-line-number="119"><span class="co">#> mean 5% 25% 50% 75% 95%</span></a> -<a class="sourceLine" id="cb43-120" data-line-number="120"><span class="co">#> spring 28.68511 1.1606923 7.7308160 23.12266 40.78832 83.33481</span></a> -<a class="sourceLine" id="cb43-121" data-line-number="121"><span class="co">#> summer 25.18399 0.8393077 0.8393077 18.20541 40.16257 86.22943</span></a> -<a class="sourceLine" id="cb43-122" data-line-number="122"><span class="co">#> fall 0.00000 0.0000000 0.0000000 0.00000 0.00000 0.00000</span></a> -<a class="sourceLine" id="cb43-123" data-line-number="123"><span class="co">#> </span></a> -<a class="sourceLine" id="cb43-124" data-line-number="124"><span class="co">#> $SE</span></a> -<a class="sourceLine" id="cb43-125" data-line-number="125"><span class="co">#> mean 5% 25% 50% 75% 95%</span></a> -<a class="sourceLine" id="cb43-126" data-line-number="126"><span class="co">#> spring 0.03358858 0.001 0.00100 0.00100 0.00100 0.00100</span></a> -<a class="sourceLine" id="cb43-127" data-line-number="127"><span class="co">#> summer 31.08821455 0.999 7.49171 24.06473 46.68073 94.45723</span></a> -<a class="sourceLine" id="cb43-128" data-line-number="128"><span class="co">#> fall 0.00000000 0.000 0.00000 0.00000 0.00000 0.00000</span></a> -<a class="sourceLine" id="cb43-129" data-line-number="129"><span class="co">#> </span></a> -<a class="sourceLine" id="cb43-130" data-line-number="130"><span class="co">#> $SG</span></a> -<a class="sourceLine" id="cb43-131" data-line-number="131"><span class="co">#> mean 5% 25% 50% 75% 95%</span></a> -<a class="sourceLine" id="cb43-132" data-line-number="132"><span class="co">#> spring 104.46977 18.588103 58.71414 91.65212 137.83809 225.8924</span></a> -<a class="sourceLine" id="cb43-133" data-line-number="133"><span class="co">#> summer 59.81335 1.945938 25.72067 53.56122 85.80761 145.3071</span></a> -<a class="sourceLine" id="cb43-134" data-line-number="134"><span class="co">#> fall 0.00000 0.000000 0.00000 0.00000 0.00000 0.0000</span></a> -<a class="sourceLine" id="cb43-135" data-line-number="135"><span class="co">#> </span></a> -<a class="sourceLine" id="cb43-136" data-line-number="136"><span class="co">#> attr(,"class")</span></a> -<a class="sourceLine" id="cb43-137" data-line-number="137"><span class="co">#> [1] "splitSummary"</span></a> -<a class="sourceLine" id="cb43-138" data-line-number="138"><span class="co">#> attr(,"CL")</span></a> -<a class="sourceLine" id="cb43-139" data-line-number="139"><span class="co">#> [1] 0.9</span></a> -<a class="sourceLine" id="cb43-140" data-line-number="140"><span class="co">#> attr(,"vars")</span></a> -<a class="sourceLine" id="cb43-141" data-line-number="141"><span class="co">#> [1] "Season" "Species"</span></a> -<a class="sourceLine" id="cb43-142" data-line-number="142"><span class="co">#> attr(,"type")</span></a> -<a class="sourceLine" id="cb43-143" data-line-number="143"><span class="co">#> [1] "SS" "CO"</span></a> -<a class="sourceLine" id="cb43-144" data-line-number="144"><span class="co">#> attr(,"times")</span></a> -<a class="sourceLine" id="cb43-145" data-line-number="145"><span class="co">#> [1] 0 60 130 200</span></a> -<a class="sourceLine" id="cb43-146" data-line-number="146"><span class="kw">plot</span>(M_speciesseason)</a></code></pre> -<p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAYAAAASACAMAAADBIWoqAAABblBMVEUAAAAAACgAADoAAGYAFwAAKAAAOjoAOmYAOpAAOp0ASUkAZpAAZrYNACgNAFgNUbwXAFgXAGYXZtsgAAAgIQAoAA0oACgogf8yUTE6AAA6ADo6AGY6KDo6Kjo6OgA6Ojo6OmY6OpA6ZmY6ZpA6ZrY6kJA6kLY6kNtJAABJtv9RvP9YZjpmAABmABdmADpmAGZmFwBmOgBmOjpmZgBmZjpmZmZmZpBmkGZmkJBmkLZmkNtmtrZmtttmtv98IQ2B//+QKheQOgCQOjqQOmaQZjqQZmaQkGaQkLaQtpCQtraQttuQ27aQ29uQ2/+cOgC2SQC2ZgC2Zjq2Zma2kDq2kGa2tma2tpC2tra2ttu225C227a229u22/+2/7a2/9u2///bkCjbkDrbkGbbtmbbtpDbtrbbttvb25Db27bb29vb2//b/9vb////gSj/tlj/tmb/tpD/vFH/23v/25D/27b/29v//4H//7b//9v////UH9YnAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAgAElEQVR4nO19i5/cxnEmvDQfl+zFseI4HiuRZInJJJe1FOkkn+RooyxJKZaTjUFZZyYnMhtYdEzJG89dhvQM/vvrBzDAAIMZdFd1dU2jvp9NkQNUdaM/dFf1owpZKYiKLHYFpg4hIDKEgMgQAiJDCIgMISAyhIDIABGwyDaYb195/g/m8nynWOe2PpazU5dqdLWsL25cVYXvLGB9cXK5T92DWZadvPHYpQr+CEOAbcGDBAw1tBsBvbsbAnYr2k9AMfBOBQKQgIFKjmzBkATsUbSXgOUs+4trdc/ns73dBA1CQAebZypougAmAV++osbOD66rXjw3l1Vj/NvDLLtbrh+oP9U1NcSq27LXHm9uK8unb2fZrQ+NjufvqNt+vWm3vrgpxd5c3HjydnbjQaWl0bsZgmwBy9md663aKgL+6aG9tXet91K167YpofWsWzXKT/5JVef2Tx3aEJGAavBUT7RNwP/U//rwomon1cUN1EtYE1AJ3i3rq6+3CdgWX19sSlEEqGt3fm6vtPR2CKhf+Lx+79UPr2xu7VxTek4+vO49VFM3I9Z61q0a5c0dY4FkhNUTr850uc/NEzVGWFXvxuPyS1W/x+UvdSVzM8Q+P2ts5CK7/YX65e3sXN+tXvMvZ1lDQEe8yE7U+/V0ZokzT2q1tPR2jbB9T5YtVrWSda5L6V5Tv2gf6PVPr6sn3NStXUL7Wds1yo3ii8xhBEUlYNP1tghQdbcVXp3VY3M1wlZNZ1+Y1dlpPSIUbQK2xOs31txYjdJbA32xg4DVmekvWlNLqa1O95q+/LnpH7cfb9etXULrWbdqlJsaLQgJaA9Buv/d+uBrW5uGAF0/axYrAtbPHn38TrZpn7oL605cVb39sm6L2/aqfqmarb57o7fnhhamc23Yr/+aa/nOtQrPFAlmhGrqtlXz5lm3apS3uuRIIBKwfmiqevtqmwD9bC0C1g8aN9vctjprutGi+053xZvHNTakRUBLb48A/Z9Wq9TtbeQ71xrobtiu21bNm2fdqlFcAhSefax67+leAtQw+d4/PPq6aPWA5vXb0QOGCOj2gJbeHgH6h9Yos+kBde9qXWuGSV3UVtdo17x5VkY9wGKpKzRMQFVf1bcbG9A8/g4bsC3esQENAW29/ZnwQrlRTVO2bUD3mqrNh6265G1qWjVvnnXbBsQkYDkzZuvLzBDw+9dDBGjzpdwK2z72thP1zOuf61ZXnsm19iiGCOh4QRUBSktbb5uA37+2jXdr1lTVekHPK2dl+5p2LO6qsX2tijjfqlu7hPazbnlB5ARsYN6WjROsXeb50BBU4bS+rXy4GWZ3zQM6JqQ9D6gJ0FpaetsEVEs6eds3rycX1Xufb/vtm7Ug7fu369aueetZt+YBUQkwM8LMriL+Ur/Eu43ww5l2IH5tBptf2nfdTCvtPPe5nvEO24ByayZcjQ9GS0tvazW0KkD9604zu6qm129c10/RulZuJryVn9nUbavmrWfdmgnTEnA8yPcs7Oy7Fh7TIODprOvoj7tGgCkQkGfDi/v7rpFgCgT8PDv5sc81EkyBANYQAiJDCIgMISAyhICx+CqMWjgB9Sp/d019ceNq9ebg3tzy5atqFm/Wki+aRfc9WFRF6FXiWkz7kEVmFpZ/cEg8y/68qtFilO/fqv/6Yr+zuudR9wOBgDdf0SsCy1df7hGwR0oTsDSLYLlZ4dEqDj1krXJ9cbr5/+psXi6/f6mv5Of7pcu8te/oOvliTcAn+sGK91+2S2X6NVav6MkntgeY5bVzdddPZu1FL0VA/Uz5aUVAuWh1ga5cpdLcZpbtvn+p/mdklC79v6YDKNl6u1z9t1ah5lw3nqga1Zo6lztS9tEuq6v6x9P60vreJ9nJK6e26pt6mkMG7meJMAj4x7fU09z/16pJC70aNrdrz+oBzs7NS25XQpsGto1W/7VPQFeuVqmvFZbjc3O7VmR6wMPLlqy+XXcQLbopWjWXqlGtqa5sfXkjNa9KsAS0ym8eT11emA3l80093zS90LlnoRBwqTr/8q5qiYVdujw3/23ZAP1XXdFW9fTdzXtmCdDDyRZacrXK6mf9vp6bZtLdQNuA5d22WFVEuWkjM0YZAmpNdWW3SqiEqxeifoEWlq76kiFCX6ifZ7EhwB0oBBTzspir562W0udF9WoaArTFPExAvdDe0rslV6u0V8yKfEOAxsNLa4rLzfu7sAPKvENAramu7FYJm+2AeVWzNgH1JUuP0pafNvW0D3HIDPWBQsDyB7+5d6mfqWrSFgErfYxmdw/oDkF5+w3qyrUJMM/84cVmCNI/LU51PV5uhqjDBNT8dwho2aEuAdUlS8DixhN1bVNP09lzdyOAQsD63k9+cF0PQWXV0FW/1JXeTYDpyYvTxgi3GejKtYegWoFpb9uP1uYFqIY8hyGobAhoD0HNo/WGoLImYHWm3Y5NPW3RBx25HlAIMIeVTJNq66R9htPaCOtKL2cnlzsIsG5obs/f2Efa9hPbcrVKI/v9y7K2spXdWJi23QxR52Vx2jLCWwTUmurK1pc3Uvbn6tHaBDSPZ0Yac3RgU8/qUb8fpQeYcpeVG1rtk9ZuqHH+2q+hfUWaiViWbR5Jn0qprvfkKpWlvc8O0vVETHcA82s1BCvX8MZV44ZuE7DRVFV2c7klVQ0kLQJMc1eXqtoqN6BVT/uo7kaAfCli2V9+/7+X+68nDXICfnmgjx66nhpkMS4yhIDIEAIiQwiIDCEgMoSAyBACIkMIiAwhIDKEgMgQAiJDCIgMISAycAjIJo/YBKBo4QDPVhUCcOH8PEIALngSUMzrfddFd+9TCCAoSp9hsCcPmvMH8PJ5giMB63vvzvUJcH0Cx/xZyQOdAJ7gSEAxV0PQQp+0Obd/4pTPEwwJUG+9EIAo4CxZJSDsDUHQ8vkANMfq3rS+P/aktJsXlLIRHnoGDwKKTSYW/2J3IHE3FKsH6HOTDmekRzdd3mr6FAmArfPU99gkcy4npMc2nT5+/NZV0kMQvAfo07mn/UCfEZKjoAhI2gg7/t6/yZyk3hFp5VVsHzo/Vd8NTWcihmCEF2F7wKbp05wH4BjhPJQN0CiSnge0AZmIaTscwAuyb33KRrgN4Ex4EWIekJueBXdDnXt3DMCXIj7DJsDG6qPNA9g2vQXHtSATS4o2BLElwLODVreaNQi3WL1IRpgtAZ6wz1OYzMAmdfNoBtwmYmjzgCQJMFHaNgdPO95+hOQo6EhYtHlAkgSYmbCdho1P3DG6JUwMOGwIgsx0mCM8AdbqwozwwF1CwBhUU2yQGyo9YEgSp/yDN4FWW3iDggDlBAEnYum2f01A80z4BNivbsFsQOIEBJVc33+iegDawawUGr0NiqOJeghiOA/g0ZcmTEAYfXTluxGAsBYU5o2dCgGsNmQ4ebVUBHA6FzQ8rYhQGwoCWmBBwOR6QAMmQ1BV9GS8oAbpn4pwBi0BOzZkJo9oBAiAwBmCBN7AMcICb+C4oQJvTN5/iQ2kHbHJIzYBKFqOGEIAFjxfayEAFwwP51arobnZbuaxGBcQHAkwm/J2/sVqMS4IGBJQbcqbdk9/MY4hAdWe8K1ZdrprMc67fJ5gS0D54rosEo2SbIMvAWUTpoFTPk+wJUC/+8U5yAjjzB8Dw5eAoCFKtRs6lyC9IYHAIUqYWhgSAFrmoQhRQtXCkQDH3/s3cY8PwC8WFewJQD2YJQQ4qbfawfEBEIHwgNuAoAQMxQe4afEXCA7YZgvVEJRyoDZGD2iEyAhw1eIrEB5wG4BabB/w+ADIKxYeR0FAyoHaGASEX4qAhalCqxAUcBvAfimC9xDUhp9N474UAfLzaOFHAPuliKNpf8YEgE5FBLEBQahkSwDsVERAI4zci9gSADsVIQSAi4KdighoA/AGH7+KUSxFGGCdisA2vLENOcVMuAbKqQghwE8S4VSEp8AuHYzcWrIewOlUxCQJwNKCUOxg+08gVwRci/QAuKSnFrymAq0fI4OYAB4BGtPtAQwDNGJXgJYAVqejY7/7VS1IJSVbSh/RCBAAgTMECbyBY4QF3sBxQwXeiO2/TR5CQGQgLUVMHlQEFK3v6flrYQzPVqUiQDugFxgbMsxBuLrrToB8zhZDwFdyOTu5lFwRCAKekos7egiSXBFwAU/JQm8In8oQBBfwlFQ9oMznYoThAr6SeepuqAVfAoJq4QO+BCQ/EbPwJWB9oVqnCpIJUpRMxPYKrM5sZFL9X/yiCkOteEEDAnnd7vaMeoCi8vclad+wgAnSswgVpKcpRomUZwjQQmcToGERKkBDN3uqSftAB+0qApoeECpCxrz7aRphOAFlflr/Ow8VJ1yAj6fjbGMEAAIBmwB5ppHy6MWiAoEA9WaaQajIxk8EnFuiYBOggQy4ES61I6QlTvfeu1tyLPQsj0mIEi5g+71kSxHre+/OMSZi/AjA6QEexbrdXszVEJRoyjLH33fdFDRfkIZ69zsE+GjxEQgPBALC5wsq9NvOMU4YAXACaPIFFcyMMNq8AmMmTJEvCOCGQqzcIdUIKsBGmH/CpnBVQB7S/Ho0Rb6gC8iOmBAALqo4LQE7YkIARlGd5WiXYZy3DQCpqwhonikcAau3rjznAYNWzrP1kNVtqQ4u4C2phh/viRhyg4H8Rj/VeAK+ksvvX7LJGTfFHmBtLw8jPDyiwRlgS4BeZ8rmTCZiQdrfUxGdDUDSEtLzibHOREwAjx2xgDbAvS6kkgw/ZRh7dZWWAN+JWBDEfverWpBK7pgHTB6RCRB4AzoECYDAMcICb+C4oQJvxPbfJg+kmfDkEZsAFC1HDEICcA7nsoXna01HANLhXOZguxzdP5wLHQJ5gi8BvcO50PJ5gi0BaIdzmYMtAWiHc5mDLQEl1uFc5mBOQMpuqAVnAgJq4QNvAuzhuPGpOpyLyiFf1D4e+BKQ23YJF6aq/J/VW97flD8eeBKwOKlck5CB2ooAmYjtFrDpmgzy0aHCrkUVqpPJPGC3AEGyDg1JV7NLWP9BkK5GQ9LVDN1EQICkq9l3E0UPwPqaKkMcBQGwID3ewCCgMRwsg/R4A26E/Yp1lkjUCMM23AkJ6ATppTMRw+gBwbOlwIL0eANuAwiypcCC9HgDTgBBthRYkB5vILmhYSPlYUF6vHEUBITVEhdHQoByglKdiOEsxgUmYHWmNKdpA9rwXY4Ony/o/hPVA2RDZrcASbYUPQSlOQ9og/GpCCEAR8BbctUZgqDl8wRzAsQIwwW8JdN1Q9tgTEBILRzgPAOoxPwL9BFKvgc4g5YA74xZgKmmg7oYbwMtAZ4TscEG86v9sLoIDNASwCVrIp/2j0/A5EFKgGRLQQSOERZ4A8cNFXhj8h58bAgBkYG0FDF5UBGQ/DflPVuVigD5pjyWgKdk/5vy0B7IE2wJ6H9THlo+T/AlIOFvyrfBl4CEvynfBlsCFjfVeP9Xqx9m2bfFCIMEPCXXf6fP5goBcAFPSet9ihcEF/CUXNwSL2hYgCJO+MV1WYgXNCBgCDBhMpKqAAi2BKh3v/jeuRjh3QIUPSDPsm+JFzQgQEGAZM7dI0BBQMKZc0FL/VQEpJw5d+gZWBFQZc790yz70+S8IAwCmm4Tzgv69z+8+t0f/4//998/8tfCE3ACUIsdhCJg+WdZ9mfSA5xvQpHsZk1MxwvCIIAgW4pkTdwtbP4kyJZSJrsUATtyYu4hyJby229m2c1ElyKQ5gFhI+WLm1n2nVQJcPy9fxNRtpREh6CjISDdnHGOv/dvoklXIznjBm+iICDlnHEIRjj4UsTyZZ2uJk0j3AbbTXmbM04IgAt4SvYTNkHL5wm2BPTzBaXjBbVxRARAy+cJ5gTIEAQX8JZcJe4FOTuglZh/gY73p06AJwh3xEr/iRhkpuOgLsbbQEuApxc02GB+tR9WF4GBeARUWiYPUgIkWwoifAiQbCmI8Oo7ki0FD5N3IGNDCIgMISAycAiI7QTGR2wCULRwgGerCgG4YLwaajLWJJywyYIxAfrooyRsggv4SkqQHpKAr2TCQXptsCUg5SC9NtgSUAXpyZ4wWMBfshAjjCHgLwl1Q3Hmj4EBJmB9P1yuiHOMeQDbprcAPk8RMk549dYVwhCUMAHq7cxOxu8X+gRoIMwDUiXAnlCfByyqGyfspyVRAvTh8dMqRCNYUThxwgwJAK00NxEyZXACUIL0OBLg+PuOmxbBe4B999M0wggElHUIC0KxA8iNdk83FH03CRU4BFg7HMwLWl9APuAwcFdiBJSmfUJFyp+WgA84MCcAbITb+IxjpDxrAgbbf3yyDr9yXQUAkfLMbQBmD2AZKQ96xcID0QZwjZRn3f7HQYC1vYkaYcff994UioBqmiFu6KGbQuYL8tciBPiqb0FHSSY6EwZ7QQTZUlQZSnOaa0FtsN0T7ifr8HyJhQBfSaRcEUKAr6QQgCPgLYmUrEMI8JU0uSLECIMFvCUhbqi9lZ8D2oZn9QhXQzWSD9BwBi0BTM6GclpcpSWAR4DGYPtPMluKd/kAMGr/+ARMHqQESLoaROAYYYE3cNxQgTcm78HHhhAQGUhbkpMHEQHV2dC8u+U2+X5ERYA9G9r3QdNZjPME5TygmLd9UM+WTKfpLYjPht6a6YEIokUI8JXUZ0PLF9dlkfSWpDPICDBnQzWKrTAcIYBI0o7+ejFOesAWqAiozob+LMtegpUvBPhJwkKUIALMQeyGJn8yzhnEbmjyB7OcUT0PwSfNkT7mmSYBBJ80x/qYZ5IEEHzSHBaiBBFgjio+IPjnbBs3FLgaKgRsSY6HCdAArYZ6CjAHFQFVgIashnZB1gNsfIDnaij6bhIf0BLguxo6cFdCBDQvVVgCSr/V0NQJIJGsQ5SkB2yBjoDfffej0nc1dEIEhHVD08wVAQIVAf04YRctqXtBLQR2Q1l8zpYV4hHgoiXd9icmIMmccTDQEiBGuAfiiZjnamjqBJBJ+q6GCgFIkv34JCGAVLK9GuriyAgBWJK+q6HTcUPDS8rZ0C0QD0FyNrQL4h4gZ0O7oCUAdCwltdHfgtgN5fEtSeS1PZA6ehvgk74eF4MN5lcbmLp4BFRaJg9SAiRbCiJwjLDAG159R7Kl4CEdT/BIIQREhhAQGTgExHYC4yM2AQ63olSbG46IAMxi+UAIiAwhIDKoCIB9zhYiMKyJhU2hIoBtrojYPYpyCGKZK2JCBPDMFTEdApjmipgMAVxzRUyFALa5IpgQsL7QJwZtvg43yZGAfc4WIkCsz6/81ZlNklL/d7zkeJjj6fDUxWkSkNftbsPlHSRHg2uyDhYEmHxBFqHyBbFN1sGCAJMrwmJyyTqYEND0gKkl62BBQJlvXss80BDENlkHDwI2ufrCJe3jlKwDf3vQH1WZi8y8l0U2fiLgWltGyTqG5CISYNbrs46BHCc5EpySdXAkILQkMFkHRhUOy6VMAChZB7YbypkAlsk6Bo2mZ4tNlwAm+YIYekEbTCFZx3CHisAALQG+y9HpzwM2CEeAgedy9IS8oLAEMMmWwo4AknxBGkyypbAjgEySSbaU6RLAJFvKhAkoWWRL4ewFhZVkmC2Fx34AmWSedRa8hQBaSci5IOzBIvbgU9WCVBLhZFxqoCWASboaZIBsOr0Rjp+uBhmD7S/pao4CpARIuhpE4BhhgTdw3FCBNxIwn8cNISAycAiI7YPER2wCULQcMSZMAM57CK5FBEl8LUdcAbKzoVjJOrARuwJUBKAl68BG7ApQDkEoyTqwEbsChATgJOvARuwK0BGAlKwDG7ErQEYAVrIObMSuABUBaMk6sBG7AlQEoCXrwEbsClRnQ4ki5RGSdWAjdgUaAmzCiLCfNEdI1oGN2BWgIqCfrMNHSwDErgBZD+gl65CJWFM+GQG+p6MDInYFiAkowaejsRG7AsRDEPx0NAbwd6cAddF/0PUA+OloDLAL0KD7pjyPiRg7AigkQdlSkDFFAmDZUpDBmQC6ZB0R5wFCgL8WFEyXAC5DEDc3tAWe2VJwEeKYmn9lOv/mmS0FGYzan5AAAx77AexsAFmyDib7AewIIJNksh8wXQKY7AdMlwDQfgCeuZwwASWPbCkBdbuCeAjikS1lugQwyZbCeR5AIQnSgt1ILLYk6SQ5fcYq9rtf1YJU0jtzLp8hYwdAIxrxRMwvQGPwCVkwMFy7MdWj94J89gM4t/9R9QBJV9MHKQGSrgYROEZY4A0cN1TgDSYWcLoQAiIDaSli8ohNgMOtKNXmhiMiALNYPiAkQO/EcFqM4wE6ApazOcbBLCHAU3J97905xtFEIcBTspirIQjhdLQQ4Cep3v0OAZ7lCwF+koV+2+cyBPXQfZ71/WBHEwsxwjuw/TxFyLOh4obuQut5VONkJ+MX649+IsZjZl2XbA9Iz/feu1tyJHLz7vPrAbF7lC1fp1M6VSSEI0D5P6u3rhjaADR9nh2qig84t/8J2ANMiAxDLwhZn+fzLIL3AG3gzzlOxHgQUG6SugUsSjU9w4kYGwKsHQ7qBRUcJ2KMCCjNUBRoHmDffYZHE3kRoPBZoImYPZju6YYO3JUkAQSS7lpSJ0An968RKmsi6PsBqROg7K+D9fUqCvb9gOQJMG+oiw/qUxTg+wETIKDUZnL08ONVFOD7Ache0JA6BDJgRrhwObnpWhTg+wGDDebZYkNivuogtevctJyF2g8AfT8Auwc4/h5SXfsm7amMH4Uc94RB3w9AtgE8CdALci5Hx91qC/t+ADYBjEa0+qY822TRABY7BEjCJlwChk2Kn0IEG1C4OUAtydEA5Q1l3QNgfJLNhEF5Q5nbAHgP8CrW8X5I3lDmBEDUxSPARQvqkDFlAphsyKRGwIuvWvh66H6kvKEoBOD2qNgEtE34HiOOlDcUefEMQ190I1xkJ+9t8KNrTy2hBGj1ET5Pawh6MMte++koIUgPwDC/O7SiafJTh2SEnz3IFAcHX34euaPronEJ9VSH5wU9fTvLbh/gYMeGzOSBRoCyxp+/kmV39lHQnwcIvLGDuheKgb1LGUIAIroEvPh8lmUn7z/eJyP5ghCxRYAZfW59MDgLqyD5ghDREGBa/5D9tZB8QXhoT8Ruf3pwKWIgQkbgDbeliMEImckDgYDP3ntvzFIEToQMW3i2Kt1yNFKEDHPEWooYBZQIGeZgTQBKhAxzsCXgt9/Mspvnq7/Msm98hFM+T7AloLiZZd85X/89iw+5BURYAp6+80az0uA1BPH4jFVABCNgfXHjajuZhHNR+ng6j89YBUQwAvLszm8usvmiOcDovCn/5iXsM1ZHAV8CTJ4afYB2YKFgfXFyuZydXJoDhp2i2h9CHN6UN8fTTVGwz1gxhycBhWq2XO+lLGe7GdANv1CNu4uA9a8eKTzI3vj00YOTD/5l90z4v/5In/5d/F6W/bX0gJ7A+mJu00oqKnbvaOmGL1QLLmeb69tFLWyIWTHUhf5Z946XtBv6B1z2hIPAjwCTLcWm6hj6nG2evTZTjZvvsgFldfa59d+dkInYkMAIAvSS5111z+2rLckaYwjoBOmJF9QIjCDAODDl+quBohQ/pl2L4U15QJDeESEgAfuLUnOENx794sFwuhVQkN7xICQBv/rkR7/5j8Gilm/rAeX2YPuDgvR4A7TXUhFw2I//cqauPTlrRpie+hfPvhjeFq6C9H7G4pvyyCA5Hb3Ibv+fMz1X20yjHJvOmGcm35RHBgUBeiasm3BwHlD2hqiOAhsj1hp/0vGC4AQcDtLTjV//f7f63hDVU6FDlFqLcQ6VZA6EHnAwXc1BAvpDVE+FDtBIcjEOZQg6lK4mz87tetDumfCOIaoLQ0CZ4mIc3Auy2JuuZjk7eX128r9mA/sBO3pIF7/77kdpLsYNtr/752z3pavp+fmOBKzOvvFRmeZiHFYP0NiXrmb97Iv2bsu2ZH+I6gj3IuXFC+rdBElX0x+iuoAEavMGEgGD6Wrs0NJzU92WIoSAAzftSVez/vhH1+uPe2c/e+o7Q1QXSJHyDIFAADhdzeqd14wCfXhi4H4TKZ/kwSyKmfB+9V999ezsxhf6TMTTYSOuCUjzYBbJYpzFujXGNJJbxyL2RkkmuhaE6IYOYv1Qv9qr3cvRzx/9YnbyqT4b8WjgUESFNNeC2gh2MMvuNa4fDi1FfDwuR0SSa0FthCKgXq0bXg0djfTWgtoIR0Dv1ENX8iszBP3iR3sDtVNcC6rgPPpXYuNuq089LLKBDZnlbIwX5bsWBLFyDupivA3jtySz1z/9xbstL7K7FvTa7OT1dw58hMZzLWiwwfxabFhdBAZGF/n0FV3B201aoM5q6Mllrhq/2L+rwCVpH5/2dxmD11991fZ0esvR+lzong0ZjR0ETB7jCeigR4A+n7v3bKgk64Bh78GsXMcPnB5Kfy/JOvxx4GDWIrvxbxfZn18cSAEuuSJ8cfBg1pcvX+ktgdvyfgfBmINZCi8OJQwSeOLwwSxPxPZB4gOLgKdEiVtTw9gGOHAwS59osXDcWnNZNXF/b44AY5/k4MGsQ9+Byw03/HJHx8bo5zl8MGuvuJ1/McmezgkuSxF7DmZpL2mvsG13hINZEyZgr6SaBo/YjGT4SfPYGP88T9999dU3vhiUfDrLXtV4bWAoMpuRQkAPozflL7LsZJZldweWIpQXdLKXgJLpN+VjY7wbeudxWT6/GFiKUF7Qh3vl1btffO989cMs+7YY4Taq51lfaP/epovYhXpTfmgp4qAXpN3Qb5VCQA/2eerzPquhGK+Dm/L5oU9yr++9O+fyFSVOsM+T1+1uo7V3IN/fA1QXurM3b7oyAMUcI28oHgE8ZtbV2dBNsw+kq1G33H5s/hxI1vHOq/uXItS73yFgh5bRFUZE7B5lyjepCiwGUhWYBr71SruRuwRUGPCCzFoRRy+ICQFNDxgkoIXXegSMgeoBDJciWBBQ5ps1znzvqYa+5IUxx8cAABiNSURBVGgoL+ilsvzPLPsTiJZUCdikihvKGTcoWQ6GMG1jMH39uLJAmxn7VSPoQCh/k/JtwAn6D90vnr73XutzbZuaD4Qw9QBIXz9wV0IEVEEyA0cavjSHTR7qO+72JMcCkr5+AgTsw3J28uNr1UlOr5+fDZwNHREjBklfP3ECctPqZiq2+3T0qBgxyGJc6gTsD9Kzmy1qqns9sBQxJkbMvvveRtjpZyewIGB/uhrb6Prg4dBa0IgYsfXfZNl/83ZD0/eC9qWrsY2+MONQ6+zn9pbkoRix4lQV4dsDhtof5SOocBVY5Q+lq7HRMXY1rhg6ljIG2zbAyQvCbf+AfLrXpf2PgXQ1i+z2F09ndsNgKELGYOsDDz10MucOajlUS1fh8XLRCRhKV/PQGufVxfA8oP+Bhy4gmXMnQsBwuppnxriuzm7vmgkb9D/w0AEoc+4kCBhMV3NQstz5gYdtwDLnToCAPelqDkga7PjAwzaqzLm+bqjTz4fVsTPC8HQ1/Q88dGCo4dEDhr3aCAyMmAnvk9yg/4GHbcByxk3FDQVI9j/w0AVSyrKQs99jJqD/gYcuhADkMl0lkXLGCQE9yfWvmhW4PWtCJmccj5NxiRFgXU+7JbPniCKYADxzmZgRrgho/TkIVmkr0ZoexCctAUl+xmqw/d2Td7uVW//Fk4BKy+RBSoBkS0GEDwGSLQURPgRIthREtAn4oj6Y8uxgpIwACy0C2jZFCKBCayb8qIX9uYsFeMDx4GM5f3wQmwCHW1GqzQ1HRABmsXwgBESGEBAZQkBkkBGQmzmwZMzqgooAWJAeRIA5CIcgQJAeRIA56AiABOkBiuWO+nnsgs7oKO3SpyX8g/RAxfJG9Tw2Du/Q9xd2STpAMmbtgH2eRX2s3ydSfhRgQXoQAeaozoY2uSJGn5F2d0Pn4ob2YZ7ncLaUIUmc8oMKMEdFwKF8QUOSOOUHFWAOKgL06elTGYL6oCIAFCcMEmAOyiEIkCsCezeJDyoCmmcKR0AnTtilDQfuSoYAEklGccKcQEYApzhhTqgmYsGHIFZxwpxgn2Fvupq9kmNRxQl7uqHJE7A3Xc0BSZzyD9yVuBdkMZSu5rAkTvl7bsI/1cQGW48wkK5mhOQI6Bgx7yEo2fbvNsCBr6HukTwERqkKWKH9DMPpag5JHkY/VYGLlkkQAEpXMwLdSHmZCRvUzwBMVzMCkFQFyRMATlczApBUBakTQDATriLl+WVPjw3CxTiAGwoRYA45nBsZQkBkEBMgQ1AXtASA9oRTM78WtAQwSVeDvLYHUkdLAI90NYMN5lcbmLp4BFRaJg9SAiRdDSJwjLDAGzhuqMAb6XiCRwr3+IBdYaoCb7gRMBimOnkQEVD2wlSh5ScCOgK6YarQ8rnB87WmnAeghKkyB+HiImV8wPGALQG//WaW3Txf/WWWfeMjnPJ5gi0Bxc0s+875+u/B+wHMwZYADTUE9dYhhAC6onSI0q3Z5vhRmm4oYwJ0iJL+0EwhXhBIwFfShChpFFtxCEKA/oMgTPW//kiffVz8Xpb9tfSAnoAhYH2hX81QBPyzHu9f0m7oH8ACtZmDLQEaMhEbEqAhABCofTxgTAAkUPt4wJcAUKD28YAtAbBA7eMBWwKqQO2fdQMQUiAAtNlVEdAIBY2S7B8KSoIAx9/db0KQrKIkW+NPOl7QURBQBem1FuOg5fMBnACyGLE0F+MQekD4bCkVAWWKi3EoQ1D4bCm/++5HiS7Gwb0gi7DZUlZn3/ioTHIxDnboauuegNlSYLkieAOrB2iEy5YCyhXBG2huaMhsKbBcEbyBRABFtpREhyDH33feRJMtJc2DWQgEUGVLSfNg1pHMhDXSPJh1JGtBGmkezMJ0Q12K9RFKci2oDb4HszZIby2oDeYE6HmA9ACYAEzyZ1n2ElL53OA8+ldi/gV6yDDJGQeymsigJcAzSnKwwfxqP6wuAgP0NsArb6j0ABxJSVfTBykBkq4GEThGWOANr74jyTrwkI4Hf6QQAiIDh4DYPkh8xCYARQsHeLaqEIAL7otxgbTwAV8CCqQPOjMHWwL0HBjlg87MwZqAe5fp54xjS0C5nJ1ImCqGgKfk4o4egoQAuICnpN6KX5ymeTSxDbYEqB5Q5nMxwrsFWulqghWVixs6LNAK1A5WlMwD9ggQECDzgH0CBATY83AyD9gtQEBA/r4+lpumGwpaaSYjQHtBic4D4MfTKQg4TzdlGQYBTbcJFKBh3/00jfBxBGgUOl1Qmm4o3Ab4FesqUCRKAGy/19xDEiO2nM0TTVmG0AMIsqWs7707T3QegGIDgmdLKeZqCBI3dN9NQbOlqHdfCDh4U8BsKYUebmQecPCmgNlStBckRrgv3Pp72GwpybqhWwDsiIXNlqLJlf2APQKhs6UUp6XsBwwLUGRLSXcxrg0/Amiypcj3A1AEvCXl+wE4Ar6S8v0AJAFPyfS/H+A8A6jE/At0urv6fkDybqgzCPcDNISALmgJSHkI8gQtAb5GGLLY4qAuxttAS4DnPGCwwfxqP6wuAgPxCKi0TB6kBEi2FETgGGGBN3DcUIE3Ju9AxoYQEBlCQGTgEBDbCYyP2AQ43IpSbW44IgIwi+UDISAyhIDIICMgN1Mw+H6AEOAnuTjVpyIQ9gOEAG9JRQDCpjweATy8KjoCCjX4IJwLwm6q2D2K0gijxAknSQBBmKoGytHEJAkwcM1Z42yEceKEhYC+5CjkSHHCQkBfEqd80mLD6fMvXwiIAioC0CJkhIC+5BigRcgIAX3JsfB3Q9E3M1wrEA6EBAAiZAbuSoYAkokYJEImdQIoJEERMsgE4O/P+oOKAFiEDDYBjr+HhCmTIEoSFiGTOgEU+YJAWpCHDH4EEOQLgmgZHLM968CRgDJwviCYFuwewNUIB8wXZKYB3ksRuDZguENFYKBTZLh8QaszpZmLF8Sn/beeIWS+oPX9J6oH+CbtS94L0gibL8gOQUxmwhwJCJ0vSAjYWyZFvqBVZwhy0ZI6AST5gjQB3kYY2Q11/D0kyBbjQG4oRGCXDqZeEJUkSEu6O2J0kiAtQgBIkscQFFIfXfk+kqBNeezRGk0fyKTQEpBk+vrB9h//AQe/cj1k0syaeEQ9QNLV9EFKgKSrQQSOERZ4A8cNFXgjBfN51BACIgNpKWLyiE0AipYjxhERgPPecMMREYBZLB8IAZFBRkDBNEYsNqgI0IsQLGPEYoOSgHuXCMvRQoCn5HJ2gvIRHyHAT3JxRw9BQkAP3edZ3w9zLsh8SPKUYbaU2Nh+niLYwSzVA8p8Lka4h9bz6NO5DpFKji2Rixu6E/Xz2FBhlyglmQegwD6PjmE8VSSEI0DmAQMwz1NlKQhJQGFUyzygB/s8i+A9IH9/pkoQN7SHzfPkYW1Arr0gmQf00XoebYeDeUG62VlmTYyN7edZhJsHcM2aGBu95/ksUIRMAcmaiL6fygeEGzIFgACkKjBE9QzLmW2dcDNhUwSTQG1OsM+wnJnc/uf2Ly6So7G+9+6cS6A2J1QzYR0jnGv7m4+OFna1AXM1BDGJE+aEaiY817Gquu0Xgbwg9e5DCEjcCJulCDsPDkVAYeZ5nvOAAMfK2KAhwA7/hZqxOki6oAAY4WTbv2UDCu0B2XHIQdIB4obuQrUYd3K5OtPvfh4sXQ0od3TyBOiGUe2/nI0egJxtACh3dPoEkEhuL8bJPMCAkIBO7mgXLUIAgiQod3TqXhCBJCh3NESAOcjOhoJyR0MEmIOKgGrH8z+z7E9g5QsBEEnpAT3QEgCyAXjmF3lpCaSOlgCEj3kiYLDB/GoDUxePgErL5EFKgGRLQQSOERZ4w6vvSLYUPKTmDx4dhIDIEAIiAylCZvIgIgAhQgan2txARUA/QsazfLym50Eo2WpoL0LG88mxmyp2XyIjgGuEzGQI4BohMxUCFjfVcPNXqx9m2bd57QdMhYD13+kNMSEAsXyfPWEZghDLdxyCbokXhFy+o+SL67IQL2iwfJOnRp9cCPc1VfGC9pRf3Lgqc3s8N1CMmHr3i++dixHeXf76Yl4FSoYL0FDd61viBQ2UTxCi1I+S9NIiBHQkx6MXJSleUFM+AQGwKEmIALE+r/K5R0mCBIj1eZVPMQQpI/ySGOGB8m3GPotw6Wr+/Q+vhADE8p0lV29dyRCEWL6rZKFm2eIFDZVPkK6mlB2x4fIJ0tWUsha0p/zw6Wp++80suylrQQPlE6SrKW5m2Xe8CUA+1IR/SMofZPOAEjIEDdzlTYDj7yHREBA8XU0nUt7lpUudAJJ0NaBIeZwqHJKLR0D4dDWwSPnkCQifrmb58pO3rrzXgtInILikjZQXAhDLdJNc39c9QIYgxDKdjbAiwNsLSnweQCLZJcBBy2CD+dV+WF0EBmgJ8B6CpAfAJVfiBeGWKQSggHBHrARMxFgPQSB1tATwSFeDjMH2l3Q1RwFSAiRdDSJ8CJB0NYjw6juSrgYPCZjP44YQEBljCdj6coBkS+khOAHtLwcgJG5NDTRuaH0eAvQ9YZz3hhtICNich2B4NDE2KAhozkMIAT0QENA6D8HwbGhshCeg/eUAyZ7eQ3gCqi8HDLmhoYo9FtAuxiFoEQLcJfVemO4IN66kB/RAQMDqTLW8tb1iA3oIT0B1JKuXsMlzRpUoAfZUtM3X4SY5AuZEUC9hk6sWXwHmsM9jj0Y3/x0vOQbGBnBN2BQb9nnyut1tmIyD5BgYAkqmQXqxYZ7H5AuyCBEhUx9KLGC5oz0FmMM8jwlRsggRI1a7oYAPOmOvpfNBRUDTAwIG6flrQT4ZxwmVDdhEhuWBhiDYUkTyBGwC5ENEypuJGGwxLnkC1JtpBqEiGz8RcJyIgZaj0yfAbJ2bzXNnycNoQjOYRMhwAtViHGhHLMCRAjagIgA4BCXb/nUDBM0XZEIzxAjvRssLCpYvSNzQPWjNA4LmC4JpSZ0AgnxBsB2x9AkIni8ItiOWuhEmyBfE9hMmsdHYgLD5gth+wiQ27PMQ5AuSHbHd2KwFBc4XpCE7YjtAdTBLdsQGQHYyDrQjZm9NzP+xOLqjialBCIgMYgLgZ0NTAy0BTIL0kLcXQOpoCUA4G4qAwQbzqw1MHS0BCBMxDEy3B0i6mj5ICZB0NYjAMcICb+C4oQJvTN6Djw0hIDKQliImj9gEoGjxKxqlGcC1iCDpqSVMg8UeSY+IAMxiw+mjK18IiFy+EBC5fEfJopW6D1K+EOAnqVeBLjhuyk+FgMLEPjE8ljIVAvL3mZ6MmwwBd655Ju3jQsDqTL+ODgfjXAk4Z3oyjgkBuXVOQoSpWth3X4zwQPmLOjYs3CfNC/DJOE8BYn1e5bcOpfMMUUIvNpw+r/LZJ+tALzacPq/yA6erqVDIEDRUPgkBOhRZjPDu8ikIWN97dy4z4YHyKQgo5moIkpnw7vLtLMwiEAHq3e8Q4KIFfT/VtQLhQLYYp9vLeyY8cJdv5fE3yP1BuCFT+BthbAIcfw+Jqsyg2VIqANzQ5AkImy0FriV5AthnS8Eds9kRQJAtZetzbq5aBo2mZ4sxJCB4tpT259zctWD3AG5eEEG2FA3/DRlcGzDcoSIw0NiAsNlSytbn3Cp5h0dOfh5AkC2l9Tk3dy3Je0EE2VJan3Nz15I+AcEl259zc9ciBIAltz7n5qwF2wty/D0kCNeCcLSEXAEVAoiKnTABPPaE+bmhVJKgPeEwTTWVDRkLhD1hPKARCupQtAQg7Anzw2D7H0e6msmDlADJloIIHCMs8AaOGyrwRgLm87ghBESGEBAZjgQMBWpPHkQEoAVq4wGnGcC1IJLsf8gt9pNXiF0BsonYcnbivyccELErQEXA4o4egoQAxPIdD2bpk7mnrFZDeVSAsAeU+ZyVEeZRATIbkCPlC8JG7Aoc3Z4wNmJXgIwArIxZ2IhdgQlPxHhUoDkdbRHseHovY5ZMxJryDQHri5DxAf2MWT5aAiB2BcgIwMqYhY3YFSAjACtjFjZiV4CKALSMWdiIXQEqAtAyZmEjdgXICAiq5YgrQEgATsImbMSuQEVAszXEPWETBvC3BwF1oZLsJWyKOBGbZHxAL2ETtHwAGBIQPFsKLGETMvgRED5bCixhEzL4EUCSLQWQsAkZ7AggyJZScnJD2XlBBNlSwmpxLDPAMTX/yug/CLKlgPIFYYNR+7dsQNhsKbB8QchgZwNIsqV0l6NlItYuM3y2lF6+IE8tGGBIAIEkJF8QMiZJAChfEDKmSAAsXxAy+HlB4SVh+YICInYF5Gji0ZbvJSk9AK98H0kmiVt3KEVT5KqUlgDPidjgE8Z+fQ2GazemerQEMPyCBgKOqAdIupo+SAmQdDWIwDHCAm/guKECbzCxgNOFEBAZYwnY2oyUbCk9BCegvRnJZDWUE2jc0HozErQlifPecAMJAZvNSIQdsXSa3oKCgGYzUgjogYCA1mYkw+8Jx0Z4AtqbkQy/qB0b4QnY2ozk8f0ATji6LUkhwF1SOUGmI9y4kh7QAwEBqzPV8tb2ig3ooX6e/LRczjKzaOAoeQjr+09UD7DtLl5QD/Z5zMlcfT7duIwukmOgh6DFrW62FM8pbZoE6FwmhoAgx9ONDXhxXRYyEevDPI8NkjcRGkWACBlDQImULSVJAmzGLBsqGYgA/e4XXD7ovEMpSBOoFvoPGx5mEKwH5JBsKQN3YTRb7B5V2YDNyB8wTBWgJXkCNvHZi/Gh8o49ALQUkTwBqmHMm184nFlwm4jBFuPSJ6BaM3MIEXOdiIGWo4MYYZcKhAPVWlB/Q8ahDQPsaDe64SoilQ8lwEVL+j0gaLqaFXwIglbBWTUZWl5QsHQ1mgBWRjjgiOZeF/Nn2HQ17NzQIbloBNCkqwFoSZ+A8OlqQDtiyEMGTwICp6vhtCPG0waETVfDaUdseFoRgQFbZPh0Nax2xBi1f7MWFDpdDacdMXY2gEiSzY7YFAmA7YhBBHbp4DcEhZcE7YjZW4M0FY+lCFpJfC1HXAFiAiRbCl75PpIMY8RiV4CWACY546qisWwKyKbTEoAwEeMH2MQ6HgGVlsmDlACEbCnYXQZZH2GPxjHCJMUS6mNOAEK2FCEgQlEhixUCIhcrBEQuVgiIXKwQIPCEEBAZQkBkCAGREYkAG1DIDfZ74RaqhiSVlB7QoBXlKATEwFaDp0OASV6h0yf8ZGZ6+OrNT7IbT9Szrc7+9swuKuVZdvLJ4aCGSlN1BvZ8OdPyc/2rPpHf+of97Gtd1thlQy2rbs5NIekQUActqMc7N8EL5vDeyhCg2lwfpczNed+DBNSaGgK0vG6z4sbV1j+MVvPx9TOXeDmjuD7fmQwB9UFtE72jTw2bkdYSMDetas8T5wcJqDU1BMwrtUZJ6x+bI+Jbo/pBmEq9eWmpToYAE95a1se2zfHV85oA+xfbsIdjm2tNDQH1afCaxfoPq8sw4dKE9d2LaqBLgwCT9DirU+jsIqAYSUCtaQQB1T6hDwHKetz415R6gIEaX4YJGNsDak1je0DpOt3Qd2/0pEVAPWLrlEY9AqqYknEEmHaZ99t86x+blnMnwLwNi5SGIPM2qj+Mm7JojSDNX0Z6QbWm9cWdazUa7SHAsll3ltGoe8DqLJunQ4A2aZnxCt+f1Q52hwATefa/D/vrlSbdQNnf7huC7DxA57bwsgEnl5a7RAiocCh2eXxcYVpgQIC54uaxJwQGBJihZbJfBZLFuMgQAiJDCIgMISAyhIDIEAIiQwiIDCEgMoSAyBACIkMIiAwhIDKEgMgQAiJDCIgMISAyhIDIEAIiQwiIDCEgMoSAyBACIkMIiAwhIDKEgMgQAiJDCIgMISAyhIDIOBoCnr6TZdlrP41dDXQcCwEPq8DHu7Ergo0jIWA5O9Ev/6/fTi6O4EgIqD+RvJyN/j7UkeBICFhsvfnPH2TZyQcmC8SXr1R/XT+cKRvx2F5Wf33jsY7svqP6zMmPo1R5JI6EgPVF9sZP67wbJmtKZr4eXljLMK8+ZW2CKKvLN65saH3WysLEEEdCQLl+kG28oDz7i2v1xpuY4xvqRV+e6fBvnRflS0vFXXP5VBNweq1I4jxsHQsBioJfffxK9Z0006DV5wK/eqR+1gScvPHoa/1DlaJmfXHjSv9/8wNTHA8BGuufq7e5GmIqMuq/mcFIWwObE8HkPtAx9cYSCAFAbF5i/U5vCND5gLLXP/iXZ+bqsweWCiEgBOp0TpaAjVG1ztGGnhdP364/p1kNQUIAEhbW13x+YUzryY+1wVWmYKGN7PO3zXt/+rW+rjOgtYywEICFyt/Mbl9t/EyT2K0ejCo3VDs8zWUhABHP3lHtesvOvvREzMy09Nuf3fpQD1Drz/X1D+vLJ3e/LoUAwWEIAZEhBESGEBAZQkBkCAGRIQRExv8Hi8Mxiu8CwewAAAAASUVORK5CYII=" style="display: block; margin: auto;" /></p> +<div class="sourceCode" id="cb36"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb36-1" data-line-number="1">M_speciesseason <-<span class="st"> </span><span class="kw">calcSplits</span>(<span class="dt">M =</span> Mhat,</a> +<a class="sourceLine" id="cb36-2" data-line-number="2"> <span class="dt">split_CO =</span> <span class="st">"Species"</span>, <span class="dt">data_CO =</span> data_CO, <span class="dt">split_SS =</span> <span class="st">"Season"</span>, <span class="dt">data_SS =</span> data_SS)</a> +<a class="sourceLine" id="cb36-3" data-line-number="3"><span class="kw">summary</span>(M_speciesseason)</a> +<a class="sourceLine" id="cb36-4" data-line-number="4"><span class="co">#> $BA</span></a> +<a class="sourceLine" id="cb36-5" data-line-number="5"><span class="co">#> X 5% 25% 50% 75% 95%</span></a> +<a class="sourceLine" id="cb36-6" data-line-number="6"><span class="co">#> spring 7.000 79.28262 135.42287 187.42085 254.2323 358.8317</span></a> +<a class="sourceLine" id="cb36-7" data-line-number="7"><span class="co">#> summer 3.303 15.47150 48.78033 81.03393 117.8111 179.1198</span></a> +<a class="sourceLine" id="cb36-8" data-line-number="8"><span class="co">#> fall 22.697 277.23459 350.87034 415.85493 497.6733 631.1048</span></a> +<a class="sourceLine" id="cb36-9" data-line-number="9"><span class="co">#> </span></a> +<a class="sourceLine" id="cb36-10" data-line-number="10"><span class="co">#> $BB</span></a> +<a class="sourceLine" id="cb36-11" data-line-number="11"><span class="co">#> X 5% 25% 50% 75% 95%</span></a> +<a class="sourceLine" id="cb36-12" data-line-number="12"><span class="co">#> spring 3.000 22.25547 76.682218 120.54740 174.94217 273.17411</span></a> +<a class="sourceLine" id="cb36-13" data-line-number="13"><span class="co">#> summer 1.157 1.15700 8.277261 26.02119 46.64259 93.31204</span></a> +<a class="sourceLine" id="cb36-14" data-line-number="14"><span class="co">#> fall 6.843 50.21369 88.400480 122.26373 159.71320 220.09606</span></a> +<a class="sourceLine" id="cb36-15" data-line-number="15"><span class="co">#> </span></a> +<a class="sourceLine" id="cb36-16" data-line-number="16"><span class="co">#> $BC</span></a> +<a class="sourceLine" id="cb36-17" data-line-number="17"><span class="co">#> X 5% 25% 50% 75% 95%</span></a> +<a class="sourceLine" id="cb36-18" data-line-number="18"><span class="co">#> spring 1.0178462 1.0178462 8.486039 32.16022 64.10874 114.78032</span></a> +<a class="sourceLine" id="cb36-19" data-line-number="19"><span class="co">#> summer 0.9881538 0.9881538 6.277585 20.55506 41.59359 79.56007</span></a> +<a class="sourceLine" id="cb36-20" data-line-number="20"><span class="co">#> fall 2.9940000 5.5826217 29.308629 48.84163 72.92391 117.94961</span></a> +<a class="sourceLine" id="cb36-21" data-line-number="21"><span class="co">#> </span></a> +<a class="sourceLine" id="cb36-22" data-line-number="22"><span class="co">#> $BD</span></a> +<a class="sourceLine" id="cb36-23" data-line-number="23"><span class="co">#> X 5% 25% 50% 75% 95%</span></a> +<a class="sourceLine" id="cb36-24" data-line-number="24"><span class="co">#> spring 0.000 0.000 0.00000 0.00000 0.00000 0.00000</span></a> +<a class="sourceLine" id="cb36-25" data-line-number="25"><span class="co">#> summer 0.001 0.001 0.00100 0.00100 0.00100 0.00100</span></a> +<a class="sourceLine" id="cb36-26" data-line-number="26"><span class="co">#> fall 1.999 1.999 14.49638 28.68792 47.36727 78.55925</span></a> +<a class="sourceLine" id="cb36-27" data-line-number="27"><span class="co">#> </span></a> +<a class="sourceLine" id="cb36-28" data-line-number="28"><span class="co">#> $BE</span></a> +<a class="sourceLine" id="cb36-29" data-line-number="29"><span class="co">#> X 5% 25% 50% 75% 95%</span></a> +<a class="sourceLine" id="cb36-30" data-line-number="30"><span class="co">#> spring 0 0 0.0000 0.00000 0.00000 0.00000</span></a> +<a class="sourceLine" id="cb36-31" data-line-number="31"><span class="co">#> summer 0 0 0.0000 0.00000 0.00000 0.00000</span></a> +<a class="sourceLine" id="cb36-32" data-line-number="32"><span class="co">#> fall 2 2 15.9701 32.72705 50.80931 79.12132</span></a> +<a class="sourceLine" id="cb36-33" data-line-number="33"><span class="co">#> </span></a> +<a class="sourceLine" id="cb36-34" data-line-number="34"><span class="co">#> $LA</span></a> +<a class="sourceLine" id="cb36-35" data-line-number="35"><span class="co">#> X 5% 25% 50% 75% 95%</span></a> +<a class="sourceLine" id="cb36-36" data-line-number="36"><span class="co">#> spring 2 2 9.41423 17.82649 26.53038 38.80489</span></a> +<a class="sourceLine" id="cb36-37" data-line-number="37"><span class="co">#> summer 0 0 0.00000 0.00000 0.00000 0.00000</span></a> +<a class="sourceLine" id="cb36-38" data-line-number="38"><span class="co">#> fall 2 2 10.99700 20.09535 29.92132 47.47869</span></a> +<a class="sourceLine" id="cb36-39" data-line-number="39"><span class="co">#> </span></a> +<a class="sourceLine" id="cb36-40" data-line-number="40"><span class="co">#> $LB</span></a> +<a class="sourceLine" id="cb36-41" data-line-number="41"><span class="co">#> X 5% 25% 50% 75% 95%</span></a> +<a class="sourceLine" id="cb36-42" data-line-number="42"><span class="co">#> spring 1 1 2.747363 9.639385 16.97223 29.93183</span></a> +<a class="sourceLine" id="cb36-43" data-line-number="43"><span class="co">#> summer 0 0 0.000000 0.000000 0.00000 0.00000</span></a> +<a class="sourceLine" id="cb36-44" data-line-number="44"><span class="co">#> fall 0 0 0.000000 0.000000 0.00000 0.00000</span></a> +<a class="sourceLine" id="cb36-45" data-line-number="45"><span class="co">#> </span></a> +<a class="sourceLine" id="cb36-46" data-line-number="46"><span class="co">#> $LC</span></a> +<a class="sourceLine" id="cb36-47" data-line-number="47"><span class="co">#> X 5% 25% 50% 75% 95%</span></a> +<a class="sourceLine" id="cb36-48" data-line-number="48"><span class="co">#> spring 1.0135 1.0135 3.150534 8.773931 15.83805 28.24449</span></a> +<a class="sourceLine" id="cb36-49" data-line-number="49"><span class="co">#> summer 0.9865 0.9865 2.294171 7.846923 14.64680 25.62107</span></a> +<a class="sourceLine" id="cb36-50" data-line-number="50"><span class="co">#> fall 0.0000 0.0000 0.000000 0.000000 0.00000 0.00000</span></a> +<a class="sourceLine" id="cb36-51" data-line-number="51"><span class="co">#> </span></a> +<a class="sourceLine" id="cb36-52" data-line-number="52"><span class="co">#> $LE</span></a> +<a class="sourceLine" id="cb36-53" data-line-number="53"><span class="co">#> X 5% 25% 50% 75% 95%</span></a> +<a class="sourceLine" id="cb36-54" data-line-number="54"><span class="co">#> spring 0.075 0.075 0.075000 0.075000 0.07500 6.77824</span></a> +<a class="sourceLine" id="cb36-55" data-line-number="55"><span class="co">#> summer 0.925 0.925 1.189342 6.814723 14.18827 25.30838</span></a> +<a class="sourceLine" id="cb36-56" data-line-number="56"><span class="co">#> fall 0.000 0.000 0.000000 0.000000 0.00000 0.00000</span></a> +<a class="sourceLine" id="cb36-57" data-line-number="57"><span class="co">#> </span></a> +<a class="sourceLine" id="cb36-58" data-line-number="58"><span class="co">#> $MA</span></a> +<a class="sourceLine" id="cb36-59" data-line-number="59"><span class="co">#> X 5% 25% 50% 75% 95%</span></a> +<a class="sourceLine" id="cb36-60" data-line-number="60"><span class="co">#> spring 1 1 4.488499 15.88529 30.45191 56.65699</span></a> +<a class="sourceLine" id="cb36-61" data-line-number="61"><span class="co">#> summer 1 1 3.871251 11.44651 19.54836 36.78168</span></a> +<a class="sourceLine" id="cb36-62" data-line-number="62"><span class="co">#> fall 1 1 3.147356 11.15712 19.09831 36.65770</span></a> +<a class="sourceLine" id="cb36-63" data-line-number="63"><span class="co">#> </span></a> +<a class="sourceLine" id="cb36-64" data-line-number="64"><span class="co">#> $MB</span></a> +<a class="sourceLine" id="cb36-65" data-line-number="65"><span class="co">#> X 5% 25% 50% 75% 95%</span></a> +<a class="sourceLine" id="cb36-66" data-line-number="66"><span class="co">#> spring 0.000 0.000 0.000000 0.00000 0.00000 0.00000</span></a> +<a class="sourceLine" id="cb36-67" data-line-number="67"><span class="co">#> summer 0.026 0.026 0.026000 0.02600 0.02600 0.02600</span></a> +<a class="sourceLine" id="cb36-68" data-line-number="68"><span class="co">#> fall 0.974 0.974 2.953693 10.15242 19.16469 36.78827</span></a> +<a class="sourceLine" id="cb36-69" data-line-number="69"><span class="co">#> </span></a> +<a class="sourceLine" id="cb36-70" data-line-number="70"><span class="co">#> $MC</span></a> +<a class="sourceLine" id="cb36-71" data-line-number="71"><span class="co">#> X 5% 25% 50% 75% 95%</span></a> +<a class="sourceLine" id="cb36-72" data-line-number="72"><span class="co">#> spring 1.273 1.273 6.825005 19.522948 34.80129 61.66285</span></a> +<a class="sourceLine" id="cb36-73" data-line-number="73"><span class="co">#> summer 0.727 0.727 0.727000 6.961432 24.58286 51.42543</span></a> +<a class="sourceLine" id="cb36-74" data-line-number="74"><span class="co">#> fall 0.000 0.000 0.000000 0.000000 0.00000 0.00000</span></a> +<a class="sourceLine" id="cb36-75" data-line-number="75"><span class="co">#> </span></a> +<a class="sourceLine" id="cb36-76" data-line-number="76"><span class="co">#> $MD</span></a> +<a class="sourceLine" id="cb36-77" data-line-number="77"><span class="co">#> X 5% 25% 50% 75% 95%</span></a> +<a class="sourceLine" id="cb36-78" data-line-number="78"><span class="co">#> spring 1 1 3.509977 12.80969 23.79151 39.24508</span></a> +<a class="sourceLine" id="cb36-79" data-line-number="79"><span class="co">#> summer 0 0 0.000000 0.00000 0.00000 0.00000</span></a> +<a class="sourceLine" id="cb36-80" data-line-number="80"><span class="co">#> fall 0 0 0.000000 0.00000 0.00000 0.00000</span></a> +<a class="sourceLine" id="cb36-81" data-line-number="81"><span class="co">#> </span></a> +<a class="sourceLine" id="cb36-82" data-line-number="82"><span class="co">#> $ME</span></a> +<a class="sourceLine" id="cb36-83" data-line-number="83"><span class="co">#> X 5% 25% 50% 75% 95%</span></a> +<a class="sourceLine" id="cb36-84" data-line-number="84"><span class="co">#> spring 0.000 0.000 0.000000 0.00000 0.00000 0.00000</span></a> +<a class="sourceLine" id="cb36-85" data-line-number="85"><span class="co">#> summer 0.006 0.006 0.006000 0.00600 0.00600 0.00600</span></a> +<a class="sourceLine" id="cb36-86" data-line-number="86"><span class="co">#> fall 0.994 0.994 3.016679 10.29701 19.37746 33.75796</span></a> +<a class="sourceLine" id="cb36-87" data-line-number="87"><span class="co">#> </span></a> +<a class="sourceLine" id="cb36-88" data-line-number="88"><span class="co">#> $MF</span></a> +<a class="sourceLine" id="cb36-89" data-line-number="89"><span class="co">#> X 5% 25% 50% 75% 95%</span></a> +<a class="sourceLine" id="cb36-90" data-line-number="90"><span class="co">#> spring 0 0.000000 0.00000 0.0000 0.00000 0.00000</span></a> +<a class="sourceLine" id="cb36-91" data-line-number="91"><span class="co">#> summer 0 0.000000 0.00000 0.0000 0.00000 0.00000</span></a> +<a class="sourceLine" id="cb36-92" data-line-number="92"><span class="co">#> fall 3 7.946177 25.27223 41.9685 60.00412 94.70076</span></a> +<a class="sourceLine" id="cb36-93" data-line-number="93"><span class="co">#> </span></a> +<a class="sourceLine" id="cb36-94" data-line-number="94"><span class="co">#> $MH</span></a> +<a class="sourceLine" id="cb36-95" data-line-number="95"><span class="co">#> X 5% 25% 50% 75% 95%</span></a> +<a class="sourceLine" id="cb36-96" data-line-number="96"><span class="co">#> spring 1 1 3.617282 12.05643 22.56911 38.30882</span></a> +<a class="sourceLine" id="cb36-97" data-line-number="97"><span class="co">#> summer 1 1 2.948208 10.15130 17.55553 33.43657</span></a> +<a class="sourceLine" id="cb36-98" data-line-number="98"><span class="co">#> fall 0 0 0.000000 0.00000 0.00000 0.00000</span></a> +<a class="sourceLine" id="cb36-99" data-line-number="99"><span class="co">#> </span></a> +<a class="sourceLine" id="cb36-100" data-line-number="100"><span class="co">#> $SA</span></a> +<a class="sourceLine" id="cb36-101" data-line-number="101"><span class="co">#> X 5% 25% 50% 75% 95%</span></a> +<a class="sourceLine" id="cb36-102" data-line-number="102"><span class="co">#> spring 1 1 11.9747 34.56419 66.70275 131.8936</span></a> +<a class="sourceLine" id="cb36-103" data-line-number="103"><span class="co">#> summer 0 0 0.0000 0.00000 0.00000 0.0000</span></a> +<a class="sourceLine" id="cb36-104" data-line-number="104"><span class="co">#> fall 0 0 0.0000 0.00000 0.00000 0.0000</span></a> +<a class="sourceLine" id="cb36-105" data-line-number="105"><span class="co">#> </span></a> +<a class="sourceLine" id="cb36-106" data-line-number="106"><span class="co">#> $SB</span></a> +<a class="sourceLine" id="cb36-107" data-line-number="107"><span class="co">#> X 5% 25% 50% 75% 95%</span></a> +<a class="sourceLine" id="cb36-108" data-line-number="108"><span class="co">#> spring 0.45 0.45 0.45 0.45 25.69493 89.22204</span></a> +<a class="sourceLine" id="cb36-109" data-line-number="109"><span class="co">#> summer 0.55 0.55 0.55 0.55 31.64344 89.68015</span></a> +<a class="sourceLine" id="cb36-110" data-line-number="110"><span class="co">#> fall 0.00 0.00 0.00 0.00 0.00000 0.00000</span></a> +<a class="sourceLine" id="cb36-111" data-line-number="111"><span class="co">#> </span></a> +<a class="sourceLine" id="cb36-112" data-line-number="112"><span class="co">#> $SC</span></a> +<a class="sourceLine" id="cb36-113" data-line-number="113"><span class="co">#> X 5% 25% 50% 75% 95%</span></a> +<a class="sourceLine" id="cb36-114" data-line-number="114"><span class="co">#> spring 3 20.52942 64.2649 101.2701 151.9996 256.984</span></a> +<a class="sourceLine" id="cb36-115" data-line-number="115"><span class="co">#> summer 0 0.00000 0.0000 0.0000 0.0000 0.000</span></a> +<a class="sourceLine" id="cb36-116" data-line-number="116"><span class="co">#> fall 0 0.00000 0.0000 0.0000 0.0000 0.000</span></a> +<a class="sourceLine" id="cb36-117" data-line-number="117"><span class="co">#> </span></a> +<a class="sourceLine" id="cb36-118" data-line-number="118"><span class="co">#> $SD</span></a> +<a class="sourceLine" id="cb36-119" data-line-number="119"><span class="co">#> X 5% 25% 50% 75% 95%</span></a> +<a class="sourceLine" id="cb36-120" data-line-number="120"><span class="co">#> spring 1.1537692 1.1537692 8.984398 24.37626 48.51460 100.87267</span></a> +<a class="sourceLine" id="cb36-121" data-line-number="121"><span class="co">#> summer 0.8462308 0.8462308 3.821194 22.23508 45.70327 94.74803</span></a> +<a class="sourceLine" id="cb36-122" data-line-number="122"><span class="co">#> fall 0.0000000 0.0000000 0.000000 0.00000 0.00000 0.00000</span></a> +<a class="sourceLine" id="cb36-123" data-line-number="123"><span class="co">#> </span></a> +<a class="sourceLine" id="cb36-124" data-line-number="124"><span class="co">#> $SE</span></a> +<a class="sourceLine" id="cb36-125" data-line-number="125"><span class="co">#> X 5% 25% 50% 75% 95%</span></a> +<a class="sourceLine" id="cb36-126" data-line-number="126"><span class="co">#> spring 0.004 0.004 0.004000 0.00400 0.00400 0.0040</span></a> +<a class="sourceLine" id="cb36-127" data-line-number="127"><span class="co">#> summer 0.996 0.996 8.612879 29.39986 56.59436 103.9271</span></a> +<a class="sourceLine" id="cb36-128" data-line-number="128"><span class="co">#> fall 0.000 0.000 0.000000 0.00000 0.00000 0.0000</span></a> +<a class="sourceLine" id="cb36-129" data-line-number="129"><span class="co">#> </span></a> +<a class="sourceLine" id="cb36-130" data-line-number="130"><span class="co">#> $SG</span></a> +<a class="sourceLine" id="cb36-131" data-line-number="131"><span class="co">#> X 5% 25% 50% 75% 95%</span></a> +<a class="sourceLine" id="cb36-132" data-line-number="132"><span class="co">#> spring 3.053125 22.306850 68.27937 107.29638 156.28017 260.472</span></a> +<a class="sourceLine" id="cb36-133" data-line-number="133"><span class="co">#> summer 1.946875 1.946875 29.50211 57.15915 96.00052 158.468</span></a> +<a class="sourceLine" id="cb36-134" data-line-number="134"><span class="co">#> fall 0.000000 0.000000 0.00000 0.00000 0.00000 0.000</span></a> +<a class="sourceLine" id="cb36-135" data-line-number="135"><span class="co">#> </span></a> +<a class="sourceLine" id="cb36-136" data-line-number="136"><span class="co">#> attr(,"class")</span></a> +<a class="sourceLine" id="cb36-137" data-line-number="137"><span class="co">#> [1] "splitSummary"</span></a> +<a class="sourceLine" id="cb36-138" data-line-number="138"><span class="co">#> attr(,"CL")</span></a> +<a class="sourceLine" id="cb36-139" data-line-number="139"><span class="co">#> [1] 0.9</span></a> +<a class="sourceLine" id="cb36-140" data-line-number="140"><span class="co">#> attr(,"vars")</span></a> +<a class="sourceLine" id="cb36-141" data-line-number="141"><span class="co">#> [1] "Season" "Species"</span></a> +<a class="sourceLine" id="cb36-142" data-line-number="142"><span class="co">#> attr(,"type")</span></a> +<a class="sourceLine" id="cb36-143" data-line-number="143"><span class="co">#> [1] "SS" "CO"</span></a> +<a class="sourceLine" id="cb36-144" data-line-number="144"><span class="co">#> attr(,"times")</span></a> +<a class="sourceLine" id="cb36-145" data-line-number="145"><span class="co">#> [1] 0 60 130 200</span></a> +<a class="sourceLine" id="cb36-146" data-line-number="146"><span class="kw">plot</span>(M_speciesseason)</a></code></pre></div> +<p><img src="data:image/png;base64,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" style="display: block; margin: auto;" /></p> <p>There are so many vertical panels that it is difficult to glean any useful information out of the graph. However, the panels may be transposed and graphed for better interpretability:</p> -<pre class="sourceCode r" id="cb44"><code class="sourceCode r"><a class="sourceLine" id="cb44-1" data-line-number="1"><span class="kw">plot</span>(<span class="kw">transposeSplits</span>(M_speciesseason))</a></code></pre> -<p><img src="data:image/png;base64,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" style="display: block; margin: auto;" /></p> -<p>Split by size and distance from turbine:</p> -<pre class="sourceCode r" id="cb45"><code class="sourceCode r"><a class="sourceLine" id="cb45-1" data-line-number="1">M_distance <-<span class="st"> </span><span class="kw">calcSplits</span>(<span class="dt">M =</span> Mhat<span class="op">$</span>Mhat, <span class="dt">Aj =</span> Mhat<span class="op">$</span>Aj,</a> -<a class="sourceLine" id="cb45-2" data-line-number="2"> <span class="dt">split_CO =</span> <span class="kw">c</span>(<span class="st">"Distance"</span>, <span class="st">"Size"</span>), <span class="dt">data_CO =</span> data_CO)</a> -<a class="sourceLine" id="cb45-3" data-line-number="3"><span class="kw">plot</span>(M_distance)</a></code></pre> -<p><img src="data:image/png;base64,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" style="display: block; margin: auto;" /></p> +<div class="sourceCode" id="cb37"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb37-1" data-line-number="1"><span class="kw">plot</span>(<span class="kw">transposeSplits</span>(M_speciesseason))</a></code></pre></div> +<p><img src="data:image/png;base64,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" style="display: block; margin: auto;" /></p> </div> </div> diff --git a/man/CPdistOptions.Rd b/man/CPdistOptions.Rd index f08aee52661d2145e54b60760a745a2c5c799788..5d80b5dea61805ef58f4c6aa6d98d072555dcbc4 100644 --- a/man/CPdistOptions.Rd +++ b/man/CPdistOptions.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_utility_functions.R +% Please edit documentation in R/app_utilities.R \name{CPdistOptions} \alias{CPdistOptions} \title{Produce the options for the distributions in the CP model} diff --git a/man/DWPCols.Rd b/man/DWPCols.Rd index 1e0451c1d8e9f40a06ed318a78c4ed2c0115af98..20dc5914b485b5bf890a2eeae0dbdba6b36c7330 100644 --- a/man/DWPCols.Rd +++ b/man/DWPCols.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_utility_functions.R +% Please edit documentation in R/app_utilities.R \name{DWPCols} \alias{DWPCols} \title{Select the DWP-ok columns from a data table} diff --git a/man/Ecbinom.Rd b/man/Ecbinom.Rd index f967819bb5bf1085842cf6db85fd7098b7ffbad0..bfbe52401b850693f52516c0c18f082d22758c82 100644 --- a/man/Ecbinom.Rd +++ b/man/Ecbinom.Rd @@ -7,12 +7,12 @@ Ecbinom(prob) } \arguments{ -\item{prob}{Vector of probabilities} +\item{prob}{Vector of probabilities.} } \value{ -mean +Mean value of the probabilities. } \description{ Calculates the expected value of a continuous binomial random - variable with size = 1/g. Uses internal-only data + variable with size = 1/g. Uses internal-only data. } diff --git a/man/GenEst.Rd b/man/GenEst.Rd index 9262ccc974d763a385c53b2e61d1202b36842e00..d4eda034e13c058937fe3954bd5f4e8582d1d25d 100644 --- a/man/GenEst.Rd +++ b/man/GenEst.Rd @@ -8,8 +8,16 @@ \description{ This package is designed to analyze searcher efficiency, carcass persistence, search schedule, and carcass observation data for - the estimation of bird and bat mortality at wind and solar power facilities. + the estimation of bird and bat mortality at wind and solar power + facilities. } +\section{Information}{ + +\code{browseVignettes("GenEst")}\cr +\code{packageDescription("GenEst")}\cr +\code{disclaimers()}\cr +} + \section{Data sets}{ \code{\link{mock}}\cr @@ -28,7 +36,8 @@ This package is designed to analyze searcher efficiency, (\code{pk}) and carcass persistence (\code{cp}) parameters} \item{\code{\link{estM}}}{estimate mortality given \code{pkm}, \code{cpm} and data} - \item{\code{\link{calcSplits}}}{split mortality estimates by subcategories} + \item{\code{\link{calcSplits}}}{split mortality estimates by + subcategories} \item{\code{plot}}{S3 function for \code{\link[=plot.pkm]{pkm}}, \code{\link[=plot.pkmSet]{pkmSet}}, \code{\link[=plot.cpm]{cpm}}, \code{\link[=plot.cpmSet]{cpmSet}}, \code{\link[=plot.estM]{estM}}, @@ -42,9 +51,10 @@ This package is designed to analyze searcher efficiency, \code{\link[=summary.gGeneric]{gGeneric}}, \code{\link[=summary.gGenericSize]{gGenericSize}} objects} \item{\code{\link{aicc}}}{S3 function for extracting models' AICc values - from \code{\link{pkm}}, \code{\link[=pkm]{pkmSet}}, \code{\link[=pkm]{pkmSize}}, - \code{\link[=pkm]{pkmSetSize}}, \code{\link{cpm}}, \code{\link[=cpm]{cpmSet}}, - \code{\link[=cpm]{cpmSize}}, and \code{\link[=cpm]{cpmSetSize}} objects} + from \code{\link{pkm}}, \code{\link[=pkm]{pkmSet}}, + \code{\link[=pkm]{pkmSize}}, \code{\link[=pkm]{pkmSetSize}}, + \code{\link{cpm}}, \code{\link[=cpm]{cpmSet}}, + \code{\link[=cpm]{cpmSize}}, and \code{\link[=cpm]{cpmSetSize}} objects} \item{\code{\link{estgGeneric}}, \code{\link{estgGenericSize}}}{estimate detection probability (g) for given searcher efficiency and carcass persistence model} @@ -60,7 +70,8 @@ This package is designed to analyze searcher efficiency, \code{\link{alogit}}, \code{\link{logit}}\cr \code{\link{Ecbinom}}\cr \code{\link{pkLogLik}}, \code{\link{cpLogLik}}\cr -\code{\link{calcRate}}, \code{\link{calcTsplit}}, \code{\link{ltranspose}}\cr +\code{\link{calcRate}}, \code{\link{calcTsplit}}, +\code{\link{ltranspose}}\cr } \section{Potentially useful editing functions}{ @@ -79,14 +90,7 @@ This package is designed to analyze searcher efficiency, \code{\link{tidyModelSetSE}}\cr } -\section{Information}{ - -\code{browseVignettes("GenEst")}\cr -\code{packageDescription("GenEst")}\cr -\code{disclaimers()}\cr -} - -\section{Other functions (primary associated with the GUI)}{ +\section{Other functions (primarily associated with the GUI)}{ \code{\link{aboutContent}}\cr \code{\link{aboutPanel}}\cr @@ -111,7 +115,7 @@ This package is designed to analyze searcher efficiency, \code{\link{cpmSetSpecCPCellPlot}}\cr \code{\link{CPPanel}}\cr \code{\link{CPSidebar}}\cr -\code{\link{createReactiveValues}}\cr +\code{\link{initialReactiveValues}}\cr \code{\link{createvtext}}\cr \code{\link{dataDownloadWidget}}\cr \code{\link{dataInputPanel}}\cr @@ -135,7 +139,6 @@ This package is designed to analyze searcher efficiency, \code{\link{downloadTable}}\cr \code{\link{DWPCols}}\cr \code{\link{expandModelSetCP}}\cr -\code{\link{ftpLink}}\cr \code{\link{GeneralInputSidebar}}\cr \code{\link{GeneralInputsPanel}}\cr \code{\link{GenEstAcknowledgements}}\cr @@ -233,7 +236,7 @@ This package is designed to analyze searcher efficiency, \code{\link{SESidebar}}\cr \code{\link{setFigH}}\cr \code{\link{setFigW}}\cr -\code{\link{setkFillNeed}}\cr +\code{\link{setkNeed}}\cr \code{\link{setkFix}}\cr \code{\link{simpleMplot}}\cr \code{\link{sizeCols}}\cr @@ -244,101 +247,9 @@ This package is designed to analyze searcher efficiency, \code{\link{trueLength}}\cr \code{\link{u}}\cr \code{\link{ul}}\cr -\code{\link{update_input_clear_all}}\cr -\code{\link{update_input_cols_CP_preds}}\cr -\code{\link{update_input_cols_fta}}\cr -\code{\link{update_input_cols_ltp}}\cr -\code{\link{update_input_cols_SE_obs}}\cr -\code{\link{update_input_cols_SE_preds}}\cr -\code{\link{update_input_data_CO}}\cr -\code{\link{update_input_data_CO_clear}}\cr -\code{\link{update_input_data_CP}}\cr -\code{\link{update_input_data_CP_clear}}\cr -\code{\link{update_input_data_DWP}}\cr -\code{\link{update_input_data_DWP_clear}}\cr -\code{\link{update_input_data_SE}}\cr -\code{\link{update_input_data_SE_clear}}\cr -\code{\link{update_input_data_SS}}\cr -\code{\link{update_input_data_SS_clear}}\cr -\code{\link{update_input_outsc_CP}}\cr -\code{\link{update_input_outsc_SE}}\cr -\code{\link{update_input_run_CP}}\cr -\code{\link{update_input_run_CP_clear}}\cr -\code{\link{update_input_run_g}}\cr -\code{\link{update_input_run_g_clear}}\cr -\code{\link{update_input_run_M}}\cr -\code{\link{update_input_run_M_clear}}\cr -\code{\link{update_input_run_SE}}\cr -\code{\link{update_input_run_SE_clear}}\cr -\code{\link{update_input_sizeCol}}\cr -\code{\link{update_input_split_M_clear}}\cr -\code{\link{update_input_useSSdata}}\cr -\code{\link{update_output_clear_all}}\cr -\code{\link{update_output_cols_CP}}\cr -\code{\link{update_output_cols_SE}}\cr -\code{\link{update_output_data_CO}}\cr -\code{\link{update_output_data_CO_clear}}\cr -\code{\link{update_output_data_CP}}\cr -\code{\link{update_output_data_CP_clear}}\cr -\code{\link{update_output_data_DWP}}\cr -\code{\link{update_output_data_DWP_clear}}\cr -\code{\link{update_output_data_SE}}\cr -\code{\link{update_output_data_SE_clear}}\cr -\code{\link{update_output_data_SS}}\cr -\code{\link{update_output_data_SS_clear}}\cr -\code{\link{update_output_outdls_CP}}\cr -\code{\link{update_output_outpk_SE}}\cr -\code{\link{update_output_outsc_CP}}\cr -\code{\link{update_output_outsc_g}}\cr -\code{\link{update_output_outsc_SE}}\cr -\code{\link{update_output_run_CP}}\cr -\code{\link{update_output_run_CP_clear}}\cr -\code{\link{update_output_run_g}}\cr -\code{\link{update_output_run_g_clear}}\cr -\code{\link{update_output_run_M}}\cr -\code{\link{update_output_run_M_clear}}\cr -\code{\link{update_output_run_SE}}\cr -\code{\link{update_output_run_SE_clear}}\cr -\code{\link{update_output_sizeCol}}\cr -\code{\link{update_output_split_M}}\cr -\code{\link{update_output_split_M_clear}}\cr -\code{\link{update_output_SS}}\cr -\code{\link{update_output_transpose_split}}\cr -\code{\link{update_rv_clear_all}}\cr -\code{\link{update_rv_cols_CP_preds}}\cr -\code{\link{update_rv_cols_fta}}\cr -\code{\link{update_rv_cols_ltp}}\cr -\code{\link{update_rv_cols_SE_obs}}\cr -\code{\link{update_rv_cols_SE_preds}}\cr -\code{\link{update_rv_data_CO}}\cr -\code{\link{update_rv_data_CO_clear}}\cr -\code{\link{update_rv_data_CP}}\cr -\code{\link{update_rv_data_CP_clear}}\cr -\code{\link{update_rv_data_DWP}}\cr -\code{\link{update_rv_data_DWP_clear}}\cr -\code{\link{update_rv_data_SE}}\cr -\code{\link{update_rv_data_SE_clear}}\cr -\code{\link{update_rv_data_SS}}\cr -\code{\link{update_rv_data_SS_clear}}\cr -\code{\link{update_rv_outdls_CP}}\cr -\code{\link{update_rv_outpk_SE}}\cr -\code{\link{update_rv_outsc_CP}}\cr -\code{\link{update_rv_outsc_g}}\cr -\code{\link{update_rv_outsc_SE}}\cr -\code{\link{update_rv_run_CP}}\cr -\code{\link{update_rv_run_CP_clear}}\cr -\code{\link{update_rv_run_g}}\cr -\code{\link{update_rv_run_g_clear}}\cr -\code{\link{update_rv_run_M}}\cr -\code{\link{update_rv_run_M_clear}}\cr -\code{\link{update_rv_run_SE}}\cr -\code{\link{update_rv_run_SE_clear}}\cr -\code{\link{update_rv_sizeCol}}\cr -\code{\link{update_rv_split_M}}\cr -\code{\link{update_rv_split_M_clear}}\cr -\code{\link{update_rv_transpose_split}}\cr -\code{\link{update_rv_useSSdata}}\cr -\code{\link{update_rv_useSSinputs}}\cr +\code{\link{update_input}}\cr +\code{\link{update_output}}\cr +\code{\link{update_rv}}\cr \code{\link{updateColNames_size}}\cr \code{\link{updateSizeclasses}}\cr \code{\link{updatesizeCol}}\cr diff --git a/man/GenEstServer.Rd b/man/GenEstServer.Rd new file mode 100644 index 0000000000000000000000000000000000000000..a538d6d9b797a815ec5cf3795e46eebbf52663ea --- /dev/null +++ b/man/GenEstServer.Rd @@ -0,0 +1,93 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/app_server.R +\name{GenEstServer} +\alias{GenEstServer} +\alias{reaction} +\alias{reactionMessageRun} +\alias{reactionMessageDone} +\alias{eventReaction} +\title{The GenEst server definition function} +\usage{ +GenEstServer(input, output, session) + +reaction(eventName) + +reactionMessageRun(eventName) + +reactionMessageDone(eventName) + +eventReaction(eventName, rv, input, output, session) +} +\arguments{ +\item{input}{\code{input} list for the GenEst GUI.} + +\item{output}{\code{output} list for the GenEst GUI.} + +\item{session}{Environment for the GenEst GUI.} + +\item{eventName}{Character name of the event. One of "clear_all", +"file_SE", "file_SE_clear", "file_CP", "file_CP_clear", "file_SS", +"file_SS_clear", "file_DWP", "file_DWP_clear", "file_CO", +"file_CO_clear", "class", "obsSE", "predsSE", "run_SE", "run_SE_clear", +"outSEclass", "outSEp", "outSEk", "ltp", "fta", "predsCP", "run_CP", +"run_CP_clear", "outCPclass", "outCPdist", "outCPl", "outCPs", +"run_M", "run_M_clear", "split_M", "split_M_clear", "transpose_split", +"useSSdata", "useSSinputs", "run_g", "run_g_clear", or "outgclass".} + +\item{rv}{Reactive values list for the GenEst GUI.} +} +\value{ +\code{reaction}: An object of type + "\code{\link[base]{expression}}" returned from + \code{\link[base]{parse}} using the \code{text} argument. This is a + parsed but unevaluated expression, ready to be evaluated by + \code{\link[base]{eval}}. + +\code{reactionMessageRun}: Reaction running message expression, as + a character string. + +\code{reactionMessageDone}: Reaction done message expression, as + a character string. +} +\description{ +This suite of functions defines the server-side program for + the GenEst user interface (UI). See the "GenEst Graphic User Interface" + vignette for a more complete detailing of the codebase underlying + the GenEst UI. \cr \cr \code{GenEstServer}: main server function + expressed within the application. + +\code{reaction}: creates a handler expression to be + used by \code{\link[shiny]{observeEvent}} within \code{GenEstServer}, + which includes the call to \code{eventReaction} (the function that + manages the reaction once the code is evaluated), any message generation + or handling, and the enclosing curly braces. Calls + \code{reactionMessageRun} and \code{reactionMessageDone} to create the + event-specific reaction expression message components. + +\code{reactionMessageRun}: Creates the message for model + running, or clears the existing notifications if desired. + +\code{reactionMessageDone}: Creates the message for model + done running. + +\code{eventReaction}: Manages the running of the update + functions for rv, output, and input, based on the \code{eventName}. +} +\details{ +\code{GenEstServer} is used as the main server function, and is + therefore included in the \code{server.R} script of the app. This + function is not used in a standard R function sense, in that it does + not return a value and is not used on its own to have side effects. + The code of the function has two parts: + \enumerate{ + \item preamble that defines all the necessary variables and options + \item \code{\link[shiny]{observeEvent}} calls, one for each event in + the application. Each call to \code{\link[shiny]{observeEvent}} + includes the \code{eventExpr} (event expression) as the first + argument and the \code{handlerExpr} (handler expression) as the + second argument, which is an evaluated (via \code{\link[base]{eval}}) + block of code returned from \code{reaction} for the specific + event, as well as any other control switch arguments needed (such as + \code{ignoreNULL}). + } +} diff --git a/man/aicc.Rd b/man/aicc.Rd index 1cb98bc4d70cf20d10f40e79747c9b6be6a676ea..8320bfd6d609c977ad37aeaadb59cd6a643e7515 100644 --- a/man/aicc.Rd +++ b/man/aicc.Rd @@ -7,7 +7,7 @@ aicc(x, ...) } \arguments{ -\item{x}{is the model or list of models to extract AICc values from} +\item{x}{Model or list of models to extract AICc values from.} \item{...}{further arguments passed to or from other methods} } @@ -16,5 +16,5 @@ list of models sorted by AICc } \description{ Extract AICc values from \code{pkm}, \code{pkmSet}, - \code{pkmSetSize}, \code{cpm}, \code{cpmSet}, and \code{cpmSetSize} + \code{pkmSetSize}, \code{cpm}, \code{cpmSet}, and \code{cpmSetSize}. } diff --git a/man/alogit.Rd b/man/alogit.Rd deleted file mode 100644 index 73a368f4ba5dbb5424c2f6fa268329405fd70867..0000000000000000000000000000000000000000 --- a/man/alogit.Rd +++ /dev/null @@ -1,21 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/utility_functions.R -\name{alogit} -\alias{alogit} -\title{Compute the anti-logit.} -\usage{ -alogit(x) -} -\arguments{ -\item{x}{A number.} -} -\value{ -The anti-logit of \code{x}. -} -\description{ -Compute the anti-logit. -} -\examples{ - alogit(0) - -} diff --git a/man/calcRate.Rd b/man/calcRate.Rd index 2a1748c9ba3e02516676e4e2f1f8ecda6619b9c3..0586d79a40e30bf3d9e32bd7c256cb57b78dd40c 100644 --- a/man/calcRate.Rd +++ b/man/calcRate.Rd @@ -2,7 +2,7 @@ % Please edit documentation in R/splits_functions.R \name{calcRate} \alias{calcRate} -\title{Estimate the number of fatalities in each search interval throughout +\title{Estimate the number of fatalities in each search interval throughout the monitoring period.} \usage{ calcRate(M, Aj, days = NULL, searches_carcass = NULL, data_SS = NULL) diff --git a/man/calcSplits.Rd b/man/calcSplits.Rd index 7135522996afd2cce642f9b52ccd244663e1229f..1ec761f9fb567cd7a627effd15f329f4383e4ec8 100644 --- a/man/calcSplits.Rd +++ b/man/calcSplits.Rd @@ -8,8 +8,8 @@ calcSplits(M, split_CO = NULL, data_CO = NULL, split_SS = NULL, data_SS = NULL, split_time = NULL, ...) } \arguments{ -\item{M}{\code{\link{estM}} object, containing numeric array (ncarc x nsim) of estimated -mortalities and other pieces} +\item{M}{\code{\link{estM}} object, containing numeric array (ncarc x nsim) +of estimated mortalities and other pieces} \item{split_CO}{Character vector of names of splitting covariates to be found in the \code{data_CO} data frame. No more than two \code{split_CO} diff --git a/man/checkDate.Rd b/man/checkDate.Rd index 3c3e5a12c59e62e4b9416c322235f0795e63c44c..a2627564b22ee77e4e2ce1da64f13e881c1a8174 100644 --- a/man/checkDate.Rd +++ b/man/checkDate.Rd @@ -7,20 +7,20 @@ checkDate(testdate) } \arguments{ -\item{testdate}{date(s) to check and format} +\item{testdate}{Date(s) to check and format.} } \value{ -dates formatted as yyyy-mm-dd (if possible) or NULL (if some value is - not interpretable as a date after 1900-01-01). +dates formatted as yyyy-mm-dd (if possible) or NULL (if some value + is not interpretable as a date after 1900-01-01). } \description{ -Checks whether the dates are in a standard format and sensible. - If so, function returns the dates converted to R standard yyyy-mm-dd format; - Acceptable formats are yyyy-mm-dd, yyyy/mm/dd, mm/dd/yyyy, and dd/mm/yyyy. - If format is mm/dd/yyyy or dd/mm/yyyy, the dates must be interpretable - unambiguously. Also, dates must be later than 1900-01-01. This additional - check provides some protection against common data entry errors like - entering a year as 0217 or 1017 instead of 2017. +Checks whether the dates are in a standard format and + sensible. If so, function returns the dates converted to ISO 8601 + yyyy-mm-dd format. Acceptable formats are yyyy-mm-dd, yyyy/mm/dd, + mm/dd/yyyy, and dd/mm/yyyy. If format is mm/dd/yyyy or dd/mm/yyyy, the + dates must be interpretable unambiguously. Also, dates must be later than + 1900-01-01. This additional check provides some protection against common + data entry errors like entering a year as 0217 or 1017 instead of 2017. } \examples{ checkDate("02/20/2018") diff --git a/man/classText.Rd b/man/classText.Rd new file mode 100644 index 0000000000000000000000000000000000000000..3df4bf7bdf14d90b0fd9b4605084dbda6d3c4677 --- /dev/null +++ b/man/classText.Rd @@ -0,0 +1,19 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/app_output_utilities.R +\name{classText} +\alias{classText} +\title{Prepare class text header} +\usage{ +classText(rv, type = "SE") +} +\arguments{ +\item{rv}{Reactive values list for the GenEst GUI.} + +\item{type}{Model type, either "SE" or "CP" or "g".} +} +\value{ +Rendered text ready for export to \code{output} list. +} +\description{ +Depending on the classes, prepare the header text. +} diff --git a/man/clearNotifications.Rd b/man/clearNotifications.Rd index f9b1d91d44cb3d10bbf14cb93ed2b61e016affbf..9462767596e2224d69d97aebbb1e593e81d4f939 100644 --- a/man/clearNotifications.Rd +++ b/man/clearNotifications.Rd @@ -4,10 +4,12 @@ \alias{clearNotifications} \title{Clear all notifications} \usage{ -clearNotifications(msgs = msgList()) +clearNotifications(msgs = msgList(), clear = TRUE) } \arguments{ \item{msgs}{message list} + +\item{clear}{logical indicator if clearing should happen.} } \description{ Clear all messages in the message list diff --git a/man/countCarcs.Rd b/man/countCarcs.Rd index 181dd2cb16216a8521acca6e71a3cf1d4fc9a806..8545c1a8e50ef4c5e28d2dd61f83250305345cd6 100644 --- a/man/countCarcs.Rd +++ b/man/countCarcs.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_utility_functions.R +% Please edit documentation in R/app_utilities.R \name{countCarcs} \alias{countCarcs} \title{Count the minimum number of carcasses in the cells} diff --git a/man/createvtext.Rd b/man/createvtext.Rd index 27e63874bd044056870f182c5428cef4e3baa898..cd2281c49a49fb0443b0e27cac311297c0fb7433 100644 --- a/man/createvtext.Rd +++ b/man/createvtext.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_utility_functions.R +% Please edit documentation in R/app_content.R \name{createvtext} \alias{createvtext} \title{Create the version text for GenEst} diff --git a/man/dateCols.Rd b/man/dateCols.Rd index 1da0958ea3859ced98a9d8e05491c9e883a0921e..902e1c8a04e1faf216b88de34e4abdbc50bd06d2 100644 --- a/man/dateCols.Rd +++ b/man/dateCols.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_utility_functions.R +% Please edit documentation in R/app_utilities.R \name{dateCols} \alias{dateCols} \title{Select the date columns from a data table} diff --git a/man/dateToDay.Rd b/man/dateToDay.Rd index 53b9cbc809ad3aa55c59e9cd25dacdafc00fb88f..d221511ad066599ee95cda490726233ea7f03749 100644 --- a/man/dateToDay.Rd +++ b/man/dateToDay.Rd @@ -7,15 +7,16 @@ dateToDay(date, ref = NULL) } \arguments{ -\item{date}{date to convert} +\item{date}{A date or vector of dates to convert to days.} -\item{ref}{reference date} +\item{ref}{Reference date.} } \value{ -converted days from reference +Numeric value(s) of days from \code{ref}. } \description{ -Convert calendar date to day from reference +Convert calendar date to integer day from a reference date + (\code{ref}). } \examples{ x <- c("2018-01-01", "2018-02-01") diff --git a/man/downloadData.Rd b/man/downloadData.Rd index ce35cb570849e72b621b095a223789eda1f13362..b6cf548e092e78692731836745fb2c8cb51837f3 100644 --- a/man/downloadData.Rd +++ b/man/downloadData.Rd @@ -9,8 +9,8 @@ downloadData(set, csvformat = NULL) \arguments{ \item{set}{the name of the data set to download} -\item{csvformat}{Format of .csv files to download. For comma field separator -and period decimal separator, use \code{csvformat = NULL} or "". +\item{csvformat}{Format of .csv files to download. For comma field +separator and period decimal separator, use \code{csvformat = NULL} or "". For semicolon field separator and comma decimal separator, use \code{csvformat = 2}.} } diff --git a/man/estText.Rd b/man/estText.Rd new file mode 100644 index 0000000000000000000000000000000000000000..94b4b198b7b25f21637835851b5453232e3eaa40 --- /dev/null +++ b/man/estText.Rd @@ -0,0 +1,19 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/app_output_utilities.R +\name{estText} +\alias{estText} +\title{Prepare the text for the estimation table} +\usage{ +estText(rv, type = "SE") +} +\arguments{ +\item{rv}{Reactive values list for the GenEst GUI.} + +\item{type}{Model type, either "SE" or "CP".} +} +\value{ +Rendered text ready for export to \code{output} list. +} +\description{ +Depending on the model type and CL, prepare the header text. +} diff --git a/man/estg.Rd b/man/estg.Rd index cc7c238e59c97f6707802176cf7688e2fe27b03f..e389aeeb33d7666cca3d1bf567306ebff23569aa 100644 --- a/man/estg.Rd +++ b/man/estg.Rd @@ -64,6 +64,6 @@ Estimate g values and arrival intervals for a set of carcasses right = "FirstAbsentDecimalDays" ) ghat <- estg(data_CO = mock$CO, COdate = "DateFound", data_SS = mock$SS, - model_SE = model_SE, model_CP = model_CP, unitCol = "Unit") + model_SE = model_SE, model_CP = model_CP, unitCol = "Unit", nsim = 100) } diff --git a/man/ftpLink.Rd b/man/ftpLink.Rd deleted file mode 100644 index 89cd2ce4f74600332c0cb4fc3a00146693fb66ed..0000000000000000000000000000000000000000 --- a/man/ftpLink.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_content.R -\name{ftpLink} -\alias{ftpLink} -\title{Create a Link to the FTP-Housed Document of Interest} -\usage{ -ftpLink(doc = "UserGuide") -} -\arguments{ -\item{doc}{"UserGuide" or "Models".} -} -\value{ -Character element of the link to the document. -} -\description{ -The GenEst User Guide and Models Document live on the USGS - FTP and can be linked to, rather than stored in the app. This function - provides the link of interest. -} diff --git a/man/initialOutput.Rd b/man/initialOutput.Rd index 4c7bfbfb739f9b56bfead01854e1f2a7d60e86f8..5788e6c83a8cbf35c6d2ff04bea8c19f399e0422 100644 --- a/man/initialOutput.Rd +++ b/man/initialOutput.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_output_update_functions.R +% Please edit documentation in R/app_output_utilities.R \name{initialOutput} \alias{initialOutput} \title{Update the output list upon initiation of the app} @@ -7,13 +7,13 @@ initialOutput(rv, output) } \arguments{ -\item{rv}{reactive values list} +\item{rv}{Reactive values list for the GenEst GUI.} -\item{output}{output list} +\item{output}{\code{output} list for the GenEst GUI.} } \value{ -an updated output list +Updated \code{output} list. } \description{ -Update the output list when the app is started +Update the output list when the app is initialized. } diff --git a/man/createReactiveValues.Rd b/man/initialReactiveValues.Rd similarity index 62% rename from man/createReactiveValues.Rd rename to man/initialReactiveValues.Rd index b8a1104c5029f692ee3ff98e625679b52312b2a8..2a8081768791733837efd793a47c04fd24b14bf1 100644 --- a/man/createReactiveValues.Rd +++ b/man/initialReactiveValues.Rd @@ -1,15 +1,15 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_utility_functions.R -\name{createReactiveValues} -\alias{createReactiveValues} -\title{Create the main reactive value list for GenEst} -\usage{ -createReactiveValues() -} -\value{ -a reactive values list -} -\description{ -Create a list of reactive values as used across the components - of the GenEst application -} +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/app_utilities.R +\name{initialReactiveValues} +\alias{initialReactiveValues} +\title{Create the main reactive value list for GenEst} +\usage{ +initialReactiveValues() +} +\value{ +a reactive values list +} +\description{ +Create a list of reactive values as used across the components + of the GenEst application +} diff --git a/man/isNeverDecreasing.Rd b/man/isNeverDecreasing.Rd index 4695d75805c66e1f8db89a2b52b5452893c84395..942eee555581d5fa6e495536591995aadf32a633 100644 --- a/man/isNeverDecreasing.Rd +++ b/man/isNeverDecreasing.Rd @@ -7,15 +7,15 @@ isNeverDecreasing(x, tiesOK = TRUE, na.rm = TRUE) } \arguments{ -\item{x}{vector of values} +\item{x}{Vector of numeric values.} -\item{tiesOK}{logical if ties are ok or not} +\item{tiesOK}{Logical indicator if ties are ok or not.} -\item{na.rm}{logical if NAs are to be removed or not} +\item{na.rm}{Logical indicator if NAs are to be removed or not.} } \value{ -logical value +Logical value. } \description{ -Check if a vector is never decreasing +Check if a vector is never decreasing. } diff --git a/man/logit.Rd b/man/logit.Rd index 6dda01fd47b3cb8f38f21e98c08b840c03ce2f11..77ee7c253a9927b59527e1fd17f2fbc7dedcbe65 100644 --- a/man/logit.Rd +++ b/man/logit.Rd @@ -2,20 +2,28 @@ % Please edit documentation in R/utility_functions.R \name{logit} \alias{logit} -\title{Compute the logit} +\alias{alogit} +\title{Compute the logit or anti-logit} \usage{ logit(x) + +alogit(x) } \arguments{ -\item{x}{A probability (between 0 and 1, inclusive).} +\item{x}{A number. For \code{logit}, a probability (between 0 and 1, +inclusive). For \code{alogit}, any real number.} } \value{ -The logit of \code{x}. +\code{logit}: The logit of \code{x}. + +\code{alogit}: The anti-logit of \code{x}. } \description{ -Compute the logit +Compute the logit or anti-logit } \examples{ logit(0.5) + alogit(0) + } diff --git a/man/modNamePaste.Rd b/man/modNamePaste.Rd index ba371004d69513d90c1ae52b7f2d16296fb6b283..8c4ad7d56251e145eac5c45ea9ee46c197870bcf 100644 --- a/man/modNamePaste.Rd +++ b/man/modNamePaste.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_utility_functions.R +% Please edit documentation in R/app_utilities.R \name{modNamePaste} \alias{modNamePaste} \title{Paste the parts of a model's name back together} diff --git a/man/modNameSplit.Rd b/man/modNameSplit.Rd index 961b30890d89d66deb9728ac81fa80f54144c1f5..28642a350540e4d9a5ae199a3b545b1ad6b3c0df 100644 --- a/man/modNameSplit.Rd +++ b/man/modNameSplit.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_utility_functions.R +% Please edit documentation in R/app_utilities.R \name{modNameSplit} \alias{modNameSplit} \title{Split model names into their components and remove only a desired diff --git a/man/modelInputWidget.Rd b/man/modelInputWidget.Rd index 4e6de609ac38fee8f06f49efe387416d57fd008c..d94b99ea76a0ec6a94877ea4691762d941ba26df 100644 --- a/man/modelInputWidget.Rd +++ b/man/modelInputWidget.Rd @@ -8,10 +8,9 @@ modelInputWidget(inType) } \arguments{ \item{inType}{Toggle control for the input type of the widget. One of -"nsim", "CL", "sizeCol", "obsCols_SE", "preds_SE", "kFixed", -"ltp", "fta", "preds_CP", "dist", "frac", "DWPCol", -"COdate", "gSearchInterval", "gSearchMax", -"useSSinputs", or "useSSdata".} +"nsim", "CL", "class", "obsSE", "predsSE", "kFixed", "ltp", "fta", +"predsCP", "dist", "frac", "DWPCol", "COdate", "gSearchInterval", +"gSearchMax", "useSSinputs", or "useSSdata".} } \value{ HTML for the model input widget. diff --git a/man/msgModDone.Rd b/man/msgModDone.Rd index c7ff8fbab9b901b818c280dfef7be05b65ec3f6e..4c0d813f688626f5e6a576b538ad07c1aef20bd1 100644 --- a/man/msgModDone.Rd +++ b/man/msgModDone.Rd @@ -19,5 +19,5 @@ msgModDone(msgs, rv, type = "SE", clear = TRUE) an SE model done message } \description{ -Produces a SE or CP model-done notification +Produces a model-done notification } diff --git a/man/obsCols_SE.Rd b/man/obsCols_SE.Rd index c255c89c139680db31d9151db79ccf0fcdc2033e..053f5a063aa2be62af0b9fbac3e148e915162386 100644 --- a/man/obsCols_SE.Rd +++ b/man/obsCols_SE.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_utility_functions.R +% Please edit documentation in R/app_utilities.R \name{obsCols_SE} \alias{obsCols_SE} \title{Select the columns from a data table that could be SE observations} diff --git a/man/obsCols_fta.Rd b/man/obsCols_fta.Rd index c4efcada254e9a1df70ffff906ac2ec80ce3908a..279e8b637cbcbcd544c8ce0a4b5e20dfca767c18 100644 --- a/man/obsCols_fta.Rd +++ b/man/obsCols_fta.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_utility_functions.R +% Please edit documentation in R/app_utilities.R \name{obsCols_fta} \alias{obsCols_fta} \title{Select the columns from a data table that could be CP First Time diff --git a/man/obsCols_ltp.Rd b/man/obsCols_ltp.Rd index a0e0f06bf5d3898735f0718a8bc10a3a2583250d..196206aff8a93edd608d98eef015cc6cb65c2074 100644 --- a/man/obsCols_ltp.Rd +++ b/man/obsCols_ltp.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_utility_functions.R +% Please edit documentation in R/app_utilities.R \name{obsCols_ltp} \alias{obsCols_ltp} \title{Select the columns from a data table that could be CP Last Time diff --git a/man/pickSizeclass.Rd b/man/pickSizeclass.Rd index 26871b78daa7e8884d9f813a0003096202db0e74..495424031f89844b67d5ebe407dc5fde24d67843 100644 --- a/man/pickSizeclass.Rd +++ b/man/pickSizeclass.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_utility_functions.R +% Please edit documentation in R/app_utilities.R \name{pickSizeclass} \alias{pickSizeclass} \title{Locate the sizeclass selected by the inputs} diff --git a/man/plot.cpmSet.Rd b/man/plot.cpmSet.Rd index 56ebe0fe53466faac802d6ef69670ab7c99cf185..16f57434022e46f681dd009f88d73a5d2dc08edf 100644 --- a/man/plot.cpmSet.Rd +++ b/man/plot.cpmSet.Rd @@ -27,6 +27,6 @@ Produce a set of figures for a set of CP models, as fit by data(wind_RP) mod <- cpmSet(formula_l = l ~ Season, formula_s = s ~ Season, data = wind_RP$CP, left = "LastPresent", right = "FirstAbsent") - plot(mod) + \donttest{plot(mod)} } diff --git a/man/plotNA.Rd b/man/plotNA.Rd index 53a5eda033598b2e4dd55bedebd02da81966b1b4..cb92121ae8c04494272a5f0f78b02ce03833191c 100644 --- a/man/plotNA.Rd +++ b/man/plotNA.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_utility_functions.R +% Please edit documentation in R/app_utilities.R \name{plotNA} \alias{plotNA} \title{Produce a blank plot for unsucessful fits} diff --git a/man/predsCols.Rd b/man/predsCols.Rd index 754647b28811cb102414b10c254690ccaaf272ba..a0bd907540d9a09f7ad52c4d1a5bdc44e9dad434 100644 --- a/man/predsCols.Rd +++ b/man/predsCols.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_utility_functions.R +% Please edit documentation in R/app_utilities.R \name{predsCols} \alias{predsCols} \title{Select the predictor-ok columns from a data table} diff --git a/man/prepPredictors.Rd b/man/prepPredictors.Rd index 1d54b678ef31f22bce64debcc07e22874362b720..e58619870be4f52cb340bf5dadbef827129398e8 100644 --- a/man/prepPredictors.Rd +++ b/man/prepPredictors.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_utility_functions.R +% Please edit documentation in R/app_utilities.R \name{prepPredictors} \alias{prepPredictors} \title{Prepare predictors based on inputs} diff --git a/man/prepSizeclassText.Rd b/man/prepSizeclassText.Rd index 3537a90bff1c2120d06cd1d4f0792c3c95bf57ea..09c874ba671b56f2c28754aa254bbf251a6a5e57 100644 --- a/man/prepSizeclassText.Rd +++ b/man/prepSizeclassText.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_utility_functions.R +% Please edit documentation in R/app_utilities.R \name{prepSizeclassText} \alias{prepSizeclassText} \title{Prepare text for size classes} diff --git a/man/prettyModTabSE.Rd b/man/prettyModTabSE.Rd index 4f2b42423bb2d0cf8e233b0735a63675a44cce7b..792d222633078d76227db11e7ce7a244cbf806aa 100644 --- a/man/prettyModTabSE.Rd +++ b/man/prettyModTabSE.Rd @@ -2,7 +2,7 @@ % Please edit documentation in R/app_table_functions.R \name{prettyModTabSE} \alias{prettyModTabSE} -\title{Create the pretty versi10/8/2018 5:06:59 PMon of the Searcher Efficiency model table} +\title{Create the pretty version of the Searcher Efficiency model table} \usage{ prettyModTabSE(modTab, CL = 0.9) } diff --git a/man/reNULL.Rd b/man/reNULL.Rd new file mode 100644 index 0000000000000000000000000000000000000000..f5fcf8132171318ce92ef761db5a9003178f5f81 --- /dev/null +++ b/man/reNULL.Rd @@ -0,0 +1,20 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/app_output_utilities.R +\name{reNULL} +\alias{reNULL} +\title{Reset values of a list to NULL} +\usage{ +reNULL(x, toNULL) +} +\arguments{ +\item{x}{\code{list} object to have elements \code{toNULL} reset to +\code{NULL}.} + +\item{toNULL}{Names of elements in \code{x} to reset to \code{NULL}.} +} +\value{ +Updated \code{x}. +} +\description{ +Utility function for clearing and setting purposes. +} diff --git a/man/reVal.Rd b/man/reVal.Rd new file mode 100644 index 0000000000000000000000000000000000000000..dea8d192d437da9b78329df8af1b66781d05e324 --- /dev/null +++ b/man/reVal.Rd @@ -0,0 +1,22 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/app_utilities.R +\name{reVal} +\alias{reVal} +\title{Reset values of a reactive values list} +\usage{ +reVal(rv, toReVal) +} +\arguments{ +\item{rv}{Reactive values list for the GenEst GUI, created by +\code{\link{initialReactiveValues}}, which calls +\code{\link[shiny]{reactiveValues}}} + +\item{toReVal}{Names of elements in \code{rv} to reset to their factory +setting (as defined by \code{\link{initialReactiveValues}}).} +} +\value{ +Updated \code{rv}. +} +\description{ +Utility function for clearing and setting purposes. +} diff --git a/man/readCSV.Rd b/man/readCSV.Rd index 20242d4b1415129b1cb39131ab57ce0a8145c210..6d5ae664e6367edc3f570c1b2e0934f70197ae03 100644 --- a/man/readCSV.Rd +++ b/man/readCSV.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_utility_functions.R +% Please edit documentation in R/app_utilities.R \name{readCSV} \alias{readCSV} \title{Read in csv files in either format} diff --git a/man/removeCols.Rd b/man/removeCols.Rd index 1940247221f06f7f8901e4fc8c2fc7d85aa0f3a6..ad2c9573a980ff094f7de89f9768e7d30deff1aa 100644 --- a/man/removeCols.Rd +++ b/man/removeCols.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_utility_functions.R +% Please edit documentation in R/app_utilities.R \name{removeCols} \alias{removeCols} \title{Remove selected columns from column names} diff --git a/man/renderDTns.Rd b/man/renderDTns.Rd new file mode 100644 index 0000000000000000000000000000000000000000..53803228b56821f937b9c1a645f74111f388b3b0 --- /dev/null +++ b/man/renderDTns.Rd @@ -0,0 +1,18 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/app_output_utilities.R +\name{renderDTns} +\alias{renderDTns} +\title{Render a data table without server-side processing} +\usage{ +renderDTns(x) +} +\arguments{ +\item{x}{HTML \code{datatable} widget output from +\code{\link[DT]{datatable}}.} +} +\value{ +Rendered \code{x}. +} +\description{ +Simply render the data table without server-side processing. +} diff --git a/man/selectData.Rd b/man/selectData.Rd index 35a26e4e8e3b53eb812d1f4e11f0bcbcf7bf23f9..efd699d59b2b3be7e090663efa204828c47c9828 100644 --- a/man/selectData.Rd +++ b/man/selectData.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_utility_functions.R +% Please edit documentation in R/app_utilities.R \name{selectData} \alias{selectData} \title{Select particular columns from a data set} diff --git a/man/setNotSuspending.Rd b/man/setNotSuspending.Rd new file mode 100644 index 0000000000000000000000000000000000000000..721cc7ffe5d28b716eea4f6a1b8c3c2444a3347a --- /dev/null +++ b/man/setNotSuspending.Rd @@ -0,0 +1,18 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/app_output_utilities.R +\name{setNotSuspending} +\alias{setNotSuspending} +\title{(Re)set outputOptions to not suspending for given elements} +\usage{ +setNotSuspending(output, dontSuspend) +} +\arguments{ +\item{output}{\code{output} list to have elements \code{dontSuspend} +(re)set to having \code{suspendWhenHidden = FALSE}.} + +\item{dontSuspend}{Names of elements in \code{output} to (re)set to +having \code{suspendWhenHidden = FALSE}.} +} +\description{ +Utility function for clearing and setting purposes. +} diff --git a/man/setkFix.Rd b/man/setkFix.Rd index 31867853b774594f119e6d6fb2fe4b27616e0fb5..2b4510c8df724fd8e40c8d937095ad7b31d1f66e 100644 --- a/man/setkFix.Rd +++ b/man/setkFix.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_utility_functions.R +% Please edit documentation in R/app_utilities.R \name{setkFix} \alias{setkFix} \title{Update the fixed k value} diff --git a/man/setkFillNeed.Rd b/man/setkNeed.Rd similarity index 50% rename from man/setkFillNeed.Rd rename to man/setkNeed.Rd index c616a6c1a622b19c59924108f9de46e306fe7c84..c9941a96aa3df29eed3a2abce9d94300ccfe22ed 100644 --- a/man/setkFillNeed.Rd +++ b/man/setkNeed.Rd @@ -1,18 +1,18 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_utility_functions.R -\name{setkFillNeed} -\alias{setkFillNeed} -\title{Create the kFillNeed text} -\usage{ -setkFillNeed(rv) -} -\arguments{ -\item{rv}{reactive value list} -} -\value{ -kFillNeed character of "yes" or "no" -} -\description{ -Based on the number of observation columns, create text output - of "yes" or "no" -} +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/app_utilities.R +\name{setkNeed} +\alias{setkNeed} +\title{Create the kNeed text} +\usage{ +setkNeed(rv) +} +\arguments{ +\item{rv}{reactive value list} +} +\value{ +kNeed character of "yes" or "no" +} +\description{ +Based on the number of observation columns, create text output + of "yes" or "no" +} diff --git a/man/sizeCols.Rd b/man/sizeCols.Rd index 9d084fee9c24564bf1bb2f50c560da4304ad3ea1..402c7f6108b1d0b2340026f69f8bc938b0ffcc9c 100644 --- a/man/sizeCols.Rd +++ b/man/sizeCols.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_utility_functions.R +% Please edit documentation in R/app_utilities.R \name{sizeCols} \alias{sizeCols} \title{Select the potential size class columns from a data table} diff --git a/man/trueLength.Rd b/man/trueLength.Rd index b0695779af9e314c4a46901205d14e482f032a24..cc68540089ff8a6bc2a3f1670df0249f2d656b71 100644 --- a/man/trueLength.Rd +++ b/man/trueLength.Rd @@ -2,18 +2,18 @@ % Please edit documentation in R/utility_functions.R \name{trueLength} \alias{trueLength} -\title{Get the length of real things} +\title{Get the length of real (non-NA) things} \usage{ trueLength(x) } \arguments{ -\item{x}{vector of values} +\item{x}{Vector of values, some of which many be \code{NA}.} } \value{ -integer of how many non-NA values in x +Integer count of how many non-\code{NA} values in \code{x}. } \description{ -Length of non-missing values in a vector +Length of non-missing (non-\code{NA}) values in a vector. } \examples{ x <- c(1, 2, NA, 3) diff --git a/man/updateColNames_size.Rd b/man/updateColNames_size.Rd index 0e4a5ee28ab49876e0155d7f3aa687d687228add..96436c2b46b5d4b297d97b42752a6718b5ba6d11 100644 --- a/man/updateColNames_size.Rd +++ b/man/updateColNames_size.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_utility_functions.R +% Please edit documentation in R/app_utilities.R \name{updateColNames_size} \alias{updateColNames_size} \title{Update the string of column names that are in all the needed tables} diff --git a/man/updateSizeclasses.Rd b/man/updateSizeclasses.Rd index 137c8ba09682c04d8bda2c3c6cb01a07ccc79faa..c769da7d1dea8c9defa0e8ef9d0bae3d2ed34574 100644 --- a/man/updateSizeclasses.Rd +++ b/man/updateSizeclasses.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_utility_functions.R +% Please edit documentation in R/app_utilities.R \name{updateSizeclasses} \alias{updateSizeclasses} \title{Update the size classes} diff --git a/man/update_input.Rd b/man/update_input.Rd new file mode 100644 index 0000000000000000000000000000000000000000..27b937438ea098423d3352e2579803bad824a5a4 --- /dev/null +++ b/man/update_input.Rd @@ -0,0 +1,30 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/app_update_input.R +\name{update_input} +\alias{update_input} +\title{Update the inputs when an event occurs} +\usage{ +update_input(eventName, rv, input, session) +} +\arguments{ +\item{eventName}{Character name of the event. One of "clear_all", +"file_SE", "file_SE_clear", "file_CP", "file_CP_clear", "file_SS", +"file_SS_clear", "file_DWP", "file_DWP_clear", "file_CO", +"file_CO_clear", "class", "obsSE", "predsSE", "run_SE", "run_SE_clear", +"outSEclass", "outSEp", "outSEk", "ltp", "fta", "predsCP", "run_CP", +"run_CP_clear", "outCPclass", "outCPdist", "outCPl", "outCPs", +"run_M", "run_M_clear", "split_M", "split_M_clear", "transpose_split", +"useSSdata", "useSSinputs", "run_g", "run_g_clear", or "outgclass".} + +\item{rv}{Reactive values list for the GenEst GUI.} + +\item{input}{\code{input} list for the GenEst GUI.} + +\item{session}{Environment for the GenEst GUI.} +} +\description{ +When an event occurs in the GenEst GUI, the input values may + need to be updated. This function contains all of the possible updates + based on the event options (or lacks any updates if the event doesn't + require any). +} diff --git a/man/update_input_clear_all.Rd b/man/update_input_clear_all.Rd deleted file mode 100644 index 717454c955b199f45c2826e2575530e32be0c990..0000000000000000000000000000000000000000 --- a/man/update_input_clear_all.Rd +++ /dev/null @@ -1,16 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_input_update_functions.R -\name{update_input_clear_all} -\alias{update_input_clear_all} -\title{Update the inputs when everything is cleared out} -\usage{ -update_input_clear_all(rv, session) -} -\arguments{ -\item{rv}{reactive values list} - -\item{session}{session} -} -\description{ -Update the inputs when everything is cleared -} diff --git a/man/update_input_cols_CP_preds.Rd b/man/update_input_cols_CP_preds.Rd deleted file mode 100644 index 561e84d1d7bbaf19aa4220621f0d33b12d86986b..0000000000000000000000000000000000000000 --- a/man/update_input_cols_CP_preds.Rd +++ /dev/null @@ -1,17 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_input_update_functions.R -\name{update_input_cols_CP_preds} -\alias{update_input_cols_CP_preds} -\title{Update the observation options when CP predictor columns are - selected} -\usage{ -update_input_cols_CP_preds(rv, session) -} -\arguments{ -\item{rv}{reactive values list} - -\item{session}{session} -} -\description{ -Update the inputs when the CP predictor columns are selected -} diff --git a/man/update_input_cols_SE_obs.Rd b/man/update_input_cols_SE_obs.Rd deleted file mode 100644 index b54782653e4a4dc46a3cc4f28604855cf7cabeaa..0000000000000000000000000000000000000000 --- a/man/update_input_cols_SE_obs.Rd +++ /dev/null @@ -1,17 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_input_update_functions.R -\name{update_input_cols_SE_obs} -\alias{update_input_cols_SE_obs} -\title{Update the predictor options when SE observation columns are - selected} -\usage{ -update_input_cols_SE_obs(rv, session) -} -\arguments{ -\item{rv}{reactive values list} - -\item{session}{session} -} -\description{ -Update the inputs when the SE observation columns are selected -} diff --git a/man/update_input_cols_SE_preds.Rd b/man/update_input_cols_SE_preds.Rd deleted file mode 100644 index a2f6c84a0f2cde98b360c097d31d6cf5324223dd..0000000000000000000000000000000000000000 --- a/man/update_input_cols_SE_preds.Rd +++ /dev/null @@ -1,17 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_input_update_functions.R -\name{update_input_cols_SE_preds} -\alias{update_input_cols_SE_preds} -\title{Update the observation options when SE predictor columns are - selected} -\usage{ -update_input_cols_SE_preds(rv, session) -} -\arguments{ -\item{rv}{reactive values list} - -\item{session}{session} -} -\description{ -Update the inputs when the SE predictor columns are selected -} diff --git a/man/update_input_cols_fta.Rd b/man/update_input_cols_fta.Rd deleted file mode 100644 index f9e10f40cce9707df9e9997dc739dbea7698bb61..0000000000000000000000000000000000000000 --- a/man/update_input_cols_fta.Rd +++ /dev/null @@ -1,18 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_input_update_functions.R -\name{update_input_cols_fta} -\alias{update_input_cols_fta} -\title{Update the predictor options and Last Time Present options when the - First Time Absent column is selected} -\usage{ -update_input_cols_fta(rv, session) -} -\arguments{ -\item{rv}{reactive values list} - -\item{session}{session} -} -\description{ -Update the inputs when the First Time Absent column is - selected -} diff --git a/man/update_input_cols_ltp.Rd b/man/update_input_cols_ltp.Rd deleted file mode 100644 index 2032e047a3b9bece3e848034bf5188c9a71aeded..0000000000000000000000000000000000000000 --- a/man/update_input_cols_ltp.Rd +++ /dev/null @@ -1,18 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_input_update_functions.R -\name{update_input_cols_ltp} -\alias{update_input_cols_ltp} -\title{Update the predictor options and First Time Absent options when the - Last Time Present column is selected} -\usage{ -update_input_cols_ltp(rv, session) -} -\arguments{ -\item{rv}{reactive values list} - -\item{session}{session} -} -\description{ -Update the inputs when the Last Time Present column is - selected -} diff --git a/man/update_input_data_CO.Rd b/man/update_input_data_CO.Rd deleted file mode 100644 index f9ffc4b7b5e5c9c84738dcca5a307379dc2096a8..0000000000000000000000000000000000000000 --- a/man/update_input_data_CO.Rd +++ /dev/null @@ -1,16 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_input_update_functions.R -\name{update_input_data_CO} -\alias{update_input_data_CO} -\title{Update the inputs when CO data are read in} -\usage{ -update_input_data_CO(rv, session) -} -\arguments{ -\item{rv}{reactive values list} - -\item{session}{session} -} -\description{ -Update the inputs when the CO data file is input -} diff --git a/man/update_input_data_CO_clear.Rd b/man/update_input_data_CO_clear.Rd deleted file mode 100644 index 461602efee61419bc21bf359f547c576077668cb..0000000000000000000000000000000000000000 --- a/man/update_input_data_CO_clear.Rd +++ /dev/null @@ -1,16 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_input_update_functions.R -\name{update_input_data_CO_clear} -\alias{update_input_data_CO_clear} -\title{Update the inputs when CO data are cleared out} -\usage{ -update_input_data_CO_clear(rv, session) -} -\arguments{ -\item{rv}{reactive values list} - -\item{session}{session} -} -\description{ -Update the inputs when the CO data file input is cleared -} diff --git a/man/update_input_data_CP.Rd b/man/update_input_data_CP.Rd deleted file mode 100644 index a47e9d70b633f023327b71cd3da94f234db0bd2f..0000000000000000000000000000000000000000 --- a/man/update_input_data_CP.Rd +++ /dev/null @@ -1,16 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_input_update_functions.R -\name{update_input_data_CP} -\alias{update_input_data_CP} -\title{Update the inputs when CP data are read in} -\usage{ -update_input_data_CP(rv, session) -} -\arguments{ -\item{rv}{reactive values list} - -\item{session}{session} -} -\description{ -Update the inputs when the CP data file is input -} diff --git a/man/update_input_data_CP_clear.Rd b/man/update_input_data_CP_clear.Rd deleted file mode 100644 index 88385fce3104fe57f4c77d139ea87323b817ba65..0000000000000000000000000000000000000000 --- a/man/update_input_data_CP_clear.Rd +++ /dev/null @@ -1,16 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_input_update_functions.R -\name{update_input_data_CP_clear} -\alias{update_input_data_CP_clear} -\title{Update the inputs when CP data are cleared out} -\usage{ -update_input_data_CP_clear(rv, session) -} -\arguments{ -\item{rv}{reactive values list} - -\item{session}{session} -} -\description{ -Update the inputs when the CP data file input is cleared -} diff --git a/man/update_input_data_DWP.Rd b/man/update_input_data_DWP.Rd deleted file mode 100644 index 182edddf68a095dfe785f4a290fc29c51b873565..0000000000000000000000000000000000000000 --- a/man/update_input_data_DWP.Rd +++ /dev/null @@ -1,16 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_input_update_functions.R -\name{update_input_data_DWP} -\alias{update_input_data_DWP} -\title{Update the inputs when DWP data are read in} -\usage{ -update_input_data_DWP(rv, session) -} -\arguments{ -\item{rv}{reactive values list} - -\item{session}{session} -} -\description{ -Update the inputs when the DWP data file is input -} diff --git a/man/update_input_data_DWP_clear.Rd b/man/update_input_data_DWP_clear.Rd deleted file mode 100644 index 293bdfbfca25f2968e1425a72ef8d6dfe3919bf1..0000000000000000000000000000000000000000 --- a/man/update_input_data_DWP_clear.Rd +++ /dev/null @@ -1,16 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_input_update_functions.R -\name{update_input_data_DWP_clear} -\alias{update_input_data_DWP_clear} -\title{Update the inputs when DWP data are cleared out} -\usage{ -update_input_data_DWP_clear(rv, session) -} -\arguments{ -\item{rv}{reactive values list} - -\item{session}{session} -} -\description{ -Update the inputs when the DWP data file input is cleared -} diff --git a/man/update_input_data_SE.Rd b/man/update_input_data_SE.Rd deleted file mode 100644 index 65a8e9da71748819156bd1209fa32cc26ae65df2..0000000000000000000000000000000000000000 --- a/man/update_input_data_SE.Rd +++ /dev/null @@ -1,16 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_input_update_functions.R -\name{update_input_data_SE} -\alias{update_input_data_SE} -\title{Update the inputs when SE data are read in} -\usage{ -update_input_data_SE(rv, session) -} -\arguments{ -\item{rv}{reactive values list} - -\item{session}{session} -} -\description{ -Update the inputs when the SE data file is input -} diff --git a/man/update_input_data_SE_clear.Rd b/man/update_input_data_SE_clear.Rd deleted file mode 100644 index e991f5fd6c91ea8a0534ca22cbc311d07abe89ea..0000000000000000000000000000000000000000 --- a/man/update_input_data_SE_clear.Rd +++ /dev/null @@ -1,16 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_input_update_functions.R -\name{update_input_data_SE_clear} -\alias{update_input_data_SE_clear} -\title{Update the inputs when SE data are cleared out} -\usage{ -update_input_data_SE_clear(rv, session) -} -\arguments{ -\item{rv}{reactive values list} - -\item{session}{session} -} -\description{ -Update the inputs when the SE data file input is cleared -} diff --git a/man/update_input_data_SS.Rd b/man/update_input_data_SS.Rd deleted file mode 100644 index 5fe39f7493e6e902789c9740965b89948d2a6341..0000000000000000000000000000000000000000 --- a/man/update_input_data_SS.Rd +++ /dev/null @@ -1,16 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_input_update_functions.R -\name{update_input_data_SS} -\alias{update_input_data_SS} -\title{Update the inputs when SS data are read in} -\usage{ -update_input_data_SS(rv, session) -} -\arguments{ -\item{rv}{reactive values list} - -\item{session}{session} -} -\description{ -Update the inputs when the SS data file is input -} diff --git a/man/update_input_data_SS_clear.Rd b/man/update_input_data_SS_clear.Rd deleted file mode 100644 index 39f400821dee06754147b010eceedc11e85bcfce..0000000000000000000000000000000000000000 --- a/man/update_input_data_SS_clear.Rd +++ /dev/null @@ -1,16 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_input_update_functions.R -\name{update_input_data_SS_clear} -\alias{update_input_data_SS_clear} -\title{Update the inputs when SS data are cleared out} -\usage{ -update_input_data_SS_clear(rv, session) -} -\arguments{ -\item{rv}{reactive values list} - -\item{session}{session} -} -\description{ -Update the inputs when the SS data file input is cleared -} diff --git a/man/update_input_outsc_CP.Rd b/man/update_input_outsc_CP.Rd deleted file mode 100644 index 3d849cff98cc2e68d7ece8428ed041b094159afe..0000000000000000000000000000000000000000 --- a/man/update_input_outsc_CP.Rd +++ /dev/null @@ -1,18 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_input_update_functions.R -\name{update_input_outsc_CP} -\alias{update_input_outsc_CP} -\title{Update the CP output dropdown selections when the size class is - chosen} -\usage{ -update_input_outsc_CP(rv, session) -} -\arguments{ -\item{rv}{reactive values list} - -\item{session}{session} -} -\description{ -Update the CP output dropdown selections when the size - class is chosen -} diff --git a/man/update_input_outsc_SE.Rd b/man/update_input_outsc_SE.Rd deleted file mode 100644 index 0091209b4455a0bec1c7825e8362916cb2f4d438..0000000000000000000000000000000000000000 --- a/man/update_input_outsc_SE.Rd +++ /dev/null @@ -1,18 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_input_update_functions.R -\name{update_input_outsc_SE} -\alias{update_input_outsc_SE} -\title{Update the SE output dropdown selections when the size class is - chosen} -\usage{ -update_input_outsc_SE(rv, session) -} -\arguments{ -\item{rv}{reactive values list} - -\item{session}{session} -} -\description{ -Update the SE output dropdown selections when the size - class is chosen -} diff --git a/man/update_input_run_CP.Rd b/man/update_input_run_CP.Rd deleted file mode 100644 index 7e8b44752524b77b6bffb39da015db013eb7c9ff..0000000000000000000000000000000000000000 --- a/man/update_input_run_CP.Rd +++ /dev/null @@ -1,16 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_input_update_functions.R -\name{update_input_run_CP} -\alias{update_input_run_CP} -\title{Update the CP output dropdown selections when the model is run} -\usage{ -update_input_run_CP(rv, session) -} -\arguments{ -\item{rv}{reactive values list} - -\item{session}{session} -} -\description{ -Update the CP output dropdown selections when the model is run -} diff --git a/man/update_input_run_CP_clear.Rd b/man/update_input_run_CP_clear.Rd deleted file mode 100644 index 0ef79b3b4a9cd8d149363049da7425699a9c56b2..0000000000000000000000000000000000000000 --- a/man/update_input_run_CP_clear.Rd +++ /dev/null @@ -1,16 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_input_update_functions.R -\name{update_input_run_CP_clear} -\alias{update_input_run_CP_clear} -\title{Update the inputs when CP model is cleared} -\usage{ -update_input_run_CP_clear(rv, session) -} -\arguments{ -\item{rv}{reactive values list} - -\item{session}{session} -} -\description{ -Update the inputs when the CP model is cleared -} diff --git a/man/update_input_run_M.Rd b/man/update_input_run_M.Rd deleted file mode 100644 index f8736050108ed4e42a4363919a3bfda4228e796d..0000000000000000000000000000000000000000 --- a/man/update_input_run_M.Rd +++ /dev/null @@ -1,18 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_input_update_functions.R -\name{update_input_run_M} -\alias{update_input_run_M} -\title{Update the M output dropdown selections and the Fraction Surveyed - when the model is run} -\usage{ -update_input_run_M(rv, session) -} -\arguments{ -\item{rv}{reactive values list} - -\item{session}{session} -} -\description{ -Update the M output dropdown selections and the Fraction - Surveyed when the model is run -} diff --git a/man/update_input_run_M_clear.Rd b/man/update_input_run_M_clear.Rd deleted file mode 100644 index 3cba084f1704e0bb184b3b13f1516305ed539309..0000000000000000000000000000000000000000 --- a/man/update_input_run_M_clear.Rd +++ /dev/null @@ -1,16 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_input_update_functions.R -\name{update_input_run_M_clear} -\alias{update_input_run_M_clear} -\title{Update the inputs when M model is cleared} -\usage{ -update_input_run_M_clear(rv, session) -} -\arguments{ -\item{rv}{reactive values list} - -\item{session}{session} -} -\description{ -Update the inputs when the M model is cleared -} diff --git a/man/update_input_run_SE.Rd b/man/update_input_run_SE.Rd deleted file mode 100644 index c10327959bc51e7c4da2f318550cfce6e019029a..0000000000000000000000000000000000000000 --- a/man/update_input_run_SE.Rd +++ /dev/null @@ -1,16 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_input_update_functions.R -\name{update_input_run_SE} -\alias{update_input_run_SE} -\title{Update the SE output dropdown selections when the model is run} -\usage{ -update_input_run_SE(rv, session) -} -\arguments{ -\item{rv}{reactive values list} - -\item{session}{session} -} -\description{ -Update the SE output dropdown selections when the model is run -} diff --git a/man/update_input_run_SE_clear.Rd b/man/update_input_run_SE_clear.Rd deleted file mode 100644 index e563c9609ec9bd1ebba00b56704fa18af2087289..0000000000000000000000000000000000000000 --- a/man/update_input_run_SE_clear.Rd +++ /dev/null @@ -1,16 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_input_update_functions.R -\name{update_input_run_SE_clear} -\alias{update_input_run_SE_clear} -\title{Update the inputs when SE model is cleared} -\usage{ -update_input_run_SE_clear(rv, session) -} -\arguments{ -\item{rv}{reactive values list} - -\item{session}{session} -} -\description{ -Update the inputs when the SE model is cleared -} diff --git a/man/update_input_run_g.Rd b/man/update_input_run_g.Rd deleted file mode 100644 index 4ebb6f03ab3a13c0406c7d6763d88b582fcd62b7..0000000000000000000000000000000000000000 --- a/man/update_input_run_g.Rd +++ /dev/null @@ -1,16 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_input_update_functions.R -\name{update_input_run_g} -\alias{update_input_run_g} -\title{Update the g output dropdown selections when the model is run} -\usage{ -update_input_run_g(rv, session) -} -\arguments{ -\item{rv}{reactive values list} - -\item{session}{session} -} -\description{ -Update the g output dropdown selections when the model is run -} diff --git a/man/update_input_run_g_clear.Rd b/man/update_input_run_g_clear.Rd deleted file mode 100644 index 37ccfb4b7fcc2713c4f06790448c7cf0e9484e25..0000000000000000000000000000000000000000 --- a/man/update_input_run_g_clear.Rd +++ /dev/null @@ -1,16 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_input_update_functions.R -\name{update_input_run_g_clear} -\alias{update_input_run_g_clear} -\title{Update the inputs when g model is cleared} -\usage{ -update_input_run_g_clear(rv, session) -} -\arguments{ -\item{rv}{reactive values list} - -\item{session}{session} -} -\description{ -Update the inputs when the g model is cleared -} diff --git a/man/update_input_sizeCol.Rd b/man/update_input_sizeCol.Rd deleted file mode 100644 index bc5101494b5beb6ea98b19b671c9aac074f91c13..0000000000000000000000000000000000000000 --- a/man/update_input_sizeCol.Rd +++ /dev/null @@ -1,18 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_input_update_functions.R -\name{update_input_sizeCol} -\alias{update_input_sizeCol} -\title{Update the inputs when the size class column is selected} -\usage{ -update_input_sizeCol(rv, input, session) -} -\arguments{ -\item{rv}{reactive values list} - -\item{input}{input list} - -\item{session}{session} -} -\description{ -Update the inputs when the SE data file is input -} diff --git a/man/update_input_split_M_clear.Rd b/man/update_input_split_M_clear.Rd deleted file mode 100644 index 95d05d53c50e30b6087f7ba0fedb742f3f92ae91..0000000000000000000000000000000000000000 --- a/man/update_input_split_M_clear.Rd +++ /dev/null @@ -1,16 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_input_update_functions.R -\name{update_input_split_M_clear} -\alias{update_input_split_M_clear} -\title{Update the inputs when M split is cleared} -\usage{ -update_input_split_M_clear(rv, session) -} -\arguments{ -\item{rv}{reactive values list} - -\item{session}{session} -} -\description{ -Update the inputs when the M split is cleared -} diff --git a/man/update_input_useSSdata.Rd b/man/update_input_useSSdata.Rd deleted file mode 100644 index 1d1db40e7119a4a4566a22f3355c5c7a964d4959..0000000000000000000000000000000000000000 --- a/man/update_input_useSSdata.Rd +++ /dev/null @@ -1,17 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_input_update_functions.R -\name{update_input_useSSdata} -\alias{update_input_useSSdata} -\title{Update the SS average dropdown selections when the SS data are used} -\usage{ -update_input_useSSdata(rv, session) -} -\arguments{ -\item{rv}{reactive values list} - -\item{session}{session} -} -\description{ -Update the SS average dropdown selections when the SS data - are used -} diff --git a/man/update_output.Rd b/man/update_output.Rd new file mode 100644 index 0000000000000000000000000000000000000000..78c0f6d73f4a500c08e190037a661fbbb06a1b3d --- /dev/null +++ b/man/update_output.Rd @@ -0,0 +1,31 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/app_update_output.R +\name{update_output} +\alias{update_output} +\title{Update the outputs when an event occurs} +\usage{ +update_output(eventName, rv, output) +} +\arguments{ +\item{eventName}{Character name of the event. One of "clear_all", +"file_SE", "file_SE_clear", "file_CP", "file_CP_clear", "file_SS", +"file_SS_clear", "file_DWP", "file_DWP_clear", "file_CO", +"file_CO_clear", "class", "obsSE", "predsSE", "run_SE", "run_SE_clear", +"outSEclass", "outSEp", "outSEk", "ltp", "fta", "predsCP", "run_CP", +"run_CP_clear", "outCPclass", "outCPdist", "outCPl", "outCPs", +"run_M", "run_M_clear", "split_M", "split_M_clear", "transpose_split", +"useSSdata", "useSSinputs", "run_g", "run_g_clear", or "outgclass".} + +\item{rv}{Reactive values list for the GenEst GUI.} + +\item{output}{\code{output} list for the GenEst GUI.} +} +\value{ +Updated \code{output} list. +} +\description{ +When an event occurs in the GenEst GUI, the output values may + need to be updated. This function contains all of the possible updates + based on the event options (or lacks any updates if the event doesn't + require any). +} diff --git a/man/update_output_SS.Rd b/man/update_output_SS.Rd deleted file mode 100644 index 3f79710f31113eecf1e84c2d5c885f417ce1379f..0000000000000000000000000000000000000000 --- a/man/update_output_SS.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_output_update_functions.R -\name{update_output_SS} -\alias{update_output_SS} -\title{Update the SS text output when the SS is updated} -\usage{ -update_output_SS(rv, output) -} -\arguments{ -\item{rv}{reactive values list} - -\item{output}{output list} -} -\value{ -an updated output list -} -\description{ -Update the SS text output when the SS is updated -} diff --git a/man/update_output_clear_all.Rd b/man/update_output_clear_all.Rd deleted file mode 100644 index 15c23771c4510e87d5f896dedb7402ff5f7105ff..0000000000000000000000000000000000000000 --- a/man/update_output_clear_all.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_output_update_functions.R -\name{update_output_clear_all} -\alias{update_output_clear_all} -\title{Update the reactive value list when everything is cleared out} -\usage{ -update_output_clear_all(rv, output) -} -\arguments{ -\item{rv}{reactive values list} - -\item{output}{output list} -} -\value{ -an updated output list -} -\description{ -Update the rv list when everything is cleared -} diff --git a/man/update_output_cols_CP.Rd b/man/update_output_cols_CP.Rd deleted file mode 100644 index c140edeae3d45757985329120366b5ac48d745ab..0000000000000000000000000000000000000000 --- a/man/update_output_cols_CP.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_output_update_functions.R -\name{update_output_cols_CP} -\alias{update_output_cols_CP} -\title{Update the selected CP data when a column is selected} -\usage{ -update_output_cols_CP(rv, output) -} -\arguments{ -\item{rv}{reactive values list} - -\item{output}{output list} -} -\value{ -an updated output list -} -\description{ -Update the output table when the CP columns are selected -} diff --git a/man/update_output_cols_SE.Rd b/man/update_output_cols_SE.Rd deleted file mode 100644 index 65bea7c8c8f3bdfb733f91a17e18823fe20e90ae..0000000000000000000000000000000000000000 --- a/man/update_output_cols_SE.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_output_update_functions.R -\name{update_output_cols_SE} -\alias{update_output_cols_SE} -\title{Update the selected SE data when a column is selected} -\usage{ -update_output_cols_SE(rv, output) -} -\arguments{ -\item{rv}{reactive values list} - -\item{output}{output list} -} -\value{ -an updated output list -} -\description{ -Update the output table when the SE columns are selected -} diff --git a/man/update_output_data_CO.Rd b/man/update_output_data_CO.Rd deleted file mode 100644 index 596d0f866b0efad016cb033cfdaa12a0a3367944..0000000000000000000000000000000000000000 --- a/man/update_output_data_CO.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_output_update_functions.R -\name{update_output_data_CO} -\alias{update_output_data_CO} -\title{Update the output list when CO data are read in} -\usage{ -update_output_data_CO(rv, output) -} -\arguments{ -\item{rv}{reactive values list} - -\item{output}{output list} -} -\value{ -an updated output list -} -\description{ -Update the output list when the CO data file is input -} diff --git a/man/update_output_data_CO_clear.Rd b/man/update_output_data_CO_clear.Rd deleted file mode 100644 index 0e6cf9fc44fa1ebcd59b4b966d8c08a1d7623cd7..0000000000000000000000000000000000000000 --- a/man/update_output_data_CO_clear.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_output_update_functions.R -\name{update_output_data_CO_clear} -\alias{update_output_data_CO_clear} -\title{Update the output list when CO data are cleared} -\usage{ -update_output_data_CO_clear(rv, output) -} -\arguments{ -\item{rv}{reactive values list} - -\item{output}{output list} -} -\value{ -an updated output list -} -\description{ -Update the output list when the CO data file input is cleared -} diff --git a/man/update_output_data_CP.Rd b/man/update_output_data_CP.Rd deleted file mode 100644 index 905fd281c3b0f79927a4a82ac82cbdb680781cc6..0000000000000000000000000000000000000000 --- a/man/update_output_data_CP.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_output_update_functions.R -\name{update_output_data_CP} -\alias{update_output_data_CP} -\title{Update the output list when CP data are read in} -\usage{ -update_output_data_CP(rv, output) -} -\arguments{ -\item{rv}{reactive values list} - -\item{output}{output list} -} -\value{ -an updated output list -} -\description{ -Update the output list when the CP data file is input -} diff --git a/man/update_output_data_CP_clear.Rd b/man/update_output_data_CP_clear.Rd deleted file mode 100644 index 46a9d6ce21dde6625aaf0ad914e9c00363335bdc..0000000000000000000000000000000000000000 --- a/man/update_output_data_CP_clear.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_output_update_functions.R -\name{update_output_data_CP_clear} -\alias{update_output_data_CP_clear} -\title{Update the output list when CP data are cleared} -\usage{ -update_output_data_CP_clear(rv, output) -} -\arguments{ -\item{rv}{reactive values list} - -\item{output}{output list} -} -\value{ -an updated output list -} -\description{ -Update the output list when the CP data file input is cleared -} diff --git a/man/update_output_data_DWP.Rd b/man/update_output_data_DWP.Rd deleted file mode 100644 index da2e5d3c7e699b856ad0c02d0636bb061808a9f0..0000000000000000000000000000000000000000 --- a/man/update_output_data_DWP.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_output_update_functions.R -\name{update_output_data_DWP} -\alias{update_output_data_DWP} -\title{Update the output list when DWP data are read in} -\usage{ -update_output_data_DWP(rv, output) -} -\arguments{ -\item{rv}{reactive values list} - -\item{output}{output list} -} -\value{ -an updated output list -} -\description{ -Update the output list when the DWP data file is input -} diff --git a/man/update_output_data_DWP_clear.Rd b/man/update_output_data_DWP_clear.Rd deleted file mode 100644 index 98a0d13855804058584fb1be0cb0f770abe39a2f..0000000000000000000000000000000000000000 --- a/man/update_output_data_DWP_clear.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_output_update_functions.R -\name{update_output_data_DWP_clear} -\alias{update_output_data_DWP_clear} -\title{Update the output list when DWP data are cleared} -\usage{ -update_output_data_DWP_clear(rv, output) -} -\arguments{ -\item{rv}{reactive values list} - -\item{output}{output list} -} -\value{ -an updated output list -} -\description{ -Update the output list when the DWP data file input is cleared -} diff --git a/man/update_output_data_SE.Rd b/man/update_output_data_SE.Rd deleted file mode 100644 index ad12122990b340ec9f8b5b56286c05a38d56b536..0000000000000000000000000000000000000000 --- a/man/update_output_data_SE.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_output_update_functions.R -\name{update_output_data_SE} -\alias{update_output_data_SE} -\title{Update the output list when SE data are read in} -\usage{ -update_output_data_SE(rv, output) -} -\arguments{ -\item{rv}{reactive values list} - -\item{output}{output list} -} -\value{ -an updated output list -} -\description{ -Update the output list when the SE data file is input -} diff --git a/man/update_output_data_SE_clear.Rd b/man/update_output_data_SE_clear.Rd deleted file mode 100644 index a44305d462ed2ec0292894359545f0b2ed674084..0000000000000000000000000000000000000000 --- a/man/update_output_data_SE_clear.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_output_update_functions.R -\name{update_output_data_SE_clear} -\alias{update_output_data_SE_clear} -\title{Update the output list when SE data are cleared} -\usage{ -update_output_data_SE_clear(rv, output) -} -\arguments{ -\item{rv}{reactive values list} - -\item{output}{output list} -} -\value{ -an updated output list -} -\description{ -Update the output list when the SE data file input is cleared -} diff --git a/man/update_output_data_SS.Rd b/man/update_output_data_SS.Rd deleted file mode 100644 index 84648e784d987c24c7adfbfa4ad0aa299e179d62..0000000000000000000000000000000000000000 --- a/man/update_output_data_SS.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_output_update_functions.R -\name{update_output_data_SS} -\alias{update_output_data_SS} -\title{Update the output list when SS data are read in} -\usage{ -update_output_data_SS(rv, output) -} -\arguments{ -\item{rv}{reactive values list} - -\item{output}{output list} -} -\value{ -an updated output list -} -\description{ -Update the output list when the SS data file is input -} diff --git a/man/update_output_data_SS_clear.Rd b/man/update_output_data_SS_clear.Rd deleted file mode 100644 index 8d2b2abf6003c786ba711f293ed1ffe01b91f685..0000000000000000000000000000000000000000 --- a/man/update_output_data_SS_clear.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_output_update_functions.R -\name{update_output_data_SS_clear} -\alias{update_output_data_SS_clear} -\title{Update the output list when SS data are cleared} -\usage{ -update_output_data_SS_clear(rv, output) -} -\arguments{ -\item{rv}{reactive values list} - -\item{output}{output list} -} -\value{ -an updated output list -} -\description{ -Update the output list when the SS data file input is cleared -} diff --git a/man/update_output_outdls_CP.Rd b/man/update_output_outdls_CP.Rd deleted file mode 100644 index 7b4d544cffcf50fbd324b776ab4c485aa125670e..0000000000000000000000000000000000000000 --- a/man/update_output_outdls_CP.Rd +++ /dev/null @@ -1,21 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_output_update_functions.R -\name{update_output_outdls_CP} -\alias{update_output_outdls_CP} -\title{Update the CP output when a distribuition or l or s equation is - chosen} -\usage{ -update_output_outdls_CP(rv, output) -} -\arguments{ -\item{rv}{reactive values list} - -\item{output}{output list} -} -\value{ -an updated output list -} -\description{ -Update the SE output when a distribution or l or s equation is - chosen -} diff --git a/man/update_output_outpk_SE.Rd b/man/update_output_outpk_SE.Rd deleted file mode 100644 index 6cfa1c30fd2fd8b16ff6440ad1f4c3ed1728e75f..0000000000000000000000000000000000000000 --- a/man/update_output_outpk_SE.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_output_update_functions.R -\name{update_output_outpk_SE} -\alias{update_output_outpk_SE} -\title{Update the SE output when a p or k equation is chosen} -\usage{ -update_output_outpk_SE(rv, output) -} -\arguments{ -\item{rv}{reactive values list} - -\item{output}{output list} -} -\value{ -an updated output list -} -\description{ -Update the SE output when a p or k equation is chosen -} diff --git a/man/update_output_outsc_CP.Rd b/man/update_output_outsc_CP.Rd deleted file mode 100644 index 472f6f2d6f55c12039b7d6d2a6cc171c7db885d5..0000000000000000000000000000000000000000 --- a/man/update_output_outsc_CP.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_output_update_functions.R -\name{update_output_outsc_CP} -\alias{update_output_outsc_CP} -\title{Update the CP output when a size class is chosen} -\usage{ -update_output_outsc_CP(rv, output) -} -\arguments{ -\item{rv}{reactive values list} - -\item{output}{output list} -} -\value{ -an updated output list -} -\description{ -Update the CP output when a size class is chosen -} diff --git a/man/update_output_outsc_SE.Rd b/man/update_output_outsc_SE.Rd deleted file mode 100644 index b0dd672585888b2f31ea6aff9de1f44b78493264..0000000000000000000000000000000000000000 --- a/man/update_output_outsc_SE.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_output_update_functions.R -\name{update_output_outsc_SE} -\alias{update_output_outsc_SE} -\title{Update the SE output when a size class is chosen} -\usage{ -update_output_outsc_SE(rv, output) -} -\arguments{ -\item{rv}{reactive values list} - -\item{output}{output list} -} -\value{ -an updated output list -} -\description{ -Update the SE output when a size class is chosen -} diff --git a/man/update_output_outsc_g.Rd b/man/update_output_outsc_g.Rd deleted file mode 100644 index 4d831a462088c4d97770da621969db4fe276020d..0000000000000000000000000000000000000000 --- a/man/update_output_outsc_g.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_output_update_functions.R -\name{update_output_outsc_g} -\alias{update_output_outsc_g} -\title{Update the output when a generic g size class is chosen} -\usage{ -update_output_outsc_g(rv, output) -} -\arguments{ -\item{rv}{reactive values list} - -\item{output}{output list} -} -\value{ -an updated output list -} -\description{ -Update the output table when a generic g size class is chosen -} diff --git a/man/update_output_run_CP.Rd b/man/update_output_run_CP.Rd deleted file mode 100644 index 5da6c0f812b4311f12b570165ae534fd052680a1..0000000000000000000000000000000000000000 --- a/man/update_output_run_CP.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_output_update_functions.R -\name{update_output_run_CP} -\alias{update_output_run_CP} -\title{Update the output when an CP model has been run} -\usage{ -update_output_run_CP(rv, output) -} -\arguments{ -\item{rv}{reactive values list} - -\item{output}{output list} -} -\value{ -an updated output list -} -\description{ -Update the output table when an CP model has been run -} diff --git a/man/update_output_run_CP_clear.Rd b/man/update_output_run_CP_clear.Rd deleted file mode 100644 index 7a258346762929b0a01377822b5eb15621794bcf..0000000000000000000000000000000000000000 --- a/man/update_output_run_CP_clear.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_output_update_functions.R -\name{update_output_run_CP_clear} -\alias{update_output_run_CP_clear} -\title{Update the output list when CP model is cleared} -\usage{ -update_output_run_CP_clear(rv, output) -} -\arguments{ -\item{rv}{reactive values list} - -\item{output}{output list} -} -\value{ -an updated output list -} -\description{ -Update the output list when the CP model is cleared -} diff --git a/man/update_output_run_M.Rd b/man/update_output_run_M.Rd deleted file mode 100644 index e1c92f769511a3a5ec52ed55d7f55ac657d3751f..0000000000000000000000000000000000000000 --- a/man/update_output_run_M.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_output_update_functions.R -\name{update_output_run_M} -\alias{update_output_run_M} -\title{Update the output when an M model has been run} -\usage{ -update_output_run_M(rv, output) -} -\arguments{ -\item{rv}{reactive values list} - -\item{output}{output list} -} -\value{ -an updated output list -} -\description{ -Update the output table when an M model has been run -} diff --git a/man/update_output_run_M_clear.Rd b/man/update_output_run_M_clear.Rd deleted file mode 100644 index 6698ff2f4b67390fc2f364ec4486936cc30516fc..0000000000000000000000000000000000000000 --- a/man/update_output_run_M_clear.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_output_update_functions.R -\name{update_output_run_M_clear} -\alias{update_output_run_M_clear} -\title{Update the output list when M model is cleared} -\usage{ -update_output_run_M_clear(rv, output) -} -\arguments{ -\item{rv}{reactive values list} - -\item{output}{output list} -} -\value{ -an updated output list -} -\description{ -Update the output list when the M model is cleared -} diff --git a/man/update_output_run_SE.Rd b/man/update_output_run_SE.Rd deleted file mode 100644 index df74a7558a89afa059be78a50493e911e1b5d550..0000000000000000000000000000000000000000 --- a/man/update_output_run_SE.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_output_update_functions.R -\name{update_output_run_SE} -\alias{update_output_run_SE} -\title{Update the output when an SE model has been run} -\usage{ -update_output_run_SE(rv, output) -} -\arguments{ -\item{rv}{reactive values list} - -\item{output}{output list} -} -\value{ -an updated output list -} -\description{ -Update the output table when an SE model has been run -} diff --git a/man/update_output_run_SE_clear.Rd b/man/update_output_run_SE_clear.Rd deleted file mode 100644 index 599152f82839e2ca43b12fea63b6e82baffcc4ee..0000000000000000000000000000000000000000 --- a/man/update_output_run_SE_clear.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_output_update_functions.R -\name{update_output_run_SE_clear} -\alias{update_output_run_SE_clear} -\title{Update the output list when SE model is cleared} -\usage{ -update_output_run_SE_clear(rv, output) -} -\arguments{ -\item{rv}{reactive values list} - -\item{output}{output list} -} -\value{ -an updated output list -} -\description{ -Update the output list when the SE model is cleared -} diff --git a/man/update_output_run_g.Rd b/man/update_output_run_g.Rd deleted file mode 100644 index a60acce329bb29f96021495911e4ecf39fd4c3c3..0000000000000000000000000000000000000000 --- a/man/update_output_run_g.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_output_update_functions.R -\name{update_output_run_g} -\alias{update_output_run_g} -\title{Update the output when a generic g model has been run} -\usage{ -update_output_run_g(rv, output) -} -\arguments{ -\item{rv}{reactive values list} - -\item{output}{output list} -} -\value{ -an updated output list -} -\description{ -Update the output table when a generic g model has been run -} diff --git a/man/update_output_run_g_clear.Rd b/man/update_output_run_g_clear.Rd deleted file mode 100644 index bee0ff67ea1d1136496d2ca745c41a81a8f53e5a..0000000000000000000000000000000000000000 --- a/man/update_output_run_g_clear.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_output_update_functions.R -\name{update_output_run_g_clear} -\alias{update_output_run_g_clear} -\title{Update the output list when g model is cleared} -\usage{ -update_output_run_g_clear(rv, output) -} -\arguments{ -\item{rv}{reactive values list} - -\item{output}{output list} -} -\value{ -an updated output list -} -\description{ -Update the output list when the g model is cleared -} diff --git a/man/update_output_sizeCol.Rd b/man/update_output_sizeCol.Rd deleted file mode 100644 index 4a6d04423ebd7866dc6d6150526a7317da58d0f3..0000000000000000000000000000000000000000 --- a/man/update_output_sizeCol.Rd +++ /dev/null @@ -1,21 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_output_update_functions.R -\name{update_output_sizeCol} -\alias{update_output_sizeCol} -\title{Update the selected CP and SE data when a size class column is - selected} -\usage{ -update_output_sizeCol(rv, output) -} -\arguments{ -\item{rv}{reactive values list} - -\item{output}{output list} -} -\value{ -an updated output list -} -\description{ -Update the output tables when the size class column is - selected -} diff --git a/man/update_output_split_M.Rd b/man/update_output_split_M.Rd deleted file mode 100644 index aa1d60d4ac4df9e3ee7b980ac8c53f5d202e3d37..0000000000000000000000000000000000000000 --- a/man/update_output_split_M.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_output_update_functions.R -\name{update_output_split_M} -\alias{update_output_split_M} -\title{Update the output when M has been split} -\usage{ -update_output_split_M(rv, output) -} -\arguments{ -\item{rv}{reactive values list} - -\item{output}{output list} -} -\value{ -an updated output list -} -\description{ -Update the output table when M has been split -} diff --git a/man/update_output_split_M_clear.Rd b/man/update_output_split_M_clear.Rd deleted file mode 100644 index b8dd272ead8013ab95f23546394994b3aa1d27a6..0000000000000000000000000000000000000000 --- a/man/update_output_split_M_clear.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_output_update_functions.R -\name{update_output_split_M_clear} -\alias{update_output_split_M_clear} -\title{Update the output list when M split is cleared} -\usage{ -update_output_split_M_clear(rv, output) -} -\arguments{ -\item{rv}{reactive values list} - -\item{output}{output list} -} -\value{ -an updated output list -} -\description{ -Update the output list when the M split is cleared -} diff --git a/man/update_output_transpose_split.Rd b/man/update_output_transpose_split.Rd deleted file mode 100644 index 8c50093d92d8a6de4cf7f8952b272bad83f1820c..0000000000000000000000000000000000000000 --- a/man/update_output_transpose_split.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_output_update_functions.R -\name{update_output_transpose_split} -\alias{update_output_transpose_split} -\title{Update the output when the M split is transposed} -\usage{ -update_output_transpose_split(rv, output) -} -\arguments{ -\item{rv}{reactive values list} - -\item{output}{output list} -} -\value{ -an updated output list -} -\description{ -Update the output when the M split is transposed -} diff --git a/man/update_rv.Rd b/man/update_rv.Rd new file mode 100644 index 0000000000000000000000000000000000000000..df65ddc0a7526517c1a11db76603a549026b4c42 --- /dev/null +++ b/man/update_rv.Rd @@ -0,0 +1,32 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/app_update_rv.R +\name{update_rv} +\alias{update_rv} +\title{Update the reactive value list when an event occurs} +\usage{ +update_rv(eventName, rv, input) +} +\arguments{ +\item{eventName}{Character name of the event. One of "clear_all", +"file_SE", "file_SE_clear", "file_CP", "file_CP_clear", "file_SS", +"file_SS_clear", "file_DWP", "file_DWP_clear", "file_CO", +"file_CO_clear", "class", "obsSE", "predsSE", "run_SE", "run_SE_clear", +"outSEclass", "outSEp", "outSEk", "ltp", "fta", "predsCP", "run_CP", +"run_CP_clear", "outCPclass", "outCPdist", "outCPl", "outCPs", +"run_M", "run_M_clear", "split_M", "split_M_clear", "transpose_split", +"useSSdata", "useSSinputs", "run_g", "run_g_clear", or "outgclass".} + +\item{rv}{Reactive values list for the GenEst GUI, created by +\code{\link{initialReactiveValues}}, which calls +\code{\link[shiny]{reactiveValues}}} + +\item{input}{\code{input} list for the GenEst GUI.} +} +\value{ +Updated \code{rv} list. +} +\description{ +When an event occurs in the GenEst GUI, the reactive values + need to be updated. This function contains all of the possible updates + based on the event options. +} diff --git a/man/update_rv_clear_all.Rd b/man/update_rv_clear_all.Rd deleted file mode 100644 index 47f4d8587adad7a37ff8027f878a9da59203481e..0000000000000000000000000000000000000000 --- a/man/update_rv_clear_all.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_rv_update_functions.R -\name{update_rv_clear_all} -\alias{update_rv_clear_all} -\title{Update the reactive value list when everything is cleared out} -\usage{ -update_rv_clear_all(rv, input) -} -\arguments{ -\item{rv}{reactive values list} - -\item{input}{input list} -} -\value{ -an updated reactive values list -} -\description{ -Update the rv list when everything is cleared -} diff --git a/man/update_rv_cols_CP_preds.Rd b/man/update_rv_cols_CP_preds.Rd deleted file mode 100644 index 1671b9e37a0ed9e070cb6870c089c28974ce4b95..0000000000000000000000000000000000000000 --- a/man/update_rv_cols_CP_preds.Rd +++ /dev/null @@ -1,20 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_rv_update_functions.R -\name{update_rv_cols_CP_preds} -\alias{update_rv_cols_CP_preds} -\title{Update the reactive value list when a CP predictor column is - selected} -\usage{ -update_rv_cols_CP_preds(rv, input) -} -\arguments{ -\item{rv}{reactive values list} - -\item{input}{input list} -} -\value{ -an updated reactive values list -} -\description{ -Update the rv list when a CP predictor column is selected -} diff --git a/man/update_rv_cols_SE_obs.Rd b/man/update_rv_cols_SE_obs.Rd deleted file mode 100644 index e9a87d6fee5345e6401fbcd901340a046a8ed192..0000000000000000000000000000000000000000 --- a/man/update_rv_cols_SE_obs.Rd +++ /dev/null @@ -1,20 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_rv_update_functions.R -\name{update_rv_cols_SE_obs} -\alias{update_rv_cols_SE_obs} -\title{Update the reactive value list when an SE observation column is - selected} -\usage{ -update_rv_cols_SE_obs(rv, input) -} -\arguments{ -\item{rv}{reactive values list} - -\item{input}{input list} -} -\value{ -an updated reactive values list -} -\description{ -Update the rv list when an SE observation column is selected -} diff --git a/man/update_rv_cols_SE_preds.Rd b/man/update_rv_cols_SE_preds.Rd deleted file mode 100644 index 7ddd856061276d1e98a0883403f1350fa26ca590..0000000000000000000000000000000000000000 --- a/man/update_rv_cols_SE_preds.Rd +++ /dev/null @@ -1,20 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_rv_update_functions.R -\name{update_rv_cols_SE_preds} -\alias{update_rv_cols_SE_preds} -\title{Update the reactive value list when an SE predictor column is - selected} -\usage{ -update_rv_cols_SE_preds(rv, input) -} -\arguments{ -\item{rv}{reactive values list} - -\item{input}{input list} -} -\value{ -an updated reactive values list -} -\description{ -Update the rv list when an SE predictor column is selected -} diff --git a/man/update_rv_cols_fta.Rd b/man/update_rv_cols_fta.Rd deleted file mode 100644 index d5fee5871cc1388ba40a1961082a1502fd6963ef..0000000000000000000000000000000000000000 --- a/man/update_rv_cols_fta.Rd +++ /dev/null @@ -1,21 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_rv_update_functions.R -\name{update_rv_cols_fta} -\alias{update_rv_cols_fta} -\title{Update the reactive value list when a CP First Time Absent column is - selected} -\usage{ -update_rv_cols_fta(rv, input) -} -\arguments{ -\item{rv}{reactive values list} - -\item{input}{input list} -} -\value{ -an updated reactive values list -} -\description{ -Update the rv list when a CP First Time Absent column is - selected -} diff --git a/man/update_rv_cols_ltp.Rd b/man/update_rv_cols_ltp.Rd deleted file mode 100644 index 9b0e6133b39a0044a07b65d06891185821461778..0000000000000000000000000000000000000000 --- a/man/update_rv_cols_ltp.Rd +++ /dev/null @@ -1,21 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_rv_update_functions.R -\name{update_rv_cols_ltp} -\alias{update_rv_cols_ltp} -\title{Update the reactive value list when a CP Last Time Present column is - selected} -\usage{ -update_rv_cols_ltp(rv, input) -} -\arguments{ -\item{rv}{reactive values list} - -\item{input}{input list} -} -\value{ -an updated reactive values list -} -\description{ -Update the rv list when a CP Last Time Present column is - selected -} diff --git a/man/update_rv_data_CO.Rd b/man/update_rv_data_CO.Rd deleted file mode 100644 index bfb8cf490e68d5f157356853ff7943a12ff1465b..0000000000000000000000000000000000000000 --- a/man/update_rv_data_CO.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_rv_update_functions.R -\name{update_rv_data_CO} -\alias{update_rv_data_CO} -\title{Update the reactive value list when CO data are read in} -\usage{ -update_rv_data_CO(rv, input) -} -\arguments{ -\item{rv}{reactive values list} - -\item{input}{input list} -} -\value{ -an updated reactive values list -} -\description{ -Update the rv list when the CO data file is input -} diff --git a/man/update_rv_data_CO_clear.Rd b/man/update_rv_data_CO_clear.Rd deleted file mode 100644 index cb5034e790d8fbbd552e87ee907fe92bfe88501f..0000000000000000000000000000000000000000 --- a/man/update_rv_data_CO_clear.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_rv_update_functions.R -\name{update_rv_data_CO_clear} -\alias{update_rv_data_CO_clear} -\title{Update the reactive value list when CO data are cleared out} -\usage{ -update_rv_data_CO_clear(rv, input) -} -\arguments{ -\item{rv}{reactive values list} - -\item{input}{input list} -} -\value{ -an updated reactive values list -} -\description{ -Update the rv list when the CO data file input is cleared -} diff --git a/man/update_rv_data_CP.Rd b/man/update_rv_data_CP.Rd deleted file mode 100644 index 29b9a942897640cf102c13721ac9673c32dea02f..0000000000000000000000000000000000000000 --- a/man/update_rv_data_CP.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_rv_update_functions.R -\name{update_rv_data_CP} -\alias{update_rv_data_CP} -\title{Update the reactive value list when CP data are read in} -\usage{ -update_rv_data_CP(rv, input) -} -\arguments{ -\item{rv}{reactive values list} - -\item{input}{input list} -} -\value{ -an updated reactive values list -} -\description{ -Update the rv list when the CP data file is input -} diff --git a/man/update_rv_data_CP_clear.Rd b/man/update_rv_data_CP_clear.Rd deleted file mode 100644 index 1c2ada4a363923e88571d40b47411353781c8efd..0000000000000000000000000000000000000000 --- a/man/update_rv_data_CP_clear.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_rv_update_functions.R -\name{update_rv_data_CP_clear} -\alias{update_rv_data_CP_clear} -\title{Update the reactive value list when CP data are cleared out} -\usage{ -update_rv_data_CP_clear(rv, input) -} -\arguments{ -\item{rv}{reactive values list} - -\item{input}{input list} -} -\value{ -an updated reactive values list -} -\description{ -Update the rv list when the CP data file input is cleared -} diff --git a/man/update_rv_data_DWP.Rd b/man/update_rv_data_DWP.Rd deleted file mode 100644 index f4c4dfe6f80c4d1a8a9eec83af5917ece8d3a4e9..0000000000000000000000000000000000000000 --- a/man/update_rv_data_DWP.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_rv_update_functions.R -\name{update_rv_data_DWP} -\alias{update_rv_data_DWP} -\title{Update the reactive value list when DWP data are read in} -\usage{ -update_rv_data_DWP(rv, input) -} -\arguments{ -\item{rv}{reactive values list} - -\item{input}{input list} -} -\value{ -an updated reactive values list -} -\description{ -Update the rv list when the DWP data file is input -} diff --git a/man/update_rv_data_DWP_clear.Rd b/man/update_rv_data_DWP_clear.Rd deleted file mode 100644 index a2fa90b33ba0ec8e1f5151f4bb66e49553854882..0000000000000000000000000000000000000000 --- a/man/update_rv_data_DWP_clear.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_rv_update_functions.R -\name{update_rv_data_DWP_clear} -\alias{update_rv_data_DWP_clear} -\title{Update the reactive value list when DWP data are cleared out} -\usage{ -update_rv_data_DWP_clear(rv, input) -} -\arguments{ -\item{rv}{reactive values list} - -\item{input}{input list} -} -\value{ -an updated reactive values list -} -\description{ -Update the rv list when the DWP data file input is cleared -} diff --git a/man/update_rv_data_SE.Rd b/man/update_rv_data_SE.Rd deleted file mode 100644 index 700e2a86fa9b2582952069c5fe77ac0ce9726eed..0000000000000000000000000000000000000000 --- a/man/update_rv_data_SE.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_rv_update_functions.R -\name{update_rv_data_SE} -\alias{update_rv_data_SE} -\title{Update the reactive value list when SE data are read in} -\usage{ -update_rv_data_SE(rv, input) -} -\arguments{ -\item{rv}{reactive values list} - -\item{input}{input list} -} -\value{ -an updated reactive values list -} -\description{ -Update the rv list when the SE data file is input -} diff --git a/man/update_rv_data_SE_clear.Rd b/man/update_rv_data_SE_clear.Rd deleted file mode 100644 index cc1eb9464d03acc8067a054ec245566c48888686..0000000000000000000000000000000000000000 --- a/man/update_rv_data_SE_clear.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_rv_update_functions.R -\name{update_rv_data_SE_clear} -\alias{update_rv_data_SE_clear} -\title{Update the reactive value list when SE data are cleared out} -\usage{ -update_rv_data_SE_clear(rv, input) -} -\arguments{ -\item{rv}{reactive values list} - -\item{input}{input list} -} -\value{ -an updated reactive values list -} -\description{ -Update the rv list when the SE data file input is cleared -} diff --git a/man/update_rv_data_SS.Rd b/man/update_rv_data_SS.Rd deleted file mode 100644 index 852ea6786752b40c163d2737889d481ed455086d..0000000000000000000000000000000000000000 --- a/man/update_rv_data_SS.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_rv_update_functions.R -\name{update_rv_data_SS} -\alias{update_rv_data_SS} -\title{Update the reactive value list when SS data are read in} -\usage{ -update_rv_data_SS(rv, input) -} -\arguments{ -\item{rv}{reactive values list} - -\item{input}{input list} -} -\value{ -an updated reactive values list -} -\description{ -Update the rv list when the SS data file is input -} diff --git a/man/update_rv_data_SS_clear.Rd b/man/update_rv_data_SS_clear.Rd deleted file mode 100644 index 13220dec1e1c6b3c6049c3d8b2e09ad5b40ed94c..0000000000000000000000000000000000000000 --- a/man/update_rv_data_SS_clear.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_rv_update_functions.R -\name{update_rv_data_SS_clear} -\alias{update_rv_data_SS_clear} -\title{Update the reactive value list when SS data are cleared out} -\usage{ -update_rv_data_SS_clear(rv, input) -} -\arguments{ -\item{rv}{reactive values list} - -\item{input}{input list} -} -\value{ -an updated reactive values list -} -\description{ -Update the rv list when the SS data file input is cleared -} diff --git a/man/update_rv_outdls_CP.Rd b/man/update_rv_outdls_CP.Rd deleted file mode 100644 index 9bbfdf229744d21f7d0772de5e2e1ce6cb7fdc6c..0000000000000000000000000000000000000000 --- a/man/update_rv_outdls_CP.Rd +++ /dev/null @@ -1,21 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_rv_update_functions.R -\name{update_rv_outdls_CP} -\alias{update_rv_outdls_CP} -\title{Update the CP reactive values when a distribution or l or s model - is chosen} -\usage{ -update_rv_outdls_CP(rv, input) -} -\arguments{ -\item{rv}{the reactive values list} - -\item{input}{the input list} -} -\value{ -an updated reactive values list -} -\description{ -Update the CP reactive values when a distribution or l or s - model is chosen -} diff --git a/man/update_rv_outpk_SE.Rd b/man/update_rv_outpk_SE.Rd deleted file mode 100644 index db12de321b347449b2c524a8927dd1cf5d4b295d..0000000000000000000000000000000000000000 --- a/man/update_rv_outpk_SE.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_rv_update_functions.R -\name{update_rv_outpk_SE} -\alias{update_rv_outpk_SE} -\title{Update the SE reactive values when a p or k model is chosen} -\usage{ -update_rv_outpk_SE(rv, input) -} -\arguments{ -\item{rv}{the reactive values list} - -\item{input}{the input list} -} -\value{ -an updated reactive values list -} -\description{ -Update the SE reactive values when a p or k model is chosen -} diff --git a/man/update_rv_outsc_CP.Rd b/man/update_rv_outsc_CP.Rd deleted file mode 100644 index 014503c68c59152a804f9fab209a4a3c18429d5b..0000000000000000000000000000000000000000 --- a/man/update_rv_outsc_CP.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_rv_update_functions.R -\name{update_rv_outsc_CP} -\alias{update_rv_outsc_CP} -\title{Update the SE reactive values when the size class is chosen} -\usage{ -update_rv_outsc_CP(rv, input) -} -\arguments{ -\item{rv}{the reactive values list} - -\item{input}{the input list} -} -\value{ -an updated reactive values list -} -\description{ -Update the SE reactive values when the size class is chosen -} diff --git a/man/update_rv_outsc_SE.Rd b/man/update_rv_outsc_SE.Rd deleted file mode 100644 index 6e1c8c503dc346484460db9b1b17f74bc84d692b..0000000000000000000000000000000000000000 --- a/man/update_rv_outsc_SE.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_rv_update_functions.R -\name{update_rv_outsc_SE} -\alias{update_rv_outsc_SE} -\title{Update the SE reactive values when the size class is chosen} -\usage{ -update_rv_outsc_SE(rv, input) -} -\arguments{ -\item{rv}{the reactive values list} - -\item{input}{the input list} -} -\value{ -an updated reactive values list -} -\description{ -Update the SE reactive values when the size class is chosen -} diff --git a/man/update_rv_outsc_g.Rd b/man/update_rv_outsc_g.Rd deleted file mode 100644 index a2432fcdfdf03c1b71f1a84f407d536a7a498e22..0000000000000000000000000000000000000000 --- a/man/update_rv_outsc_g.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_rv_update_functions.R -\name{update_rv_outsc_g} -\alias{update_rv_outsc_g} -\title{Update the g reactive values when the size class is chosen} -\usage{ -update_rv_outsc_g(rv, input) -} -\arguments{ -\item{rv}{the reactive values list} - -\item{input}{the input list} -} -\value{ -an updated reactive values list -} -\description{ -Update the g reactive values when the size class is chosen -} diff --git a/man/update_rv_run_CP.Rd b/man/update_rv_run_CP.Rd deleted file mode 100644 index f7ad07baafcdaf0f7b196482ddad730cd15c6246..0000000000000000000000000000000000000000 --- a/man/update_rv_run_CP.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_rv_update_functions.R -\name{update_rv_run_CP} -\alias{update_rv_run_CP} -\title{Run the CP Models} -\usage{ -update_rv_run_CP(rv, input) -} -\arguments{ -\item{rv}{the reactive values list} - -\item{input}{the input list} -} -\value{ -an updated reactive values list -} -\description{ -Use the inputs to run the CP models requested by the UI -} diff --git a/man/update_rv_run_CP_clear.Rd b/man/update_rv_run_CP_clear.Rd deleted file mode 100644 index d2e881f19cd2d3699dccbfef46a49e3c024c84a7..0000000000000000000000000000000000000000 --- a/man/update_rv_run_CP_clear.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_rv_update_functions.R -\name{update_rv_run_CP_clear} -\alias{update_rv_run_CP_clear} -\title{Update the reactive value list when CP model is cleared} -\usage{ -update_rv_run_CP_clear(rv, input) -} -\arguments{ -\item{rv}{reactive values list} - -\item{input}{input list} -} -\value{ -an updated reactive values list -} -\description{ -Update the rv list when the CP model is cleared -} diff --git a/man/update_rv_run_M.Rd b/man/update_rv_run_M.Rd deleted file mode 100644 index 228c0635574ce41c4a68634048f3bc57ab9323a5..0000000000000000000000000000000000000000 --- a/man/update_rv_run_M.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_rv_update_functions.R -\name{update_rv_run_M} -\alias{update_rv_run_M} -\title{Run the M Model} -\usage{ -update_rv_run_M(rv, input) -} -\arguments{ -\item{rv}{the reactive values list} - -\item{input}{the input list} -} -\value{ -an updated reactive values list -} -\description{ -Use the inputs to run the M model requested by the UI -} diff --git a/man/update_rv_run_M_clear.Rd b/man/update_rv_run_M_clear.Rd deleted file mode 100644 index cace2c1070b9fcfa5a2a80d509871157c04a7d2f..0000000000000000000000000000000000000000 --- a/man/update_rv_run_M_clear.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_rv_update_functions.R -\name{update_rv_run_M_clear} -\alias{update_rv_run_M_clear} -\title{Update the reactive value list when M model is cleared} -\usage{ -update_rv_run_M_clear(rv, input) -} -\arguments{ -\item{rv}{reactive values list} - -\item{input}{input list} -} -\value{ -an updated reactive values list -} -\description{ -Update the rv list when the M model is cleared -} diff --git a/man/update_rv_run_SE.Rd b/man/update_rv_run_SE.Rd deleted file mode 100644 index 1ba82808e68800515dc839578203344dcd36732b..0000000000000000000000000000000000000000 --- a/man/update_rv_run_SE.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_rv_update_functions.R -\name{update_rv_run_SE} -\alias{update_rv_run_SE} -\title{Run the SE Models} -\usage{ -update_rv_run_SE(rv, input) -} -\arguments{ -\item{rv}{the reactive values list} - -\item{input}{the input list} -} -\value{ -an updated reactive values list -} -\description{ -Use the inputs to run the SE models requested by the UI -} diff --git a/man/update_rv_run_SE_clear.Rd b/man/update_rv_run_SE_clear.Rd deleted file mode 100644 index 51c05a95e3767d6533bc3ecfa0644ecbee9236df..0000000000000000000000000000000000000000 --- a/man/update_rv_run_SE_clear.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_rv_update_functions.R -\name{update_rv_run_SE_clear} -\alias{update_rv_run_SE_clear} -\title{Update the reactive value list when SE model is cleared} -\usage{ -update_rv_run_SE_clear(rv, input) -} -\arguments{ -\item{rv}{reactive values list} - -\item{input}{input list} -} -\value{ -an updated reactive values list -} -\description{ -Update the rv list when the SE model is cleared -} diff --git a/man/update_rv_run_g.Rd b/man/update_rv_run_g.Rd deleted file mode 100644 index bedd36b470838a0401d99c37780a58e607b9580b..0000000000000000000000000000000000000000 --- a/man/update_rv_run_g.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_rv_update_functions.R -\name{update_rv_run_g} -\alias{update_rv_run_g} -\title{Run the g Model} -\usage{ -update_rv_run_g(rv, input) -} -\arguments{ -\item{rv}{the reactive values list} - -\item{input}{the input list} -} -\value{ -an updated reactive values list -} -\description{ -Use the inputs to run the g model requested by the UI -} diff --git a/man/update_rv_run_g_clear.Rd b/man/update_rv_run_g_clear.Rd deleted file mode 100644 index 3a926a9e7657791332373fda6f1b6ab54d3e127b..0000000000000000000000000000000000000000 --- a/man/update_rv_run_g_clear.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_rv_update_functions.R -\name{update_rv_run_g_clear} -\alias{update_rv_run_g_clear} -\title{Update the reactive value list when g model is cleared} -\usage{ -update_rv_run_g_clear(rv, input) -} -\arguments{ -\item{rv}{reactive values list} - -\item{input}{input list} -} -\value{ -an updated reactive values list -} -\description{ -Update the rv list when the g model is cleared -} diff --git a/man/update_rv_sizeCol.Rd b/man/update_rv_sizeCol.Rd deleted file mode 100644 index e4e05ac9674aba78c233e7396aedd3de63c67ee7..0000000000000000000000000000000000000000 --- a/man/update_rv_sizeCol.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_rv_update_functions.R -\name{update_rv_sizeCol} -\alias{update_rv_sizeCol} -\title{Update the reactive value list when a size class column is selected} -\usage{ -update_rv_sizeCol(rv, input) -} -\arguments{ -\item{rv}{reactive values list} - -\item{input}{input list} -} -\value{ -an updated reactive values list -} -\description{ -Update the rv list when the size class column is selected -} diff --git a/man/update_rv_split_M.Rd b/man/update_rv_split_M.Rd deleted file mode 100644 index 415854b5c7c2f5fca6f0af862fa357dc7938d494..0000000000000000000000000000000000000000 --- a/man/update_rv_split_M.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_rv_update_functions.R -\name{update_rv_split_M} -\alias{update_rv_split_M} -\title{Update the M reactive values when M is split} -\usage{ -update_rv_split_M(rv, input) -} -\arguments{ -\item{rv}{the reactive values list} - -\item{input}{the input list} -} -\value{ -an updated reactive values list -} -\description{ -Update the M reactive values when M is split -} diff --git a/man/update_rv_split_M_clear.Rd b/man/update_rv_split_M_clear.Rd deleted file mode 100644 index cb9e8627fa3b9269a915c440ca0faad8f2d77738..0000000000000000000000000000000000000000 --- a/man/update_rv_split_M_clear.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_rv_update_functions.R -\name{update_rv_split_M_clear} -\alias{update_rv_split_M_clear} -\title{Update the reactive value list when M split is cleared} -\usage{ -update_rv_split_M_clear(rv, input) -} -\arguments{ -\item{rv}{reactive values list} - -\item{input}{input list} -} -\value{ -an updated reactive values list -} -\description{ -Update the rv list when the M split is cleared -} diff --git a/man/update_rv_transpose_split.Rd b/man/update_rv_transpose_split.Rd deleted file mode 100644 index 4bbcc47f378cbb8174498d761d5cdf76845192cc..0000000000000000000000000000000000000000 --- a/man/update_rv_transpose_split.Rd +++ /dev/null @@ -1,17 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_rv_update_functions.R -\name{update_rv_transpose_split} -\alias{update_rv_transpose_split} -\title{Update the M reactive values when M split is transposed} -\usage{ -update_rv_transpose_split(rv) -} -\arguments{ -\item{rv}{the reactive values list} -} -\value{ -an updated reactive values list -} -\description{ -Update the M reactive values when M split is transposed -} diff --git a/man/update_rv_useSSdata.Rd b/man/update_rv_useSSdata.Rd deleted file mode 100644 index 6fed2075c6c44dd25be3d79b71259701bd4284f7..0000000000000000000000000000000000000000 --- a/man/update_rv_useSSdata.Rd +++ /dev/null @@ -1,17 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_rv_update_functions.R -\name{update_rv_useSSdata} -\alias{update_rv_useSSdata} -\title{Update the SS reactive values when the SS are chosen} -\usage{ -update_rv_useSSdata(rv) -} -\arguments{ -\item{rv}{the reactive values list} -} -\value{ -an updated reactive values list -} -\description{ -Update the SS reactive values when the SS are chosen -} diff --git a/man/update_rv_useSSinputs.Rd b/man/update_rv_useSSinputs.Rd deleted file mode 100644 index 1fabf716140cf6666c0d3b69fef9fac5fd6a20a2..0000000000000000000000000000000000000000 --- a/man/update_rv_useSSinputs.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_rv_update_functions.R -\name{update_rv_useSSinputs} -\alias{update_rv_useSSinputs} -\title{Update the SS reactive values when the average SS is chosen} -\usage{ -update_rv_useSSinputs(rv, input) -} -\arguments{ -\item{rv}{the reactive values list} - -\item{input}{the input list} -} -\value{ -an updated reactive values list -} -\description{ -Update the SS reactive values when the average SS is chosen -} diff --git a/man/updatesizeCol.Rd b/man/updatesizeCol.Rd index d205ffc22d046731d36774ac80f7ec02820def85..2118bd5224470a318adf6946ae144b1295b173e8 100644 --- a/man/updatesizeCol.Rd +++ b/man/updatesizeCol.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/app_utility_functions.R +% Please edit documentation in R/app_utilities.R \name{updatesizeCol} \alias{updatesizeCol} \title{Update the name of the size class column based on available names} diff --git a/src-i386/GenEst.dll b/src-i386/GenEst.dll index ec580ab67777fb4a440c356f017680c4bffe734c..c95fc8cac975c4a4224e785717b4363b222612d1 100644 Binary files a/src-i386/GenEst.dll and b/src-i386/GenEst.dll differ diff --git a/src-x64/GenEst.dll b/src-x64/GenEst.dll index 4cf1176f3dc6e37bc39283898f8c8e88fe1d521a..9409efa3318013b769df6424940fa048697b6986 100644 Binary files a/src-x64/GenEst.dll and b/src-x64/GenEst.dll differ diff --git a/tests/testthat/test-02-GUI-UI.R b/tests/testthat/test-02-GUI-UI.R index dc4bbeac326476c1d59d8827c1d8fb270ab23a11..21063b5ed6f685b6316d16a889e0eb4d249b5058 100644 --- a/tests/testthat/test-02-GUI-UI.R +++ b/tests/testthat/test-02-GUI-UI.R @@ -61,13 +61,13 @@ test_that("Standard widget functions produce HTML", { expect_error(dataDownloadWidget("_NOT_RIGHT_")) expect_is(modelInputWidget("nsim"), "shiny.tag") expect_is(modelInputWidget("CL"), "shiny.tag") - expect_is(modelInputWidget("sizeCol"), "shiny.tag") - expect_is(modelInputWidget("obsCols_SE"), "shiny.tag") - expect_is(modelInputWidget("preds_SE"), "shiny.tag") + expect_is(modelInputWidget("class"), "shiny.tag") + expect_is(modelInputWidget("obsSE"), "shiny.tag") + expect_is(modelInputWidget("predsSE"), "shiny.tag") expect_is(modelInputWidget("kFixedInput"), "shiny.tag") expect_is(modelInputWidget("ltp"), "shiny.tag") expect_is(modelInputWidget("fta"), "shiny.tag") - expect_is(modelInputWidget("preds_CP"), "shiny.tag") + expect_is(modelInputWidget("predsCP"), "shiny.tag") expect_is(modelInputWidget("dist"), "shiny.tag") expect_is(modelInputWidget("frac"), "shiny.tag") expect_is(modelInputWidget("DWPCol"), "shiny.tag") @@ -273,12 +273,3 @@ test_that("Button style function produces a single character element", { expect_equal(length(cButtonStyle("all")), 1) expect_error(cButtonStyle("_NOT_RIGHT_")) }) - -test_that("FTP link function produces a single character element", { - expect_is(ftpLink("UserGuide"), "character") - expect_equal(length(ftpLink("UserGuide")), 1) - expect_is(ftpLink("Models"), "character") - expect_equal(length(ftpLink("Models")), 1) - expect_error(ftpLink("_NOT_RIGHT_")) -}) - diff --git a/vignettes/.build.timestamp b/vignettes/.build.timestamp new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/vignettes/GenEstGUI.R b/vignettes/GenEstGUI.R new file mode 100644 index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc --- /dev/null +++ b/vignettes/GenEstGUI.R @@ -0,0 +1 @@ + diff --git a/vignettes/GenEstGUI.Rmd b/vignettes/GenEstGUI.Rmd index 69fad63a1500bea88c90318b4f2c65998bba9b7e..7e62053c279d45912b3ddf7abc74ebdef3350052 100644 --- a/vignettes/GenEstGUI.Rmd +++ b/vignettes/GenEstGUI.Rmd @@ -21,6 +21,19 @@ as well as a number of internal functions to facilitate a simple, human-readable codebase underlying the app. The goal being to allow GenEst to evolve as fluidly as possible at the user interface. +# Execution + +The GUI is executed locally or as a deployed app following the basic approach +of shiny applications. For ease of implementation, we have created an overall +function to intialize the app, `runGenEst()`, which calls both the server and +UI codebases. Like most vintage Shiny apps, we employee the two-file system, +including a `ui.R` and `server.R` script, although each script is Spartan. The +`ui.R` script includes a single call to the `GenEstUI(appType)` function, +which starts the cascade of HTML-generating functions outlined in +**UI Function Hierarchy**. The `server.R` script includes a single reference +(not a call) to the function `GenEstServer`, which is detailed in +**Server Function Hierarchy**. + # User Interface ### UI Function Hierarchy @@ -51,8 +64,8 @@ to facilitate readability and mobility of specific UI components. * `modelInputWidget("sizeclassCol")` * `SEPanel()` * `SESidebar()` - * `modelInputWidget("obsCols_SE")` - * `modelInputWidget("preds_SE")` + * `modelInputWidget("obsSE")` + * `modelInputWidget("predsSE")` * `modelInputWidget("kFixed")` * `modelRunWidget("SE")` * `modelOutputWidget("SE")` @@ -66,7 +79,7 @@ to facilitate readability and mobility of specific UI components. * `CPSidebar()` * `modelInputWidget("ltp")` * `modelInputWidget("fta")` - * `modelInputWidget("preds_CP")` + * `modelInputWidget("predsCP")` * `modelInputWidget("dists")` * `modelRunWidget("CP")` * `modelOutputWidget("CP")` @@ -78,7 +91,6 @@ to facilitate readability and mobility of specific UI components. * `modelOutputPanel("CPModSelection")` * `MPanel()` * `MSidebar()` - * `modelInputWidget("kFill")` * `modelInputWidget("frac")` * `modelInputWidget("DWPCol")` * `modelInputWidget("dateFoundCol")` @@ -87,7 +99,6 @@ to facilitate readability and mobility of specific UI components. * `MMainPanel()` * `gPanel()` * `gSidebar()` - * `modelInputWidget("kFill_g")` * `modelInputWidget("gSearchInterval")` * `modelInputWidget("gSearchMax")` * `modelInputWidget("useSSinputs")` @@ -169,9 +180,108 @@ dictate content within the "Help" tab's subtabs. * `disclaimerUSGS()` * `disclaimerWEST(appType)` -# Execution +# Server Functionality -The GUI is executed locally or as a deployed app following the basic approach -of shiny applications. For ease of implementation, we have created an overall -function to intialize the app, `runGenEst()`, which calls both the server and -UI codebases. \ No newline at end of file +### Reactivity + +The server-side functionality operates using [Shiny's reactive +programming](https://shiny.rstudio.com/articles/reactivity-overview.html) +framework. In particular, we include a main `reactiveValues` list called +`rv`, that, in addition to the standard `input` and `output` lists is +passed among functions throughout the app. The `rv` list holds all of the +reactive values currently being used by the application. + +### Server Function Hierarchy + +The GenEst server code is a relatively flat hierarchy, especially in +comparison to the UI code. In particular, after a brief set of preamble +functions for preparing objects and options, `GenEstServer` makes many calls +to `observeEvent`, the reactive observation function, one call for each +of the possible events in the application (data load, model run or clear, +column selection, clear of contents). Each call also includes an +evaluation of the held-back "handler" code for the event returned by +the function `reaction`, with the handler being the code that +is to be evaluated when the event is observed. The expression is held-back +in `reaction` to minimize scoping issues associated with message-related +functions. + +* `GenEstServer(input, output, session)` + * `rv <- initialReactiveValues()` + * `output <- initialOutput(rv, output)` + * `msgs <- msgList()` + * `options(htmlwidgets.TOJSON_ARGS = list(na = 'string'))` + * `observeEvent(DT.options = list(pageLength = 25))` + * `observeEvent(input$clear_all, eval(reaction("clear_all")))` + * `observeEvent(input$file_SE, eval(reaction("file_SE")))` + * `observeEvent(input$file_SE_clear, eval(reaction("file_SE_clear")))` + * `observeEvent(input$file_CP, eval(reaction("file_CP")))` + * `observeEvent(input$file_CP_clear, eval(reaction("file_CP_clear")))` + * `observeEvent(input$file_SS, eval(reaction("file_SS")))` + * `observeEvent(input$file_SS_clear, eval(reaction("file_SS_clear")))` + * `observeEvent(input$file_DWP, eval(reaction("file_DWP")))` + * `observeEvent(input$file_DWP_clear, eval(reaction("file_DWP_clear")))` + * `observeEvent(input$file_CO, eval(reaction("file_CO")))` + * `observeEvent(input$file_CO_clear, eval(reaction("file_CO_clear")))` + + * `observeEvent(input$class, eval(reaction("class")), ignoreNULL = FALSE)` + + * `observeEvent(input$obsSE, eval(reaction("obsSE")), ignoreNULL = FALSE)` + * `observeEvent(input$predsSE, eval(reaction("predsSE")), ignoreNULL = FALSE)` + * `observeEvent(input$run_SE, eval(reaction("run_SE")))` + * `observeEvent(input$run_SE_clear, eval(reaction("run_SE_clear")))` + * `observeEvent(input$outSEclass, eval(reaction("outSEclass")))` + * `observeEvent(input$outSEp, eval(reaction("outSEp")))` + * `observeEvent(input$outSEk, eval(reaction("outSEk")))` + + * `observeEvent(input$ltp, eval(reaction("ltp")), ignoreNULL = FALSE)` + * `observeEvent(input$fta, eval(reaction("fta")), ignoreNULL = FALSE)` + * `observeEvent(input$predsCP, eval(reaction("predsCP")), ignoreNULL = FALSE)` + * `observeEvent(input$run_CP, eval(reaction("run_CP")))` + * `observeEvent(input$run_CP_clear, eval(reaction("run_CP_clear")))` + * `observeEvent(input$outCPclass, eval(reaction("outCPclass")))` + * `observeEvent(input$outCPdist, eval(reaction("outCPdist")))` + * `observeEvent(input$outCPl, eval(reaction("outCPl")))` + * `observeEvent(input$outCPs, eval(reaction("outCPs")))` + + * `observeEvent(input$run_M, eval(reaction("run_M")))` + * `observeEvent(input$run_M_clear, eval(reaction("run_M_clear")))` + * `observeEvent(input$split_M, eval(reaction("split_M")))` + * `observeEvent(input$split_M_clear, eval(reaction("split_M_clear")))` + * `observeEvent(input$transpose_split, eval(reaction("transpose_split")))` + + * `observeEvent(input$useSSdata, eval(reaction("useSSdata")))` + * `observeEvent(input$useSSinputs, eval(reaction("useSSinputs")))` + * `observeEvent(input$run_g, eval(reaction("run_g")))` + * `observeEvent(input$run_g_clear, eval(reaction("run_g_clear")))` + * `observeEvent(input$outgclass, eval(reaction("outgclass")))` + +The `reaction` function is, essentially, a parsed-text-generating +function. Depending upon the specific event (`eventName`, the only input), the +necessary set of function calls (messages for running, running the code, +messages for when done) is prepared for evaluation. The main function used to +do things within the handler code (when the event occurs) is `eventReaction`, +which calls three functions: `update_rv`, `update_output`, and `update_input`, +in that order (updating the output depends on the rv being updated already +and updating the input requires both the rv and output to be up-to-date): + +* `eventReaction(eventName, rv, input, output, session)` + * `update_rv(eventName, rv, input)` + * `update_output(eventName, rv, output)` + * `update_input(eventName, rv, input, session)` + +Because of the scoping set-up for Shiny apps, there is no need to assign +the returned elements for `update_rv` and `update_output` to anything, and +`update_input` works through `session` to direct its updates to the +application. + +Each of the three functions takes `eventName` as the first argument, +which is used to toggle amongst the possible actions to be taken with +respect to each of the lists. That is, each of the three `update_` functions +contains a large internal set of routines, and only the relevant ones are +called for a given function. This occurs via simple conditional code blocks +("if the eventType is this, do this") for each of the possible events, +thereby reducing the number of specific functions, but increasing the size +of the key functions. Within each of the three functions, some of the events +trigger a substantial amount of code while others only trigger a few (or no) +lines. Similarly, some of the handler expressions take virutally no time to +run, while others take a few minutes. \ No newline at end of file diff --git a/vignettes/command-line-example.R b/vignettes/command-line-example.R new file mode 100644 index 0000000000000000000000000000000000000000..ffed663f44983618ce2d89264e2fdf120738138d --- /dev/null +++ b/vignettes/command-line-example.R @@ -0,0 +1,208 @@ +## ----setup, include=FALSE------------------------------------------------ +knitr::opts_chunk$set( + collapse = TRUE, + comment = "#>" +) + +## ---- include=FALSE------------------------------------------------------ +library(GenEst) +vers <- packageVersion("GenEst") +today <- Sys.Date() + +## ------------------------------------------------------------------------ +data(mock) +names(mock) + +## ------------------------------------------------------------------------ +data_SE <- mock$SE +pkModel <- pkm(formula_p = p ~ 1, formula_k = k ~ 1, data = data_SE) + +## ------------------------------------------------------------------------ +head(data_SE) + +## ------------------------------------------------------------------------ +pkModel <- pkm(formula_p = p ~ 1, formula_k = k ~ 1, data = data_SE, + obsCol = c("Search1", "Search2", "Search3", "Search4") + ) + +## ------------------------------------------------------------------------ +pkModel + +## ------------------------------------------------------------------------ +names(pkModel) +pkModel$cells + +## ---- fig.show = "hold", fig.width = 7, fig.height = 7, fig.align = 'center'---- +plot(pkModel) + +## ------------------------------------------------------------------------ +rpk(n = 10, pkModel) + +## ------------------------------------------------------------------------ +pkm(formula_p = p ~ Visibility, formula_k = k ~ HabitatType, data = data_SE, + obsCol = c("Search1", "Search2", "Search3", "Search4") +) + +## ------------------------------------------------------------------------ +pkm(formula_p = p ~ Visibility, kFixed = 0.7, data = data_SE, + obsCol = c("Search1", "Search2", "Search3", "Search4")) + +## ------------------------------------------------------------------------ +pkmModSet <- pkm(formula_p = p ~ Visibility*HabitatType, + formula_k = k ~ HabitatType, data = data_SE, + obsCol = c("Search1", "Search2", "Search3", "Search4"), + allCombos = TRUE + ) +class(pkmModSet) +names(pkmModSet) + +## ---- eval = F, fig.show = "hold", fig.width = 7, fig.height = 7, fig.align = 'center'---- +# plot(pkmModSet, specificModel = "p ~ Visibility + HabitatType; k ~ 1") + +## ------------------------------------------------------------------------ +aicc(pkmModSet) + +## ------------------------------------------------------------------------ +pkmModSetSize <- pkm(formula_p = p ~ Visibility*HabitatType, + formula_k = k ~ HabitatType, data = data_SE, + obsCol = c("Search1", "Search2", "Search3", "Search4"), + sizeCol = "Size", allCombos = TRUE) +class(pkmModSetSize) + +## ------------------------------------------------------------------------ +names(pkmModSetSize) +names(pkmModSetSize[[1]]) + +## ------------------------------------------------------------------------ +data_CP <- mock$CP +cpModel <- cpm(formula_l = l ~ 1, formula_s = s ~ 1, data = data_CP, + left = "LastPresentDecimalDays", + right = "FirstAbsentDecimalDays", dist = "weibull" + ) + +## ------------------------------------------------------------------------ +cpModel + +## ------------------------------------------------------------------------ +names(cpModel) +cpModel$cells + +## ---- fig.show = "hold", fig.width = 6, fig.height = 6, fig.align = 'center'---- +plot(cpModel) + +## ------------------------------------------------------------------------ +rcp(n = 10, cpModel) +rcp(n = 10, cpModel, type = "ppersist") + +## ------------------------------------------------------------------------ +cpm(formula_l = l ~ Visibility * GroundCover, formula_s = s ~ 1, data = data_CP, + left = "LastPresentDecimalDays", right = "FirstAbsentDecimalDays", + dist = "weibull" +) + +## ------------------------------------------------------------------------ +cpModExp <- cpm(formula_l = l ~ Visibility * GroundCover, data = data_CP, + left = "LastPresentDecimalDays", + right = "FirstAbsentDecimalDays", dist = "exponential" + ) + +## ------------------------------------------------------------------------ +cpmModSet <- cpm(formula_l = l ~ Visibility * Season, + formula_s = s ~ Visibility, data = data_CP, + left = "LastPresentDecimalDays", + right = "FirstAbsentDecimalDays", + dist = c("exponential", "lognormal"), allCombos = TRUE + ) +class(cpmModSet) +names(cpmModSet) + +## ------------------------------------------------------------------------ +aicc(cpmModSet) + +## ---- fig.show = "hold", fig.width = 7, fig.height = 7, fig.align = 'center'---- +plot(cpmModSet, + specificModel = "dist: lognormal; l ~ Visibility * Season; s ~ Visibility" +) + +## ------------------------------------------------------------------------ +cpmModSetSize <- cpm(formula_l = l ~ Visibility * Season, + formula_s = s ~ Visibility, data = data_CP, + left = "LastPresentDecimalDays", + right = "FirstAbsentDecimalDays", + dist = c("exponential", "lognormal"), + sizeCol = "Size", allCombos = TRUE) +class(cpmModSetSize) + +## ------------------------------------------------------------------------ +names(cpmModSetSize) +names(cpmModSetSize[[1]]) +class(cpmModSetSize[[1]]) + +## ------------------------------------------------------------------------ +pkMods <- c("S" = "p ~ 1; k ~ 1", "L" = "p ~ 1; k ~ 1", + "M" = "p ~ 1; k ~ 1", "XL" = "p ~ 1; k ~ HabitatType" + ) +cpMods <- c("S" = "dist: exponential; l ~ Season; NULL", + "L" = "dist: exponential; l ~ 1; NULL", + "M" = "dist: exponential; l ~ 1; NULL", + "XL" = "dist: exponential; l ~ 1; NULL" + ) + +## ------------------------------------------------------------------------ +data_SS <- mock$SS +avgSS <- averageSS(data_SS) + +gsGeneric <- estgGenericSize(nsim = 1000, days = avgSS, + modelSetSize_SE = pkmModSetSize, + modelSetSize_CP = cpmModSetSize, + modelSizeSelections_SE = pkMods, + modelSizeSelections_CP = cpMods + ) + +## ------------------------------------------------------------------------ +summary(gsGeneric) + +## ---- fig.show = "hold", fig.width = 4, fig.height = 14, fig.align = 'center'---- +plot(gsGeneric) + +## ------------------------------------------------------------------------ +pkmModSize <- trimSetSize(pkmModSetSize, pkMods) +cpmModSize <- trimSetSize(cpmModSetSize, cpMods) + +## ------------------------------------------------------------------------ +data_CO <- mock$CO +data_DWP <- mock$DWP +head(data_DWP) +DWPcolnames <- names(pkmModSize) + +eM <- estM(data_CO = data_CO, data_SS = data_SS, data_DWP = data_DWP, + frac = 1, model_SE = pkmModSize, model_CP = cpmModSize, + seed_SE = NULL, seed_CP = NULL, seed_g = NULL, seed_M = NULL, + unitCol = "Unit", COdate = "DateFound", + SSdate = "DateSearched", sizeCol = "Size", nsim = 1000) + +## ---- fig.show = "hold", fig.width = 6, fig.height = 6, fig.align = 'center'---- +summary(eM) +plot(eM) + +## ---- fig.show = "hold", fig.width = 4, fig.height = 6, fig.align = 'center'---- +M_season <- calcSplits(M = eM, split_SS = "Construction", + split_CO = NULL, data_SS = data_SS, data_CO = data_CO + ) +summary(M_season) +plot(M_season) + +## ---- fig.show = "hold", fig.width = 4, fig.height = 6, fig.align = 'center'---- +M_class <- calcSplits(M = eM, split_SS = NULL, + split_CO = "Split", data_SS = data_SS, data_CO = data_CO + ) +summary(M_class) +plot(M_class) + +## ---- fig.show = "hold", fig.width = 4, fig.height = 8, fig.align = 'center'---- +M_SbyC <- calcSplits(M = eM, split_SS = "Construction", + split_CO = "Split", data_SS = data_SS, data_CO = data_CO + ) +summary(M_SbyC) +plot(M_SbyC) + diff --git a/vignettes/solar-examples.R b/vignettes/solar-examples.R index d6a654cd2c111e68643941d87cec9f8627a6c4d9..0d984b2492647085b0150b8e8b3b86cb3c572dd0 100644 --- a/vignettes/solar-examples.R +++ b/vignettes/solar-examples.R @@ -1,118 +1,193 @@ -## ----setup, include = FALSE---------------------------------------------- -knitr::opts_chunk$set( - collapse = TRUE, - comment = "#>" -) - -rm(list = ls()) - -library(GenEst) -vers <- packageVersion("GenEst") -today <- Sys.Date() -set.seed(951) - -## ------------------------------------------------------------------------ -data(solar_PV) -names(solar_PV) - -## ----pk data------------------------------------------------------------- -data_SE <- solar_PV$SE -head(data_SE) - -## ----pk one model-------------------------------------------------------- -SE_model <- pkm(p ~ 1, k ~ 1, data = data_SE) -SE_model - - -## ----pk two models------------------------------------------------------- -SE_model_set <- pkm(p~Season, k~1, data = data_SE, allCombos = TRUE) -class(SE_model_set) -length(SE_model_set) -names(SE_model_set) -class(SE_model_set[[1]]) - -## ----pk set AICc--------------------------------------------------------- -aicc(SE_model_set) - -## ----pk size set--------------------------------------------------------- -SE_size_model <- pkm(p ~ Season, - k ~ 1, - sizeCol = "Size", - data = data_SE) -class(SE_size_model) -names(SE_size_model) # A list is created with a model set per size class. -class(SE_size_model$small) -names(SE_size_model$small) # Each model set contains one model in this case. - - -## ------------------------------------------------------------------------ -SE_size_model_set <- pkm(p ~ Season, - k ~ 1, - sizeCol = "Size", - data = data_SE, allCombos = TRUE) -aicc(SE_size_model_set) -SE_models <- list() - -## ------------------------------------------------------------------------ -SE_models$small <- SE_size_model_set$small[[2]] - -## ----pk size Medium------------------------------------------------------ -SE_models$med <- SE_size_model_set$med[[2]] - -## ----pk Size Large------------------------------------------------------- -SE_models$lrg <- SE_size_model_set$lrg[[1]] - -## ----cp data------------------------------------------------------------- -data_CP <- solar_PV$CP -head(data_CP) - -## ----cp------------------------------------------------------------------ -cpm(l ~ Season, s ~ 1, data = data_CP, - left = "LastPresent", - right = "FirstAbsent", - dist = "weibull") - -## ----cp set-------------------------------------------------------------- - CP_weibull_set <- cpm(l ~ Season, s ~ 1, data = data_CP, - left = "LastPresent", - right = "FirstAbsent", - dist = "weibull", allCombos = TRUE) -class(CP_weibull_set) -aicc(CP_weibull_set) - -## ----cp Size Set--------------------------------------------------------- -CP_size_model_set <- cpm(formula_l = l ~ Season, - formula_s = s ~ 1, - left = "LastPresent", - right = "FirstAbsent", - dist = c("exponential", "weibull"), - sizeCol = "Size", - data = data_CP, allCombos = TRUE) -class(CP_size_model_set) -names(CP_size_model_set) -class(CP_size_model_set$small) -length(CP_size_model_set$small) -names(CP_size_model_set$small) - -## ----cp Size Small------------------------------------------------------- -aicc(CP_size_model_set) -CP_models <- list() - -## ----cp size Medium------------------------------------------------------ -CP_models$med <- CP_size_model_set$med[[4]] - -## ----Size Large---------------------------------------------------------- -CP_models$lrg <- CP_size_model_set$lrg[[2]] - -## ----Load CO SS and DWP-------------------------------------------------- -data_CO <- solar_PV$CO -head(data_CO) - -## ----SS Data------------------------------------------------------------- -data_SS <- solar_PV$SS -data_SS[1:5 , 1:10] - -## ----DWP data------------------------------------------------------------ -data_DWP <- solar_PV$DWP -head(data_DWP) - +## ----setup, include = FALSE---------------------------------------------- +knitr::opts_chunk$set( + collapse = TRUE, + comment = "#>" +) + +rm(list = ls()) + +library(GenEst) +vers <- packageVersion("GenEst") +today <- Sys.Date() +set.seed(951) + +## ------------------------------------------------------------------------ +data(solar_PV) +names(solar_PV) + +## ----pk data------------------------------------------------------------- +data_SE <- solar_PV$SE +head(data_SE) + +## ----pk one model-------------------------------------------------------- +SE_model <- pkm(p ~ 1, k ~ 1, data = data_SE) +SE_model + + +## ----pk two models------------------------------------------------------- +SE_model_set <- pkm(p~Season, k~1, data = data_SE, allCombos = TRUE) +class(SE_model_set) +length(SE_model_set) +names(SE_model_set) +class(SE_model_set[[1]]) + +## ----pk set AICc--------------------------------------------------------- +aicc(SE_model_set) + +## ----pk size set--------------------------------------------------------- +SE_size_model <- pkm(p ~ Season, + k ~ 1, + sizeCol = "Size", + data = data_SE) +class(SE_size_model) +names(SE_size_model) # A list is created with a model set per size class. +class(SE_size_model$small) +names(SE_size_model$small) # Each model set contains one model in this case. + + +## ------------------------------------------------------------------------ +SE_size_model_set <- pkm(p ~ Season, + k ~ 1, + sizeCol = "Size", + data = data_SE, allCombos = TRUE) +aicc(SE_size_model_set) +SE_models <- list() + +## ------------------------------------------------------------------------ +SE_models$small <- SE_size_model_set$small[[2]] + +## ----pk size Medium------------------------------------------------------ +SE_models$med <- SE_size_model_set$med[[2]] + +## ----pk Size Large------------------------------------------------------- +SE_models$lrg <- SE_size_model_set$lrg[[1]] + +## ----cp data------------------------------------------------------------- +data_CP <- solar_PV$CP +head(data_CP) + +## ----cp------------------------------------------------------------------ +cpm(l ~ Season, s ~ 1, data = data_CP, + left = "LastPresent", + right = "FirstAbsent", + dist = "weibull") + +## ----cp set-------------------------------------------------------------- + CP_weibull_set <- cpm(l ~ Season, s ~ 1, data = data_CP, + left = "LastPresent", + right = "FirstAbsent", + dist = "weibull", allCombos = TRUE) +class(CP_weibull_set) +aicc(CP_weibull_set) + +## ----cp Size Set--------------------------------------------------------- +CP_size_model_set <- cpm(formula_l = l ~ Season, + formula_s = s ~ 1, + left = "LastPresent", + right = "FirstAbsent", + dist = c("exponential", "weibull"), + sizeCol = "Size", + data = data_CP, allCombos = TRUE) +class(CP_size_model_set) +names(CP_size_model_set) +class(CP_size_model_set$small) +length(CP_size_model_set$small) +names(CP_size_model_set$small) + +## ------------------------------------------------------------------------ +aicc(CP_size_model_set) +CP_models <- list() + +## ----cp Size Small------------------------------------------------------- +CP_models$small <- CP_size_model_set$small[[4]] + +## ----cp size Medium------------------------------------------------------ +CP_models$med <- CP_size_model_set$med[[4]] + +## ----Size Large---------------------------------------------------------- +CP_models$lrg <- CP_size_model_set$lrg[[2]] + +## ----Load CO SS and DWP-------------------------------------------------- +data_CO <- solar_PV$CO +head(data_CO) + +## ----SS Data------------------------------------------------------------- +data_SS <- solar_PV$SS +data_SS[1:5 , 1:10] + +## ----DWP data------------------------------------------------------------ +data_DWP <- solar_PV$DWP +head(data_DWP) + +## ----Arrival Times, options---------------------------------------------- + Mest <- estM( + nsim = 100, frac = 1, + data_CO = data_CO, data_SS = data_SS, data_DWP = data_DWP, + model_SE = SE_models, model_CP = CP_models, + unitCol = "Unit", sizeCol = "Size", + COdate = "DateFound", SSdate = "DateSearched" + ) + +## ---- fig.show = "hold", fig.height = 4, fig.width = 6, fig.align = 'center'---- +plot(Mest) + +## ----Summary - Season---------------------------------------------------- +unique(data_SS[, "Season"]) + +M_season <- calcSplits(M = Mest, + split_SS = "Season", data_SS = data_SS, + split_CO = NULL, data_CO = data_CO +) + +## ----splitFull plot, fig.height = 4, fig.width = 4, fig.align = 'center'---- +plot(M_season) + +## ----SplitFull Summary--------------------------------------------------- +summary(M_season, CL = 0.95) + +## ----Summary - Weekly---------------------------------------------------- + +SSdat <- prepSS(data_SS) # Creates an object of type prepSS. +schedule <- seq(from = 0, to = max(SSdat$days), by = 7) +tail(schedule) + +## ----Summary - Weekly Part 2, fig.height = 4, fig.width = 7, fig.align = 'center'---- +M_week <- calcSplits(M = Mest, + split_time = schedule, + data_SS = SSdat, + data_CO = data_CO +) +plot(x = M_week, rate = TRUE) + + +## ----Summary - Unit, fig.height = 4, fig.width = 7, fig.align = 'center'---- + +M_unit <- calcSplits(M = Mest, + split_CO = "Unit", + data_CO = data_CO, + data_SS = data_SS +) +plot(M_unit, rate = FALSE) + +## ----individual unit summary--------------------------------------------- +dim(summary(M_unit)) # only 164 arrays had observations. + +# A list of the arrays without observed carcasses: +setdiff(paste0("Unit", 1:300), data_CO$Unit) + +# Create summaries for arrays Unit12 and Unit100. +whichRow <- rownames(summary(M_unit)) %in% c("Unit12", "Unit100") +summary(M_unit)[whichRow, ] + + +## ----Summary - season and species, fig.height = 5, fig.width = 3, fig.align = 'center'---- + +M_unit_and_species <- calcSplits(M = Mest, + split_SS = c("Season"), + split_CO = c("Size"), + data_CO = data_CO, + data_SS = data_SS +) +plot(M_unit_and_species, rate = FALSE) + + diff --git a/vignettes/wind-examples.R b/vignettes/wind-examples.R new file mode 100644 index 0000000000000000000000000000000000000000..a19e58e0ef61f67594f434e61943b01a57fd5f8a --- /dev/null +++ b/vignettes/wind-examples.R @@ -0,0 +1,155 @@ +## ----setup, include = FALSE---------------------------------------------- +knitr::opts_chunk$set( + collapse = TRUE, + comment = "#>" +) + +## ----set-options, echo=FALSE, cache=FALSE----------------------------------------------------------------------------- +options(width = 120) + +## ---- include=FALSE--------------------------------------------------------------------------------------------------- +library(GenEst) +vers <- packageVersion("GenEst") +today <- Sys.Date() + +## --------------------------------------------------------------------------------------------------------------------- +data(wind_RPbat) +names(wind_RPbat) + +## --------------------------------------------------------------------------------------------------------------------- +data_SE <- wind_RPbat$SE +data_CP <- wind_RPbat$CP +data_SS <- wind_RPbat$SS +data_DWP <- wind_RPbat$DWP +data_CO <- wind_RPbat$CO + +## ---- include = FALSE------------------------------------------------------------------------------------------------- +daterange <- range(data_SS$SearchDate) +seasons <- paste(unique(data_SS$Season), collapse = ', ') + +## --------------------------------------------------------------------------------------------------------------------- +head(data_SE) + +## --------------------------------------------------------------------------------------------------------------------- +head(data_CP) + +## --------------------------------------------------------------------------------------------------------------------- +head(data_SS[, 1:10]) + +## --------------------------------------------------------------------------------------------------------------------- +head(data_DWP) + +## --------------------------------------------------------------------------------------------------------------------- +head(data_CO) + +## --------------------------------------------------------------------------------------------------------------------- +model_SE <- pkm(p ~ Season, k ~ 1, data = data_SE) +class(model_SE) +model_SE + +## --------------------------------------------------------------------------------------------------------------------- +model_CP <- cpm(l ~ Season, s ~ Season, data = data_CP, dist = "weibull", + left = "LastPresent", right = "FirstAbsent") +class(model_CP) +model_CP + +## ---- fig.width = 7, fig.height = 5, fig.align = 'center'------------------------------------------------------------- +Mhat <- estM(nsim = 1000, data_CO = data_CO, data_SS = data_SS, + data_DWP = data_DWP, model_SE = model_SE, model_CP = model_CP, + unitCol = "Turbine", COdate = "DateFound") + +summary(Mhat) +plot(Mhat) + +## ---- fig.width = 5, fig.height = 5, fig.align = 'center'------------------------------------------------------------- +M_species <- calcSplits(M = Mhat, split_CO = "Species", data_CO = data_CO) +summary(M_species) +plot(M_species) + +## --------------------------------------------------------------------------------------------------------------------- +SSdat <- prepSS(data_SS) + +## ----Season Split, fig.width = 6.5, fig.height = 5.25, fig.align = 'center'------------------------------------------- +M_season <- calcSplits(M = Mhat, split_SS = "Season", data_SS = SSdat, + split_CO = NULL, data_CO = data_CO) +summary(M_season) +plot(M_season) + +## ----Temporal Split, fig.width = 7, fig.height = 5, fig.align = 'center'---------------------------------------------- +M_month <- calcSplits(M = Mhat, split_time = seq(0, max(SSdat$days), by = 28), + data_SS = SSdat, data_CO = data_CO) +summary(M_month) +plot(M_month) + +## ----Time unit Split, fig.width = 7, fig.height = 5, fig.align = 'center'--------------------------------------------- +M_various_times <- calcSplits(M = Mhat, + split_time = c(seq(0, 90, by = 15), 120, 150, seq(155, 200, by = 5)), + data_SS = SSdat, data_CO = data_CO) +plot(M_various_times) +plot(M_various_times, rate = TRUE) + +## ----Species and Season, fig.width = 4, fig.height = 6, fig.align = 'center'------------------------------------------ +M_species_by_season <- calcSplits(M = Mhat, + split_CO = "Species", data_CO = data_CO, + split_SS = "Season", data_SS = SSdat) +plot(M_species_by_season) + +## --------------------------------------------------------------------------------------------------------------------- +data(wind_cleared) +names(wind_cleared) + +## --------------------------------------------------------------------------------------------------------------------- +data_SE <- wind_cleared$SE +data_CP <- wind_cleared$CP +data_SS <- wind_cleared$SS +data_DWP <- wind_cleared$DWP +data_CO <- wind_cleared$CO + +## --------------------------------------------------------------------------------------------------------------------- +head(data_SE) +head(data_CP) + +## --------------------------------------------------------------------------------------------------------------------- +pkModels <- pkm(p ~ Visibility * Season, k ~ Visibility * Season, data = data_SE, + allCombos = TRUE, sizeCol = "Size") +class(pkModels) +names(pkModels) + +## --------------------------------------------------------------------------------------------------------------------- +names(pkModels[["sml"]]) +class(pkModels[["sml"]]) + +## --------------------------------------------------------------------------------------------------------------------- +aicc(pkModels[["sml"]]) + +## ---- fig.show = "hold", fig.width = 7, fig.height = 7---------------------------------------------------------------- +plot(pkModels[["sml"]], specificModel = "p ~ Visibility; k ~ 1") + +## ---- fig.show = "hold", fig.width = 7, fig.height = 7---------------------------------------------------------------- +plot(pkModels[["sml"]], specificModel = "p ~ Season; k ~ Visibility * Season") + +## --------------------------------------------------------------------------------------------------------------------- +pkMods <- list( + sml = pkModels[["sml"]][["p ~ Visibility; k ~ 1"]], + med = pkModels[["med"]][["p ~ Visibility; k ~ 1"]], + lrg = pkModels[["lrg"]][["p ~ Visibility; k ~ 1"]], + bat = pkModels[["bat"]][["p ~ Visibility; k ~ 1"]] +) + +## --------------------------------------------------------------------------------------------------------------------- +cpModels <- cpm( + l ~ Visibility * Season, s ~ Visibility * Season, + data = data_CP, left = "LastPresent", right = "FirstAbsent", + dist = c( "weibull", "lognormal", "loglogistic", "exponential"), + allCombos = TRUE, sizeCol = "Size" +) + +## --------------------------------------------------------------------------------------------------------------------- +lapply(aicc(cpModels), nrow) +aicc(cpModels[["sml"]]) + +## --------------------------------------------------------------------------------------------------------------------- +cp_smlCandidates <- + names(cpModels[["sml"]])[c(25, 24, 15, 19, 20, 10, 14, 22, 74, 21)] +cp_smlCandidates + diff --git a/vignettes/wind-examples.Rmd b/vignettes/wind-examples.Rmd index cfa208e95145ef4cf452fe8eb45ea81a9d7cb4c3..d4324b4fed9bde3c231913f1e954333a563e6a8e 100644 --- a/vignettes/wind-examples.Rmd +++ b/vignettes/wind-examples.Rmd @@ -554,7 +554,7 @@ cp_smlCandidates These can be compared in graphs as follows: ```{r, eval = F} -plot(cpSet_sml, specificModel = cp_smlCandidates) +plot(cpModels[["sml"]], specificModel = cp_smlCandidates) ``` The figure shows the raw persistence data (fraction of carcasses remaining after diff --git a/vignettes/wind-examples_files/figure-html/Season Split-1.png b/vignettes/wind-examples_files/figure-html/Season Split-1.png new file mode 100644 index 0000000000000000000000000000000000000000..6e8b5916a10af864b477c6ba85e7ca00d3ea4a1d Binary files /dev/null and b/vignettes/wind-examples_files/figure-html/Season Split-1.png differ diff --git a/vignettes/wind-examples_files/figure-html/Species and Season-1.png b/vignettes/wind-examples_files/figure-html/Species and Season-1.png new file mode 100644 index 0000000000000000000000000000000000000000..75ee3f5fac0cdf422505fb46a019453f4a7e8025 Binary files /dev/null and b/vignettes/wind-examples_files/figure-html/Species and Season-1.png differ diff --git a/vignettes/wind-examples_files/figure-html/Temporal Split-1.png b/vignettes/wind-examples_files/figure-html/Temporal Split-1.png new file mode 100644 index 0000000000000000000000000000000000000000..c5fe8113acabfe05788fef9585b676c282203105 Binary files /dev/null and b/vignettes/wind-examples_files/figure-html/Temporal Split-1.png differ diff --git a/vignettes/wind-examples_files/figure-html/Time unit Split-1.png b/vignettes/wind-examples_files/figure-html/Time unit Split-1.png new file mode 100644 index 0000000000000000000000000000000000000000..f0a5059bd4c4bd2b01f05118999516e7fbd2e52a Binary files /dev/null and b/vignettes/wind-examples_files/figure-html/Time unit Split-1.png differ diff --git a/vignettes/wind-examples_files/figure-html/Time unit Split-2.png b/vignettes/wind-examples_files/figure-html/Time unit Split-2.png new file mode 100644 index 0000000000000000000000000000000000000000..8871005854954a0c21568eea269bca837aceae14 Binary files /dev/null and b/vignettes/wind-examples_files/figure-html/Time unit Split-2.png differ diff --git a/vignettes/wind-examples_files/figure-html/unnamed-chunk-12-1.png b/vignettes/wind-examples_files/figure-html/unnamed-chunk-12-1.png new file mode 100644 index 0000000000000000000000000000000000000000..234e9d89d74b25a0d5856bddf9cd2e48791897f2 Binary files /dev/null and b/vignettes/wind-examples_files/figure-html/unnamed-chunk-12-1.png differ diff --git a/vignettes/wind-examples_files/figure-html/unnamed-chunk-13-1.png b/vignettes/wind-examples_files/figure-html/unnamed-chunk-13-1.png new file mode 100644 index 0000000000000000000000000000000000000000..3ab2f907f39c037f2db5103f01aad567b6a01d3a Binary files /dev/null and b/vignettes/wind-examples_files/figure-html/unnamed-chunk-13-1.png differ diff --git a/vignettes/wind-examples_files/figure-html/unnamed-chunk-21-1.png b/vignettes/wind-examples_files/figure-html/unnamed-chunk-21-1.png new file mode 100644 index 0000000000000000000000000000000000000000..f17292fb81c4f003c10e6cf815a2795a7618fa0b Binary files /dev/null and b/vignettes/wind-examples_files/figure-html/unnamed-chunk-21-1.png differ diff --git a/vignettes/wind-examples_files/figure-html/unnamed-chunk-22-1.png b/vignettes/wind-examples_files/figure-html/unnamed-chunk-22-1.png new file mode 100644 index 0000000000000000000000000000000000000000..bb5782d1ec48564580981aed0c3bf12cecccbd5c Binary files /dev/null and b/vignettes/wind-examples_files/figure-html/unnamed-chunk-22-1.png differ