extbatchmarking_cov

Added covariates for parameters phi_t and p_t.

https://github.com/olobatuyi/extbatchmarking_cov

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (10.9%) to scientific vocabulary
Last synced: 10 months ago · JSON representation

Repository

Added covariates for parameters phi_t and p_t.

Basic Info
  • Host: GitHub
  • Owner: Olobatuyi
  • License: agpl-3.0
  • Language: R
  • Default Branch: main
  • Size: 60.5 KB
Statistics
  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created over 1 year ago · Last pushed about 1 year ago
Metadata Files
Readme License

README.Rmd

---
output: github_document
---

```{r, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  fig.path = "man/figures/README-",
  out.width = "100%"
)
```

# extBatchMarking: Implementation of Extended Batch Marking Model 

The primary objective of `extBatchMarking` is to facilitate the fitting of models developed by Cowen et al., $2017$ for the ecologist. The marked models can be seamlessly integrated with unmarked models to estimate population size. The combined model harnesses the power of both the N-mixture model and the Viterbi algorithm for hidden markov model to provide accurate population size estimates.

The primary objective of `extBatchMarking` is to facilitate the fitting of models developed by Cowen et al., $2017$ for the ecologist. The marked models can be seamlessly integrated with unmarked models to estimate population size. The combined model harnesses the power of both the N-mixture model and the Viterbi algorithm for hidden markov model to provide accurate population size estimates.

In ecological research, it's often challenging to directly count every individual of a species due to various factors such as their elusive nature or inaccessible habitats. As a result, Cowen et al., $2017$ employ two distinct modeling approaches: marked and unmarked models.

1. **Marked Models:** These models focus on individuals that have been uniquely identified or 'marked' in some way, such as through tagging, banding, or other identification methods. These marked individuals are tracked over time, and their data is used to estimate parameters related to the population, such as survival rates, population growth, or movement patterns.

2. **Unmarked Models:** Unmarked models, on the other hand, are designed to estimate population parameters without relying on individual identification.

The beauty of combining these two modeling approaches lies in their synergy. By leveraging both marked and unmarked data, ecologists can achieve more accurate and robust estimates of population abundance. Marked data provide insights into specific individuals, while unmarked data give a broader perspective on the entire population.

In practice, this combination is achieved through sophisticated statistical techniques, often utilizing concepts like the N-mixture model and algorithms like the Viterbi algorithm. These methods allow ecologists to integrate data from marked and unmarked individuals, resulting in more comprehensive and reliable population abundance estimates.

The models showcased in this example represent the foundational instances drawn from a set of four complex models available within the `extBatchMarking` package. These models serve as essential building blocks for understanding the advanced functionalities and capabilities offered by the package. 

The `extBatchMarking` package is designed to empower researchers with a powerful tool set for the analysis of batch-marked data in ecological and population studies. It allows users to efficiently fit and assess batch-marked models, aiding in the estimation of critical population parameters such as survival and capture probabilities.

In particular, the models illustrated here provide a comprehensive introduction to the core concepts and methodologies underpinning the package's functionality. They are intended to facilitate an initial grasp of how to work with batch-marked data, offering insights into the modeling techniques used in the field of population ecology.

It's worth noting that the results obtained using the `extBatchMarking` package align with the findings presented in Cowen et al. (2017). This alignment demonstrates the package's reliability and ability to replicate established research outcomes. The Cowen et al. (2017) results section serves as a benchmark against which the package's performance can be validated, providing users with confidence in the accuracy of their analyses.

By starting with these basic examples, users can progressively delve into more intricate and tailored analyses within the `extBatchMarking` package, ultimately enabling them to make meaningful contributions to the understanding of population dynamics and ecology. The package's versatility and fidelity to established research findings make it a valuable resource for both novice and experienced researchers in the field.

The example will guide you through the steps of how to employ this approach effectively, demonstrating its relevance and importance in ecological and wildlife studies. It showcases the power of merging marked and unmarked models to gain a deeper understanding of species populations and their dynamics within natural ecosystems."

## Installation

