Hooper Data

rm(list = ls())

pacman::p_load(dplyr, knitr, readxl, tidyr, raster, vegan, tidyverse, gt,
               tigris, sf, sp, plotly, ggrepel, rstanarm, mgcv,
               brms, lme4, caret, MuMIn, VSURF, loo, xgboost, reshape2, blockCV, vip, SHAPforxgboost)

EnvironmentalOutputs <- read_excel("C:/Users/DrewIvory/OneDrive - University of Florida/Desktop/School/PHD/01_Projects/03_Biodiversity/06_Processing/Environmental_Outputs.xlsx")
EnvironmentalOutputs <- EnvironmentalOutputs %>%
  filter(Site %in% c("Howell"))

# 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(Site %in% c("Howell"))

# Veg Data
Veg_Cover <- read_excel("C:/Users/DrewIvory/OneDrive - University of Florida/Desktop/School/PHD/01_Projects/05_SharedData/Field_Data_FL_AL_MS.xlsx",
                        sheet = "Veg_Cover")
Veg_Cover <- Veg_Cover %>%
  filter(Site %in% c("Howell"))

# Shrub Cover Data
shrub_data <- read_excel("C:/Users/DrewIvory/OneDrive - University of Florida/Desktop/School/PHD/01_Projects/05_SharedData/Field_Data_FL_AL_MS.xlsx",
                         sheet = "Shrub_Cover")
shrub_data <- shrub_data %>%
  filter(Site %in% c("Howell"))

# 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(Site %in% c("Howell"))

# 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(Site %in% c("Howell"))

# 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`

Filter All data to only include specified species (Per PLANTS database)

Filter all data to only include species found at 3% of all sites

#Fuel Dynamics ## Combine seasonal fuel data

Net Weight Method

Live

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
  )

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, 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")

Dead

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, 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")

Litter

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, 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")

Average Bag Weight Method

Live

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
  )

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, 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")

Dead

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, 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")

Litter

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
  )

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, 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")

Fill in gaps within Net method with Avg method.

# 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),
    Status = coalesce(Status_Net, Status_Avg)
  ) %>%
  select(Plot, 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),
    Status = coalesce(Status_Net, Status_Avg)
  ) %>%
  select(Plot, 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),
    Status = coalesce(Status_Net, Status_Avg)
  ) %>%
  select(Plot, Status, avg_litter_biomass, avg_litter_moisture_content, avg_soil_moisture)

Combine summer sampling (CogonSites) locations with winter sampling locations

Merge avg_live_values, avg_dead_values, and avg_litter_values

Average Fuel Values by Invasion Status

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.

25th, 50th and 75 quantiles of fuel values

Fuel_model_quantiles <- avg_fuel_values %>%
  group_by(Status) %>%
  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 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 2.0622667 2.3080 2.720133 1.3673333 1.797333 2.5020 4.545867 5.2776 6.306800 157.4090 167.2626 175.9272 9.396373 11.50750 15.88132 10.722305 15.11110 19.37964 5.458333 7.183333 8.608333 1.055833 1.1266667 1.163333
Non_Invaded 0.2226667 0.6936 1.159067 0.2366667 0.301600 0.4424 2.958667 3.4280 3.987867 120.3673 136.5793 152.7913 19.269521 19.26952 19.26952 9.713272 12.72063 14.82586 4.666667 6.383333 9.191667 0.100000 0.1416667 0.210000

Fuel Table

