Dynamics

Code
paracou <- read_tsv("data/inventories/guyafor.tsv") %>% 
  filter(Forest == "Paracou") %>% 
  mutate(plot = as.numeric(Plot)) %>% 
  filter(!is.na(plot)) %>% 
  filter(Plot %in% c(1, 6, 11, 13:14)) %>% 
  filter(!is.na(Xutm), !is.na(Yutm)) %>% 
  filter(CensusYear %in% 2003:2013) %>% 
  mutate(dbh = CircCorr/pi, year = CensusYear, tree = idTree) %>% 
  filter(dbh >= 10) %>% 
  filter(CodeAlive == 1) %>% 
  select(plot, idTree, year, dbh)
par_adr <- filter(paracou, year == 2003) %>% 
  rename(dbh_initial = dbh) %>% 
  select(-year) %>% 
  full_join(filter(paracou, year == 2013) %>% 
              rename(dbh_final = dbh) %>% 
              select(-year)) %>% 
  mutate(dbh_final = ifelse(is.na(dbh_final), 0, dbh_final)) %>% 
  mutate(dbh_class = cut(dbh_initial, 
                         breaks = c(seq(10, 155, by = 5)), 
                         labels = c(seq(10, 150, by = 5)))) %>% 
  mutate(dbh_class = as.numeric(as.character(dbh_class))) %>% 
  group_by(plot, dbh_class) %>% 
  mutate(n_tot = n()) %>% 
  filter(dbh_final <= dbh_initial) %>% 
  filter(dbh_initial <= 101) %>% 
  group_by(plot, dbh_class, n_tot) %>% 
  summarise(n = n()) %>% 
  mutate(adr = n/n_tot/10*100) %>% 
  mutate(type = "obs", site = "Paracou")

sim_adr_p <- lapply(1:10, function(i)
  read_tsv(paste0("results/eval/Paracou_R", i, 
                            "/Paracou_R", i, "_0_initial_pattern.txt")) %>% 
              mutate(dbh_initial = dbh*100) %>% 
              select(s_name, col, row, dbh_initial) %>% 
              filter(dbh_initial > 10) %>% 
   left_join(read_tsv(paste0("results/eval/Paracou_R", i, 
                            "/Paracou_R", i, "_0_final_pattern.txt")) %>% 
              mutate(dbh_final = dbh*100) %>% 
              select(s_name, col, row, dbh_final) %>% 
              filter(dbh_final > 10)) %>% 
  mutate(dbh_final = ifelse(is.na(dbh_final), 0, dbh_final)) %>% 
  mutate(dbh_class = cut(dbh_initial, 
                         breaks = c(seq(10, 155, by = 5)), 
                         labels = c(seq(10, 150, by = 5)))) %>% 
  mutate(dbh_class = as.numeric(as.character(dbh_class))) %>% 
  group_by(dbh_class) %>% 
  mutate(n_tot = n()) %>% 
  filter(dbh_final <= dbh_initial) %>% 
  filter(dbh_initial <= 101) %>% 
  group_by(dbh_class, n_tot) %>% 
  summarise(n = n()) %>% 
  mutate(adr = n/n_tot/10*100) %>% 
  mutate(type = "sim", site = "Paracou") %>% 
  mutate(plot = i)) %>% 
  bind_rows()

sim_adr_t <- lapply(1:10, function(i)
  read_tsv(paste0("results/eval/Tapajos_R", i, 
                            "/Tapajos_R", i, "_0_initial_pattern.txt")) %>% 
              mutate(dbh_initial = dbh*100) %>% 
              select(s_name, col, row, dbh_initial) %>% 
              filter(dbh_initial > 10) %>% 
   left_join(read_tsv(paste0("results/eval/Tapajos_R", i, 
                            "/Tapajos_R", i, "_0_final_pattern.txt")) %>% 
              mutate(dbh_final = dbh*100) %>% 
              select(s_name, col, row, dbh_final) %>% 
              filter(dbh_final > 10)) %>% 
  mutate(dbh_final = ifelse(is.na(dbh_final), 0, dbh_final)) %>% 
  mutate(dbh_class = cut(dbh_initial, 
                         breaks = c(seq(10, 155, by = 5)), 
                         labels = c(seq(10, 150, by = 5)))) %>% 
  mutate(dbh_class = as.numeric(as.character(dbh_class))) %>% 
  group_by(dbh_class) %>% 
  mutate(n_tot = n()) %>% 
  filter(dbh_final <= dbh_initial) %>% 
  filter(dbh_initial <= 101) %>% 
  group_by(dbh_class, n_tot) %>% 
  summarise(n = n()) %>% 
  mutate(adr = n/n_tot/10*100) %>% 
  mutate(type = "sim", site = "Tapajos") %>% 
  mutate(plot = i)) %>% 
  bind_rows()

g_adr <- bind_rows(par_adr, sim_adr_p, sim_adr_t) %>% 
  group_by(site, type, dbh_class) %>% 
  summarise(adr_ll = quantile(adr, .05),
            adr_m = median(adr),  
            adr_hh  = quantile(adr, .95)) %>% 
  ggplot(aes(dbh_class, adr_m, col = type)) +
  geom_ribbon(aes(ymin = adr_ll, ymax = adr_hh, fill = type), col = NA, alpha = 0.2) +
  geom_line() +
  theme_bw() +
  scale_y_log10() +
  xlab("DBH [cm]") +
  ylab(expression("Death Rate [%"~yr^{-~1}~"]")) +
  scale_color_manual("", values = as.vector(cols[c("obs", "sim")]), 
                     labels = c("Inventory", "TROLL")) +
  scale_fill_manual("", values = as.vector(cols[c("obs", "sim")]), 
                     labels = c("Inventory", "TROLL")) +
  facet_wrap(~ site)  +
  xlim(10, 100)
