## ----setup, message=FALSE-----------------------------------------------------
library(spotr)
library(mgcv)
library(brms)
library(sf)
library(ggplot2)
library(dplyr)

## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  fig.width = 5
)

## -----------------------------------------------------------------------------
data(cuckoo)
head(cuckoo)

## ----fig.height = 7-----------------------------------------------------------
cuckoo = st_as_sf(cuckoo, coords = c("lon", "lat"), crs = st_crs(4326), remove = FALSE)
data(swe_map)

## ----fig.height = 7-----------------------------------------------------------
ggplot(swe_map) +  geom_sf() + geom_sf(aes(col = count), data = subset(cuckoo, yr == 2010)) 

## -----------------------------------------------------------------------------
gam_fit = gam(count ~ te(yr, lat, lon, d = c(1,2), k = c(8,30)), data = cuckoo, family = nb())

## ----fig.height = 7-----------------------------------------------------------
spat_grid = st_make_grid(cuckoo, cellsize = .5, what = "centers") |> st_sf() |>
  st_intersection(swe_map)
# Add columns with longitude and latitude
spat_grid[, c("lon", "lat")] = st_coordinates(spat_grid)
ggplot(swe_map) + geom_sf() + geom_sf(data = spat_grid)

## -----------------------------------------------------------------------------
pred_points = merge(data.frame(yr = 2000:2020), spat_grid, by = NULL)

## -----------------------------------------------------------------------------
swe_ind = index(gam_fit, timevar = "yr", newdata = pred_points)
head(swe_ind)

## -----------------------------------------------------------------------------
swe_ind |> 
  ggplot(aes(x = yr, y = index)) + 
  geom_linerange(aes(ymin = ci_2.5, ymax = ci_97.5), col = "gray50") + 
  geom_linerange(aes(ymin = ci_10, ymax = ci_90), col = "red3", lwd =1) +
  geom_point() + ylim(.8,1.2)

## -----------------------------------------------------------------------------
index(gam_fit, timevar = "yr", newdata = pred_points, baseline = 2000:2010) |> 
  ggplot(aes(x = yr, y = index)) +   
  geom_linerange(aes(ymin = ci_2.5, ymax = ci_97.5), col = "gray50") + 
  geom_linerange(aes(ymin = ci_10, ymax = ci_90), col = "red3", lwd =1) +
  geom_point() + ylim(.8,1.2)

## -----------------------------------------------------------------------------
index(gam_fit, timevar = "yr", newdata = pred_points, type = "delta") |> 
  ggplot(aes(x = yr, y = index)) +   
  geom_linerange(aes(ymin = ci_2.5, ymax = ci_97.5), col = "gray50") + 
  geom_linerange(aes(ymin = ci_10, ymax = ci_90), col = "red3", lwd =1) +
  geom_point() 

## ----fig.height = 10, fig.width=7---------------------------------------------
index(gam_fit, timevar = "yr", byvar = "county", newdata = pred_points, baseline = 2000:2010) |> 
  ggplot(aes(x = yr, y = index, ymin = ci_2.5, ymax = ci_97.5)) +   
  geom_linerange(aes(ymin = ci_2.5, ymax = ci_97.5), col = "gray50") + 
  geom_linerange(aes(ymin = ci_10, ymax = ci_90), col = "red3", lwd = 1) +
  geom_point(size=.5) + 
  scale_x_continuous(breaks = c(2005,2015)) + facet_wrap(vars(county))

## ----fig.height = 10, fig.width=7---------------------------------------------
index(gam_fit, timevar = "yr", byvar = "county", newdata = pred_points, baseline = 2000:2010, type = "global") |> 
  ggplot(aes(x = yr, y = index, ymin = ci_2.5, ymax = ci_97.5)) +   
  geom_linerange(aes(ymin = ci_2.5, ymax = ci_97.5), col = "gray50") + 
  geom_linerange(aes(ymin = ci_10, ymax = ci_90), col = "red3", lwd = 1) +
  geom_point(size=.5) + 
  scale_x_continuous(breaks = c(2005,2015)) + facet_wrap(vars(county))

## ----fig.height = 10, fig.width=7---------------------------------------------
# Count number of predictions points per county 
pred_points = pred_points |> group_by(county, yr) |> mutate(ppc = n())
w = 1/pred_points$ppc

# Denominator weights
bw = 1/(nrow(spat_grid) * length(2000:2010))
  
index(gam_fit, timevar = "yr", byvar = "county", newdata = pred_points, weights = w, bweights = bw, baseline = 2000:2010, type = "global")  |> 
  ggplot(aes(x = yr, y = index, ymin = ci_2.5, ymax = ci_97.5)) +   
  geom_linerange(aes(ymin = ci_2.5, ymax = ci_97.5), col = "gray50") + 
  geom_linerange(aes(ymin = ci_10, ymax = ci_90), col = "red3", lwd = 1) +
  geom_point(size=.5) + 
  scale_x_continuous(breaks = c(2005,2015)) + facet_wrap(vars(county))