Learn R Programming

capwire (version 1.1.4)

simCapture: Simulate data under various distributions of capture rates

Description

Simulates capture count data where individual capture rates are assumed to be drawn from a specified distribution.

Data can be used as input for fitting Equal Capture Model (with fitEcm), Two-Innate Rates Model (with fitTirm) or the Two-Innate Rates Model with partitioned data (with fitTirmPartition)

Usage

simCapture(n, s, dist.func, return.cap.probs=FALSE)

Arguments

n
The number of individuals in the population
s
The total number of samples collected
dist.func
The distribution of capture rates within the population (see details)
return.cap.probs
Logical, signifying whether individual capture probabilities should be returned (return.cap.probs=TRUE) or not (return.cap.probs=FALSE)

Value

If return.cap.probs=FALSE: A two-column data frame with the first column specifiying the capture class (i.e. individuals caught i times) and the second column specifying the number of individuals in each class.If return.cap.probs=TRUE: A list consisting of two items 1) A three-column data frame with the first column specifiying the individual IDs, the second column specifying the number of times each individual was captured and the third denoting the capture probability associated with each individual and 2) A two-column data frame with the first column specifiying the capture class (i.e. individuals caught i times) and the second column specifying the number of individuals in each class.

Details

We assume that there is heterogeneity in the capturabilities of individuals within a population. That is, some individuals are more likely to be captured than others

We also assume that the individual capturabilities are drawn from some distribution.

The distribution is specified by the dist.func argument. dist.func takes a function with parameter n, where n specifies the number of samples to be drawn. simCapture can take any distribution of this form but the capwire package includes several functions which allow for users to draw capture rates from several standard distributions such as a uniform (drawCapRatesUnif), exponential (drawCapRatesExp), gamma (drawCapRatesGamma) and geometric (drawCapRatesGeom).

References

Pennell M.W., C.R. Stansbury, L.P. Waits and C.R. Miller. submitted. capwire: A R Package for Estimating Population Census Size from Non-Invasive Genetic Sampling

See Also

drawCapRatesUnif, drawCapRatesGeom, drawCapRatesExp, drawCapRatesBeta, drawCapRatesGamma

Examples

Run this code
## Specify that capture probabilities are drawn from a uniform distribution

rates <- drawCapRatesUnif(lower=0.1, upper=1)

## Simulate data using the specified distribution

data <- simCapture(n=20, s=100, dist.func=rates, return.cap.probs=FALSE)

data

## Example of sampling capture probabilities from a non-standard distribution
## We want to use a truncated normal for this purpose

## Create a function which takes argumens mean, sd, and trunc.point
drawCapRates.truncnorm <- function(mean, sd, trunc.point){
	
	## Draw a large number of samples from a normal distribution with specified mean and sd
	normal.dist <- rnorm(100000, mean, sd)
	
	## Truncate the distribution at the point specified by trunc.point
	trunc.dist <- normal.dist[which(normal.dist >= trunc.point)]
	
	## Create a function which draws n samples from trunc.dist
	function(n){
		sample(trunc.dist, size=n, replace=TRUE)
	}
	
}

## Specify the distribution

my.dist <- drawCapRates.truncnorm(mean=2, sd=1, trunc.point=0)

## Look at the function that is returned

my.dist

## Simulate data under the specified distribution

my.data <- simCapture(n=20, s=100, dist.func=my.dist, return.cap.probs=TRUE)

my.data

Run the code above in your browser using DataLab