Nothing
## ----include = FALSE----------------------------------------------------------
# rmd style
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
warning = FALSE,
message = FALSE,
fig.align = 'center',
fig.width = 6
)
options(tibble.print_min = 5, tibble.print_max = 5)
# load packages
library(hatchR)
library(tibble)
library(ggplot2)
library(lubridate)
library(dplyr)
## ----eval = FALSE-------------------------------------------------------------
# library(hatchR)
# library(tibble)
# library(ggplot2)
## -----------------------------------------------------------------------------
model_table
## -----------------------------------------------------------------------------
sockeye_hatch_mod <- model_select(
author = "Beacham and Murray 1990",
species = "sockeye",
model = 2,
development_type = "hatch"
)
sockeye_hatch_mod
## ----eval=FALSE---------------------------------------------------------------
# View(model_table)
## -----------------------------------------------------------------------------
bt_data <- tibble(
temperature = c(2,5,8,11,14),
days_to_hatch = c(194,87,54,35,28)
)
bt_data
## -----------------------------------------------------------------------------
bt_data |>
ggplot(aes(x = temperature, y = days_to_hatch)) +
geom_point() +
theme_classic()
## -----------------------------------------------------------------------------
bt_fit <- fit_model(temp = bt_data$temperature,
days = bt_data$days_to_hatch,
species = "brown_trout",
development_type = "hatch")
## -----------------------------------------------------------------------------
bt_fit
## -----------------------------------------------------------------------------
bt_hatch_exp <- bt_fit$expression
bt_hatch_exp
## -----------------------------------------------------------------------------
### make temp regime
set.seed(123)
# create random temps and corresponding dates
temps_sim <- sort(rnorm(n =30, mean = 16, sd = 1), decreasing = FALSE)
dates_sim <- seq(from = ymd("2000-07-01"),
to = ymd("2000-07-31"), length.out = 30)
data_sim <- matrix(NA, 30, 2) |> data.frame()
data_sim[,1] <- temps_sim
data_sim[,2] <- dates_sim
# change names so they aren't the same as the vector objects
colnames(data_sim) <- c("temp_sim", "date_sim")
## ----echo = TRUE--------------------------------------------------------------
### smallmouth mod
smallmouth <- matrix(NA, 10, 2) |> data.frame()
colnames(smallmouth) <- c("hours", "temp_F")
smallmouth$hours <- c(52, 54, 70, 78, 90, 98, 150, 167, 238, 234)
smallmouth$temp_F <- c(77, 75, 71, 70, 67, 65, 60, 59, 55, 55)
# change °F to °C and hours to days
smallmouth <- smallmouth |>
mutate(days = ceiling(hours/24),
temp_C = (temp_F -32) * (5/9))
# model object for smallmouth bass
smb_mod <- fit_model(temp = smallmouth$temp_C,
days = smallmouth$days,
species = "smb",
development_type = "hatch")
### catfish mod
catfish <- matrix(NA, 3, 2) |> data.frame()
colnames(catfish) <- c("days", "temp_C")
catfish$days <- c(16,21,26)
catfish$temp_C <- c(22,10,7)
cat_mod <- fit_model(temp = catfish$temp_C,
days = catfish$days,
species = "catfish",
development_type = "hatch")
### lake sturgeon mod
sturgeon <- matrix(NA, 7, 2) |> data.frame()
colnames(sturgeon) <- c("days", "CTU")
sturgeon$days <- c(7,5,6,6,5,11,7)
sturgeon$CTU <- c(58.1, 62.2, 61.1, 57.5, 58.1, 71.4, 54.7)
sturgeon <- sturgeon |>
mutate(temp_C = CTU/days) # change CTUs to average temp and add column
sturgeon_mod <- fit_model(days = sturgeon$days,
temp = sturgeon$temp_C,
species = "sturgeon",
development_type = "hatch")
## ----echo = TRUE--------------------------------------------------------------
#model fits
smb_mod$r_squared; cat_mod$r_squared; sturgeon_mod$r_squared
## -----------------------------------------------------------------------------
### predict_phenology
#smallmouth bass
smb_res <- predict_phenology(data = data_sim,
dates = date_sim,
temperature = temp_sim,
spawn.date = "2000-07-01",
model = smb_mod$expression)
# catfish
catfish_res <- predict_phenology(data = data_sim,
dates = date_sim,
temperature = temp_sim,
spawn.date = "2000-07-01",
model = cat_mod$expression)
# sturgeon
# note that 16 C is pretty far out of range of temps for model fit, not best practice
sturgeon_res <- predict_phenology(data = data_sim,
dates = date_sim,
temperature = temp_sim,
spawn.date = "2000-07-01",
model = sturgeon_mod$expression)
## -----------------------------------------------------------------------------
# summary for all species
all_res <- data.frame(matrix(NA, 3, 2))
colnames(all_res) <- c("start", "stop")
all_res$start <- c(catfish_res$dev.period$start,
smb_res$dev.period$start,
sturgeon_res$dev.period$start)
all_res$stop <- c(catfish_res$dev.period$stop,
smb_res$dev.period$stop,
sturgeon_res$dev.period$stop)
all_res <- all_res |>
mutate(days = ceiling(stop-start),
index = c(17,16.5,16)) # index for our horizontal bars
all_res$Species <- c("Channel Catfish", "Smallmouth Bass", "Lake Sturgeon")
## -----------------------------------------------------------------------------
ggplot() +
geom_point(data = data_sim, aes(x = date_sim, y = temp_sim )) +
geom_line(data = data_sim, aes(x = date_sim, y = temp_sim )) +
geom_rect(data = all_res, aes(xmin = start, xmax = stop, ymax =index-.35, ymin = index-.5, fill = Species)) +
geom_label(data = all_res, aes(x = start + (stop - start) / 1.25, y = (index -0.425), label = days)) +
labs(x = "Date", y = "Temperature (°C)") +
scale_fill_manual(values = c("deepskyblue4", "grey23", "darkolivegreen4")) +
theme_classic() +
theme(legend.position = c(0.75, 0.25))
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.