g_adr

Evaluation of simulated versus observed annual death rates across 10-years dependent on tree original diameter in Paracou.
Code
sim_agr_p <- lapply(1:10, function(i)
  read_tsv(paste0("results/eval/Paracou_R", i, 
                  "/Paracou_R", i, "_0_final_pattern.txt")) %>% 
  mutate(dbh_final = dbh*100) %>% 
  select(col, row, dbh_final) %>% 
  filter(dbh_final > 10) %>% 
  left_join(read_tsv(paste0("results/eval/Paracou_R", i, 
                            "/Paracou_R", i, "_0_initial_pattern.txt")) %>% 
              mutate(dbh_initial = dbh*100) %>% 
              select(col, row, dbh_initial) %>% 
              filter(dbh_initial > 10)) %>% 
  filter(!is.na(dbh_initial)) %>% 
  mutate(agr = (dbh_final-dbh_initial)/10) %>% 
  filter(agr > 0) %>% 
  mutate(type = "sim", site = "Paracou") %>% 
  mutate(plot = i)) %>% 
  bind_rows()
sim_agr_t <- lapply(1:10, function(i)
  read_tsv(paste0("results/eval/Tapajos_R", i, 
                  "/Tapajos_R", i, "_0_final_pattern.txt")) %>% 
  mutate(dbh_final = dbh*100) %>% 
  select(col, row, dbh_final) %>% 
  filter(dbh_final > 10) %>% 
  left_join(read_tsv(paste0("results/eval/Tapajos_R", i, 
                            "/Tapajos_R", i, "_0_initial_pattern.txt")) %>% 
              mutate(dbh_initial = dbh*100) %>% 
              select(col, row, dbh_initial) %>% 
              filter(dbh_initial > 10)) %>% 
  filter(!is.na(dbh_initial)) %>% 
  mutate(agr = (dbh_final-dbh_initial)/10) %>% 
  filter(agr > 0) %>% 
  mutate(type = "sim", site = "Tapajos") %>% 
  mutate(plot = i)) %>% 
  bind_rows()
par_agr <- read_tsv("data/inventories/guyafor.tsv") %>% 
  filter(Forest == "Paracou") %>% 
  mutate(plot = as.numeric(Plot)) %>% 
  filter(!is.na(plot)) %>% 
  filter(Plot != 16) %>% 
  filter(Plot %in% c(1, 6, 11, 13:15)) %>% 
  filter(BotaSource == "Bota") %>% 
  filter(!is.na(Xutm), !is.na(Yutm)) %>% 
  mutate(dbh = CircCorr/pi, site = "Paracou", tree = idTree,
         x = Xfield, y = Yfield) %>% 
  filter(CensusYear %in% c(2003, 2013)) %>% 
  filter(dbh >= 10, CodeAlive == 1) %>% 
  group_by(plot, tree) %>% 
  summarise(dbh_initial = min(dbh), dbh_final = max(dbh)) %>% 
  mutate(agr = (dbh_final-dbh_initial)/10) %>% 
  filter(agr > 0) %>% 
  mutate(dbh_class = cut(dbh_initial, 
                         breaks = c(seq(10, 155, by = 5)), 
                         labels = c(seq(10, 150, by = 5)))) %>% 
  mutate(dbh_class = as.numeric(as.character(dbh_class))) %>% 
  mutate(type = "obs", site = "Paracou")
size <- 5
g_agr <- bind_rows(sim_agr_p, sim_agr_t, par_agr) %>% 
  filter(agr >= 0.005) %>% 
  filter(dbh_initial <= 101) %>% 
  mutate(dbh_class = cut(dbh_initial, 
                         breaks = c(seq(10, 155, by = size)), 
                         labels = c(seq(10, 155-size, by = size)))) %>% 
  mutate(dbh_class = as.numeric(as.character(dbh_class))) %>% 
  group_by(site, type, dbh_class) %>% 
  summarise(agr_ll = quantile(agr, .05),
            agr_m = median(agr),  
            agr_hh  = quantile(agr, .95)) %>% 
  ggplot(aes(dbh_class, agr_m, col = type)) +
  geom_ribbon(aes(ymin = agr_ll, ymax = agr_hh, fill = type), col = NA, alpha = 0.2) +
  geom_line() +
  theme_bw() +
  scale_y_log10() +
  xlab("DBH [cm]") +
  ylab(expression("Growth Rate [cm"~yr^{-~1}~"]")) +
  scale_color_manual("", values = as.vector(cols[c("obs", "sim")]), 
                     labels = c("Inventory", "TROLL")) +
  scale_fill_manual("", values = as.vector(cols[c("obs", "sim")]), 
                     labels = c("Inventory", "TROLL")) +
  facet_wrap(~ site) +
  xlim(10, 100)
g_agr

Evaluation of simulated versus observed annual growth rates across 10-years dependent on tree original diameter in Paracou.
Code
g <- cowplot::plot_grid(g_agr, g_adr, nrow = 2)
ggsave("figures/f06.png", g, width = 8, height = 6, bg = "white")
g

Caption.