4 Survival

WORK IN PROGRESS.

4.1 Introduction

Blabla. Blabla. Need to explain sensitivity analyses somewhere.

knitr::include_graphics("images/lebreton.png")

4.2 History of the Cormack-Jolly-Seber (CJS) model

S.T. Buckland (2016). A Conversation with Richard M. Cormack. Statistical Science 31: 142-150.

Bayesian uptake

4.3 What we’ve seen so far

For states (in gray), \(z = 1\) is alive, \(z = 2\) is dead.

For observations (in white), \(y = 1\) is non-detected, \(y = 2\) is detected

4.4 In the CJS model, survival and recapture are time-varying

Survival probability is \(\phi_t = \Pr(z_{t+1} = 1 | z_t = 1)\).

Recapture (detection) probability is \(p_t = \Pr(y_{t} = 1 | z_t = 1)\).

Accounts for variation in e.g. environmental conditions (survival) or sampling effort (detection).

4.5 Capture, mark and recapture

Artificial marks

4.6 Capture, mark and recapture

Natural marks

4.7 The famous Dipper example

White-throated Dipper (Cinclus cinclus)

Figure 4.1: White-throated Dipper (Cinclus cinclus)

Gilbert Marzolin

Figure 4.2: Gilbert Marzolin

4.8 294 dippers captured and recaptured between 1981 and 1987 with known sex and wing length

