sim.spatialDS {AHMbook} | R Documentation |

Generates data with the following steps:

1. Simulate a spatially correlated habitat covariate (x) over a grid of pixels covering a square.

2. Distribute the population of N individuals over the square with probability of location in a pixel related to the covariate.

3. Decide which individuals are detected using a distance sampling model with an observer at the center of the square, with either a half normal or a logit detection function. (Note that all the individuals in the square can be detected.)

4. If `keep.all = FALSE`

, return the locations of only the individuals detected.

To recreate the data sets used in the book with R 3.6.0 or later, include `sample.kind="Rounding"`

in the call to `set.seed`

. This should only be used for reproduction of old results.

sim.spatialDS(N = 1000, beta = 1, sigma = 1, keep.all = FALSE, B = 3, model=c("logit", "halfnorm"), lambda = B/3, useHabitat, show.plot=TRUE)

`N` |
total population size in the square |

`beta` |
coefficient for the effect of spatial covariate x on the distribution of individuals |

`sigma` |
scale parameter of detection function |

`keep.all` |
if TRUE, the data for all individuals are returned; if FALSE, only for individuals detected. |

`B` |
distance from the observer to the side of the square. This is usually set so that the probability of detection of individuals outside the square is negligable, eg, |

`model` |
The detection function used, can be "logit" or "halfnorm": see Details. |

`lambda` |
The scale parameter for the spatially autocorrelated Habitat covariate. |

`useHabitat` |
If the output from a previous simulation is provided, the same Habitat covariate will be used (and |

`show.plot` |
choose whether to show plots or not. Set to FALSE when using function in simulations. |

The "logit" detection function is `2*plogis(-d^2/(2*sigma^2))`

, which corresponds to the detection model implemented in `unmarked::pcount.spHDS`

.

A list with the values of the input arguments and the following additional elements:

`u1 ` |
x coordinate of each animal |

`u2 ` |
y coordinate of each animal |

`d ` |
distance of each animal from the center of the circle |

`pixel.id ` |
the pixel in which each animal is located, the row number in |

`y ` |
indicator of detection of each animal, a vector of length N |

`N.real ` |
the number of animals inside the circle of radius B |

`Habitat ` |
Value of the spatially correlated habitat covariate, a 900 x 1 matrix |

`grid ` |
Coordinates of the center of each pixel, a dataframe with 900 rows and 2 columns |

If `keep.all = FALSE`

(the default), only the animals detected are included in `u1, u2, d, pixel.id`

.

Kéry & Royle (2016, p.535 and discussion p.540) and earlier versions of `AHMbook`

included a hazard rate detection function. This is problematic because the detection probability at distance zero is less than 1 (`p(0) < 1`

) and should not be used. It is replaced here with the `logit`

detection function, which does have `p(0) = 1`

.

Marc Kéry & Andy Royle

Kéry, M. & Royle, J.A. (2016) *Applied Hierarchical Modeling in Ecology* AHM2 - 9.8.3.

# Generate data with the default arguments and look at the structure: tmp <- sim.spatialDS() str(tmp) # Generate date with model = "logit" and analyse the data with unmarked::pcount.spatialHDS # RNGkind(sample.kind = "Rounding") # run this for R >= 3.6.0 set.seed(1234) tmp <- sim.spatialDS(model="logit") # Plot shows a large area of good habitat west of the observer with many animals detected str(tmp) # 272 animals detected out of 850 inside the circle (N.real) # Fit some models with unmarked if(require(unmarked)) { # Get the count of animals detected in each pixel pixel.count <- tabulate(tmp$pixel.id, nbins=nrow(tmp$grid)) # Centre the Habitat covariate Habitat <- tmp$Habitat - mean(tmp$Habitat) # Create a detection covariate: distance between observer and pixel center dist <- with(tmp, sqrt((grid[,1]-B)^2 + (grid[,2]-B)^2)) # Construct an unmarkedFrame umf <- unmarkedFramePCount(y=cbind(pixel.count), siteCovs=data.frame(dist=dist, Habitat=Habitat)) summary(umf) (fm0 <- pcount.spHDS(~ -1 + I(dist^2) ~ 1, umf, K=20)) (fm1 <- pcount.spHDS(~ -1 + I(dist^2) ~ Habitat, umf, K=20)) # The model with Habitat has much lower AIC # Get an estimate of the total population in the square (true is N = 1000) sum(predict(fm1, type='state')[, 1]) }

[Package *AHMbook* version 0.2.3 Index]