simulate
objectR/summarise.R
risk_curve.Rd
Calculate (quasi-)extinction risk at multiple thresholds
for a simulate
object
risk_curve(sims, threshold = NULL, subset = NULL, times = NULL, n = 100)
an object returned from simulate
integer
or numeric
vector
denoting the set of threshold population sizes used to define
the risk curve. Defaults to n
evenly spaced values
from 0 to the maximum observed abundance
integer
vector denoting the population classes
to include in calculation of population abundance. Defaults to
all classes
integer
vector specifying generations to
include in calculation of extinction risk. Defaults to all
simulated generations
integer
specifying number of threshold values
to use in default case when threshold
is not specified.
Defaults to 100
Risk curves represent pr_extinct
at multiple
threshold population sizes simultaneously. This gives an expression
of risk of population declines below a range of values. Risk curves
are extracted from a simulate
object as the
proportion of replicate trajectories that fall below each
threshold value at any time step within a set period. Abundances
can be specified for all population classes or for a subset
of classes.
# define a basic population
nstage <- 5
popmat <- matrix(0, nrow = nstage, ncol = nstage)
popmat[reproduction(popmat, dims = 4:5)] <- c(10, 20)
popmat[transition(popmat)] <- c(0.25, 0.3, 0.5, 0.65)
# define a dynamics object
dyn <- dynamics(popmat)
# simulate with the default updater
sims <- simulate(dyn, nsim = 1000)
# calculate risk curve
risk_curve(sims)
#> 0 6 12 19 25 31 37 44 50 56 62 68 75
#> 0.000 0.000 0.000 0.000 0.031 0.203 0.587 0.921 0.996 1.000 1.000 1.000 1.000
#> 81 87 93 100 106 112 118 124 131 137 143 149 156
#> 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
#> 162 168 174 181 187 193 199 205 212 218 224 230 237
#> 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
#> 243 249 255 261 268 274 280 286 293 299 305 311 317
#> 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
#> 324 330 336 342 349 355 361 367 373 380 386 392 398
#> 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
#> 405 411 417 423 430 436 442 448 454 461 467 473 479
#> 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
#> 486 492 498 504 510 517 523 529 535 542 548 554 560
#> 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
#> 566 573 579 585 591 598 604 610 616
#> 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
# calculate risk curve for multiple thresholds between 0 and 100
risk_curve(sims, threshold = seq(0, 100, by = 1))
#> 0 1 2 3 4 5 6 7 8 9 10 11 12
#> 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
#> 13 14 15 16 17 18 19 20 21 22 23 24 25
#> 0.000 0.000 0.000 0.000 0.000 0.000 0.001 0.002 0.003 0.008 0.012 0.018 0.033
#> 26 27 28 29 30 31 32 33 34 35 36 37 38
#> 0.051 0.068 0.095 0.124 0.167 0.199 0.260 0.317 0.384 0.449 0.517 0.566 0.627
#> 39 40 41 42 43 44 45 46 47 48 49 50 51
#> 0.695 0.751 0.816 0.869 0.900 0.927 0.948 0.962 0.975 0.986 0.992 0.996 0.997
#> 52 53 54 55 56 57 58 59 60 61 62 63 64
#> 0.998 0.999 0.999 0.999 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
#> 65 66 67 68 69 70 71 72 73 74 75 76 77
#> 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
#> 78 79 80 81 82 83 84 85 86 87 88 89 90
#> 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
#> 91 92 93 94 95 96 97 98 99 100
#> 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
# calculate risk curve for 4 and 5 year olds only
risk_curve(sims, subset = 4:5)
#> 0 0 1 1 1 2 2 3 3 3 4 4 4
#> 0.000 0.001 0.030 0.287 0.715 0.967 0.997 1.000 1.000 1.000 1.000 1.000 1.000
#> 5 5 6 6 6 7 7 7 8 8 9 9 9
#> 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
#> 10 10 10 11 11 12 12 12 13 13 13 14 14
#> 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
#> 15 15 15 16 16 16 17 17 18 18 18 19 19
#> 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
#> 19 20 20 21 21 21 22 22 22 23 23 24 24
#> 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
#> 24 25 25 25 26 26 27 27 27 28 28 28 29
#> 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
#> 29 30 30 30 31 31 31 32 32 33 33 33 34
#> 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
#> 34 34 35 35 36 36 36 37 37
#> 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
# calculate risk curve but ignore first 10 years
risk_curve(sims, times = 11:51)
#> 0 3 7 10 14 17 20 24 27 31 34 37 41
#> 0.000 0.000 0.000 0.000 0.000 0.000 0.002 0.017 0.081 0.186 0.386 0.587 0.793
#> 44 48 51 55 58 61 65 68 72 75 78 82 85
#> 0.916 0.968 0.993 0.995 0.997 0.999 1.000 1.000 1.000 1.000 1.000 1.000 1.000
#> 89 92 95 99 102 106 109 112 116 119 123 126 130
#> 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
#> 133 136 140 143 147 150 153 157 160 164 167 170 174
#> 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
#> 177 181 184 187 191 194 198 201 204 208 211 215 218
#> 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
#> 222 225 228 232 235 239 242 245 249 252 256 259 262
#> 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
#> 266 269 273 276 279 283 286 290 293 296 300 303 307
#> 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
#> 310 314 317 320 324 327 331 334 337
#> 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000