Fuel and Moisture Quantiles by Invasion Status
Variable Invaded Non Invaded
Live Biomass (25%) 2.06 0.22
Live Biomass (50%) 2.31 0.69
Live Biomass (75%) 2.72 1.16
Dead Biomass (25%) 1.37 0.24
Dead Biomass (50%) 1.80 0.30
Dead Biomass (75%) 2.50 0.44
Litter Biomass (25%) 4.55 2.96
Litter Biomass (50%) 5.28 3.43
Litter Biomass (75%) 6.31 3.99
Live Moisture Content (25%) 157.41 120.37
Live Moisture Content (50%) 167.26 136.58
Live Moisture Content (75%) 175.93 152.79
Dead Moisture Content (25%) 9.40 19.27
Dead Moisture Content (50%) 11.51 19.27
Dead Moisture Content (75%) 15.88 19.27
Litter Moisture Content (25%) 10.72 9.71
Litter Moisture Content (50%) 15.11 12.72
Litter Moisture Content (75%) 19.38 14.83
Soil Moisture (25%) 5.46 4.67
Soil Moisture (50%) 7.18 6.38
Soil Moisture (75%) 8.61 9.19
Height (25%) 1.06 0.10
Height (50%) 1.13 0.14
Height (75%) 1.16 0.21
## <div id="ppcxptiosu" style="padding-left:0px;padding-right:0px;padding-top:10px;padding-bottom:10px;overflow-x:auto;overflow-y:auto;width:auto;height:auto;">
##   <style>#ppcxptiosu table {
##   font-family: system-ui, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
##   -webkit-font-smoothing: antialiased;
##   -moz-osx-font-smoothing: grayscale;
## }
## 
## #ppcxptiosu thead, #ppcxptiosu tbody, #ppcxptiosu tfoot, #ppcxptiosu tr, #ppcxptiosu td, #ppcxptiosu th {
##   border-style: none;
## }
## 
## #ppcxptiosu p {
##   margin: 0;
##   padding: 0;
## }
## 
## #ppcxptiosu .gt_table {
##   display: table;
##   border-collapse: collapse;
##   line-height: normal;
##   margin-left: auto;
##   margin-right: auto;
##   color: #333333;
##   font-size: 16px;
##   font-weight: normal;
##   font-style: normal;
##   background-color: #FFFFFF;
##   width: 100%;
##   border-top-style: solid;
##   border-top-width: 2px;
##   border-top-color: #A8A8A8;
##   border-right-style: none;
##   border-right-width: 2px;
##   border-right-color: #D3D3D3;
##   border-bottom-style: solid;
##   border-bottom-width: 2px;
##   border-bottom-color: #A8A8A8;
##   border-left-style: none;
##   border-left-width: 2px;
##   border-left-color: #D3D3D3;
## }
## 
## #ppcxptiosu .gt_caption {
##   padding-top: 4px;
##   padding-bottom: 4px;
## }
## 
## #ppcxptiosu .gt_title {
##   color: #333333;
##   font-size: 125%;
##   font-weight: initial;
##   padding-top: 4px;
##   padding-bottom: 4px;
##   padding-left: 5px;
##   padding-right: 5px;
##   border-bottom-color: #FFFFFF;
##   border-bottom-width: 0;
## }
## 
## #ppcxptiosu .gt_subtitle {
##   color: #333333;
##   font-size: 85%;
##   font-weight: initial;
##   padding-top: 3px;
##   padding-bottom: 5px;
##   padding-left: 5px;
##   padding-right: 5px;
##   border-top-color: #FFFFFF;
##   border-top-width: 0;
## }
## 
## #ppcxptiosu .gt_heading {
##   background-color: #FFFFFF;
##   text-align: center;
##   border-bottom-color: #FFFFFF;
##   border-left-style: none;
##   border-left-width: 1px;
##   border-left-color: #D3D3D3;
##   border-right-style: none;
##   border-right-width: 1px;
##   border-right-color: #D3D3D3;
## }
## 
## #ppcxptiosu .gt_bottom_border {
##   border-bottom-style: solid;
##   border-bottom-width: 2px;
##   border-bottom-color: #D3D3D3;
## }
## 
## #ppcxptiosu .gt_col_headings {
##   border-top-style: solid;
##   border-top-width: 2px;
##   border-top-color: #D3D3D3;
##   border-bottom-style: solid;
##   border-bottom-width: 2px;
##   border-bottom-color: #D3D3D3;
##   border-left-style: none;
##   border-left-width: 1px;
##   border-left-color: #D3D3D3;
##   border-right-style: none;
##   border-right-width: 1px;
##   border-right-color: #D3D3D3;
## }
## 
## #ppcxptiosu .gt_col_heading {
##   color: #333333;
##   background-color: #FFFFFF;
##   font-size: 100%;
##   font-weight: normal;
##   text-transform: inherit;
##   border-left-style: none;
##   border-left-width: 1px;
##   border-left-color: #D3D3D3;
##   border-right-style: none;
##   border-right-width: 1px;
##   border-right-color: #D3D3D3;
##   vertical-align: bottom;
##   padding-top: 5px;
##   padding-bottom: 6px;
##   padding-left: 5px;
##   padding-right: 5px;
##   overflow-x: hidden;
## }
## 
## #ppcxptiosu .gt_column_spanner_outer {
##   color: #333333;
##   background-color: #FFFFFF;
##   font-size: 100%;
##   font-weight: normal;
##   text-transform: inherit;
##   padding-top: 0;
##   padding-bottom: 0;
##   padding-left: 4px;
##   padding-right: 4px;
## }
## 
## #ppcxptiosu .gt_column_spanner_outer:first-child {
##   padding-left: 0;
## }
## 
## #ppcxptiosu .gt_column_spanner_outer:last-child {
##   padding-right: 0;
## }
## 
## #ppcxptiosu .gt_column_spanner {
##   border-bottom-style: solid;
##   border-bottom-width: 2px;
##   border-bottom-color: #D3D3D3;
##   vertical-align: bottom;
##   padding-top: 5px;
##   padding-bottom: 5px;
##   overflow-x: hidden;
##   display: inline-block;
##   width: 100%;
## }
## 
## #ppcxptiosu .gt_spanner_row {
##   border-bottom-style: hidden;
## }
## 
## #ppcxptiosu .gt_group_heading {
##   padding-top: 8px;
##   padding-bottom: 8px;
##   padding-left: 5px;
##   padding-right: 5px;
##   color: #333333;
##   background-color: #FFFFFF;
##   font-size: 100%;
##   font-weight: initial;
##   text-transform: inherit;
##   border-top-style: solid;
##   border-top-width: 2px;
##   border-top-color: #D3D3D3;
##   border-bottom-style: solid;
##   border-bottom-width: 2px;
##   border-bottom-color: #D3D3D3;
##   border-left-style: none;
##   border-left-width: 1px;
##   border-left-color: #D3D3D3;
##   border-right-style: none;
##   border-right-width: 1px;
##   border-right-color: #D3D3D3;
##   vertical-align: middle;
##   text-align: left;
## }
## 
## #ppcxptiosu .gt_empty_group_heading {
##   padding: 0.5px;
##   color: #333333;
##   background-color: #FFFFFF;
##   font-size: 100%;
##   font-weight: initial;
##   border-top-style: solid;
##   border-top-width: 2px;
##   border-top-color: #D3D3D3;
##   border-bottom-style: solid;
##   border-bottom-width: 2px;
##   border-bottom-color: #D3D3D3;
##   vertical-align: middle;
## }
## 
## #ppcxptiosu .gt_from_md > :first-child {
##   margin-top: 0;
## }
## 
## #ppcxptiosu .gt_from_md > :last-child {
##   margin-bottom: 0;
## }
## 
## #ppcxptiosu .gt_row {
##   padding-top: 4px;
##   padding-bottom: 4px;
##   padding-left: 5px;
##   padding-right: 5px;
##   margin: 10px;
##   border-top-style: solid;
##   border-top-width: 1px;
##   border-top-color: #D3D3D3;
##   border-left-style: none;
##   border-left-width: 1px;
##   border-left-color: #D3D3D3;
##   border-right-style: none;
##   border-right-width: 1px;
##   border-right-color: #D3D3D3;
##   vertical-align: middle;
##   overflow-x: hidden;
## }
## 
## #ppcxptiosu .gt_stub {
##   color: #333333;
##   background-color: #FFFFFF;
##   font-size: 100%;
##   font-weight: initial;
##   text-transform: inherit;
##   border-right-style: solid;
##   border-right-width: 2px;
##   border-right-color: #D3D3D3;
##   padding-left: 5px;
##   padding-right: 5px;
## }
## 
## #ppcxptiosu .gt_stub_row_group {
##   color: #333333;
##   background-color: #FFFFFF;
##   font-size: 100%;
##   font-weight: initial;
##   text-transform: inherit;
##   border-right-style: solid;
##   border-right-width: 2px;
##   border-right-color: #D3D3D3;
##   padding-left: 5px;
##   padding-right: 5px;
##   vertical-align: top;
## }
## 
## #ppcxptiosu .gt_row_group_first td {
##   border-top-width: 2px;
## }
## 
## #ppcxptiosu .gt_row_group_first th {
##   border-top-width: 2px;
## }
## 
## #ppcxptiosu .gt_summary_row {
##   color: #333333;
##   background-color: #FFFFFF;
##   text-transform: inherit;
##   padding-top: 8px;
##   padding-bottom: 8px;
##   padding-left: 5px;
##   padding-right: 5px;
## }
## 
## #ppcxptiosu .gt_first_summary_row {
##   border-top-style: solid;
##   border-top-color: #D3D3D3;
## }
## 
## #ppcxptiosu .gt_first_summary_row.thick {
##   border-top-width: 2px;
## }
## 
## #ppcxptiosu .gt_last_summary_row {
##   padding-top: 8px;
##   padding-bottom: 8px;
##   padding-left: 5px;
##   padding-right: 5px;
##   border-bottom-style: solid;
##   border-bottom-width: 2px;
##   border-bottom-color: #D3D3D3;
## }
## 
## #ppcxptiosu .gt_grand_summary_row {
##   color: #333333;
##   background-color: #FFFFFF;
##   text-transform: inherit;
##   padding-top: 8px;
##   padding-bottom: 8px;
##   padding-left: 5px;
##   padding-right: 5px;
## }
## 
## #ppcxptiosu .gt_first_grand_summary_row {
##   padding-top: 8px;
##   padding-bottom: 8px;
##   padding-left: 5px;
##   padding-right: 5px;
##   border-top-style: double;
##   border-top-width: 6px;
##   border-top-color: #D3D3D3;
## }
## 
## #ppcxptiosu .gt_last_grand_summary_row_top {
##   padding-top: 8px;
##   padding-bottom: 8px;
##   padding-left: 5px;
##   padding-right: 5px;
##   border-bottom-style: double;
##   border-bottom-width: 6px;
##   border-bottom-color: #D3D3D3;
## }
## 
## #ppcxptiosu .gt_striped {
##   background-color: rgba(128, 128, 128, 0.05);
## }
## 
## #ppcxptiosu .gt_table_body {
##   border-top-style: solid;
##   border-top-width: 2px;
##   border-top-color: #D3D3D3;
##   border-bottom-style: solid;
##   border-bottom-width: 2px;
##   border-bottom-color: #D3D3D3;
## }
## 
## #ppcxptiosu .gt_footnotes {
##   color: #333333;
##   background-color: #FFFFFF;
##   border-bottom-style: none;
##   border-bottom-width: 2px;
##   border-bottom-color: #D3D3D3;
##   border-left-style: none;
##   border-left-width: 2px;
##   border-left-color: #D3D3D3;
##   border-right-style: none;
##   border-right-width: 2px;
##   border-right-color: #D3D3D3;
## }
## 
## #ppcxptiosu .gt_footnote {
##   margin: 0px;
##   font-size: 90%;
##   padding-top: 4px;
##   padding-bottom: 4px;
##   padding-left: 5px;
##   padding-right: 5px;
## }
## 
## #ppcxptiosu .gt_sourcenotes {
##   color: #333333;
##   background-color: #FFFFFF;
##   border-bottom-style: none;
##   border-bottom-width: 2px;
##   border-bottom-color: #D3D3D3;
##   border-left-style: none;
##   border-left-width: 2px;
##   border-left-color: #D3D3D3;
##   border-right-style: none;
##   border-right-width: 2px;
##   border-right-color: #D3D3D3;
## }
## 
## #ppcxptiosu .gt_sourcenote {
##   font-size: 90%;
##   padding-top: 4px;
##   padding-bottom: 4px;
##   padding-left: 5px;
##   padding-right: 5px;
## }
## 
## #ppcxptiosu .gt_left {
##   text-align: left;
## }
## 
## #ppcxptiosu .gt_center {
##   text-align: center;
## }
## 
## #ppcxptiosu .gt_right {
##   text-align: right;
##   font-variant-numeric: tabular-nums;
## }
## 
## #ppcxptiosu .gt_font_normal {
##   font-weight: normal;
## }
## 
## #ppcxptiosu .gt_font_bold {
##   font-weight: bold;
## }
## 
## #ppcxptiosu .gt_font_italic {
##   font-style: italic;
## }
## 
## #ppcxptiosu .gt_super {
##   font-size: 65%;
## }
## 
## #ppcxptiosu .gt_footnote_marks {
##   font-size: 75%;
##   vertical-align: 0.4em;
##   position: initial;
## }
## 
## #ppcxptiosu .gt_asterisk {
##   font-size: 100%;
##   vertical-align: 0;
## }
## 
## #ppcxptiosu .gt_indent_1 {
##   text-indent: 5px;
## }
## 
## #ppcxptiosu .gt_indent_2 {
##   text-indent: 10px;
## }
## 
## #ppcxptiosu .gt_indent_3 {
##   text-indent: 15px;
## }
## 
## #ppcxptiosu .gt_indent_4 {
##   text-indent: 20px;
## }
## 
## #ppcxptiosu .gt_indent_5 {
##   text-indent: 25px;
## }
## 
## #ppcxptiosu .katex-display {
##   display: inline-flex !important;
##   margin-bottom: 0.75em !important;
## }
## 
## #ppcxptiosu div.Reactable > div.rt-table > div.rt-thead > div.rt-tr.rt-tr-group-header > div.rt-th-group:after {
##   height: 0px !important;
## }
## </style>
##   <table class="gt_table" data-quarto-disable-processing="false" data-quarto-bootstrap="false">
##   <thead>
##     <tr class="gt_heading">
##       <td colspan="3" class="gt_heading gt_title gt_font_normal gt_bottom_border" style>Fuel and Moisture Quantiles by Invasion Status</td>
##     </tr>
##     
##     <tr class="gt_col_headings">
##       <th class="gt_col_heading gt_columns_bottom_border gt_left" rowspan="1" colspan="1" scope="col" id="Variable">Variable</th>
##       <th class="gt_col_heading gt_columns_bottom_border gt_right" rowspan="1" colspan="1" scope="col" id="Invaded">Invaded</th>
##       <th class="gt_col_heading gt_columns_bottom_border gt_right" rowspan="1" colspan="1" scope="col" id="Non_Invaded">Non Invaded</th>
##     </tr>
##   </thead>
##   <tbody class="gt_table_body">
##     <tr><td headers="Variable" class="gt_row gt_left">Live Biomass (25%)</td>
## <td headers="Invaded" class="gt_row gt_right">2.06</td>
## <td headers="Non_Invaded" class="gt_row gt_right">0.22</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Live Biomass (50%)</td>
## <td headers="Invaded" class="gt_row gt_right">2.31</td>
## <td headers="Non_Invaded" class="gt_row gt_right">0.69</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Live Biomass (75%)</td>
## <td headers="Invaded" class="gt_row gt_right">2.72</td>
## <td headers="Non_Invaded" class="gt_row gt_right">1.16</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Dead Biomass (25%)</td>
## <td headers="Invaded" class="gt_row gt_right">1.37</td>
## <td headers="Non_Invaded" class="gt_row gt_right">0.24</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Dead Biomass (50%)</td>
## <td headers="Invaded" class="gt_row gt_right">1.80</td>
## <td headers="Non_Invaded" class="gt_row gt_right">0.30</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Dead Biomass (75%)</td>
## <td headers="Invaded" class="gt_row gt_right">2.50</td>
## <td headers="Non_Invaded" class="gt_row gt_right">0.44</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Litter Biomass (25%)</td>
## <td headers="Invaded" class="gt_row gt_right">4.55</td>
## <td headers="Non_Invaded" class="gt_row gt_right">2.96</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Litter Biomass (50%)</td>
## <td headers="Invaded" class="gt_row gt_right">5.28</td>
## <td headers="Non_Invaded" class="gt_row gt_right">3.43</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Litter Biomass (75%)</td>
## <td headers="Invaded" class="gt_row gt_right">6.31</td>
## <td headers="Non_Invaded" class="gt_row gt_right">3.99</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Live Moisture Content (25%)</td>
## <td headers="Invaded" class="gt_row gt_right">157.41</td>
## <td headers="Non_Invaded" class="gt_row gt_right">120.37</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Live Moisture Content (50%)</td>
## <td headers="Invaded" class="gt_row gt_right">167.26</td>
## <td headers="Non_Invaded" class="gt_row gt_right">136.58</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Live Moisture Content (75%)</td>
## <td headers="Invaded" class="gt_row gt_right">175.93</td>
## <td headers="Non_Invaded" class="gt_row gt_right">152.79</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Dead Moisture Content (25%)</td>
## <td headers="Invaded" class="gt_row gt_right">9.40</td>
## <td headers="Non_Invaded" class="gt_row gt_right">19.27</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Dead Moisture Content (50%)</td>
## <td headers="Invaded" class="gt_row gt_right">11.51</td>
## <td headers="Non_Invaded" class="gt_row gt_right">19.27</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Dead Moisture Content (75%)</td>
## <td headers="Invaded" class="gt_row gt_right">15.88</td>
## <td headers="Non_Invaded" class="gt_row gt_right">19.27</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Litter Moisture Content (25%)</td>
## <td headers="Invaded" class="gt_row gt_right">10.72</td>
## <td headers="Non_Invaded" class="gt_row gt_right">9.71</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Litter Moisture Content (50%)</td>
## <td headers="Invaded" class="gt_row gt_right">15.11</td>
## <td headers="Non_Invaded" class="gt_row gt_right">12.72</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Litter Moisture Content (75%)</td>
## <td headers="Invaded" class="gt_row gt_right">19.38</td>
## <td headers="Non_Invaded" class="gt_row gt_right">14.83</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Soil Moisture (25%)</td>
## <td headers="Invaded" class="gt_row gt_right">5.46</td>
## <td headers="Non_Invaded" class="gt_row gt_right">4.67</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Soil Moisture (50%)</td>
## <td headers="Invaded" class="gt_row gt_right">7.18</td>
## <td headers="Non_Invaded" class="gt_row gt_right">6.38</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Soil Moisture (75%)</td>
## <td headers="Invaded" class="gt_row gt_right">8.61</td>
## <td headers="Non_Invaded" class="gt_row gt_right">9.19</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Height (25%)</td>
## <td headers="Invaded" class="gt_row gt_right">1.06</td>
## <td headers="Non_Invaded" class="gt_row gt_right">0.10</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Height (50%)</td>
## <td headers="Invaded" class="gt_row gt_right">1.13</td>
## <td headers="Non_Invaded" class="gt_row gt_right">0.14</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Height (75%)</td>
## <td headers="Invaded" class="gt_row gt_right">1.16</td>
## <td headers="Non_Invaded" class="gt_row gt_right">0.21</td></tr>
##   </tbody>
##   
##   
## </table>
## </div>

