Skip to content

Commit

Permalink
More accurate naming of survival model option
Browse files Browse the repository at this point in the history
  • Loading branch information
Hughes authored and Hughes committed Feb 13, 2025
1 parent b47b0d9 commit 7f91a1f
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 22 deletions.
26 changes: 14 additions & 12 deletions R/caribouBayesianPM.R
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
#' @param Nthin Thinning rate for the MCMC algorithm.
#' @param N0 Initial population size.
#' @param survAnalysisMethod Survival analysis method either "KaplanMeier" or
#' "Exponential". The exponential method is only recommended when the number of collared animals (in survData) is small.
#' "Binomial". The KaplanMeier method yields slightly biased survival estimates.
#' @param assessmentYrs Number of years over which to assess population growth rate lambda.
#' @param inputList an optional list of inputs with names matching the above. If
#' an argument is included in this list it will override the named argument.
Expand Down Expand Up @@ -92,12 +92,12 @@ caribouBayesianPM <- function(survData = system.file("extdata/simSurvData.csv",
betaPriors = "default",
startYear = NULL, endYear = NULL, Nchains = 4,
Niter = 15000, Nburn = 10000, Nthin = 2, N0 = 1000,
survAnalysisMethod = "Exponential",
survAnalysisMethod = "Binomial",
assessmentYrs = 1,
inputList = list(), saveJAGStxt = tempdir(),
quiet = TRUE) {
# survData=oo$simSurvObs;ageRatio=oo$ageRatioOut;disturbance=oo$simDisturbance;
# betaPriors="default";startYear = NULL;endYear=NULL;N0=1000;survAnalysisMethod = "KaplanMeier"
# betaPriors="default";startYear = NULL;endYear=NULL;N0=1000;survAnalysisMethod = "Binomial"
# Nchains = 2;Niter = 20000;Nburn = 10000;Nthin = 1;assessmentYrs = 3;inputList=list();saveJAGStxt=tempdir();quiet=F

# combine defaults in function with inputs from input list
Expand Down Expand Up @@ -212,18 +212,19 @@ caribouBayesianPM <- function(survData = system.file("extdata/simSurvData.csv",
if (nrow(dSubset) == 0) {
warning("Collars not present at the start of a year are omitted from survival ",
"analysis in that year. There are no years with collars in the first month.")
inp$survAnalysisMethod <- "Exponential"
survData = merge(data.frame(X1=0,X2=0,X3=0,X4=0,X5=0,X6=0,X7=0,X8=0,X9=0,X10=0,X11=0,X12=0,X13=0),data)
inp$survAnalysisMethod <- "Binomial"
survData = merge(data.frame(X1=0,X2=0,X3=0,X4=0,X5=0,X6=0,X7=0,X8=0,X9=0,X10=0,X11=0,X12=0,X13=0),data) %>% relocate(Year,.after=X13)
survData$event=NA;survData$enter=NA
}else{
if (nrow(dSubset) == 1) {
warning("Switching to exponential survival analysis method because there is",
warning("Switching to binomial survival analysis method because there is",
" only one collared animal.")
inp$survAnalysisMethod <- "Exponential"
inp$survAnalysisMethod <- "Binomial"
}
if (sum(dSubset$event, na.rm = T) == 0) {
warning("Switching to exponential survival analysis method because there ",
warning("Switching to binomial survival analysis method because there ",
"are no recorded deaths.")
inp$survAnalysisMethod <- "Exponential"
inp$survAnalysisMethod <- "Binomial"
}

if (inp$survAnalysisMethod == "KaplanMeier") {
Expand All @@ -237,9 +238,9 @@ caribouBayesianPM <- function(survData = system.file("extdata/simSurvData.csv",
warning("Years with less than 12 months of collar data are omitted from",
" survival analysis. Please ensure there is 12 months of collar ",
"data in at least one year.")
warning("Switching to exponential survival analysis method because there ",
warning("Switching to binomial survival analysis method because there ",
"are no years with 12 months of collar data.")
inp$survAnalysisMethod <- "Exponential"
inp$survAnalysisMethod <- "Binomial"
}
}
if (inp$survAnalysisMethod == "KaplanMeier") {
Expand Down Expand Up @@ -287,13 +288,14 @@ caribouBayesianPM <- function(survData = system.file("extdata/simSurvData.csv",
}

} else {
message("expanding survival record")
message("using Binomial survival model")
dExpand <- apply(subset(dSubset, select = c("id", "Year", "event", "enter", "exit")),
1, expandSurvivalRecord)
survData <- do.call(rbind, dExpand)
survData <- survData %>% group_by(Year) %>%
summarise(X1=sum(X1),X2=sum(X2),X3=sum(X3),X4=sum(X4),X5=sum(X5),X6=sum(X6),X7=sum(X7),X8=sum(X8),
X9=sum(X9),X10=sum(X10),X11=sum(X11),X12=sum(X12),X13=sum(X13)) %>% relocate(Year,.after=X13)
survData$event=NA;survData$enter=NA
}
}

Expand Down
4 changes: 2 additions & 2 deletions R/runScnSet.R
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,11 @@
#' Niter = 10, Nburn = 2)


runScnSet <- function(scns, ePars, simNational, survAnalysisMethod = "Exponential",
runScnSet <- function(scns, ePars, simNational, survAnalysisMethod = "Binomial",
getKSDists = TRUE, printProgress = FALSE,
Niter = formals(caribouBayesianPM)$Niter,
Nburn = formals(caribouBayesianPM)$Nburn) {
# ePars=eParsIn;survAnalysisMethod="Exponential";simNational=simBig;getKSDists=T;printProgress=F;Niter = formals(caribouBayesianPM)$Niter;Nburn = formals(caribouBayesianPM)$Nburn
# ePars=eParsIn;survAnalysisMethod="Binomial";simNational=simBig;getKSDists=T;printProgress=F;Niter = formals(caribouBayesianPM)$Niter;Nburn = formals(caribouBayesianPM)$Nburn
scns <- getScenarioDefaults(scns)
errorLog <- list()
for (p in 1:nrow(scns)) {
Expand Down
4 changes: 2 additions & 2 deletions man/caribouBayesianPM.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions man/runScnSet.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions tests/testthat/test-caribouBayesianPM.R
Original file line number Diff line number Diff line change
Expand Up @@ -110,18 +110,18 @@ test_that("input tables are as expected",{
test_that("survAnalysisMethod works", {
expect_message(out1 <- caribouBayesianPM(startYear = 2009, Nchains = 1, Niter = 100, Nburn = 10,
Nthin = 2),
"using Kaplan-Meier survival model")
"using Binomial survival model")
expect_s3_class(out1$result, "rjags")

expect_message(out2 <- caribouBayesianPM(startYear = 2009, Nchains = 1, Niter = 100, Nburn = 10,
Nthin = 2, survAnalysisMethod = "Exponential"),
"expanding survival record")
Nthin = 2, survAnalysisMethod = "KaplanMeier"),
"using Kaplan-Meier survival model")

expect_s3_class(out2$result, "rjags")

expect_message(out3 <- caribouBayesianPM(startYear = 2009, Nchains = 1, Niter = 100, Nburn = 10,
Nthin = 2, survAnalysisMethod = "other"),
"expanding survival record")
"using Binomial survival model")

expect_s3_class(out3$result, "rjags")
})
Expand Down

0 comments on commit 7f91a1f

Please sign in to comment.