You can install the released version of `extBatchMarking` from [CRAN](https://CRAN.R-project.org) with:


``` {r}
devtools::load_all(".")
devtools::document()
devtools::load_all()

```

## Example 1

This is a basic example which shows how to fit a Batch marking model with constant `phi` and `p`. Example 1 can also be found in the Cowen et al., 2017 results using the `WeatherLoach` data using in the same paper:


```{r example}

library(extBatchMarking)

```


Load the data `WeatherLoach` from the `extBatchMarking` package: Here is the step-by-step guide on how to load data directly from `extBatchMarking` package. The defult data discussed in `Cowen et al. 2017`.


```{r load data}

data("WeatherLoach", package = "extBatchMarking")

```


First, we show with an example how to fit the `batchMarkHmmLL` and `batchMarkUnmarkHmmLL` functions. `batchMarkHmmLL` and `batchMarkUnmarkHmmLL` functions output the unoptimized log-likelihood values of marked only model and the combined models. These allow users know if the likelihood functions can be computed at the specified initial values. Otherwise, `NAN` or `Inf` will be returned. If so, the arguments of the functions should be revisited. 


```{r marked likelihood}

# Initial parameter
theta <- c(0, -1)

res1 <- batchMarkHmmLL(par           = theta,
                       data          = WeatherLoach,
                       choiceModel   = "model4",
                       covariate_phi = NULL,
                       covariate_p   = NULL)

res1


```

[1] 132.3349


## Example 2

```{r}

thet <- c(0.1, 0.1, 7, -1.5)

res3 <- batchMarkUnmarkHmmLL(par           = thet,
                             data          = WeatherLoach,
                             choiceModel   = "model4",
                             Umax          = 1800,
                             nBins         = 600,
                             covariate_phi = NULL,
                             covariate_p   = NULL)

res3

```

[1] 870.0261

## Example 3

```{r run example, echo = FALSE}

theta <- c(0, -1)

res <- batchMarkOptim(par           = theta,
                      data          = WeatherLoach,
                      choiceModel   = "model4",
                      method        = "BFGS", 
                      control       = list(trace = 1),
                      covariate_phi = NULL,
                      covariate_p   = NULL)

```

initial  value 132.334856 
final  value 124.984186 
converged


Print the results with the `print.batchMarkOptim()` function: This prints to the console the log-likelihood, AIC, recapture probability and survival probability with their corresponding standard errors. 

```{r result}

print(res)

```


[[1]]


| log.likelihood|      AIC|
|--------------:|--------:|
|       124.9842| 253.9684|

[[2]]


|      p| p_S.Error|    phi| phi_S.Error|
|------:|---------:|------:|-----------:|
| 0.1964|    0.0206| 0.6042|      0.0261|


Plot the results with the `plot.batchMarkOptim()` function: This plots the goodness-of-fit plot to perform a goodness-of-fit test for the model fit.

```{r}

plot(res)

```


## Example 4

This example serves as a fundamental illustration of the process of combining both marked and unmarked models to estimate the population abundance of a species. It demonstrates a key approach used in ecological and wildlife studies to gain insights into the size of a specific species population within a given habitat.

``` {r}

theta <- c(0.1, 0.1, 7, -1.5)

res2 <- batchMarkUnmarkOptim(par=theta,
                            data=WeatherLoach,
                            Umax=1800,
                            nBins=600,
                            choiceModel="model4",
                            popSize = "Horvitz_Thompson",
                            method="BFGS",
                            control=list(trace = 1),
                            covariate_phi = NULL,
                            covariate_p   = NULL)

```

initial  value 870.026082 
iter  10 value 205.041347
final  value 205.031738 
converged


Print the results with the `print.batchMarkUnmarkOptim()` function: This prints to the console the log-likelihood, AIC, recapture probability and survival probability with their corresponding standard errors. The species abundances are also provided which include number of unmarked individuals, number of marked individuals, and Total abundance.


```{r}

print(res2)

```


[[1]]


| log.likelihood|      AIC|
|--------------:|--------:|
|       205.0317| 418.0635|

[[2]]


|      p| p_S.Error|   phi| phi_S.Error|
|------:|---------:|-----:|-----------:|
| 0.1866|    0.0048| 0.614|      0.0169|

[[3]]


| No.of.Unmarked.U.| No.of.Marked.M.| Abundance.N.|
|-----------------:|---------------:|------------:|
|              1500|               0|         1500|
|               900|             171|         1071|
|               900|             268|         1168|
|               900|             322|         1222|
|               300|             118|          418|
|               300|             107|          407|
|               300|              54|          354|
|               300|              86|          386|
|               300|             107|          407|
|               300|             139|          439|
|               300|              64|          364|

[[4]]


|   Lambda| Lambda_S.Error|    Gam| Gam_S.Error|
|--------:|--------------:|------:|-----------:|
| 1346.844|       1903.361| 0.0599|       0.022|


Plot the results with the `plot.batchMarkOptim()` function: This plots the googdness-of-fit plot to perform a goodness-of-fit test for the model fit.

```{r}

plot(res2)

```

### Model 2 for marked model with covariate for phi

This provides some level of flexibility to the marked model by adding a placeholder for time-dependent covariate to better estimate parameter phi. For example, we might want to understand how temperature affects the survival rate of a species.

```{r}

#-------------------------------------------------
# Model 2: 10 phis and 1 prob
#-------------------------------------------------

theta <- c(-1, rep(0, 10))

cv <- matrix(seq(2, 10, length = 10), ncol = 1)
batchMarkHmmLL(theta, WeatherLoach, "model2", covariate_phi = cv, covariate_p = NULL)
res <- batchMarkOptim(par=theta, data=WeatherLoach, covariate_phi = cv, covariate_p = NULL, 
                      choiceModel = "model2", method="BFGS", control = list(trace = 1))

```


initial  value 132.334856 
iter  10 value 97.474508
iter  20 value 95.823647
iter  30 value 95.787362
iter  40 value 95.784462
iter  50 value 95.783391
iter  60 value 95.783072
final  value 95.783042 
converged


```{r}

#-------------------------------------------------
# Model 2: 10 phis and 1 prob
#-------------------------------------------------

print(res)

```

[[1]]


| log.likelihood|      AIC|
|--------------:|--------:|
|         95.783| 213.5661|

[[2]]


|     p| p_S.Error|    phi| phi_S.Error|
|-----:|---------:|------:|-----------:|
| 0.181|    0.0316| 0.3268|      0.0000|
| 0.181|    0.0316| 0.0000|      0.0000|
| 0.181|    0.0316| 1.0000|      0.8321|
| 0.181|    0.0316| 0.1082|      0.1306|
| 0.181|    0.0316| 0.5680|      0.1388|
| 0.181|    0.0316| 0.4722|      0.0009|
| 0.181|    0.0316| 0.9973|      8.2224|
| 0.181|    0.0316| 0.6458|      0.0985|
| 0.181|    0.0316| 0.6619|      0.1316|
| 0.181|    0.0316| 0.4397|      0.0285|


### Model 3 for marked model with covariate for p

This provides some level of flexibility to the marked model by adding a placeholder for time-dependent covariate to better estimate parameter p. For example, we might want to understand how temperature affects the survival rate of a species.

```{r}

#-------------------------------------------------
# Model 3: 1 phis and 10 prob
#-------------------------------------------------

theta <- c(-1, rep(0, 10))

cv <- matrix(seq(2, 10, length = 10), ncol = 1)
batchMarkHmmLL(theta, WeatherLoach, "model3", covariate_phi = NULL, covariate_p = cv)
res <- batchMarkOptim(par=theta, data=WeatherLoach, covariate_phi = NULL, covariate_p = cv, 
                      choiceModel = "model3", method="BFGS", control = list(trace = 1))

```

initial  value 200.001592 
iter  10 value 114.293180
final  value 97.288967 
converged

```{r}

#-------------------------------------------------
# Model 2: 1 phis and 10 prob
#-------------------------------------------------

print(res)

```

[[1]]


| log.likelihood|      AIC|
|--------------:|--------:|
|         97.289| 216.5779|

[[2]]


|      p| p_S.Error|   phi| phi_S.Error|
|------:|---------:|-----:|-----------:|
| 0.9559|    0.0182| 0.627|      0.0297|
| 0.9991|    0.0011| 0.627|      0.0297|
| 0.0084|    0.0099| 0.627|      0.0297|
| 0.0156|    0.0078| 0.627|      0.0297|
| 0.0793|    0.0241| 0.627|      0.0297|
| 0.0933|    0.0260| 0.627|      0.0297|
| 0.2411|    0.0410| 0.627|      0.0297|
| 0.3234|    0.0388| 0.627|      0.0297|
| 0.3903|    0.0352| 0.627|      0.0297|
| 0.3164|    0.0311| 0.627|      0.0297|


Owner

  • Name: Kehinde Olobatuyi
  • Login: Olobatuyi
  • Kind: user
  • Location: British Columbia, Canada.
  • Company: University of Victoria, BC

Post-doc

GitHub Events

Total
  • Push event: 1
  • Public event: 1
  • Pull request event: 2
  • Create event: 1
Last Year
  • Push event: 1
  • Public event: 1
  • Pull request event: 2
  • Create event: 1

Packages

  • Total packages: 1
  • Total downloads:
    • cran 486 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 3
  • Total maintainers: 1
cran.r-project.org: extBatchMarking

Extended Batch Marking Models

  • Versions: 3
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 486 Last month
Rankings
Dependent packages count: 28.6%
Dependent repos count: 36.7%
Average: 50.4%
Downloads: 85.8%
Maintainers (1)
Last synced: over 1 year ago

Dependencies

DESCRIPTION cran
  • R >= 4.0 depends
  • Rcpp * imports
  • doParallel * imports
  • foreach * imports
  • optimbase * imports
  • parallel * imports
  • knitr * suggests
  • testthat >= 3.0.0 suggests