Objective 1- Cogongrass relationship with fuel dynamics

Data Cleaning

Plot biomass by invasion status

biomass_plot <- merged_sites %>%
  pivot_longer(
    cols = c(avg_live_biomass, avg_dead_biomass, avg_litter_biomass),
    names_to = "Fuel_Type",
    values_to = "Biomass"
  ) %>%
  
  # Rename invasion categories
  mutate(
    Status = recode(
      Status,
      "Invaded" = "Invaded",
      "Non_Invaded" = "Non-Invaded"
    ),
    
    # Rename and order fuel types
    Fuel_Type = factor(
      Fuel_Type,
      levels = c(
        "avg_live_biomass",
        "avg_dead_biomass",
        "avg_litter_biomass"
      ),
      labels = c(
        "Live Fuel Load",
        "Dead Fuel Load",
        "Litter Fuel Load"
      )
    )
  ) %>%
  
  ggplot(aes(x = Status, y = Biomass, fill = Status)) +
  geom_boxplot() +
  
  facet_wrap(~ Fuel_Type, scales = "free_y") +
  
  labs(
    title = "Fuel Load by  Cogongrass Invasion Status",
    x = "Invasion Status",
    y = "Fuel Load (tonnes/ha)"
  ) +
  
  # University of Alabama colors
  scale_fill_manual(values = c(
    "Invaded" = "#9E1B32",      # Alabama crimson
    "Non-Invaded" = "#D3D3D3"  # light gray
  )) +
  
  theme_minimal() +
  theme(
    legend.position = "none"
  )

