---
title: "Modelos de ocorrência: uma espécie, uma estação"
author: "Leonardo Wedekin e Paulo Inácio Prado (http://ecologia.ib.usp.br/bie5703)"
output:
  html_document:
    toc: true
    theme: united
  pdf_document:
    toc: true
    highlight: zenburn
---

-------


* [Arquivo em pdf](./esquilos.pdf)
* [Arquivo em markdown](./esquilos.Rmd) (para executar os comandos no R studio)

-------
## Preparação


Abra o R e carregue os pacotes necessários

```{r}
library(unmarked)
library(RMark)
library(stringr)
library(plyr)
```
Usaremos dados de registros do esquilo _Spermophilus tereticaudus chlorus_ em 1917 plots no deserto americano.
[Aqui](http://ecologia.ib.usp.br/bie5703/doku.php?id=roteiros:occupancy#exerciciomodelo_de_uma_especie_uma_estacao)
há mais informações sobre este caso de estudo.

Os dados estão no formato nativo do MARK (_.inp_). Use os comandos abaixo para convertê-los para um objeto da classe _unmarkedFrame_,
do pacote _unmarked_:

```{r, eval=FALSE}
## Link dos dados na página da disciplina
url <- "http://ecologia.ib.usp.br/bie5703/lib/exe/fetch.php?media=roteiros:esquilos.inp"
## Importa arquivo inp
tmp <- convert.inp(url,
                   group.df=data.frame(habitat=c("Mesquite", "Creosote", "Shrub", "Other")),
                   covariates="distance")
## Seleciona historico de capturas e converte em data frame
y <- str_split(tmp$ch, pattern="")
y <- ldply(y, as.numeric)[,2:4]
## Cria objeto para o modelo de ocupação do unmarked
## (Veja vinhetas para os outros tipos de modelos e seus objetos)
esq <- unmarkedFrameOccu(y = y, siteCovs = tmp[,c("habitat","distance")])
```
```{r}
## Verifica objeto
summary(esq)
```

## Ajuste dos modelos

O pacote _unmarked_ usa a
[sintaxe de modelos lineares](http://ecologia.ib.usp.br/bie5782/doku.php?id=bie5782:03_apostila:06-modelos#a_funcao_lm) do R
e tem funções para diferentes tipos de
modelos de ocupação. Consulte as vinhetas do pacote para mais informações

```{r, eval=FALSE}
## Lista da vinhetas
vignette(package="unmarked")
## Abre pdf da vinheta de introdução
vignette(topic="unmarked", package="unmarked")
```
Para os modelos de ocupação com covariáveis usamos função _occu_.
Seu primeiro argumento é uma fórmula com o formato

> ~covariaveis de detecção ~covariáveis de ocupação


Um modelo com probabilidade de ocupação e detecção constantes:

```{r}
## Ajuste.
## ~1 indica constante
esq.m1 <- occu(~1 ~1, data=esq)
## Resumo do modelo
summary(esq.m1)
## Coeficientes na escala logito
coef(esq.m1)
## Intervalos de confiança dos coeficientes
confint(esq.m1, type='det') #p
confint(esq.m1, type='state') #psi
```
Um modelo com probabilidade de detecção variável entre as ocasiões:

```{r}
## ~obsNum indica uma detectabilidade por categoria de observação (ocasiões)
esq.m2 <- occu(~obsNum ~1, data=esq)
## Resumo do modelo
summary(esq.m2)
```
Modelo em que a detecção varia entre ocasiões e
a ocupação depende do tipo de habitat:

```{r}
esq.m3 <- occu(~obsNum ~habitat, data=esq)
## Resumo do modelo
summary(esq.m3)
```

Como o modelo acima, mas com a ocupação dependendo
também da distância a sítios do habitat _mesquite_:
```{r}
esq.m4 <- occu(~obsNum ~habitat+distance, data=esq)
## Resumo do modelo
summary(esq.m4)
```

## Seleção de modelos

O _unmarked_ tem funções para criar uma lista de modelos e
então realizar sua seleção por diversos critérios 

```{r}
modelos <- fitList("p(.)psi(.)"=esq.m1,
                   "p(data)psi(.)"=esq.m2,
                   "p(data)psi(habitat)"=esq.m3,
                   "p(data)psi(habitat+dist)"=esq.m4)
modSel(modelos)
```
O modelo de menor AIC ( e portanto $\Delta\text{AIC}=0$) é o mais plausível. Convenciona-se que modelos com $\Delta\text{AIC}\leq2$ são tão plausíveis quanto o selecionado.

## Cálculo do previsto

O padrão dos modelos de ocupação é usar a função logito
para as probabilidades de detecção e ocupação:

$$\text{logit}(p)=\log \left( \frac{p}{1-p} \right)$$

Portanto os coeficientes retornados pelas funções `summary`
e `coef` estão nesta escala.
Para obter as probabilidades estimadas pelo modelo
na escala original use a função `predict`.

Abaixo um exemplo deste cálculo para
as probabilidades de ocupação previstas pelo
modelo selecionado, que prevê efeito de
habitat e de distância:

```{r}
## primeiro criamos um dataframe com os valores das covariaveis em que faremos as previsões
## Objeto com as covariaveis
cv1 <- siteCovs(esq)
## Dataframe com as combinacoes dos 4 habitats e
## 100 distancias de zero ao maximo
df1 <- expand.grid(habitat=levels(cv1$habitat),
                   distance=seq(0, max(cv1$distance), length=100))
esq.m4.pred <- predict(esq.m4, type='state', newdata = df1)
```
E um exemplo de gráfico dos previstos e seus intervalos de confiança
para os plots no habitat _Creosote_:

```{r}
## Juntando os previstos as covariaveis
esq.m4.pred <- cbind(df1, esq.m4.pred)
## Plot de psi x distância para o habitat Creosote
plot(Predicted ~ distance, data=esq.m4.pred,
     subset=habitat=="Creosote",
     ylim=c(0,1), type="l",
     main="Creosote")
lines(upper ~ distance, data=esq.m4.pred,
      subset=habitat=="Creosote", lty=2)
lines(lower ~ distance, data=esq.m4.pred,
     subset=habitat=="Creosote", lty=2)

```

Repita os gráficos dos previstos para os outros habitats.
