pacman::p_load(dplyr, readxl, tidyr, raster, vegan, tigris, sf, sp, plotly, ggrepel, kableExtra, brms)
# Tree PCQ Data
tree_data <- read_excel("C:/Users/DrewIvory/OneDrive - University of Florida/Desktop/School/PHD/01_Projects/05_SharedData/Field_Data_FL_AL_MS.xlsx",
sheet = "Tree_PCQ")
tree_data <- tree_data %>%
filter(Authority %in% c("BRSF", "WSF", "Jay"))
# Soil Data
fuel_data <- read_excel("C:/Users/DrewIvory/OneDrive - University of Florida/Desktop/School/PHD/01_Projects/05_SharedData/Field_Data_FL_AL_MS.xlsx",
sheet = "Fuel_Sampling")
fuel_data <- fuel_data %>%
filter(Authority %in% c("BRSF", "WSF", "Jay"))
Seasonal_Fuel_Sampling <- read_excel("C:/Users/DrewIvory/OneDrive - University of Florida/Desktop/School/PHD/01_Projects/01_FuelDynamics/02_Data/02_Fuel_Data/Seasonal_Fuel_Sampling.xlsx",
sheet = "Fuel_Data")
Seasonal_Fuel_Sampling <- Seasonal_Fuel_Sampling %>%
filter(Authority %in% c("BRSF", "WSF", "Jay"))
# Seasonal Sampling Locations
Seasonal_Sampling_Locations <- read_excel("C:/Users/DrewIvory/OneDrive - University of Florida/Desktop/School/PHD/01_Projects/01_FuelDynamics/02_Data/02_Fuel_Data/Seasonal_Fuel_Sampling.xlsx",
sheet = "Sites")
Seasonal_Sampling_Locations <- Seasonal_Sampling_Locations %>%
filter(Authority %in% c("BRSF", "WSF", "Jay"))
# Bag Weights
bag_weights <- read_excel("C:/Users/DrewIvory/OneDrive - University of Florida/Desktop/School/PHD/01_Projects/01_FuelDynamics/02_Data/02_Fuel_Data/Seasonal_Fuel_Sampling.xlsx",
sheet = "Bag_Avg")
## New names:
## • `` -> `...6`
## • `` -> `...7`
## • `` -> `...8`
## • `` -> `...9`
## • `` -> `...10`
## • `` -> `...11`
# Site Data
CogonSites <- read_excel("C:/Users/DrewIvory/OneDrive - University of Florida/Desktop/School/PHD/01_Projects/05_SharedData/CogonSites_FL_AL_MS.xlsx")
CogonSites <- CogonSites %>%
filter(Authority %in% c("BRSF", "WSF", "Jay"))
# Only include Florida/Alabama Sites
CogonSites <- CogonSites[CogonSites$Authority != "CNF" & CogonSites$Authority != "DSNF", ]
#Fuel Dynamics ## Combine seasonal fuel data
Comb_Live_Data_Net <- Combined_Data_Net %>%
mutate(
Live_Bag = as.numeric(Live_Bag),
Live_Weight_Post = as.numeric(Live_Weight_Post),
Live_Weight_Initial = as.numeric(Live_Weight_Initial),
Live_Height = as.numeric(Height),
Net_Live = as.numeric(Net_Live),
Status = as.character(Status) # Status as a character
)
## Warning: There was 1 warning in `mutate()`.
## ℹ In argument: `Live_Height = as.numeric(Height)`.
## Caused by warning:
## ! NAs introduced by coercion
Comb_Live_Data_Net <- Comb_Live_Data_Net %>%
mutate(biomass = Net_Live)
Comb_Live_Data_Net <- Comb_Live_Data_Net %>%
filter(biomass >= 0)
Comb_Live_Data_Net <- Comb_Live_Data_Net %>%
mutate(relative_moisture_content = ifelse(biomass > bioT, ((Live_Weight_Initial - Live_Bag) - Net_Live) / Net_Live * 100, NA))
avg_live_values_Net <- Comb_Live_Data_Net %>%
group_by(Plot, Season, Status) %>%
summarize(avg_live_biomass = mean(biomass, na.rm = TRUE),
avg_live_moisture_content = mean(relative_moisture_content, na.rm = TRUE),
avg_soil_moisture = mean(Soil_Moisture, na.rm = TRUE),
avg_height = mean(Live_Height, na.rm = TRUE) / 100,
.groups = "drop")
Comb_Dead_Data_Net <- Combined_Data_Net %>%
mutate(
Dead_Bag = as.numeric(Dead_Bag),
Dead_Weight_Post = as.numeric(Dead_Weight_Post),
Dead_Weight_Initial = as.numeric(Dead_Weight_Initial),
Net_Dead = as.numeric(Net_Dead),
Status = as.character(Status) # Status as a character
)
Comb_Dead_Data_Net <- Comb_Dead_Data_Net %>%
mutate(biomass = Net_Dead)
Comb_Dead_Data_Net <- Comb_Dead_Data_Net %>%
filter(biomass >= 0)
Comb_Dead_Data_Net <- Comb_Dead_Data_Net %>%
mutate(relative_moisture_content = ifelse(biomass > bioT, ((Dead_Weight_Initial - Dead_Bag) - Net_Dead) / Net_Dead * 100, NA))
avg_dead_values_Net <- Comb_Dead_Data_Net %>%
group_by(Plot, Season, Status) %>%
summarize(avg_dead_biomass = mean(biomass, na.rm = TRUE),
avg_dead_moisture_content = mean(relative_moisture_content, na.rm = TRUE),
avg_soil_moisture = mean(Soil_Moisture, na.rm = TRUE),
.groups = "drop")
Comb_Litter_Data_Net <- Combined_Data_Net %>%
mutate(
Litter_Bag = as.numeric(Litter_Bag),
Litter_Weight_Post = as.numeric(Litter_Weight_Post),
Litter_Weight_Initial = as.numeric(Litter_Weight_Initial),
Net_Litter = as.numeric(Net_Litter),
Status = as.character(Status) # Status as a character
)
Comb_Litter_Data_Net <- Comb_Litter_Data_Net %>%
mutate(biomass = Net_Litter)
Comb_Litter_Data_Net <- Comb_Litter_Data_Net %>%
filter(biomass >= 0)
Comb_Litter_Data_Net <- Comb_Litter_Data_Net %>%
mutate(relative_moisture_content = ifelse(biomass > bioT, ((Litter_Weight_Initial - Litter_Bag) - Net_Litter) / Net_Litter * 100, NA))
avg_litter_values_Net <- Comb_Litter_Data_Net %>%
group_by(Plot, Season, Status) %>%
summarize(avg_litter_biomass = mean(biomass, na.rm = TRUE),
avg_litter_moisture_content = mean(relative_moisture_content, na.rm = TRUE),
avg_soil_moisture = mean(Soil_Moisture, na.rm = TRUE),
.groups = "drop")
Comb_Live_Data_Avg <- Combined_Data_Avg %>%
mutate(
Live_Bag = as.numeric(Live_Bag),
Live_Weight_Post = as.numeric(Live_Weight_Post),
Live_Weight_Initial = as.numeric(Live_Weight_Initial),
Live_Height = as.numeric(Height),
Dry_LiveBag = as.numeric(Dry_LiveBag),
Status = as.character(Status) # Status as a character
)
## Warning: There were 2 warnings in `mutate()`.
## The first warning was:
## ℹ In argument: `Live_Height = as.numeric(Height)`.
## Caused by warning:
## ! NAs introduced by coercion
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 1 remaining warning.
Comb_Live_Data_Avg <- Comb_Live_Data_Avg %>%
mutate(biomass = Live_Weight_Post - Dry_LiveBag)
Comb_Live_Data_Avg <- Comb_Live_Data_Avg %>%
filter(biomass >= 0)
Comb_Live_Data_Avg <- Comb_Live_Data_Avg %>%
mutate(relative_moisture_content = ifelse(biomass > bioT, (Live_Weight_Initial - Live_Weight_Post) / biomass * 100, NA))
avg_live_values_Avg <- Comb_Live_Data_Avg %>%
group_by(Plot, Season, Status) %>%
summarize(avg_live_biomass = mean(biomass, na.rm = TRUE),
avg_live_moisture_content = mean(relative_moisture_content, na.rm = TRUE),
avg_soil_moisture = mean(Soil_Moisture, na.rm = TRUE),
avg_height = mean(Live_Height, na.rm = TRUE) / 100,
.groups = "drop")
Comb_Dead_Data_Avg <- Combined_Data_Avg %>%
mutate(
Dead_Bag = as.numeric(Dead_Bag),
Dead_Weight_Post = as.numeric(Dead_Weight_Post),
Dead_Weight_Initial = as.numeric(Dead_Weight_Initial),
Dry_DeadBag = as.numeric(Dry_DeadBag),
Status = as.character(Status) # Status as a character
)
## Warning: There was 1 warning in `mutate()`.
## ℹ In argument: `Dry_DeadBag = as.numeric(Dry_DeadBag)`.
## Caused by warning:
## ! NAs introduced by coercion
Comb_Dead_Data_Avg <- Comb_Dead_Data_Avg %>%
mutate(biomass = Dead_Weight_Post - Dry_DeadBag)
Comb_Dead_Data_Avg <- Comb_Dead_Data_Avg %>%
filter(biomass >= 0)
Comb_Dead_Data_Avg <- Comb_Dead_Data_Avg %>%
mutate(relative_moisture_content = ifelse(biomass > bioT, (Dead_Weight_Initial - Dead_Weight_Post) / biomass * 100, NA))
avg_dead_values_Avg <- Comb_Dead_Data_Avg %>%
group_by(Plot, Season, Status) %>%
summarize(avg_dead_biomass = mean(biomass, na.rm = TRUE),
avg_dead_moisture_content = mean(relative_moisture_content, na.rm = TRUE),
avg_soil_moisture = mean(Soil_Moisture, na.rm = TRUE),
.groups = "drop")
Comb_Litter_Data_Avg <- Combined_Data_Avg %>%
mutate(
Litter_Bag = as.numeric(Litter_Bag),
Litter_Weight_Post = as.numeric(Litter_Weight_Post),
Litter_Weight_Initial = as.numeric(Litter_Weight_Initial),
Dry_LitterBag = as.numeric(Dry_LitterBag),
Status = as.character(Status) # Status as a character
)
## Warning: There was 1 warning in `mutate()`.
## ℹ In argument: `Dry_LitterBag = as.numeric(Dry_LitterBag)`.
## Caused by warning:
## ! NAs introduced by coercion
Comb_Litter_Data_Avg <- Comb_Litter_Data_Avg %>%
mutate(biomass = Litter_Weight_Post - Dry_LitterBag)
Comb_Litter_Data_Avg <- Comb_Litter_Data_Avg %>%
filter(biomass >= 0)
Comb_Litter_Data_Avg <- Comb_Litter_Data_Avg %>%
mutate(relative_moisture_content = ifelse(biomass > bioT, (Litter_Weight_Initial - Litter_Weight_Post) / biomass * 100, NA))
avg_litter_values_Avg <- Comb_Litter_Data_Avg %>%
group_by(Plot, Season, Status) %>%
summarize(avg_litter_biomass = mean(biomass, na.rm = TRUE),
avg_litter_moisture_content = mean(relative_moisture_content, na.rm = TRUE),
avg_soil_moisture = mean(Soil_Moisture, na.rm = TRUE),
.groups = "drop")
# Live
avg_live_values_Combined <- avg_live_values_Net %>%
full_join(avg_live_values_Avg, by = "Plot", suffix = c("_Net", "_Avg")) %>%
mutate(
avg_live_biomass = coalesce(avg_live_biomass_Net, avg_live_biomass_Avg),
avg_live_moisture_content = coalesce(avg_live_moisture_content_Net, avg_live_moisture_content_Avg),
avg_soil_moisture = coalesce(avg_soil_moisture_Net, avg_soil_moisture_Avg),
avg_height = coalesce(avg_height_Net, avg_height_Avg),
Season = coalesce(Season_Net, Season_Avg),
Status = coalesce(Status_Net, Status_Avg)
) %>%
select(Plot, Season, Status, avg_live_biomass, avg_live_moisture_content, avg_soil_moisture, avg_height)
# Dead
avg_dead_values_Combined <- avg_dead_values_Net %>%
full_join(avg_dead_values_Avg, by = "Plot", suffix = c("_Net", "_Avg")) %>%
mutate(
avg_dead_biomass = coalesce(avg_dead_biomass_Net, avg_dead_biomass_Avg),
avg_dead_moisture_content = coalesce(avg_dead_moisture_content_Net, avg_dead_moisture_content_Avg),
avg_soil_moisture = coalesce(avg_soil_moisture_Net, avg_soil_moisture_Avg),
Season = coalesce(Season_Net, Season_Avg),
Status = coalesce(Status_Net, Status_Avg)
) %>%
select(Plot, Season, Status, avg_dead_biomass, avg_dead_moisture_content, avg_soil_moisture)
# Litter
avg_litter_values_Combined <- avg_litter_values_Net %>%
full_join(avg_litter_values_Avg, by = "Plot", suffix = c("_Net", "_Avg")) %>%
mutate(
avg_litter_biomass = coalesce(avg_litter_biomass_Net, avg_litter_biomass_Avg),
avg_litter_moisture_content = coalesce(avg_litter_moisture_content_Net, avg_litter_moisture_content_Avg),
avg_soil_moisture = coalesce(avg_soil_moisture_Net, avg_soil_moisture_Avg),
Season = coalesce(Season_Net, Season_Avg),
Status = coalesce(Status_Net, Status_Avg)
) %>%
select(Plot, Season, Status, avg_litter_biomass, avg_litter_moisture_content, avg_soil_moisture)
There are 10,000 square meters in a hectare. Biomass is from 25 cm by 25 cm quadrats, so we have 0.0625 square meters. Therefore, 10,000/0.0625 = 160,000. So biomass gets multiplied by 160,000 and divided by 1,000,000 to convert from grams to tonnes.
Fuel_model_quantiles <- avg_fuel_values %>%
group_by(Status, Season) %>%
summarize(avg_live_biomass_25 = quantile(avg_live_biomass, 0.25, na.rm = TRUE) * 0.16,
avg_live_biomass_50 = quantile(avg_live_biomass, 0.50, na.rm = TRUE) * 0.16,
avg_live_biomass_75 = quantile(avg_live_biomass, 0.75, na.rm = TRUE) * 0.16,
avg_dead_biomass_25 = quantile(avg_dead_biomass, 0.25, na.rm = TRUE) * 0.16,
avg_dead_biomass_50 = quantile(avg_dead_biomass, 0.50, na.rm = TRUE) * 0.16,
avg_dead_biomass_75 = quantile(avg_dead_biomass, 0.75, na.rm = TRUE) * 0.16,
avg_litter_biomass_25 = quantile(avg_litter_biomass, 0.25, na.rm = TRUE) * 0.16,
avg_litter_biomass_50 = quantile(avg_litter_biomass, 0.50, na.rm = TRUE) * 0.16,
avg_litter_biomass_75 = quantile(avg_litter_biomass, 0.75, na.rm = TRUE) * 0.16,
avg_live_moisture_content_25 = quantile(avg_live_moisture_content, 0.25, na.rm = TRUE),
avg_live_moisture_content_50 = quantile(avg_live_moisture_content, 0.50, na.rm = TRUE),
avg_live_moisture_content_75 = quantile(avg_live_moisture_content, 0.75, na.rm = TRUE),
avg_dead_moisture_content_25 = quantile(avg_dead_moisture_content, 0.25, na.rm = TRUE),
avg_dead_moisture_content_50 = quantile(avg_dead_moisture_content, 0.50, na.rm = TRUE),
avg_dead_moisture_content_75 = quantile(avg_dead_moisture_content, 0.75, na.rm = TRUE),
avg_litter_moisture_content_25 = quantile(avg_litter_moisture_content, 0.25, na.rm = TRUE),
avg_litter_moisture_content_50 = quantile(avg_litter_moisture_content, 0.50, na.rm = TRUE),
avg_litter_moisture_content_75 = quantile(avg_litter_moisture_content, 0.75, na.rm = TRUE),
avg_soil_moisture_25 = quantile(avg_soil_moisture, 0.25, na.rm = TRUE),
avg_soil_moisture_50 = quantile(avg_soil_moisture, 0.50, na.rm = TRUE),
avg_soil_moisture_75 = quantile(avg_soil_moisture, 0.75, na.rm = TRUE),
avg_height_25 = quantile(avg_height, 0.25, na.rm = TRUE),
avg_height_50 = quantile(avg_height, 0.50, na.rm = TRUE),
avg_height_75 = quantile(avg_height, 0.75, na.rm = TRUE),
.groups = "drop")
# Kable table of quantiles
kable(Fuel_model_quantiles)
Status | Season | avg_live_biomass_25 | avg_live_biomass_50 | avg_live_biomass_75 | avg_dead_biomass_25 | avg_dead_biomass_50 | avg_dead_biomass_75 | avg_litter_biomass_25 | avg_litter_biomass_50 | avg_litter_biomass_75 | avg_live_moisture_content_25 | avg_live_moisture_content_50 | avg_live_moisture_content_75 | avg_dead_moisture_content_25 | avg_dead_moisture_content_50 | avg_dead_moisture_content_75 | avg_litter_moisture_content_25 | avg_litter_moisture_content_50 | avg_litter_moisture_content_75 | avg_soil_moisture_25 | avg_soil_moisture_50 | avg_soil_moisture_75 | avg_height_25 | avg_height_50 | avg_height_75 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Invaded | Green_Up | 1.1562667 | 2.1616000 | 3.4720000 | 1.8922667 | 2.4192000 | 3.108267 | 3.486400 | 4.974400 | 9.215467 | 54.66557 | 117.06158 | 133.0470 | 9.195465 | 10.39843 | 16.57708 | 9.487179 | 11.44906 | 14.92138 | 4.833333 | 5.766667 | 7.10000 | 0.5600000 | 0.7533333 | 0.9500000 |
Invaded | Summer | 1.7720000 | 2.4472000 | 3.7221333 | 1.2645333 | 2.3952000 | 4.480933 | 2.325600 | 4.085333 | 6.754400 | 133.21727 | 147.42139 | 168.2493 | 13.454489 | 18.01118 | 27.29767 | 11.681481 | 21.20772 | 35.50451 | 6.316667 | 10.900000 | 12.95833 | 0.6633333 | 0.8050000 | 1.0100000 |
Invaded | Winter | 0.9458667 | 1.4976000 | 2.4898667 | 1.9476000 | 3.4101333 | 6.198267 | 3.023867 | 5.620267 | 7.916800 | 95.76815 | 119.49396 | 151.1411 | 13.788625 | 19.72430 | 36.73561 | 15.979345 | 27.86209 | 47.96388 | 5.933333 | 10.916667 | 13.89167 | 0.7116667 | 0.8500000 | 0.9733333 |
Non_Invaded | Green_Up | 0.3685333 | 0.5088000 | 0.7546667 | 0.3370667 | 0.7482667 | 1.361600 | 3.924267 | 6.187200 | 8.342933 | 51.67528 | 80.33146 | 146.1973 | 9.750584 | 15.46700 | 17.59368 | 7.290356 | 12.30107 | 17.27920 | 3.066667 | 4.033333 | 9.30000 | 0.2333333 | 0.3333333 | 0.4366667 |
Non_Invaded | Summer | 0.2821333 | 0.5946667 | 1.0218667 | 0.1384000 | 0.3152000 | 0.896000 | 3.992200 | 6.060000 | 7.308933 | 133.27391 | 163.91720 | 191.7656 | 8.801051 | 15.42178 | 29.73250 | 10.007541 | 21.21443 | 47.66848 | 3.741667 | 5.500000 | 11.65833 | 0.1533333 | 0.2366667 | 0.3366667 |
Non_Invaded | Winter | 0.2112000 | 0.2728000 | 0.5125333 | 0.3168000 | 0.7242667 | 1.806667 | 4.612133 | 6.603733 | 9.257733 | 30.64949 | 85.18529 | 184.4349 | 11.679660 | 16.25337 | 49.32975 | 15.910721 | 42.65335 | 56.80946 | 6.233333 | 9.566667 | 12.37500 | 0.1116667 | 0.2366667 | 0.3583333 |