print(biomass_plot)

# Save
ggsave("C:/Users/DrewIvory/OneDrive - University of Florida/Desktop/School/PHD/01_Projects/05_SharedData/Hooper_Fuel_Load_by_Invasion_Status.png", plot = biomass_plot, width = 10, height = 6, dpi = 300)

Moisture Plot

moisture_plot <- merged_sites %>%
  pivot_longer(
    cols = c(avg_live_moisture_content, avg_dead_moisture_content, avg_litter_moisture_content),
    names_to = "Fuel_Type",
    values_to = "Moisture_Content"
  ) %>%
  
  # Rename invasion categories
  mutate(
    Status = recode(
      Status,
      "Invaded" = "Invaded",
      "Non_Invaded" = "Non-Invaded"
    ),
    
    # Rename and order fuel types
    Fuel_Type = factor(
      Fuel_Type,
      levels = c(
        "avg_live_moisture_content",
        "avg_dead_moisture_content",
        "avg_litter_moisture_content"
      ),
      labels = c(
        "Live Fuel Moisture Content",
        "Dead Fuel Moisture Content",
        "Litter Fuel Moisture Content"
      )
    )
  ) %>%
  
  ggplot(aes(x = Status, y = Moisture_Content, fill = Status)) +
  geom_boxplot() +
  
  facet_wrap(~ Fuel_Type, scales = "free_y") +
  
  labs(
    title = "Fuel Moisture Content by Cogongrass Invasion Status",
    x = "Invasion Status",
    y = "Fuel Moisture Content (%)"
  ) +
  
  # University of Alabama colors
  scale_fill_manual(values = c(
    "Invaded" = "#9E1B32",      # Alabama crimson
    "Non-Invaded" = "#D3D3D3"  # light gray
  )) +
  
  theme_minimal() +
  theme(
    legend.position = "none"
  )

print(moisture_plot)
## Warning: Removed 5 rows containing non-finite outside the scale range
## (`stat_boxplot()`).

# Save
ggsave("C:/Users/DrewIvory/OneDrive - University of Florida/Desktop/School/PHD/01_Projects/05_SharedData/Hooper_Fuel_Moisture_by_Invasion_Status.png", plot = moisture_plot, width = 10, height = 6, dpi = 300)
## Warning: Removed 5 rows containing non-finite outside the scale range
## (`stat_boxplot()`).