year_1981 year_1982 year_1983 year_1984 year_1985 year_1986 year_1987 sex wing_length
1 1 1 1 1 1 0 M 95
1 1 1 1 1 0 0 F 88
1 1 1 1 0 0 0 M 94
1 1 1 1 0 0 0 F 85
1 1 0 1 1 1 0 F 86
1 1 0 0 0 0 0 M 97
1 1 0 0 0 0 0 M 96
1 1 0 0 0 0 0 M 98
1 1 0 0 0 0 0 M 96
1 1 0 0 0 0 0 F 89
1 1 0 0 0 0 0 F 86
1 0 1 0 0 0 0 M 98
1 0 1 0 0 0 0 F 92
1 0 0 0 0 0 0 M 97
1 0 0 0 0 0 0 M 96
1 0 0 0 0 0 0 M 95
1 0 0 0 0 0 0 M 98
1 0 0 0 0 0 0 M 96
1 0 0 0 0 0 0 F 91
1 0 0 0 0 0 0 F 89
1 0 0 0 0 0 0 F 87
1 0 0 0 0 0 0 F 90
0 1 1 1 1 1 1 F 87
0 1 1 1 1 1 1 F 86
0 1 1 1 1 1 0 F 88
0 1 1 1 1 0 0 M 99
0 1 1 1 1 0 0 F 84
0 1 1 1 1 0 0 F 87
0 1 1 1 0 0 0 M 96
0 1 1 1 0 0 0 F 89
0 1 1 0 1 1 0 F 89
0 1 1 0 0 0 0 M 97
0 1 1 0 0 0 0 M 91
0 1 1 0 0 0 0 M 98
0 1 1 0 0 0 0 M 97
0 1 1 0 0 0 0 M 94
0 1 1 0 0 0 0 M 90
0 1 1 0 0 0 0 M 93
0 1 1 0 0 0 0 F 91
0 1 1 0 0 0 0 F 84
0 1 1 0 0 0 0 F 89
0 1 1 0 0 0 0 F 89
0 1 0 0 0 0 0 M 94
0 1 0 0 0 0 0 M 96
0 1 0 0 0 0 0 M 93
0 1 0 0 0 0 0 M 92
0 1 0 0 0 0 0 M 96
0 1 0 0 0 0 0 M 97
0 1 0 0 0 0 0 M 94
0 1 0 0 0 0 0 M 98
0 1 0 0 0 0 0 M 97
0 1 0 0 0 0 0 M 96
0 1 0 0 0 0 0 M 98
0 1 0 0 0 0 0 F 88
0 1 0 0 0 0 0 F 88
0 1 0 0 0 0 0 F 88
0 1 0 0 0 0 0 F 86
0 1 0 0 0 0 0 F 93
0 1 0 0 0 0 0 F 85
0 1 0 0 0 0 0 F 88
0 1 0 0 0 0 0 F 88
0 1 0 0 0 0 0 F 86
0 1 0 0 0 0 0 F 88
0 1 0 0 0 0 0 F 88
0 1 0 0 0 0 0 F 89
0 1 0 0 0 0 0 F 86
0 1 0 0 0 0 0 F 88
0 1 0 0 0 0 0 F 88
0 1 0 0 0 0 0 F 84
0 1 0 0 0 0 0 F 87
0 1 0 0 0 0 0 F 88
0 0 1 1 1 1 1 F 89
0 0 1 1 1 1 1 F 87
0 0 1 1 1 1 0 M 96
0 0 1 1 1 1 0 F 85
0 0 1 1 1 0 0 M 98
0 0 1 1 1 0 0 M 94
0 0 1 1 1 0 0 M 94
0 0 1 1 1 0 0 M 99
0 0 1 1 1 0 0 F 90
0 0 1 1 1 0 0 F 86
0 0 1 1 0 0 0 M 96
0 0 1 1 0 0 0 M 97
0 0 1 1 0 0 0 M 98
0 0 1 1 0 0 0 M 93
0 0 1 1 0 0 0 M 94
0 0 1 1 0 0 0 M 97
0 0 1 1 0 0 0 M 98
0 0 1 1 0 0 0 M 96
0 0 1 1 0 0 0 F 89
0 0 1 1 0 0 0 F 88
0 0 1 1 0 0 0 F 90
0 0 1 1 0 0 0 F 87
0 0 1 0 1 1 0 M 95
0 0 1 0 0 0 0 M 93
0 0 1 0 0 0 0 M 97
0 0 1 0 0 0 0 M 97
0 0 1 0 0 0 0 M 99
0 0 1 0 0 0 0 M 96
0 0 1 0 0 0 0 M 94
0 0 1 0 0 0 0 M 95
0 0 1 0 0 0 0 M 100
0 0 1 0 0 0 0 M 92
0 0 1 0 0 0 0 M 96
0 0 1 0 0 0 0 M 97
0 0 1 0 0 0 0 F 88
0 0 1 0 0 0 0 F 89
0 0 1 0 0 0 0 F 91
0 0 1 0 0 0 0 F 90
0 0 1 0 0 0 0 F 88
0 0 1 0 0 0 0 F 91
0 0 1 0 0 0 0 F 89
0 0 1 0 0 0 0 F 87
0 0 1 0 0 0 0 F 90
0 0 1 0 0 0 0 F 84
0 0 1 0 0 0 0 F 86
0 0 1 0 0 0 0 F 86
0 0 1 0 0 0 0 F 87
0 0 1 0 0 0 0 F 89
0 0 1 0 0 0 0 F 88
0 0 1 0 0 0 0 F 85
0 0 1 0 0 0 0 F 90
0 0 1 0 0 0 0 F 86
0 0 0 1 1 1 1 M 98
0 0 0 1 1 1 1 M 100
0 0 0 1 1 1 1 M 94
0 0 0 1 1 1 1 M 97
0 0 0 1 1 1 1 M 96
0 0 0 1 1 1 1 M 95
0 0 0 1 1 1 1 F 85
0 0 0 1 1 1 1 F 85
0 0 0 1 1 1 0 M 93
0 0 0 1 1 1 0 M 99
0 0 0 1 1 1 0 M 95
0 0 0 1 1 1 0 F 86
0 0 0 1 1 1 0 F 85
0 0 0 1 1 1 0 F 92
0 0 0 1 1 1 0 F 89
0 0 0 1 1 0 0 M 97
0 0 0 1 1 0 0 M 92
0 0 0 1 1 0 0 M 96
0 0 0 1 1 0 0 M 95
0 0 0 1 1 0 0 M 94
0 0 0 1 1 0 0 M 95
0 0 0 1 1 0 0 F 88
0 0 0 1 1 0 0 F 88
0 0 0 1 1 0 0 F 87
0 0 0 1 1 0 0 F 87
0 0 0 1 1 0 0 F 87
0 0 0 1 0 1 1 F 88
0 0 0 1 0 0 1 M 96
0 0 0 1 0 0 1 F 87
0 0 0 1 0 0 0 M 94
0 0 0 1 0 0 0 M 92
0 0 0 1 0 0 0 M 96
0 0 0 1 0 0 0 M 95
0 0 0 1 0 0 0 M 97
0 0 0 1 0 0 0 M 95
0 0 0 1 0 0 0 F 89
0 0 0 1 0 0 0 F 89
0 0 0 1 0 0 0 F 88
0 0 0 1 0 0 0 F 88
0 0 0 1 0 0 0 F 92
0 0 0 1 0 0 0 F 88
0 0 0 1 0 0 0 F 89
0 0 0 1 0 0 0 F 88
0 0 0 1 0 0 0 F 87
0 0 0 1 0 0 0 F 88
0 0 0 0 1 1 1 M 94
0 0 0 0 1 1 1 M 96
0 0 0 0 1 1 1 M 94
0 0 0 0 1 1 1 M 100
0 0 0 0 1 1 1 M 95
0 0 0 0 1 1 1 M 96
0 0 0 0 1 1 1 M 97
0 0 0 0 1 1 1 M 97
0 0 0 0 1 1 1 M 95
0 0 0 0 1 1 1 M 98
0 0 0 0 1 1 1 F 87
0 0 0 0 1 1 1 F 85
0 0 0 0 1 1 1 F 87
0 0 0 0 1 1 1 F 89
0 0 0 0 1 1 1 F 87
0 0 0 0 1 1 1 F 91
0 0 0 0 1 1 0 M 96
0 0 0 0 1 1 0 M 97
0 0 0 0 1 1 0 M 95
0 0 0 0 1 1 0 F 86
0 0 0 0 1 1 0 F 87
0 0 0 0 1 1 0 F 88
0 0 0 0 1 1 0 F 90
0 0 0 0 1 1 0 F 90
0 0 0 0 1 1 0 F 88
0 0 0 0 1 0 0 M 96
0 0 0 0 1 0 0 M 98
0 0 0 0 1 0 0 M 94
0 0 0 0 1 0 0 M 98
0 0 0 0 1 0 0 M 97
0 0 0 0 1 0 0 M 97
0 0 0 0 1 0 0 M 94
0 0 0 0 1 0 0 M 98
0 0 0 0 1 0 0 M 94
0 0 0 0 1 0 0 F 89
0 0 0 0 1 0 0 F 88
0 0 0 0 1 0 0 F 89
0 0 0 0 1 0 0 F 92
0 0 0 0 1 0 0 F 91
0 0 0 0 1 0 0 F 85
0 0 0 0 1 0 0 F 85
0 0 0 0 0 1 1 M 94
0 0 0 0 0 1 1 M 99
0 0 0 0 0 1 1 M 96
0 0 0 0 0 1 1 M 97
0 0 0 0 0 1 1 M 92
0 0 0 0 0 1 1 M 96
0 0 0 0 0 1 1 M 90
0 0 0 0 0 1 1 M 93
0 0 0 0 0 1 1 M 95
0 0 0 0 0 1 1 M 94
0 0 0 0 0 1 1 M 96
0 0 0 0 0 1 1 M 96
0 0 0 0 0 1 1 F 87
0 0 0 0 0 1 1 F 87
0 0 0 0 0 1 1 F 88
0 0 0 0 0 1 1 F 88
0 0 0 0 0 1 1 F 88
0 0 0 0 0 1 1 F 86
0 0 0 0 0 1 1 F 88
0 0 0 0 0 1 1 F 88
0 0 0 0 0 1 1 F 87
0 0 0 0 0 1 1 F 90
0 0 0 0 0 1 1 F 91
0 0 0 0 0 1 0 M 95
0 0 0 0 0 1 0 M 98
0 0 0 0 0 1 0 M 95
0 0 0 0 0 1 0 M 96
0 0 0 0 0 1 0 M 99
0 0 0 0 0 1 0 M 98
0 0 0 0 0 1 0 M 91
0 0 0 0 0 1 0 M 94
0 0 0 0 0 1 0 M 96
0 0 0 0 0 1 0 M 99
0 0 0 0 0 1 0 M 91
0 0 0 0 0 1 0 F 91
0 0 0 0 0 1 0 F 84
0 0 0 0 0 1 0 F 88
0 0 0 0 0 1 0 F 86
0 0 0 0 0 1 0 F 89
0 0 0 0 0 1 0 F 90
0 0 0 0 0 1 0 F 88
0 0 0 0 0 1 0 F 87
0 0 0 0 0 1 0 F 90
0 0 0 0 0 1 0 F 88
0 0 0 0 0 1 0 F 92
0 0 0 0 0 1 0 F 88
0 0 0 0 0 0 1 M 97
0 0 0 0 0 0 1 M 97
0 0 0 0 0 0 1 M 98
0 0 0 0 0 0 1 M 94
0 0 0 0 0 0 1 M 95
0 0 0 0 0 0 1 M 97
0 0 0 0 0 0 1 M 97
0 0 0 0 0 0 1 M 96
0 0 0 0 0 0 1 M 94
0 0 0 0 0 0 1 M 95
0 0 0 0 0 0 1 M 94
0 0 0 0 0 0 1 M 94
0 0 0 0 0 0 1 M 94
0 0 0 0 0 0 1 M 94
0 0 0 0 0 0 1 M 96
0 0 0 0 0 0 1 M 97
0 0 0 0 0 0 1 M 95
0 0 0 0 0 0 1 F 86
0 0 0 0 0 0 1 F 87
0 0 0 0 0 0 1 F 88
0 0 0 0 0 0 1 F 90
0 0 0 0 0 0 1 F 90
0 0 0 0 0 0 1 F 88
0 0 0 0 0 0 1 F 88
0 0 0 0 0 0 1 F 88
0 0 0 0 0 0 1 F 91
0 0 0 0 0 0 1 F 90
0 0 0 0 0 0 1 F 86
0 0 0 0 0 0 1 F 88
0 0 0 0 0 0 1 F 90
0 0 0 0 0 0 1 F 88
0 0 0 0 0 0 1 F 90
0 0 0 0 0 0 1 F 90
0 0 0 0 0 0 1 F 92
0 0 0 0 0 0 1 F 86
0 0 0 0 0 0 1 F 89
0 0 0 0 0 0 1 F 88
0 0 0 0 0 0 1 F 90
0 0 0 0 0 0 1 F 93

