The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
The goal of quickNmix is to aid in the fitting of asymptotic N-mixture models, which are computed significantly faster than their canonical counterpart when population sizes are large.
You can install the released version of quickNmix from CRAN with:
install.packages("quickNmix")
And the development version from GitHub with:
# install.packages("devtools")
::install_github("mrparker909/quickNmix") devtools
This is a basic example which shows how to fit a model with site varying lambda, and time varying pdet:
library(quickNmix)
::tic()
tictoc= anmu[1:2,1:5] # ancient murrelet chick counts
nit = fitNmix(nit=nit,
mod K=400, # upper bound on population size
l_s_c=list(c(0,1)), # lambda site covariate
p_t_c=list(c(0,1,1,1,1)),
control=list(reltol=1e-5))
#> Warning: executing %dopar% sequentially: no parallel backend registered
::toc()
tictoc#> 564.72 sec elapsed
model AIC value:
$model_results$AIC
mod#> [1] 77.5027
lambda estimates for each site:
$model_results$estimate_matrices$lambda
mod#> [,1]
#> [1,] 32.3202
#> [2,] 135.3340
gamma estimates for each site and time:
$model_results$estimate_matrices$gamma
mod#> [,1] [,2] [,3] [,4] [,5]
#> [1,] 25.84412 25.84412 25.84412 25.84412 25.84412
#> [2,] 25.84412 25.84412 25.84412 25.84412 25.84412
omega estimates for each site and time:
$model_results$estimate_matrices$omega
mod#> [,1] [,2] [,3] [,4] [,5]
#> [1,] 0.9572106 0.9572106 0.9572106 0.9572106 0.9572106
#> [2,] 0.9572106 0.9572106 0.9572106 0.9572106 0.9572106
pdet estimates for each site and time:
$model_results$estimate_matrices$pdet
mod#> [,1] [,2] [,3] [,4] [,5]
#> [1,] 0.9901256 0.4421962 0.4421962 0.4421962 0.4421962
#> [2,] 0.9901256 0.4421962 0.4421962 0.4421962 0.4421962
This is a basic example which shows how you can use multiple cores to compute:
library(quickNmix)
# uses library doParallel, here we use 2 cores
::registerDoParallel(cores = 2)
doParallel
::tic()
tictoc= anmu[c(2,5),1:12] # ancient murrelet chick counts
nit = fitNmix(nit=nit, K=400)
mod2 ::toc()
tictoc#> 2908.69 sec elapsed
mod2#> $optim_results
#> $optim_results$par
#> B_l_0 B_g_0 B_o_0 B_p_0
#> 4.995500 4.279050 -2.047628 3.029386
#>
#> $optim_results$value
#> [1] 107.5519
#>
#> $optim_results$counts
#> function gradient
#> 231 100
#>
#> $optim_results$convergence
#> [1] 1
#>
#> $optim_results$message
#> NULL
#>
#>
#> $model_results
#> $model_results$NLL
#> [1] 107.5519
#>
#> $model_results$AIC
#> [1] 223.1037
#>
#> $model_results$estimate_matrices
#> $model_results$estimate_matrices$lambda
#> [,1]
#> [1,] 147.7468
#> [2,] 147.7468
#>
#> $model_results$estimate_matrices$gamma
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
#> [1,] 72.17185 72.17185 72.17185 72.17185 72.17185 72.17185 72.17185 72.17185
#> [2,] 72.17185 72.17185 72.17185 72.17185 72.17185 72.17185 72.17185 72.17185
#> [,9] [,10] [,11] [,12]
#> [1,] 72.17185 72.17185 72.17185 72.17185
#> [2,] 72.17185 72.17185 72.17185 72.17185
#>
#> $model_results$estimate_matrices$omega
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7]
#> [1,] 0.1142923 0.1142923 0.1142923 0.1142923 0.1142923 0.1142923 0.1142923
#> [2,] 0.1142923 0.1142923 0.1142923 0.1142923 0.1142923 0.1142923 0.1142923
#> [,8] [,9] [,10] [,11] [,12]
#> [1,] 0.1142923 0.1142923 0.1142923 0.1142923 0.1142923
#> [2,] 0.1142923 0.1142923 0.1142923 0.1142923 0.1142923
#>
#> $model_results$estimate_matrices$pdet
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7]
#> [1,] 0.9538842 0.9538842 0.9538842 0.9538842 0.9538842 0.9538842 0.9538842
#> [2,] 0.9538842 0.9538842 0.9538842 0.9538842 0.9538842 0.9538842 0.9538842
#> [,8] [,9] [,10] [,11] [,12]
#> [1,] 0.9538842 0.9538842 0.9538842 0.9538842 0.9538842
#> [2,] 0.9538842 0.9538842 0.9538842 0.9538842 0.9538842
#>
#>
#>
#> $model_data
#> $model_data$K
#> [1] 400
#>
#> $model_data$nit
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
#> [1,] 134 61 93 84 92 65 105 86 69 84 87 68
#> [2,] 148 93 90 103 94 58 65 65 53 63 67 63
#>
#> $model_data$l_s_c
#> NULL
#>
#> $model_data$g_s_c
#> NULL
#>
#> $model_data$g_t_c
#> NULL
#>
#> $model_data$o_s_c
#> NULL
#>
#> $model_data$o_t_c
#> NULL
#>
#> $model_data$p_s_c
#> NULL
#>
#> $model_data$p_t_c
#> NULL
#>
#> $model_data$SMALL_a_CORRECTION
#> [1] FALSE
Multi-threading is implemented using R packages doParallel and foreach. Note that multi-threading is used to split the computation of the transition probability matrix by rows. This may not be efficient on some architectures, and will not be efficient for small K: efficiency increases with increasing K. Alternative choices for multi-core processing are being considered.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.