Howell Data

rm(list = ls())

pacman::p_load(dplyr, knitr, readxl, tidyr, raster, vegan, tidyverse,
               tigris, sf, sp, plotly, ggrepel, rstanarm, mgcv,
               brms, lme4, caret, MuMIn, VSURF, loo, xgboost, reshape2, blockCV, vip, SHAPforxgboost)

EnvironmentalOutputs <- read_excel("C:/Users/DrewIvory/OneDrive - University of Florida/Desktop/School/PHD/01_Projects/03_Biodiversity/06_Processing/Environmental_Outputs.xlsx")
EnvironmentalOutputs <- EnvironmentalOutputs %>%
  filter(Site %in% c("Hooper"))

# 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(Site %in% c("Hooper"))

# Veg Data
Veg_Cover <- read_excel("C:/Users/DrewIvory/OneDrive - University of Florida/Desktop/School/PHD/01_Projects/05_SharedData/Field_Data_FL_AL_MS.xlsx",
                        sheet = "Veg_Cover")
Veg_Cover <- Veg_Cover %>%
  filter(Site %in% c("Hooper"))

# Shrub Cover Data
shrub_data <- read_excel("C:/Users/DrewIvory/OneDrive - University of Florida/Desktop/School/PHD/01_Projects/05_SharedData/Field_Data_FL_AL_MS.xlsx",
                         sheet = "Shrub_Cover")
shrub_data <- shrub_data %>%
  filter(Site %in% c("Hooper"))

# 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(Site %in% c("Hooper"))

# 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(Site %in% c("Hooper"))

# 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`

Filter All data to only include specified species (Per PLANTS database)

Filter all data to only include species found at 3% of all sites

#Fuel Dynamics ## Combine seasonal fuel data

Net Weight Method

Live

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, 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")

Dead

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, 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")

Litter

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, 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")

Average Bag Weight Method

Live

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, 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")

Dead

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, 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")

Litter

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, 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")

Fill in gaps within Net method with Avg method.

# 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),
    Status = coalesce(Status_Net, Status_Avg)
  ) %>%
  select(Plot, 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),
    Status = coalesce(Status_Net, Status_Avg)
  ) %>%
  select(Plot, 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),
    Status = coalesce(Status_Net, Status_Avg)
  ) %>%
  select(Plot, Status, avg_litter_biomass, avg_litter_moisture_content, avg_soil_moisture)

Combine summer sampling (CogonSites) locations with winter sampling locations

Merge avg_live_values, avg_dead_values, and avg_litter_values

Average Fuel Values by Invasion Status

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.

25th, 50th and 75 quantiles of fuel values

Fuel_model_quantiles <- avg_fuel_values %>%
  group_by(Status) %>%
  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 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 2.7484000 3.068 3.3876000 0.8612 0.8696 0.878 8.1588 9.455733 10.75267 160.8407 167.1745 173.5082 19.60009 22.77418 25.94827 45.55366 46.77059 47.98751 6.183333 6.966667 7.750 1.0150000 1.0400000 1.0650000
Non_Invaded 0.2494667 0.372 0.4945333 0.5680 0.5680 0.568 9.2184 10.087467 10.95653 115.0972 115.0972 115.0972 NA NA NA 32.79959 52.71153 72.62347 6.141667 6.383333 6.625 0.2166667 0.2366667 0.2566667

Fuel Table