4.9 Back to Nimble.

4.9.1 Our model so far \((\phi, p)\)

hmm.phip <- nimbleCode({
  phi ~ dunif(0, 1) # prior survival
  p ~ dunif(0, 1) # prior detection
  # likelihood
  gamma[1,1] <- phi      # Pr(alive t -> alive t+1)
  gamma[1,2] <- 1 - phi  # Pr(alive t -> dead t+1)
  gamma[2,1] <- 0        # Pr(dead t -> alive t+1)
  gamma[2,2] <- 1        # Pr(dead t -> dead t+1)
  delta[1] <- 1          # Pr(alive t = 1) = 1
  delta[2] <- 0          # Pr(dead t = 1) = 0
  omega[1,1] <- 1 - p    # Pr(alive t -> non-detected t)
  omega[1,2] <- p        # Pr(alive t -> detected t)
  omega[2,1] <- 1        # Pr(dead t -> non-detected t)
  omega[2,2] <- 0        # Pr(dead t -> detected t)
  for (i in 1:N){
    z[i,first[i]] ~ dcat(delta[1:2])
    for (j in (first[i]+1):T){
      z[i,j] ~ dcat(gamma[z[i,j-1], 1:2])
      y[i,j] ~ dcat(omega[z[i,j], 1:2])
    }
  }
})

