Visualize differences between treatments
dat_phenophase_diff <- calc_phenophase_diff(dat_phenophase_time_clean)
plot_metric_difference(
dat_diff = dat_phenophase_diff %>% filter(species == "aceru", phenophase %in% c("budbreak")) %>% tidy_phenophase_name(),
type = "phenophase", x_label_short = F, simple = F
)
Visualize observational trends
dat_climate_spring <- summ_climate_season(dat_climate_daily, date_start = "Mar 15", date_end = "May 15", rainfall = 1, group_vars = c("site", "block", "plot", "canopy", "heat", "heat_name", "water", "water_name", "year"))
# dat_climate_fall <- summ_climate_season(dat_climate_daily, date_start = "Jul 15", date_end = "Sep 15", rainfall = 0, group_vars = c("site", "canopy", "heat", "heat_name", "water", "water_name", "year"))
plot_observational_trend(df = dat_phenophase_time_clean %>% filter(species == "aceru", phenophase %in% c("budbreak")) %>% tidy_phenophase_name(), dat_climate_spring, type = "phenophase", season = "spring")
Visualizing experimental and observational trends together with arrows
dat_phenophase_time_summ <- dat_phenophase_time_clean %>%
summ_metrics(level = "site", type = "phenophase") # ignore block and plot
dat_climate_spring_summ <- summ_climate_season(dat_climate_daily, date_start = "Mar 15", date_end = "May 15", rainfall = 1, level = "site")
plot_trend(
df = dat_phenophase_time_summ %>%
filter(phenophase == "budbreak") %>%
filter(species == "aceru"),
dat_climate = dat_climate_spring_summ,
type = "phenophase",
side_by_side = F
)
plot_trend(
df = dat_phenophase_time_summ %>%
filter(phenophase == "budbreak") %>%
filter(species == "acesa"),
dat_climate = dat_climate_spring_summ,
type = "phenophase",
side_by_side = F
)
plot_trend(
df = dat_phenophase_time_summ %>%
filter(phenophase == "budbreak") %>%
filter(species == "pinba"),
dat_climate = dat_climate_spring_summ,
type = "phenophase",
side_by_side = F
)
plot_trend(
df = dat_phenophase_time_summ %>%
filter(phenophase == "budbreak") %>%
filter(species == "pinst"),
dat_climate = dat_climate_spring_summ,
type = "phenophase",
side_by_side = F
)
Plot comparisons of coefficients
Train model with temperature difference, baseline temperature, and the interaction of the two.
dat_climate_spring_ambient <- calc_climate_ambient(dat_climate = dat_climate_spring, dat_phenophase)
dat_climate_spring_diff <- calc_climate_diff(dat_climate = dat_climate_spring, dat_climate_ambient = dat_climate_spring_ambient)
(df_treatment_effect_on_climate <- summ_treatment_effect_on_climate(dat_climate_spring_diff))
## # A tibble: 9 × 5
## heat_name water_name canopy temp mois
## <fct> <fct> <fct> <chr> <chr>
## 1 ambient ambient open 3.27e-17 ± 0.188 -2.04e-18 ± 0.0227
## 2 +1.7 °C ambient open 0.925 ± 0.564 -0.0014 ± 0.0228
## 3 +3.4 °C ambient open 1.86 ± 0.834 -0.0124 ± 0.0231
## 4 ambient reduced open -1.64e-17 ± 0.196 6.31e-19 ± 0.0111
## 5 +1.7 °C reduced open 0.81 ± 0.56 0.00383 ± 0.0208
## 6 +3.4 °C reduced open 1.64 ± 0.869 -0.00719 ± 0.0168
## 7 ambient ambient closed 2.4e-17 ± 0.183 5.2e-18 ± 0.0372
## 8 +1.7 °C ambient closed 1.1 ± 0.518 0.00267 ± 0.0365
## 9 +3.4 °C ambient closed 2.12 ± 0.947 -0.00462 ± 0.0351
dat_climate_spring_ambient %>%
ggplot(aes(x = temp, y = mois, col = site, group = site)) +
geom_point() +
geom_smooth(method = "lm", se = FALSE)
Examine number of years
dat_phenophase_time_clean %>%
group_by(species, canopy, water_name) %>%
summarise(n_year = n_distinct(year)) %>%
arrange(n_year)
## # A tibble: 52 × 4
## # Groups: species, canopy [38]
## species canopy water_name n_year
## <chr> <fct> <fct> <int>
## 1 aseca open reduced 1
## 2 aseca closed ambient 1
## 3 berpa open ambient 1
## 4 pigcl open ambient 1
## 5 query closed ambient 1
## 6 qumas open ambient 1
## 7 lonmo open ambient 2
## 8 lonmo open reduced 2
## 9 lonta open ambient 2
## 10 lonta open reduced 2
## # ℹ 42 more rows
dat_phenophase_time <- dat_phenophase_time_clean %>%
mutate(model = str_c(species, canopy, water_name, sep = "_")) %>%
group_by(species, model) %>%
mutate(group = str_c(site, year, sep = "_") %>% factor() %>% as.integer()) %>%
filter(n_distinct(year) >= 6) %>%
ungroup() %>%
tidy_treatment_code()
dat_phenophase_time_cov <- dat_phenophase_time %>%
left_join(dat_climate_spring_diff) %>%
{
# Extract only the `center` and `std` attributes
attributes(.)$center <- attr(dat_climate_spring_diff, "center")
attributes(.)$sd <- attr(dat_climate_spring_diff, "sd")
.
} %>%
drop_na(delta_temp_std)
I used a model with continuous temperature difference (with ambient), continuous baseline temperature, and their interaction.
test_phenophase_lme(data = dat_phenophase_time_cov, path = "alldata/intermediate/phenophase/continuous_bg/", season = "spring", chains = 1, iter = 4000, version = 4, num_cores = 5)
tidy_stanfit_all(path = "alldata/intermediate/phenophase/continuous_bg/", season = "spring", num_cores = 20)
calc_bayes_derived(path = "alldata/intermediate/phenophase/continuous_bg/", season = "spring", type = "phenophase", random = F, num_cores = 20)
I also tried a version that experimental treatment was discrete and baseline temperature was continuous. This version can reproduce PNAS paper negative interaction between warming treatment and baseline temperature, but not the previous model. I suspect that this is because experimental effect on temperature was smaller at lower baseline temperature.
test_phenophase_lme(data = dat_phenophase_time_cov, path = "alldata/intermediate/phenophase/discrete_bg/", season = "spring", chains = 1, iter = 4000, version = 5, num_cores = 5)
tidy_stanfit_all(path = "alldata/intermediate/phenophase/discrete_bg/", season = "spring", num_cores = 20)
calc_bayes_derived(path = "alldata/intermediate/phenophase/discrete_bg/", season = "spring", type = "phenophase", random = F, num_cores = 20)
df_lme_spring <- read_bayes_all(path = "alldata/intermediate/phenophase/continuous_bg/", season = "spring", full_factorial = F, derived = T, tidy_mcmc = T) %>%
tidy_model_name() %>%
tidy_species_name()
p_lme_summ <- plot_bayes_summary(
df_lme_spring %>%
filter(response == "start") %>%
filter(covariate == "warming"),
background = "full"
)
p_lme_summ$p_coef_line
p_lme_summ <- plot_bayes_summary(
df_lme_spring %>%
filter(response == "start") %>%
filter(covariate == "temperature"),
background = "full"
)
p_lme_summ$p_coef_line
p_lme_summ <- plot_bayes_summary(
df_lme_spring %>%
filter(response == "start") %>%
filter(covariate == "warming x temperature"),
background = "full"
)
p_lme_summ$p_coef_line
df_compare_trends_spring <- test_compare_trends(df_lme_spring) %>%
mutate(season = "spring") %>%
tidy_phenophase_name(season = "spring")
plot_trend_compare(df_compare_trends_spring %>% filter(response == "start", season == "spring"), species_label = T, ci = F)
df_compare_trends_spring %>%
filter(response == "start", season == "spring") %>%
group_by(sign, sig) %>%
summarise(n = n(), .groups = "drop") %>%
mutate(perc = n / sum(n))
## # A tibble: 4 × 4
## sign sig n perc
## <chr> <chr> <int> <dbl>
## 1 + ns 9 0.290
## 2 + sig 6 0.194
## 3 – ns 13 0.419
## 4 – sig 3 0.0968