Fuel and Moisture Quantiles by Invasion Status
Variable Invaded Non Invaded
Live Biomass (25%) 2.75 0.25
Live Biomass (50%) 3.07 0.37
Live Biomass (75%) 3.39 0.49
Dead Biomass (25%) 0.86 0.57
Dead Biomass (50%) 0.87 0.57
Dead Biomass (75%) 0.88 0.57
Litter Biomass (25%) 8.16 9.22
Litter Biomass (50%) 9.46 10.09
Litter Biomass (75%) 10.75 10.96
Live Moisture Content (25%) 160.84 115.10
Live Moisture Content (50%) 167.17 115.10
Live Moisture Content (75%) 173.51 115.10
Dead Moisture Content (25%) 19.60 NA
Dead Moisture Content (50%) 22.77 NA
Dead Moisture Content (75%) 25.95 NA
Litter Moisture Content (25%) 45.55 32.80
Litter Moisture Content (50%) 46.77 52.71
Litter Moisture Content (75%) 47.99 72.62
Soil Moisture (25%) 6.18 6.14
Soil Moisture (50%) 6.97 6.38
Soil Moisture (75%) 7.75 6.62
Height (25%) 1.01 0.22
Height (50%) 1.04 0.24
Height (75%) 1.07 0.26
## <div id="kobidzgdjw" style="padding-left:0px;padding-right:0px;padding-top:10px;padding-bottom:10px;overflow-x:auto;overflow-y:auto;width:auto;height:auto;">
##   <style>#kobidzgdjw table {
##   font-family: system-ui, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
##   -webkit-font-smoothing: antialiased;
##   -moz-osx-font-smoothing: grayscale;
## }
## 
## #kobidzgdjw thead, #kobidzgdjw tbody, #kobidzgdjw tfoot, #kobidzgdjw tr, #kobidzgdjw td, #kobidzgdjw th {
##   border-style: none;
## }
## 
## #kobidzgdjw p {
##   margin: 0;
##   padding: 0;
## }
## 
## #kobidzgdjw .gt_table {
##   display: table;
##   border-collapse: collapse;
##   line-height: normal;
##   margin-left: auto;
##   margin-right: auto;
##   color: #333333;
##   font-size: 16px;
##   font-weight: normal;
##   font-style: normal;
##   background-color: #FFFFFF;
##   width: 100%;
##   border-top-style: solid;
##   border-top-width: 2px;
##   border-top-color: #A8A8A8;
##   border-right-style: none;
##   border-right-width: 2px;
##   border-right-color: #D3D3D3;
##   border-bottom-style: solid;
##   border-bottom-width: 2px;
##   border-bottom-color: #A8A8A8;
##   border-left-style: none;
##   border-left-width: 2px;
##   border-left-color: #D3D3D3;
## }
## 
## #kobidzgdjw .gt_caption {
##   padding-top: 4px;
##   padding-bottom: 4px;
## }
## 
## #kobidzgdjw .gt_title {
##   color: #333333;
##   font-size: 125%;
##   font-weight: initial;
##   padding-top: 4px;
##   padding-bottom: 4px;
##   padding-left: 5px;
##   padding-right: 5px;
##   border-bottom-color: #FFFFFF;
##   border-bottom-width: 0;
## }
## 
## #kobidzgdjw .gt_subtitle {
##   color: #333333;
##   font-size: 85%;
##   font-weight: initial;
##   padding-top: 3px;
##   padding-bottom: 5px;
##   padding-left: 5px;
##   padding-right: 5px;
##   border-top-color: #FFFFFF;
##   border-top-width: 0;
## }
## 
## #kobidzgdjw .gt_heading {
##   background-color: #FFFFFF;
##   text-align: center;
##   border-bottom-color: #FFFFFF;
##   border-left-style: none;
##   border-left-width: 1px;
##   border-left-color: #D3D3D3;
##   border-right-style: none;
##   border-right-width: 1px;
##   border-right-color: #D3D3D3;
## }
## 
## #kobidzgdjw .gt_bottom_border {
##   border-bottom-style: solid;
##   border-bottom-width: 2px;
##   border-bottom-color: #D3D3D3;
## }
## 
## #kobidzgdjw .gt_col_headings {
##   border-top-style: solid;
##   border-top-width: 2px;
##   border-top-color: #D3D3D3;
##   border-bottom-style: solid;
##   border-bottom-width: 2px;
##   border-bottom-color: #D3D3D3;
##   border-left-style: none;
##   border-left-width: 1px;
##   border-left-color: #D3D3D3;
##   border-right-style: none;
##   border-right-width: 1px;
##   border-right-color: #D3D3D3;
## }
## 
## #kobidzgdjw .gt_col_heading {
##   color: #333333;
##   background-color: #FFFFFF;
##   font-size: 100%;
##   font-weight: normal;
##   text-transform: inherit;
##   border-left-style: none;
##   border-left-width: 1px;
##   border-left-color: #D3D3D3;
##   border-right-style: none;
##   border-right-width: 1px;
##   border-right-color: #D3D3D3;
##   vertical-align: bottom;
##   padding-top: 5px;
##   padding-bottom: 6px;
##   padding-left: 5px;
##   padding-right: 5px;
##   overflow-x: hidden;
## }
## 
## #kobidzgdjw .gt_column_spanner_outer {
##   color: #333333;
##   background-color: #FFFFFF;
##   font-size: 100%;
##   font-weight: normal;
##   text-transform: inherit;
##   padding-top: 0;
##   padding-bottom: 0;
##   padding-left: 4px;
##   padding-right: 4px;
## }
## 
## #kobidzgdjw .gt_column_spanner_outer:first-child {
##   padding-left: 0;
## }
## 
## #kobidzgdjw .gt_column_spanner_outer:last-child {
##   padding-right: 0;
## }
## 
## #kobidzgdjw .gt_column_spanner {
##   border-bottom-style: solid;
##   border-bottom-width: 2px;
##   border-bottom-color: #D3D3D3;
##   vertical-align: bottom;
##   padding-top: 5px;
##   padding-bottom: 5px;
##   overflow-x: hidden;
##   display: inline-block;
##   width: 100%;
## }
## 
## #kobidzgdjw .gt_spanner_row {
##   border-bottom-style: hidden;
## }
## 
## #kobidzgdjw .gt_group_heading {
##   padding-top: 8px;
##   padding-bottom: 8px;
##   padding-left: 5px;
##   padding-right: 5px;
##   color: #333333;
##   background-color: #FFFFFF;
##   font-size: 100%;
##   font-weight: initial;
##   text-transform: inherit;
##   border-top-style: solid;
##   border-top-width: 2px;
##   border-top-color: #D3D3D3;
##   border-bottom-style: solid;
##   border-bottom-width: 2px;
##   border-bottom-color: #D3D3D3;
##   border-left-style: none;
##   border-left-width: 1px;
##   border-left-color: #D3D3D3;
##   border-right-style: none;
##   border-right-width: 1px;
##   border-right-color: #D3D3D3;
##   vertical-align: middle;
##   text-align: left;
## }
## 
## #kobidzgdjw .gt_empty_group_heading {
##   padding: 0.5px;
##   color: #333333;
##   background-color: #FFFFFF;
##   font-size: 100%;
##   font-weight: initial;
##   border-top-style: solid;
##   border-top-width: 2px;
##   border-top-color: #D3D3D3;
##   border-bottom-style: solid;
##   border-bottom-width: 2px;
##   border-bottom-color: #D3D3D3;
##   vertical-align: middle;
## }
## 
## #kobidzgdjw .gt_from_md > :first-child {
##   margin-top: 0;
## }
## 
## #kobidzgdjw .gt_from_md > :last-child {
##   margin-bottom: 0;
## }
## 
## #kobidzgdjw .gt_row {
##   padding-top: 4px;
##   padding-bottom: 4px;
##   padding-left: 5px;
##   padding-right: 5px;
##   margin: 10px;
##   border-top-style: solid;
##   border-top-width: 1px;
##   border-top-color: #D3D3D3;
##   border-left-style: none;
##   border-left-width: 1px;
##   border-left-color: #D3D3D3;
##   border-right-style: none;
##   border-right-width: 1px;
##   border-right-color: #D3D3D3;
##   vertical-align: middle;
##   overflow-x: hidden;
## }
## 
## #kobidzgdjw .gt_stub {
##   color: #333333;
##   background-color: #FFFFFF;
##   font-size: 100%;
##   font-weight: initial;
##   text-transform: inherit;
##   border-right-style: solid;
##   border-right-width: 2px;
##   border-right-color: #D3D3D3;
##   padding-left: 5px;
##   padding-right: 5px;
## }
## 
## #kobidzgdjw .gt_stub_row_group {
##   color: #333333;
##   background-color: #FFFFFF;
##   font-size: 100%;
##   font-weight: initial;
##   text-transform: inherit;
##   border-right-style: solid;
##   border-right-width: 2px;
##   border-right-color: #D3D3D3;
##   padding-left: 5px;
##   padding-right: 5px;
##   vertical-align: top;
## }
## 
## #kobidzgdjw .gt_row_group_first td {
##   border-top-width: 2px;
## }
## 
## #kobidzgdjw .gt_row_group_first th {
##   border-top-width: 2px;
## }
## 
## #kobidzgdjw .gt_summary_row {
##   color: #333333;
##   background-color: #FFFFFF;
##   text-transform: inherit;
##   padding-top: 8px;
##   padding-bottom: 8px;
##   padding-left: 5px;
##   padding-right: 5px;
## }
## 
## #kobidzgdjw .gt_first_summary_row {
##   border-top-style: solid;
##   border-top-color: #D3D3D3;
## }
## 
## #kobidzgdjw .gt_first_summary_row.thick {
##   border-top-width: 2px;
## }
## 
## #kobidzgdjw .gt_last_summary_row {
##   padding-top: 8px;
##   padding-bottom: 8px;
##   padding-left: 5px;
##   padding-right: 5px;
##   border-bottom-style: solid;
##   border-bottom-width: 2px;
##   border-bottom-color: #D3D3D3;
## }
## 
## #kobidzgdjw .gt_grand_summary_row {
##   color: #333333;
##   background-color: #FFFFFF;
##   text-transform: inherit;
##   padding-top: 8px;
##   padding-bottom: 8px;
##   padding-left: 5px;
##   padding-right: 5px;
## }
## 
## #kobidzgdjw .gt_first_grand_summary_row {
##   padding-top: 8px;
##   padding-bottom: 8px;
##   padding-left: 5px;
##   padding-right: 5px;
##   border-top-style: double;
##   border-top-width: 6px;
##   border-top-color: #D3D3D3;
## }
## 
## #kobidzgdjw .gt_last_grand_summary_row_top {
##   padding-top: 8px;
##   padding-bottom: 8px;
##   padding-left: 5px;
##   padding-right: 5px;
##   border-bottom-style: double;
##   border-bottom-width: 6px;
##   border-bottom-color: #D3D3D3;
## }
## 
## #kobidzgdjw .gt_striped {
##   background-color: rgba(128, 128, 128, 0.05);
## }
## 
## #kobidzgdjw .gt_table_body {
##   border-top-style: solid;
##   border-top-width: 2px;
##   border-top-color: #D3D3D3;
##   border-bottom-style: solid;
##   border-bottom-width: 2px;
##   border-bottom-color: #D3D3D3;
## }
## 
## #kobidzgdjw .gt_footnotes {
##   color: #333333;
##   background-color: #FFFFFF;
##   border-bottom-style: none;
##   border-bottom-width: 2px;
##   border-bottom-color: #D3D3D3;
##   border-left-style: none;
##   border-left-width: 2px;
##   border-left-color: #D3D3D3;
##   border-right-style: none;
##   border-right-width: 2px;
##   border-right-color: #D3D3D3;
## }
## 
## #kobidzgdjw .gt_footnote {
##   margin: 0px;
##   font-size: 90%;
##   padding-top: 4px;
##   padding-bottom: 4px;
##   padding-left: 5px;
##   padding-right: 5px;
## }
## 
## #kobidzgdjw .gt_sourcenotes {
##   color: #333333;
##   background-color: #FFFFFF;
##   border-bottom-style: none;
##   border-bottom-width: 2px;
##   border-bottom-color: #D3D3D3;
##   border-left-style: none;
##   border-left-width: 2px;
##   border-left-color: #D3D3D3;
##   border-right-style: none;
##   border-right-width: 2px;
##   border-right-color: #D3D3D3;
## }
## 
## #kobidzgdjw .gt_sourcenote {
##   font-size: 90%;
##   padding-top: 4px;
##   padding-bottom: 4px;
##   padding-left: 5px;
##   padding-right: 5px;
## }
## 
## #kobidzgdjw .gt_left {
##   text-align: left;
## }
## 
## #kobidzgdjw .gt_center {
##   text-align: center;
## }
## 
## #kobidzgdjw .gt_right {
##   text-align: right;
##   font-variant-numeric: tabular-nums;
## }
## 
## #kobidzgdjw .gt_font_normal {
##   font-weight: normal;
## }
## 
## #kobidzgdjw .gt_font_bold {
##   font-weight: bold;
## }
## 
## #kobidzgdjw .gt_font_italic {
##   font-style: italic;
## }
## 
## #kobidzgdjw .gt_super {
##   font-size: 65%;
## }
## 
## #kobidzgdjw .gt_footnote_marks {
##   font-size: 75%;
##   vertical-align: 0.4em;
##   position: initial;
## }
## 
## #kobidzgdjw .gt_asterisk {
##   font-size: 100%;
##   vertical-align: 0;
## }
## 
## #kobidzgdjw .gt_indent_1 {
##   text-indent: 5px;
## }
## 
## #kobidzgdjw .gt_indent_2 {
##   text-indent: 10px;
## }
## 
## #kobidzgdjw .gt_indent_3 {
##   text-indent: 15px;
## }
## 
## #kobidzgdjw .gt_indent_4 {
##   text-indent: 20px;
## }
## 
## #kobidzgdjw .gt_indent_5 {
##   text-indent: 25px;
## }
## 
## #kobidzgdjw .katex-display {
##   display: inline-flex !important;
##   margin-bottom: 0.75em !important;
## }
## 
## #kobidzgdjw div.Reactable > div.rt-table > div.rt-thead > div.rt-tr.rt-tr-group-header > div.rt-th-group:after {
##   height: 0px !important;
## }
## </style>
##   <table class="gt_table" data-quarto-disable-processing="false" data-quarto-bootstrap="false">
##   <thead>
##     <tr class="gt_heading">
##       <td colspan="3" class="gt_heading gt_title gt_font_normal gt_bottom_border" style>Fuel and Moisture Quantiles by Invasion Status</td>
##     </tr>
##     
##     <tr class="gt_col_headings">
##       <th class="gt_col_heading gt_columns_bottom_border gt_left" rowspan="1" colspan="1" scope="col" id="Variable">Variable</th>
##       <th class="gt_col_heading gt_columns_bottom_border gt_right" rowspan="1" colspan="1" scope="col" id="Invaded">Invaded</th>
##       <th class="gt_col_heading gt_columns_bottom_border gt_right" rowspan="1" colspan="1" scope="col" id="Non_Invaded">Non Invaded</th>
##     </tr>
##   </thead>
##   <tbody class="gt_table_body">
##     <tr><td headers="Variable" class="gt_row gt_left">Live Biomass (25%)</td>
## <td headers="Invaded" class="gt_row gt_right">2.75</td>
## <td headers="Non_Invaded" class="gt_row gt_right">0.25</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Live Biomass (50%)</td>
## <td headers="Invaded" class="gt_row gt_right">3.07</td>
## <td headers="Non_Invaded" class="gt_row gt_right">0.37</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Live Biomass (75%)</td>
## <td headers="Invaded" class="gt_row gt_right">3.39</td>
## <td headers="Non_Invaded" class="gt_row gt_right">0.49</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Dead Biomass (25%)</td>
## <td headers="Invaded" class="gt_row gt_right">0.86</td>
## <td headers="Non_Invaded" class="gt_row gt_right">0.57</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Dead Biomass (50%)</td>
## <td headers="Invaded" class="gt_row gt_right">0.87</td>
## <td headers="Non_Invaded" class="gt_row gt_right">0.57</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Dead Biomass (75%)</td>
## <td headers="Invaded" class="gt_row gt_right">0.88</td>
## <td headers="Non_Invaded" class="gt_row gt_right">0.57</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Litter Biomass (25%)</td>
## <td headers="Invaded" class="gt_row gt_right">8.16</td>
## <td headers="Non_Invaded" class="gt_row gt_right">9.22</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Litter Biomass (50%)</td>
## <td headers="Invaded" class="gt_row gt_right">9.46</td>
## <td headers="Non_Invaded" class="gt_row gt_right">10.09</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Litter Biomass (75%)</td>
## <td headers="Invaded" class="gt_row gt_right">10.75</td>
## <td headers="Non_Invaded" class="gt_row gt_right">10.96</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Live Moisture Content (25%)</td>
## <td headers="Invaded" class="gt_row gt_right">160.84</td>
## <td headers="Non_Invaded" class="gt_row gt_right">115.10</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Live Moisture Content (50%)</td>
## <td headers="Invaded" class="gt_row gt_right">167.17</td>
## <td headers="Non_Invaded" class="gt_row gt_right">115.10</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Live Moisture Content (75%)</td>
## <td headers="Invaded" class="gt_row gt_right">173.51</td>
## <td headers="Non_Invaded" class="gt_row gt_right">115.10</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Dead Moisture Content (25%)</td>
## <td headers="Invaded" class="gt_row gt_right">19.60</td>
## <td headers="Non_Invaded" class="gt_row gt_right">NA</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Dead Moisture Content (50%)</td>
## <td headers="Invaded" class="gt_row gt_right">22.77</td>
## <td headers="Non_Invaded" class="gt_row gt_right">NA</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Dead Moisture Content (75%)</td>
## <td headers="Invaded" class="gt_row gt_right">25.95</td>
## <td headers="Non_Invaded" class="gt_row gt_right">NA</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Litter Moisture Content (25%)</td>
## <td headers="Invaded" class="gt_row gt_right">45.55</td>
## <td headers="Non_Invaded" class="gt_row gt_right">32.80</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Litter Moisture Content (50%)</td>
## <td headers="Invaded" class="gt_row gt_right">46.77</td>
## <td headers="Non_Invaded" class="gt_row gt_right">52.71</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Litter Moisture Content (75%)</td>
## <td headers="Invaded" class="gt_row gt_right">47.99</td>
## <td headers="Non_Invaded" class="gt_row gt_right">72.62</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Soil Moisture (25%)</td>
## <td headers="Invaded" class="gt_row gt_right">6.18</td>
## <td headers="Non_Invaded" class="gt_row gt_right">6.14</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Soil Moisture (50%)</td>
## <td headers="Invaded" class="gt_row gt_right">6.97</td>
## <td headers="Non_Invaded" class="gt_row gt_right">6.38</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Soil Moisture (75%)</td>
## <td headers="Invaded" class="gt_row gt_right">7.75</td>
## <td headers="Non_Invaded" class="gt_row gt_right">6.62</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Height (25%)</td>
## <td headers="Invaded" class="gt_row gt_right">1.01</td>
## <td headers="Non_Invaded" class="gt_row gt_right">0.22</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Height (50%)</td>
## <td headers="Invaded" class="gt_row gt_right">1.04</td>
## <td headers="Non_Invaded" class="gt_row gt_right">0.24</td></tr>
##     <tr><td headers="Variable" class="gt_row gt_left">Height (75%)</td>
## <td headers="Invaded" class="gt_row gt_right">1.07</td>
## <td headers="Non_Invaded" class="gt_row gt_right">0.26</td></tr>
##   </tbody>
##   
##   
## </table>
## </div>