4.9.2 Our model so far \((\phi, p)\)

##     mean   sd 2.5%  50% 97.5% Rhat n.eff
## phi 0.56 0.03 0.52 0.56  0.62 1.00   500
## p   0.89 0.03 0.83 0.89  0.94 1.13   273

4.9.3 The CJS model \((\phi_t, p_t)\)

hmm.phitpt <- nimbleCode({
  delta[1] <- 1          # Pr(alive t = 1) = 1
  delta[2] <- 0          # Pr(dead t = 1) = 0
  for (t in 1:(T-1)){
    phi[t] ~ dunif(0, 1) # prior survival #<<
    gamma[1,1,t] <- phi[t]      # Pr(alive t -> alive t+1)
    gamma[1,2,t] <- 1 - phi[t]  # Pr(alive t -> dead t+1)
    gamma[2,1,t] <- 0        # Pr(dead t -> alive t+1)
    gamma[2,2,t] <- 1        # Pr(dead t -> dead t+1)
    p[t] ~ dunif(0, 1) # prior detection #<<
    omega[1,1,t] <- 1 - p[t]    # Pr(alive t -> non-detected t)
    omega[1,2,t] <- p[t]        # Pr(alive t -> detected t)
    omega[2,1,t] <- 1        # Pr(dead t -> non-detected t)
    omega[2,2,t] <- 0        # Pr(dead t -> detected t)
  }
  # likelihood
  for (i in 1:N){
    z[i,first[i]] ~ dcat(delta[1:2])
    for (j in (first[i]+1):T){
      z[i,j] ~ dcat(gamma[z[i,j-1], 1:2, j-1])
      y[i,j] ~ dcat(omega[z[i,j], 1:2, j-1])
    }
  }
})

