Page 1 of 1

Robust Design with Incorrect Derived N

PostPosted: Thu Mar 19, 2026 1:44 pm
by grkron
I am using a 20-year mark-recapture dataset to estimate the population size of trout in a lake, which incorporates 3700 individuals and 256 sampling events (6-18 per year). These fish should not be migratory, but all sampling took place during the spawning season. We expect behavioral differences between males and females, specifically that there may be some years where females did not spawn and were temporarily unavailable for capture. I'm leaning toward a Huggins robust design model because (as I understand it) the POPAN would confuse any temporary emigration (ie non-spawning years) and with reduced detection efficiency.

For both model types the input data was structured as: ID, ch, Sex
(eg Fish1, 00001000000100000010000000000000..., M)

So far POPAN models seem to return fairly reasonable phi, p, and derived N estimates. However, the robust design models give fairly high p estimates and derived N values that are equal or slightly less than the number of fish captured. Similarly, the se for these derived N estimates are typically fewer than 1.

Do you have suggestions on where I could have gone wrong or how to extract population size? Below is the RMark code that I would use to generate the current top model. For model selection I also tried iterations where Gamma" and Gamma' were shared, as well as where p and c were shared.

Thanks!
Greg

Code: Select all

RD_covars.proc <- process.data(data = robust_covars,
                        model = "Robust",
                        groups = "Sex",
                        time.intervals = time_intervals_dates)

RD.models = function (){
  # S.dot  = list(formula=~1)
  # S.time = list(formula=~time)
  # S.sex  = list(formula=~group)
 S.time.sex = list(formula=~time + group)

  # GammaDoublePrime.Markov.dot      = list(formula=~1, share=FALSE)
  # GammaDoublePrime.Markov.time     = list(formula=~time, share=FALSE)
  # GammaDoublePrime.Markov.sex      = list(formula=~group, share=FALSE)
 GammaDoublePrime.Markov.time.sex = list(formula=~time + group) 

# G' = 1/4 
  # GammaPrime.Markov.dot      = list(formula=~1, share=FALSE)
 GammaPrime.Markov.time     = list(formula=~time)
  # GammaPrime.Markov.sex      = list(formula=~group, share=FALSE)
  # GammaPrime.Markov.time.sex = list(formula=~time + group, share=FALSE) 
 
# p = 7/7
 # p.dot = list(formula=~1, share=FALSE)
 # p.time = list(formula=~time, share=FALSE)
 # p.sex = list(formula=~group, share=FALSE)
 # p.time.sex = list(formula=~time+group, share=FALSE)
 # p.session.time = list(formula=~time+session, share=FALSE)
 # p.session.sex = list(formula=~session+group, share=FALSE)
  p.session.time.sex = list(formula=~time+session+group)
 
# c = 7/7
 # c.dot = list(formula=~1, share=FALSE)
 # c.time = list(formula=~time, share=FALSE)
 # c.sex = list(formula=~group, share=FALSE)
 # c.time.sex = list(formula=~time+group, share=FALSE)
 # c.session.time = list(formula=~time+session, share=FALSE)
 # c.session.sex = list(formula=~session+group, share=FALSE)
  c.session.time.sex = list(formula=~time+session+group)
 
  cml=create.model.list("Robust")
  results=mark.wrapper(cml, data=RD_covars.proc, output=FALSE)
  return(results)
}

RD.models.list <- RD.models()

RD.models.list$S.time.sex.GammaDoublePrime.Markov.time.sex.GammaPrime.Markov.time.p.session.time.sex.c.session.time.sex$results$derived$`N Population Size`


Re: Robust Design with Incorrect Derived N

PostPosted: Thu Mar 19, 2026 3:18 pm
by jlaake
Hard to tell what the issue is but you didn't use Huggins robust model. It is RDHuggins. You used the standard Robust model which wouldn't account for individual covariates in estimating N. Also were your data color with a robust design? Unclear how you are using both popan and rd models. If you haven't already read it I suggest spending time with relevant chapters in Cooch and White. It should be your Bible whether you are using MARK interface or RMark interface.