Objective 1- Cogongrass relationship with fuel dynamics

Data Cleaning

Plot biomass by invasion status

biomass_plot <- merged_sites %>%
  pivot_longer(
    cols = c(avg_live_biomass, avg_dead_biomass, avg_litter_biomass),
    names_to = "Fuel_Type",
    values_to = "Biomass"
  ) %>%
  
  # Rename invasion categories
  mutate(
    Status = recode(
      Status,
      "Invaded" = "Invaded",
      "Non_Invaded" = "Non-Invaded"
    ),
    
    # Rename and order fuel types
    Fuel_Type = factor(
      Fuel_Type,
      levels = c(
        "avg_live_biomass",
        "avg_dead_biomass",
        "avg_litter_biomass"
      ),
      labels = c(
        "Live Fuel Load",
        "Dead Fuel Load",
        "Litter Fuel Load"
      )
    )
  ) %>%
  
  ggplot(aes(x = Status, y = Biomass, fill = Status)) +
  geom_boxplot() +
  
  facet_wrap(~ Fuel_Type, scales = "free_y") +
  
  labs(
    title = "Fuel Load by  Cogongrass Invasion Status",
    x = "Invasion Status",
    y = "Fuel Load (tonnes/ha)"
  ) +
  
  # University of Alabama colors
  scale_fill_manual(values = c(
    "Invaded" = "#E87722",
    "Non-Invaded" = "#0C2340" 
  )) +
  
  theme_minimal() +
  theme(
    legend.position = "none"
  )