4.9.4 The CJS model \((\phi_t, p_t)\)

hmm.phitpt <- nimbleCode({
  delta[1] <- 1          # Pr(alive t = 1) = 1
  delta[2] <- 0          # Pr(dead t = 1) = 0
  for (t in 1:(T-1)){ #<<
    phi[t] ~ dunif(0, 1) # prior survival
    gamma[1,1,t] <- phi[t]      # Pr(alive t -> alive t+1)
    gamma[1,2,t] <- 1 - phi[t]  # Pr(alive t -> dead t+1)
    gamma[2,1,t] <- 0        # Pr(dead t -> alive t+1)
    gamma[2,2,t] <- 1        # Pr(dead t -> dead t+1)
    p[t] ~ dunif(0, 1) # prior detection
    omega[1,1,t] <- 1 - p[t]    # Pr(alive t -> non-detected t)
    omega[1,2,t] <- p[t]        # Pr(alive t -> detected t)
    omega[2,1,t] <- 1        # Pr(dead t -> non-detected t)
    omega[2,2,t] <- 0        # Pr(dead t -> detected t)
  } #<<
  # likelihood
  for (i in 1:N){
    z[i,first[i]] ~ dcat(delta[1:2])
    for (j in (first[i]+1):T){
      z[i,j] ~ dcat(gamma[z[i,j-1], 1:2, j-1])
      y[i,j] ~ dcat(omega[z[i,j], 1:2, j-1])
    }
  }
})

4.9.5 The CJS model \((\phi_t, p_t)\)

hmm.phitpt <- nimbleCode({
  delta[1] <- 1          # Pr(alive t = 1) = 1
  delta[2] <- 0          # Pr(dead t = 1) = 0
  for (t in 1:(T-1)){
    phi[t] ~ dunif(0, 1) # prior survival
    gamma[1,1,t] <- phi[t]      # Pr(alive t -> alive t+1) #<<
    gamma[1,2,t] <- 1 - phi[t]  # Pr(alive t -> dead t+1) #<<
    gamma[2,1,t] <- 0        # Pr(dead t -> alive t+1) #<<
    gamma[2,2,t] <- 1        # Pr(dead t -> dead t+1) #<<
    p[t] ~ dunif(0, 1) # prior detection
    omega[1,1,t] <- 1 - p[t]    # Pr(alive t -> non-detected t)
    omega[1,2,t] <- p[t]        # Pr(alive t -> detected t)
    omega[2,1,t] <- 1        # Pr(dead t -> non-detected t)
    omega[2,2,t] <- 0        # Pr(dead t -> detected t)
  }
  # likelihood
  for (i in 1:N){
    z[i,first[i]] ~ dcat(delta[1:2])
    for (j in (first[i]+1):T){
      z[i,j] ~ dcat(gamma[z[i,j-1], 1:2, j-1])
      y[i,j] ~ dcat(omega[z[i,j], 1:2, j-1])
    }
  }
})

4.9.6 The CJS model \((\phi_t, p_t)\)

