Heterogeneidad en detección entre sitios
La heterogeneidad puede ocurrir en las probabilties de detección sobre el tiempo o el espacio para una variedad de razones. Por ejemplo, ya hemos visto cómo modelar la heterogeneidad genérica a través del tiempo por el efecto del tiempo; podríamos tener fácilmente la detección modelo en función de una covariable específica a tiempo como si el ruido ambiental.
Heterogeneidad de detección también puede ocurrir en el espacio, por lo que entre los sitios. Una razón para esto podría ser variaciones en las condiciones del hábitat que hacen que los animales más detectable en algunos hábitats que otros. Otra podría ser que la abundancia (densidad) de los animales varía entre los sitios. Debido a la detección de ocupación se basa en la detección de 1 o más animales, todos los demás en igualdad de condiciones, es más probable que se pierda los animales en lugares con pocos animales que los que tienen muchos animales. Dependiendo de qué tipo de heterogeneidad se cree que operar, y lo que se está grabando en el estudio, se puede acercarse a la heterogeneidad de modelización del lugar en una variedad de maneras:
Heterogeneidad genérica (sin especificar) entre los sitios en la detección puede ser modelado utilizando modelos finitos mezcla (un enfoque aplicado en MARK) o modelos de efectos aleatorios (por ejemplo, tal como se aplica en WinBUGS). Tocaremos brevemente sobre estos enfoques en este taller.
Las covariables se pueden utilizar para modelar la heterogeneidad, pero sólo si covariables tanto explican heterogeneidad significativa, y se miden en todos o un número suficiente de sitios. Debido a que el modelado de covarianza para la detección funciona igual que cualquier otra covariable específica del lugar (ya sea para predecir la ocupación o la detección) ya hemos visto genéricamente como hacer esto y no va a considerar más a fondo.
La heterogeneidad puede ser modelado como una función de la abundancia, que es el enfoque adoptado en los modelos Royle A su vez hay 2 enfoques básicos:
La abundancia no se observa directamente, sino que se infiere a través de las historias de detección
Se observa la abundancia, por lo general a través de los recuentos incompletos.
En cualquiera de los casos anteriores, la abundancia es ahora un parámetro en el modelo, y la ocupación reduce a un mapeo del estado abundancia en cada sitio a una variable binaria I (n> 0).
Modelo Royle-Nichols
El modelo de Royle-Nichols (J. A. Royle y JD Nichols. Estimating abundance from repeated presence-absence data or point counts. Ecology, 84(3):777-790, 2003) se basa en la idea bastante clara de que para para la detección de que no tenga lugar en un sitio, ninguno de los animales presentes Ni se puede detectar. Si cada animal tiene una probabilidad r de detección, entonces la probabilidad global de detección está dada por:
p i = 1 - (1 - r) N i
Los datos para este modelo son exactamente las mismas que para el modelo estándar de ocupación, pero el modelo opera bajo la transformación anterior relativa abundancia a la detección mediante el parámetro r. El modelo se implementa en la función occuRN (), que tiene una sintaxis como ocu () excepto en los parámetros fundamentales son r y N en lugar de p y Ψ. Al igual que ocu () podemos modelar estos parámetros a través de covariables. A continuación se lee en los datos y llevar a cabo en paralelo Royle-Nichols analiza, que corresponde a los primeros modelos encajamos ocu ().
Tenga en cuenta que r es en la escala logit (como p era) pero ahora N está en la escala logarítmica. Después de cada ajuste del modelo podemos producir estimaciones volver transformadas (o predicciones si covariables están involucrados). También hay una disposición para una estimación empírica de Bayes para la distribución de probabilidad de la abundancia en cada sitio.
Script para ambos modelos de Royle
rm(list=ls())
> #install unmarked if not installed
> #install.packages("unmarked")
> #load library
> library(unmarked)
> #set here the directory where your data files are located
> #data_dir<-"C:/Users/mike/Dropbox/company/pacblackduck/workshop/occupancy"
> #data_dir<-"C:/Documents and Settings/conroy/My Documents/Dropbox/company/pacblackduck/workshop/occupancy"
> data_dir<-"C:/mydir"
> setwd(data_dir)
>
> data<-read.csv("blgr.csv")
> #detection data rows are sites columns are detection replicates
> y<-data[,2:4]
> n<-nrow(data)
> #site level (individual) covariates
> blgr.site<-data[,5:9]
>
>
>
> #create time factor and use as covariate
> #observation level (time specific) covariates
> time<-as.factor(rep(c(1,2,3),n))
> blgr.obs<-data.frame(time)
>
> #put everything together in unmarked data frame
> #note that covariate can come from separate files
> blgr <- unmarkedFrameOccu(y = y, siteCovs = blgr.site,obsCovs=blgr.obs)
> #summary of unmarked data frame
> summary(blgr)
41 sites
Maximum number of observations per site: 3
Mean number of observations per site: 3
Sites with at least one detection: 33
Tabulation of y observations:
0 1 <NA>
63 60 0
Site-level covariates:
field.size bqi crop.hist crop1 crop2
Min. : 6.40 Min. :0.0000 crop :28 Min. :0.0 Min. :0.0
1st Qu.: 9.60 1st Qu.:0.0000 grass: 4 1st Qu.:0.0 1st Qu.:0.0
Median :12.70 Median :0.0000 mixed: 4 Median :1.0 Median :0.0
Mean :16.16 Mean :0.3415 NA's : 5 Mean :0.7 Mean :0.2
3rd Qu.:18.80 3rd Qu.:1.0000 3rd Qu.:1.0 3rd Qu.:0.0
Max. :53.90 Max. :1.0000 Max. :1.0 Max. :1.0
NA's :1 NA's :1
Observation-level covariates:
time
1:41
2:41
3:41
>
> #CREATING MODELS
> #Royle-Nichols model with no covariates
> rn1<-occuRN(~1 ~1,blgr)
>
> #back transformations
> backTransform(rn1,'det')
Backtransformed linear combination(s) of Detection estimate(s)
Estimate SE LinComb (Intercept)
0.22 0.114 -1.27 1
Transformation: logistic
> backTransform(rn1,"state")
Backtransformed linear combination(s) of Abundance estimate(s)
Estimate SE LinComb (Intercept)
3.05 1.62 1.12 1
Transformation: exp
>
>
> # Empirical Bayes estimates of abundance at each site
> re <- ranef(rn1)
Warning message:
In .local(object, ...) :
You did not specify K, the maximum value of N, so it was set to 50
> plot(re)
>
> #create some more occupancy models
> #constant detection, constant occupancy
> rn1<-occuRN(~1 ~1,blgr)
> backTransform(rn1,"state")
Backtransformed linear combination(s) of Abundance estimate(s)
Estimate SE LinComb (Intercept)
3.05 1.62 1.12 1
Transformation: exp
>
> #time specific detection, constant occupancy
> rn2<-occuRN(~time ~1,blgr)
> backTransform(rn2,"state")
Backtransformed linear combination(s) of Abundance estimate(s)
Estimate SE LinComb (Intercept)
2.99 1.54 1.09 1
Transformation: exp
>
> #constant detection, abundance predicted by bqi
> rn3<-occuRN(~1 ~bqi,blgr)
> backTransform(linearComb(rn3, c(1, 0), type="state"))
Backtransformed linear combination(s) of Abundance estimate(s)
Estimate SE LinComb (Intercept) bqi
3.46 1.94 1.24 1 0
Transformation: exp
>
Modelo de conteos por Royle
El modelo de conteos de Royle (J. A Royle. N-mixture models for estimating population size from spatially replicated counts. Biometrics , 60(1):108-115, 2004) utiliza los conteos repetidos y modelos de mezcla para estimar la abundancia. Debido a que utiliza los conteos en lugar de los datos de detección simple de detección (0/1 sí/no), el método se basa en unos supuestos sobre el patrón de distribución de la población encuestada, aunque el núcleo del modelo (la relación matemática entre p y r a través de N) se mantiene igual. La mecánica del método de recuento de Royle son similares a los del método Royle-Nichos, pero requieren la especificación de una trama de datos pcount de unmarked, que lee los recuentos reales; En este ejemplo los recuentos están contenidos en las columnas 10-12 del archivo de entrada.
Script para ambos modelos de Royle
> ###############COUNT MODELS
> rm(list=ls())
> data<-read.csv("blgr.csv")
> #detection data rows are sites columns are detection replicates
> counts<-data[,10:12]
> n<-nrow(data)
> #site level (individual) covariates
> blgr_count.site<-data[,5:9]
>
> #create time factor and use as covariate
> #observation level (time specific) covariates
> time<-as.factor(rep(c(1,2,3),n))
> blgr.obs<-data.frame(time)
>
> #observation level (time specific) covariates
> blgr_count.obs<-data.frame(time)
>
>
> #put everything together in unmarked data frame
> #note that covariate can come from separate files
> blgr_count <- unmarkedFramePCount(y = counts, siteCovs = blgr_count.site,obsCovs=blgr_count.obs)
> summary(blgr_count)
unmarkedFrame Object
41 sites
Maximum number of observations per site: 3
Mean number of observations per site: 3
Sites with at least one detection: 33
Tabulation of y observations:
0 1 2 3 4 <NA>
62 29 19 8 5 0
Site-level covariates:
field.size bqi crop.hist crop1 crop2
Min. : 6.40 Min. :0.0000 crop :28 Min. :0.0 Min. :0.0
1st Qu.: 9.60 1st Qu.:0.0000 grass: 4 1st Qu.:0.0 1st Qu.:0.0
Median :12.70 Median :0.0000 mixed: 4 Median :1.0 Median :0.0
Mean :16.16 Mean :0.3415 NA's : 5 Mean :0.7 Mean :0.2
3rd Qu.:18.80 3rd Qu.:1.0000 3rd Qu.:1.0 3rd Qu.:0.0
Max. :53.90 Max. :1.0000 Max. :1.0 Max. :1.0
NA's :1 NA's :1
Observation-level covariates:
time
1:41
2:41
3:41
>
Una vez que la trama de datos está listo, el análisis procedeade procede en mucho la misma manera que antes, pero ahora usando el comando pcount ():
> #CREATING MODELS
> #Royle count model with no covariates
> pc1<-pcount(~1 ~1,blgr_count)
Warning message:
In pcount(~1 ~ 1, blgr_count) : K was not specified and was set to 104.
> backTransform(pc1,"state")
Backtransformed linear combination(s) of Abundance estimate(s)
Estimate SE LinComb (Intercept)
4.44 1.69 1.49 1
Transformation: exp
> #time specific
> pc2<-pcount(~time ~1,blgr_count)
Warning message:
In pcount(~time ~ 1, blgr_count) : K was not specified and was set to 104.
> backTransform(pc2,"state")
Backtransformed linear combination(s) of Abundance estimate(s)
Estimate SE LinComb (Intercept)
4.41 1.67 1.48 1
Transformation: exp
>
La aproximación proporciona valores estimados muy similares de detección r per-animal, pero un poco más alto (pero con los IC se solapan) los valores estimados de N para las series de modelos comparables con o sin covariables.
Script de R a realizar los análisis anteriores, y los datos del ejemplo.
Siguiente - Estimar la ocupación para estaciones múltiples