print(biomass_plot)

Moisture Plot

moisture_plot <- merged_sites %>%
  pivot_longer(
    # FIX OCCURS HERE: Matches the columns regardless of whether they have an .x or not
    cols = c(contains("avg_live_moisture_content"), 
             contains("avg_dead_moisture_content"), 
             contains("avg_litter_moisture_content")),
    names_to = "Fuel_Type",
    values_to = "Moisture_Content"
  ) %>%
  
  # Rename invasion categories
  mutate(
    Status = recode(
      Status,
      "Invaded" = "Invaded",
      "Non_Invaded" = "Non-Invaded"
    ),
    
    # Rename and order fuel types dynamically
    Fuel_Type = factor(
      Fuel_Type,
      # FIX OCCURS HERE TOO: Match whatever naming convention R used mid-pivot
      levels = unique(Fuel_Type), 
      labels = c(
        "Live Fuel Moisture Content",
        "Dead Fuel Moisture Content",
        "Litter Fuel Moisture Content"
      )
    )
  ) %>%
  
  ggplot(aes(x = Status, y = Moisture_Content, fill = Status)) +
  geom_boxplot() +
  
  facet_wrap(~ Fuel_Type, scales = "free_y") +
  
  labs(
    title = "Fuel Moisture Content by Cogongrass Invasion Status",
    x = "Invasion Status",
    y = "Fuel Moisture Content (%)"
  ) +
  
  # Auburn University colors (Orange and Navy)
  scale_fill_manual(values = c(
    "Invaded" = "#E87722",      
    "Non-Invaded" = "#0C2340"  
  )) +
  
  theme_minimal() +
  theme(
    legend.position = "none"
  )

# Display the plot
moisture_plot
## Warning: Removed 3 rows containing non-finite outside the scale range
## (`stat_boxplot()`).

# Save
ggsave("C:/Users/DrewIvory/OneDrive - University of Florida/Desktop/School/PHD/01_Projects/05_SharedData/Hooper_Fuel_Moisture_by_Invasion_Status.png", plot = moisture_plot, width = 10, height = 6, dpi = 300)
## Warning: Removed 3 rows containing non-finite outside the scale range
## (`stat_boxplot()`).