hmm.phitpt <- nimbleCode({
  delta[1] <- 1          # Pr(alive t = 1) = 1
  delta[2] <- 0          # Pr(dead t = 1) = 0
  for (t in 1:(T-1)){
    phi[t] ~ dunif(0, 1) # prior survival
    gamma[1,1,t] <- phi[t]      # Pr(alive t -> alive t+1)
    gamma[1,2,t] <- 1 - phi[t]  # Pr(alive t -> dead t+1)
    gamma[2,1,t] <- 0        # Pr(dead t -> alive t+1)
    gamma[2,2,t] <- 1        # Pr(dead t -> dead t+1)
    p[t] ~ dunif(0, 1) # prior detection
    omega[1,1,t] <- 1 - p[t]    # Pr(alive t -> non-detected t) #<<
    omega[1,2,t] <- p[t]        # Pr(alive t -> detected t) #<<
    omega[2,1,t] <- 1        # Pr(dead t -> non-detected t) #<<
    omega[2,2,t] <- 0        # Pr(dead t -> detected t) #<<
  }
  # likelihood
  for (i in 1:N){
    z[i,first[i]] ~ dcat(delta[1:2])
    for (j in (first[i]+1):T){
      z[i,j] ~ dcat(gamma[z[i,j-1], 1:2, j-1])
      y[i,j] ~ dcat(omega[z[i,j], 1:2, j-1])
    }
  }
})

4.9.7 The CJS model \((\phi_t, p_t)\)

hmm.phitpt <- nimbleCode({
  delta[1] <- 1          # Pr(alive t = 1) = 1
  delta[2] <- 0          # Pr(dead t = 1) = 0
  for (t in 1:(T-1)){
    phi[t] ~ dunif(0, 1) # prior survival
    gamma[1,1,t] <- phi[t]      # Pr(alive t -> alive t+1)
    gamma[1,2,t] <- 1 - phi[t]  # Pr(alive t -> dead t+1)
    gamma[2,1,t] <- 0        # Pr(dead t -> alive t+1)
    gamma[2,2,t] <- 1        # Pr(dead t -> dead t+1)
    p[t] ~ dunif(0, 1) # prior detection
    omega[1,1,t] <- 1 - p[t]    # Pr(alive t -> non-detected t)
    omega[1,2,t] <- p[t]        # Pr(alive t -> detected t)
    omega[2,1,t] <- 1        # Pr(dead t -> non-detected t)
    omega[2,2,t] <- 0        # Pr(dead t -> detected t)
  }
  # likelihood
  for (i in 1:N){
    z[i,first[i]] ~ dcat(delta[1:2])
    for (j in (first[i]+1):T){
      z[i,j] ~ dcat(gamma[z[i,j-1], 1:2, j-1]) #<<
      y[i,j] ~ dcat(omega[z[i,j], 1:2, j-1]) #<<
    }
  }
})

4.9.8 The CJS model \((\phi_t, p_t)\)

##        mean   sd 2.5%  50% 97.5% Rhat n.eff
## phi[1] 0.73 0.14 0.46 0.72  0.99 1.02   199
## phi[2] 0.45 0.07 0.32 0.44  0.59 1.02   410
## phi[3] 0.48 0.06 0.35 0.48  0.59 1.01   506
## phi[4] 0.63 0.06 0.52 0.63  0.75 1.03   415
## phi[5] 0.60 0.06 0.49 0.60  0.72 1.01   365
## phi[6] 0.74 0.13 0.51 0.74  0.97 1.10    38
## p[1]   0.66 0.14 0.38 0.67  0.89 1.01   344
## p[2]   0.87 0.08 0.68 0.89  0.98 1.02   249
## p[3]   0.88 0.07 0.73 0.89  0.97 1.02   307
## p[4]   0.87 0.06 0.74 0.88  0.96 1.05   333
## p[5]   0.90 0.05 0.77 0.91  0.98 1.01   224
## p[6]   0.72 0.13 0.50 0.72  0.97 1.08    37

4.9.9 Time-varying survival \((\phi_t, p)\)

hmm.phitp <- nimbleCode({
  for (t in 1:(T-1)){
    phi[t] ~ dunif(0, 1) # prior survival
    gamma[1,1,t] <- phi[t]      # Pr(alive t -> alive t+1)
    gamma[1,2,t] <- 1 - phi[t]  # Pr(alive t -> dead t+1)
    gamma[2,1,t] <- 0        # Pr(dead t -> alive t+1)
    gamma[2,2,t] <- 1        # Pr(dead t -> dead t+1)
  }
  p ~ dunif(0, 1) # prior detection
  delta[1] <- 1          # Pr(alive t = 1) = 1
  delta[2] <- 0          # Pr(dead t = 1) = 0
  omega[1,1] <- 1 - p    # Pr(alive t -> non-detected t)
  omega[1,2] <- p        # Pr(alive t -> detected t)
  omega[2,1] <- 1        # Pr(dead t -> non-detected t)
  omega[2,2] <- 0        # Pr(dead t -> detected t)
  # likelihood
  for (i in 1:N){
    z[i,first[i]] ~ dcat(delta[1:2])
    for (j in (first[i]+1):T){
      z[i,j] ~ dcat(gamma[z[i,j-1], 1:2, j-1])
      y[i,j] ~ dcat(omega[z[i,j], 1:2])
    }
  }
})

]

4.9.10 Time-varying survival \((\phi_t, p)\)

##        mean   sd 2.5%  50% 97.5% Rhat n.eff
## phi[1] 0.63 0.10 0.42 0.63  0.82 1.04   564
## phi[2] 0.46 0.06 0.35 0.46  0.59 1.01   629
## phi[3] 0.48 0.05 0.37 0.48  0.59 1.00   610
## phi[4] 0.62 0.06 0.51 0.62  0.73 1.00   553
## phi[5] 0.61 0.05 0.50 0.61  0.72 1.00   568
## phi[6] 0.59 0.05 0.48 0.59  0.69 1.03   463
## p      0.89 0.03 0.82 0.89  0.95 1.04   211

4.9.11 Time-varying detection \((\phi, p_t)\)

hmm.phipt <- nimbleCode({
  phi ~ dunif(0, 1) # prior survival
  gamma[1,1] <- phi      # Pr(alive t -> alive t+1)
  gamma[1,2] <- 1 - phi  # Pr(alive t -> dead t+1)
  gamma[2,1] <- 0        # Pr(dead t -> alive t+1)
  gamma[2,2] <- 1        # Pr(dead t -> dead t+1)
  delta[1] <- 1          # Pr(alive t = 1) = 1
  delta[2] <- 0          # Pr(dead t = 1) = 0
  for (t in 1:(T-1)){
    p[t] ~ dunif(0, 1) # prior detection
    omega[1,1,t] <- 1 - p[t]    # Pr(alive t -> non-detected t)
    omega[1,2,t] <- p[t]        # Pr(alive t -> detected t)
    omega[2,1,t] <- 1        # Pr(dead t -> non-detected t)
    omega[2,2,t] <- 0        # Pr(dead t -> detected t)
  }
  # likelihood
  for (i in 1:N){
    z[i,first[i]] ~ dcat(delta[1:2])
    for (j in (first[i]+1):T){
      z[i,j] ~ dcat(gamma[z[i,j-1], 1:2])
      y[i,j] ~ dcat(omega[z[i,j], 1:2, j-1])
    }
  }
})

4.9.12 Time-varying detection \((\phi, p_t)\)

##      mean   sd 2.5%  50% 97.5% Rhat n.eff
## phi  0.56 0.03 0.52 0.56  0.61 1.02   381
## p[1] 0.75 0.12 0.48 0.77  0.93 1.03   452
## p[2] 0.85 0.08 0.68 0.86  0.97 1.02   359
## p[3] 0.85 0.07 0.69 0.85  0.96 1.00   316
## p[4] 0.89 0.05 0.77 0.89  0.97 1.00   412
## p[5] 0.91 0.04 0.82 0.92  0.98 1.00   376
## p[6] 0.90 0.07 0.73 0.91  1.00 1.07   111

4.10 Why Bayes? Incorporate prior information.

4.11 Vague prior

So far, we have assumed a vague prior:

\[\phi_{prior} \sim \text{Beta}(1,1) = \text{Uniform}(0,1)\]

With a vague prior, mean posterior survival is \(\phi_{posterior} = 0.56\)

With credible interval \([0.52,0.62]\)

Posterior distribution of survival in color (two chains), prior in gray dashed line.

4.12 How to incorporate prior information?

Using information on body mass and annual survival of 27 European passerines, we can predict survival of European dippers using only body mass.

For dippers, body mass is 59.8g, therefore \(\phi = 0.57\) with \(\text{sd} = 0.073\).

Assuming an informative prior \(\phi_{prior} \sim \text{Normal}(0.57,0.073^2)\).

Mean posterior \(\phi_{posterior} = 0.56\) with credible interval \([0.52, 0.61]\).

No increase of precision in posterior inference.

4.13 How to incorporate prior information?

Now if you had only the three first years of data, what would have happened?

Width of credible interval is 0.53 (vague prior) vs. 0.24 (informative prior).

Huge increase of precision in posterior inference, a \(120\%\) gain!

4.13.1 Compare survival posterior with and without informative prior

4.14 Prior elicitation via moment matching

The prior \(\phi_{prior} \sim \text{Normal}(0.57,0.073^2)\) is not entirely satisfying

Remember the Beta distribution

Recall that the Beta distribution is a continuous distribution with values between 0 and 1. Useful for modelling survival or detection probabilities.

If \(X \sim Beta(\alpha,\beta)\), then the first and second moments of \(X\) are:

\[\mu = \text{E}(X) = \frac{\alpha}{\alpha + \beta}\]

\[\sigma^2 = \text{Var}(X) = \frac{\alpha\beta}{(\alpha + \beta)^2 (\alpha + \beta + 1)}\]

4.15 Moment matching

In the capture-recapture example, we know a priori that the mean of the probability we’re interested in is \(\mu = 0.57\) and its variance is \(\sigma^2 = 0.073^2\). Parameters \(\mu\) and \(\sigma^2\) are seen as the moments of a \(Beta(\alpha,\beta)\) distribution. Now we look for values of \(\alpha\) and \(\beta\) that match the observed moments of the Beta distribution \(\mu\) and \(\sigma^2\). We need another set of equations:

\[\alpha = \bigg(\frac{1-\mu}{\sigma^2}- \frac{1}{\mu} \bigg)\mu^2\]

\[\beta = \alpha \bigg(\frac{1}{\mu}-1\bigg)\]

For our model, that means:

(alpha <- ( (1 - 0.57)/(0.073*0.073) - (1/0.57) )*0.57^2)
## [1] 25.65
(beta <- alpha * ( (1/0.57) - 1))
## [1] 19.35

Now use \(\phi_{prior} \sim \text{Beta}(\alpha = 25.6,\beta = 19.3)\) instead of \(\phi_{prior} \sim \text{Normal}(0.57,0.073^2)\)

4.16 Prior predictive checks

4.16.1 Linear regression

Unreasonable prior \(\beta \sim N(0, 1000^2)\)

Reasonable prior \(\beta \sim N(2, 0.5^2)\)

4.16.2 Logistic regression

Unreasonable prior \(\text{logit}(\phi) = \beta \sim N(0, 10^2)\)

Reasonable prior \(\text{logit}(\phi) = \beta \sim N(0, 1.5^2)\)

4.17 Capture-recapture models rely on assumptions

Design: No mark lost, Identity of individuals recorded without error (no false positives), Captured individuals are a random sample

Model: Homogeneity of survival and recapture probabilities, Independence between individuals (overdispersion)

Test validity of assumptions: These assumptions should be valid, whatever inferential framework, Use goodness-of-fit tests Pradel et al. (2005), R implementation with package R2ucare, Posterior predictive checks can also be used (not covered; Gelman et al. 2020). Forward reference to chapter with gof and model selection.

4.17.1 Parameter-redundancy issue

Last survival and recapture probabilities cannot be estimated separately.

Poor mixing of the chains.


4.18 Parameter redundancy

Two issues

Intrinsic redundancy: Likelihood can be expressed by a smaller number of parameters; Feature of the model

Extrinsic redundancy: Model structure is fine, But lack of data makes a parameter non-estimable, Feature of the data.

4.19 Prior-posterior overlap for \(\phi_4\) and \(\phi_6\)

4.20 Prior-posterior overlap for \(p_3\) and \(p_7\)

4.21 What does survival actually mean in capture-recapture ?

Survival refers to the study area.

Mortality and permanent emigration are confounded.

Therefore we estimate apparent survival, not true survival.

Apparent survival probability = true survival × study area fidelity.

Consequently, apparent survival < true survival unless study area fidelity = 1.

Use caution with interpretation. If possible, combine with ring-recovery data, or go spatial to get closer to true survival.

4.22 Summary

  • Blabla.

  • Blabla.

4.23 Suggested reading