Set-up

Install necessary packages and import appropriate data

pacman::p_load(tidyverse, readxl, raster,
               vegan, tigris, sf, sjPlot,
               sp, spOccupancy, ggrepel,
               lme4, lmerTest, MuMIn,
               brms, MCMCvis, cmdstanr,
               lubridate, forcats, tidybayes,
               ggdist, knitr, kableExtra,
               officer, flextable, purrr,
               posterior, patchwork, scales)

# Install dependencies
#install.packages(c("posterior", "RcppParallel", "jsonlite"))

# Install cmdstanr
#install.packages("cmdstanr", repos = c("https://mc-stan.org/r-packages/", getOption("repos")))


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

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

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

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

# Site Data
CameraData <- read_excel("C:/Users/DrewIvory/OneDrive - University of Florida/Desktop/School/PHD/01_Projects/04_Wildlife/02_Data/CameraData.xlsx")

CameraLoc <- read_excel("C:/Users/DrewIvory/OneDrive - University of Florida/Desktop/School/PHD/01_Projects/04_Wildlife/02_Data/CameraLoc.xlsx",
                  sheet = "CameraLocations")

# Add effort data
effort_matrix <- read_excel("C:/Users/DrewIvory/OneDrive - University of Florida/Desktop/School/PHD/01_Projects/04_Wildlife/02_Data/CameraLoc.xlsx",
                            sheet = "Effort_Matrix_Full") %>%
  pivot_longer(cols = matches("^202[4-5]-"), names_to = "week", values_to = "days") %>%
  filter(days == "7") %>%
  dplyr::select(Plot, week)

Number of quadrats sampled per plot

# Count the total number of quadrats per plot
quadrat_count <- Veg_Cover %>%
  group_by(Plot) %>%
  summarize(total_quadrats = n_distinct(Quadrat), .groups = "drop")

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

#Filter tree data to only include trees with "tree" in the growth column
tree_data <- dplyr::filter(tree_data, Growth == "Tree")

#Filter Veg Cover to exclude Shrubs and Trees
Veg_Cover <- dplyr::filter(Veg_Cover, Growth != "Shrub" & Growth != "Tree")

#Filter Shrub Cover to only include Shrubs and Trees
shrub_data <- dplyr::filter(shrub_data, Growth == "Shrub" | Growth == "Tree")

Place holder in case we need to filter vegetation by frequency

# Total number of sites
total_sites <- nrow(CameraLoc)

# Function to filter data by frequency
filter_by_frequency <- function(df) {
  # Group data by species and calculate the frequency
  freq <- df %>%
    group_by(Species) %>%
    summarise(Frequency = n_distinct(Plot) / nrow(CameraLoc) * 100) %>%
    filter(Frequency >= 0)
  
  # Filter the original data to include only species with frequency >= XX%
  filtered_df <- df %>%
    filter(Species %in% freq$Species)
  
  return(filtered_df)
}

# Filter tree data by frequency
tree_data <- filter_by_frequency(tree_data)

# Filter Veg Cover data by frequency
Veg_Cover <- filter_by_frequency(Veg_Cover)

# Filter Shrub Cover data by frequency
shrub_data <- filter_by_frequency(shrub_data)

Shrub Cover Conversion

# Total length of Shrub cover at a site
shrub_cover <- shrub_data %>%
  mutate(Cover = Line_End - Line_Start) %>%
  group_by(Species_Name, Plot) %>%
  summarise(Shrub_Total_Cover = sum(Cover, na.rm = TRUE), .groups = "drop") %>%
  mutate(Shrub_Percent_Cover = Shrub_Total_Cover / 3000 * 100)

# Summed length of shrub over at a site
shrub_cover_summed <- shrub_cover %>%
  group_by(Plot) %>%
  summarize(total_shrub_cover = sum(Shrub_Total_Cover, na.rm = TRUE), .groups = "drop")

Herbacous Cover Conversion

# Combine Plot and Quadrat columns
Veg_Cover <- Veg_Cover %>%
  mutate(Plot_Quadrat = paste(Plot, Quadrat, sep = '_'))

# Join with CogonSites to get site information
Veg_Cover <- Veg_Cover %>%
  left_join(CameraLoc, by = "Plot")

# Sum species cover across quadrats for each species at each plot
veg_cover_summed <- Veg_Cover %>%
  group_by(Plot, Species_Name) %>%
  summarize(total_cover = sum(Cover_Per, na.rm = TRUE), .groups = "drop")

# Calculate average herbaceous species cover
avg_species_cover <- veg_cover_summed %>%
  left_join(quadrat_count, by = "Plot") %>%
  mutate(avg_cover = total_cover / total_quadrats)

Merging Herb cover with Shrub

# Merge shrub cover with herbaceous average cover
combined_cover <- avg_species_cover %>%
  full_join(
    shrub_cover %>%
      dplyr::select(Plot, Species_Name, Shrub_Percent_Cover),
    by = c("Plot", "Species_Name")
  ) %>%
  mutate(
    overlap_flag = ifelse(!is.na(avg_cover) & !is.na(Shrub_Percent_Cover), TRUE, FALSE), # Flag overlaps
    final_cover = case_when(
      !is.na(avg_cover) & is.na(Shrub_Percent_Cover) ~ avg_cover,  # Use herbaceous cover if no shrub data
      is.na(avg_cover) & !is.na(Shrub_Percent_Cover) ~ Shrub_Percent_Cover, # Use shrub cover if no herbaceous data
      TRUE ~ NA_real_ # Leave as NA where overlaps exist
    )
  )

# Species Matrix
species_matrix <- combined_cover %>%
  dplyr::select(Plot, Species_Name, final_cover) %>%
  pivot_wider(
    names_from = Species_Name,
    values_from = final_cover,
    values_fill = 0
  )

Summarize Cogongrass Cover

avg_cogongrass_cover <- species_matrix %>%
  group_by(Plot) %>%
  summarize(Avg_Cogongrass_Cover = sum(Imperata_cylindrica, na.rm = TRUE) / n(), .groups = "drop")

Herbacous Shannon Diversity Index

# Summarize species cover by site
site_species_cover <- Veg_Cover %>%
  group_by(Plot, Species_Name) %>%
  summarize(total_cover = sum(Cover_Per, na.rm = TRUE)) %>%
  ungroup()
## `summarise()` has grouped output by 'Plot'. You can override using the
## `.groups` argument.
# Calculate Shannon diversity per site
Veg_shannon_diversity <- site_species_cover %>%
  group_by(Plot) %>%
  mutate(proportion = total_cover / sum(total_cover)) %>%
  summarize(Veg_shannon_index = -sum(proportion * log(proportion), na.rm = TRUE))

print(Veg_shannon_diversity)
## # A tibble: 206 × 2
##    Plot  Veg_shannon_index
##    <chr>             <dbl>
##  1 BI200              2.28
##  2 BI201              2.20
##  3 BI202              1.50
##  4 BI97               1.82
##  5 BI99               3.06
##  6 BN210              2.97
##  7 BN211              2.43
##  8 BN212              2.22
##  9 BN96               3.05
## 10 BN98               2.79
## # ℹ 196 more rows

Vegetation Height

if (!is.numeric(fuel_data$Height)) {
  fuel_data$Height <- as.numeric(as.character(fuel_data$Height))
}
## Warning: NAs introduced by coercion
# Calculate average vegetation height per plot
veg_height <- fuel_data %>%
  group_by(Plot) %>%
  summarize(avg_veg_height = mean(Height, na.rm = TRUE), .groups = "drop")

Tree Metrics

# Tree density from point-centered quarter data
if (!is.numeric(tree_data$Distance)) {
  tree_data$Distance <- as.numeric(as.character(tree_data$Distance))
}

tree_density_data <- tree_data %>%
  group_by(Plot) %>%
  summarize(Average_Distance = mean(Distance) / 100,  # Convert to meters
            Tree_Density = 10000 / (Average_Distance^2))  # Convert to trees per hectare

# Average canopy cover from vegetation quadrats
tree_canopy_data <- Veg_Cover %>%
  distinct(Plot, Quadrat, .keep_all = TRUE) %>%  # Ensure each quadrat counts once per plot
  group_by(Plot) %>%
  summarize(Avg_Canopy_Cover = mean(Canopy_Cover, na.rm = TRUE), .groups = "drop") # Calculate the average canopy cover per plot

cor(tree_density_data$Tree_Density, tree_canopy_data$Avg_Canopy_Cover)
## [1] 0.2742307

Objective 2: Determine whether wildlife behaviors differ in and around cogongrass patches, specifically as it relates to whether specific taxa avoid cogongrass invaded areas.

Behavior Occurence

CameraData <- CameraData%>%
  dplyr::select(-Status)

O2_data <- CameraData %>%
  left_join(CameraLoc_O2, by = "Plot")

O2_data <- O2_data %>%
  mutate(
    DateTime = update(Date,
                      hour   = hour(Time),
                      minute = minute(Time),
                      second = second(Time))
  )

gap_mins <- 30

O2_data <- O2_data %>%
  filter(!is.na(DateTime)) %>%
  arrange(Plot, Name, DateTime) %>%
  group_by(Plot, Name) %>%
  group_modify(~{
    df <- .x
    keep <- logical(nrow(df))
    last_kept <- as.POSIXct(NA, tz = tz(df$DateTime[1]))
    for (i in seq_len(nrow(df))) {
      if (is.na(last_kept) || difftime(df$DateTime[i], last_kept, units = "mins") > gap_mins) {
        keep[i] <- TRUE
        last_kept <- df$DateTime[i]
      }
    }
    df[keep, , drop = FALSE]
  }) %>%
  ungroup()

dat <- O2_data %>%
  filter(!is.na(Behavior), !is.na(Status), !is.na(BehLoc)) %>%
  mutate(
    # time-of-day as proportion of a 24-hour day, then z-score and quadratic
    time_prop = (hour(DateTime)*3600 + minute(DateTime)*60 + second(DateTime)) / 86400,
    time_z = as.numeric(scale(time_prop)),
    time_z2 = time_z^2,
    # temperature standardized
    temp_z = as.numeric(scale(Air.TemperatureC)),
    # month factor to absorb temporal clustering
    Month = factor(month(DateTime)),
    # set factor baselines
    Behavior = factor(Behavior, ordered = FALSE),
    Behavior = relevel(Behavior, ref = "Local_Search"),
    Status   = factor(Status, levels = c("Non_Invaded","Invaded")),
    BehLoc   = factor(BehLoc, levels = c("Non_Patch","Patch")),  # Non_Patch vs Patch
    Plot     = factor(Plot),
    Name     = factor(Name),
    Site     = factor(Site),
    Camera.Type = factor(Camera.Type)
  )
priors <- c(
  prior(normal(0, 1),   class = "b",         dpar = "muForaging"),
  prior(normal(0, 1),   class = "b",         dpar = "muTransit"),
  prior(normal(0, 2.5), class = "Intercept", dpar = "muForaging"),
  prior(normal(0, 2.5), class = "Intercept", dpar = "muTransit"),
  prior(exponential(1), class = "sd",        dpar = "muForaging"),
  prior(exponential(1), class = "sd",        dpar = "muTransit")
)

# Objective 2a: cover effect on behavior across all sites
model_status <- brm(
  bf(Behavior ~ Avg_Cogongrass_Cover * Name +
       (1 | Site) + (1 | Camera.Type) + (1 | Month)),
  family  = categorical(link = "logit", refcat = "Local_Search"),
  data    = dat,
  prior   = priors,
  chains  = 4, cores = 4, iter = 4000, warmup = 2000,
  control = list(adapt_delta = 0.95, max_treedepth = 12)
)
## Compiling Stan program...
## Start sampling
# Objective 2b: does the cover effect differ inside vs outside patches?
dat_inv <- dat %>% filter(Status == "Invaded")

model_loc <- brm(
  bf(Behavior ~ BehLoc * Avg_Cogongrass_Cover * Name +
       (1 | Site) + (1 | Camera.Type) + (1 | Month)),
  family  = categorical(link = "logit", refcat = "Local_Search"),
  data    = dat_inv,
  prior   = priors,
  chains  = 4, cores = 4, iter = 4000, warmup = 2000,
  control = list(adapt_delta = 0.95, max_treedepth = 12)
)
## Compiling Stan program...
## Start sampling
# Diagnostics
summary(model_status); summary(model_loc)
##  Family: categorical 
##   Links: muForaging = logit; muTransit = logit 
## Formula: Behavior ~ Avg_Cogongrass_Cover * Name + (1 | Site) + (1 | Camera.Type) + (1 | Month) 
##    Data: dat (Number of observations: 2815) 
##   Draws: 4 chains, each with iter = 4000; warmup = 2000; thin = 1;
##          total post-warmup draws = 8000
## 
## Multilevel Hyperparameters:
## ~Camera.Type (Number of levels: 4) 
##                          Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS
## sd(muForaging_Intercept)     0.39      0.35     0.01     1.29 1.00     2328
## sd(muTransit_Intercept)      0.21      0.20     0.01     0.72 1.00     3052
##                          Tail_ESS
## sd(muForaging_Intercept)     3186
## sd(muTransit_Intercept)      3468
## 
## ~Month (Number of levels: 9) 
##                          Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS
## sd(muForaging_Intercept)     0.68      0.23     0.36     1.25 1.00     2951
## sd(muTransit_Intercept)      0.17      0.11     0.01     0.43 1.00     2543
##                          Tail_ESS
## sd(muForaging_Intercept)     4641
## sd(muTransit_Intercept)      3272
## 
## ~Site (Number of levels: 5) 
##                          Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS
## sd(muForaging_Intercept)     0.19      0.19     0.01     0.69 1.00     2773
## sd(muTransit_Intercept)      0.52      0.26     0.22     1.20 1.00     3714
##                          Tail_ESS
## sd(muForaging_Intercept)     4218
## sd(muTransit_Intercept)      4437
## 
## Regression Coefficients:
##                                                            Estimate Est.Error
## muForaging_Intercept                                          -0.46      0.52
## muTransit_Intercept                                            1.42      0.42
## muForaging_Avg_Cogongrass_Cover                               -0.31      0.21
## muForaging_NameDasypus_novemcinctus                            1.99      0.50
## muForaging_NameDidelphis_virginiana                            0.98      0.71
## muForaging_NameLynx_rufus                                     -0.39      0.88
## muForaging_NameMeleagris_gallopavo                             0.01      0.73
## muForaging_NameOdocoileus_virginianus                          0.95      0.37
## muForaging_NameProcyon_lotor                                  -0.89      0.53
## muForaging_NameSciurus_carolinensis                            0.18      0.67
## muForaging_NameSylvilagus_floridanus                           1.19      0.60
## muForaging_Avg_Cogongrass_Cover:NameDasypus_novemcinctus       0.31      0.21
## muForaging_Avg_Cogongrass_Cover:NameDidelphis_virginiana       0.05      0.64
## muForaging_Avg_Cogongrass_Cover:NameLynx_rufus                -0.29      0.84
## muForaging_Avg_Cogongrass_Cover:NameMeleagris_gallopavo        0.36      0.23
## muForaging_Avg_Cogongrass_Cover:NameOdocoileus_virginianus     0.30      0.21
## muForaging_Avg_Cogongrass_Cover:NameProcyon_lotor              0.30      0.21
## muForaging_Avg_Cogongrass_Cover:NameSciurus_carolinensis       0.29      0.21
## muForaging_Avg_Cogongrass_Cover:NameSylvilagus_floridanus      0.86      0.41
## muTransit_Avg_Cogongrass_Cover                                 0.00      0.02
## muTransit_NameDasypus_novemcinctus                             0.62      0.44
## muTransit_NameDidelphis_virginiana                            -0.21      0.64
## muTransit_NameLynx_rufus                                       1.18      0.77
## muTransit_NameMeleagris_gallopavo                              0.16      0.58
## muTransit_NameOdocoileus_virginianus                          -0.13      0.29
## muTransit_NameProcyon_lotor                                   -0.48      0.37
## muTransit_NameSciurus_carolinensis                            -0.99      0.55
## muTransit_NameSylvilagus_floridanus                           -0.13      0.56
## muTransit_Avg_Cogongrass_Cover:NameDasypus_novemcinctus        0.03      0.03
## muTransit_Avg_Cogongrass_Cover:NameDidelphis_virginiana        0.67      0.46
## muTransit_Avg_Cogongrass_Cover:NameLynx_rufus                  0.88      0.61
## muTransit_Avg_Cogongrass_Cover:NameMeleagris_gallopavo         0.00      0.09
## muTransit_Avg_Cogongrass_Cover:NameOdocoileus_virginianus      0.00      0.02
## muTransit_Avg_Cogongrass_Cover:NameProcyon_lotor               0.01      0.02
## muTransit_Avg_Cogongrass_Cover:NameSciurus_carolinensis        0.00      0.03
## muTransit_Avg_Cogongrass_Cover:NameSylvilagus_floridanus       0.47      0.37
##                                                            l-95% CI u-95% CI
## muForaging_Intercept                                          -1.49     0.54
## muTransit_Intercept                                            0.58     2.25
## muForaging_Avg_Cogongrass_Cover                               -0.80    -0.01
## muForaging_NameDasypus_novemcinctus                            1.03     2.96
## muForaging_NameDidelphis_virginiana                           -0.41     2.39
## muForaging_NameLynx_rufus                                     -2.13     1.31
## muForaging_NameMeleagris_gallopavo                            -1.44     1.43
## muForaging_NameOdocoileus_virginianus                          0.24     1.68
## muForaging_NameProcyon_lotor                                  -1.96     0.15
## muForaging_NameSciurus_carolinensis                           -1.15     1.46
## muForaging_NameSylvilagus_floridanus                           0.04     2.38
## muForaging_Avg_Cogongrass_Cover:NameDasypus_novemcinctus       0.01     0.80
## muForaging_Avg_Cogongrass_Cover:NameDidelphis_virginiana      -1.30     1.26
## muForaging_Avg_Cogongrass_Cover:NameLynx_rufus                -2.06     1.23
## muForaging_Avg_Cogongrass_Cover:NameMeleagris_gallopavo        0.00     0.89
## muForaging_Avg_Cogongrass_Cover:NameOdocoileus_virginianus     0.01     0.80
## muForaging_Avg_Cogongrass_Cover:NameProcyon_lotor              0.01     0.80
## muForaging_Avg_Cogongrass_Cover:NameSciurus_carolinensis      -0.01     0.79
## muForaging_Avg_Cogongrass_Cover:NameSylvilagus_floridanus      0.19     1.78
## muTransit_Avg_Cogongrass_Cover                                -0.04     0.04
## muTransit_NameDasypus_novemcinctus                            -0.21     1.52
## muTransit_NameDidelphis_virginiana                            -1.45     1.10
## muTransit_NameLynx_rufus                                      -0.26     2.77
## muTransit_NameMeleagris_gallopavo                             -0.95     1.32
## muTransit_NameOdocoileus_virginianus                          -0.69     0.44
## muTransit_NameProcyon_lotor                                   -1.20     0.24
## muTransit_NameSciurus_carolinensis                            -2.07     0.11
## muTransit_NameSylvilagus_floridanus                           -1.20     1.00
## muTransit_Avg_Cogongrass_Cover:NameDasypus_novemcinctus       -0.03     0.09
## muTransit_Avg_Cogongrass_Cover:NameDidelphis_virginiana        0.05     1.76
## muTransit_Avg_Cogongrass_Cover:NameLynx_rufus                  0.05     2.29
## muTransit_Avg_Cogongrass_Cover:NameMeleagris_gallopavo        -0.16     0.20
## muTransit_Avg_Cogongrass_Cover:NameOdocoileus_virginianus     -0.04     0.04
## muTransit_Avg_Cogongrass_Cover:NameProcyon_lotor              -0.04     0.05
## muTransit_Avg_Cogongrass_Cover:NameSciurus_carolinensis       -0.05     0.05
## muTransit_Avg_Cogongrass_Cover:NameSylvilagus_floridanus      -0.08     1.35
##                                                            Rhat Bulk_ESS
## muForaging_Intercept                                       1.00     3935
## muTransit_Intercept                                        1.00     3756
## muForaging_Avg_Cogongrass_Cover                            1.00     1834
## muForaging_NameDasypus_novemcinctus                        1.00     5710
## muForaging_NameDidelphis_virginiana                        1.00     8659
## muForaging_NameLynx_rufus                                  1.00    12284
## muForaging_NameMeleagris_gallopavo                         1.00    10656
## muForaging_NameOdocoileus_virginianus                      1.00     5461
## muForaging_NameProcyon_lotor                               1.00     7266
## muForaging_NameSciurus_carolinensis                        1.00     8949
## muForaging_NameSylvilagus_floridanus                       1.00     7345
## muForaging_Avg_Cogongrass_Cover:NameDasypus_novemcinctus   1.00     1832
## muForaging_Avg_Cogongrass_Cover:NameDidelphis_virginiana   1.00     6393
## muForaging_Avg_Cogongrass_Cover:NameLynx_rufus             1.00     7083
## muForaging_Avg_Cogongrass_Cover:NameMeleagris_gallopavo    1.00     1969
## muForaging_Avg_Cogongrass_Cover:NameOdocoileus_virginianus 1.00     1836
## muForaging_Avg_Cogongrass_Cover:NameProcyon_lotor          1.00     1847
## muForaging_Avg_Cogongrass_Cover:NameSciurus_carolinensis   1.00     1853
## muForaging_Avg_Cogongrass_Cover:NameSylvilagus_floridanus  1.00     3413
## muTransit_Avg_Cogongrass_Cover                             1.00     3409
## muTransit_NameDasypus_novemcinctus                         1.00     5790
## muTransit_NameDidelphis_virginiana                         1.00     8585
## muTransit_NameLynx_rufus                                   1.00    11804
## muTransit_NameMeleagris_gallopavo                          1.00     8870
## muTransit_NameOdocoileus_virginianus                       1.00     4571
## muTransit_NameProcyon_lotor                                1.00     5439
## muTransit_NameSciurus_carolinensis                         1.00     8085
## muTransit_NameSylvilagus_floridanus                        1.00     7168
## muTransit_Avg_Cogongrass_Cover:NameDasypus_novemcinctus    1.00     4203
## muTransit_Avg_Cogongrass_Cover:NameDidelphis_virginiana    1.00     5762
## muTransit_Avg_Cogongrass_Cover:NameLynx_rufus              1.00     6085
## muTransit_Avg_Cogongrass_Cover:NameMeleagris_gallopavo     1.00     9412
## muTransit_Avg_Cogongrass_Cover:NameOdocoileus_virginianus  1.00     3398
## muTransit_Avg_Cogongrass_Cover:NameProcyon_lotor           1.00     3668
## muTransit_Avg_Cogongrass_Cover:NameSciurus_carolinensis    1.00     4422
## muTransit_Avg_Cogongrass_Cover:NameSylvilagus_floridanus   1.00     5278
##                                                            Tail_ESS
## muForaging_Intercept                                           4937
## muTransit_Intercept                                            4741
## muForaging_Avg_Cogongrass_Cover                                2004
## muForaging_NameDasypus_novemcinctus                            5842
## muForaging_NameDidelphis_virginiana                            6535
## muForaging_NameLynx_rufus                                      5946
## muForaging_NameMeleagris_gallopavo                             5845
## muForaging_NameOdocoileus_virginianus                          5649
## muForaging_NameProcyon_lotor                                   5911
## muForaging_NameSciurus_carolinensis                            5867
## muForaging_NameSylvilagus_floridanus                           6776
## muForaging_Avg_Cogongrass_Cover:NameDasypus_novemcinctus       1801
## muForaging_Avg_Cogongrass_Cover:NameDidelphis_virginiana       5927
## muForaging_Avg_Cogongrass_Cover:NameLynx_rufus                 5742
## muForaging_Avg_Cogongrass_Cover:NameMeleagris_gallopavo        2345
## muForaging_Avg_Cogongrass_Cover:NameOdocoileus_virginianus     2024
## muForaging_Avg_Cogongrass_Cover:NameProcyon_lotor              2006
## muForaging_Avg_Cogongrass_Cover:NameSciurus_carolinensis       2030
## muForaging_Avg_Cogongrass_Cover:NameSylvilagus_floridanus      4338
## muTransit_Avg_Cogongrass_Cover                                 4170
## muTransit_NameDasypus_novemcinctus                             5202
## muTransit_NameDidelphis_virginiana                             6692
## muTransit_NameLynx_rufus                                       5159
## muTransit_NameMeleagris_gallopavo                              6246
## muTransit_NameOdocoileus_virginianus                           5675
## muTransit_NameProcyon_lotor                                    5944
## muTransit_NameSciurus_carolinensis                             6277
## muTransit_NameSylvilagus_floridanus                            5926
## muTransit_Avg_Cogongrass_Cover:NameDasypus_novemcinctus        4913
## muTransit_Avg_Cogongrass_Cover:NameDidelphis_virginiana        5064
## muTransit_Avg_Cogongrass_Cover:NameLynx_rufus                  5345
## muTransit_Avg_Cogongrass_Cover:NameMeleagris_gallopavo         5092
## muTransit_Avg_Cogongrass_Cover:NameOdocoileus_virginianus      4112
## muTransit_Avg_Cogongrass_Cover:NameProcyon_lotor               4718
## muTransit_Avg_Cogongrass_Cover:NameSciurus_carolinensis        5322
## muTransit_Avg_Cogongrass_Cover:NameSylvilagus_floridanus       4090
## 
## Draws were sampled using sampling(NUTS). For each parameter, Bulk_ESS
## and Tail_ESS are effective sample size measures, and Rhat is the potential
## scale reduction factor on split chains (at convergence, Rhat = 1).
##  Family: categorical 
##   Links: muForaging = logit; muTransit = logit 
## Formula: Behavior ~ BehLoc * Avg_Cogongrass_Cover * Name + (1 | Site) + (1 | Camera.Type) + (1 | Month) 
##    Data: dat_inv (Number of observations: 1300) 
##   Draws: 4 chains, each with iter = 4000; warmup = 2000; thin = 1;
##          total post-warmup draws = 8000
## 
## Multilevel Hyperparameters:
## ~Camera.Type (Number of levels: 4) 
##                          Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS
## sd(muForaging_Intercept)     0.48      0.43     0.01     1.59 1.00     3361
## sd(muTransit_Intercept)      0.56      0.37     0.13     1.54 1.00     5045
##                          Tail_ESS
## sd(muForaging_Intercept)     4393
## sd(muTransit_Intercept)      4692
## 
## ~Month (Number of levels: 9) 
##                          Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS
## sd(muForaging_Intercept)     0.46      0.21     0.13     0.95 1.00     3021
## sd(muTransit_Intercept)      0.25      0.16     0.02     0.65 1.00     2159
##                          Tail_ESS
## sd(muForaging_Intercept)     3306
## sd(muTransit_Intercept)      3084
## 
## ~Site (Number of levels: 5) 
##                          Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS
## sd(muForaging_Intercept)     0.75      0.42     0.16     1.79 1.00     3930
## sd(muTransit_Intercept)      0.70      0.35     0.26     1.62 1.00     5997
##                          Tail_ESS
## sd(muForaging_Intercept)     4089
## sd(muTransit_Intercept)      6328
## 
## Regression Coefficients:
##                                                                        Estimate
## muForaging_Intercept                                                       0.34
## muTransit_Intercept                                                        0.21
## muForaging_BehLocPatch                                                    -0.93
## muForaging_Avg_Cogongrass_Cover                                           -0.33
## muForaging_NameDasypus_novemcinctus                                        1.59
## muForaging_NameDidelphis_virginiana                                        0.50
## muForaging_NameLynx_rufus                                                 -0.03
## muForaging_NameMeleagris_gallopavo                                        -0.43
## muForaging_NameOdocoileus_virginianus                                     -0.27
## muForaging_NameProcyon_lotor                                              -1.20
## muForaging_NameSciurus_carolinensis                                       -0.04
## muForaging_NameSylvilagus_floridanus                                       0.13
## muForaging_BehLocPatch:Avg_Cogongrass_Cover                               -0.51
## muForaging_BehLocPatch:NameDasypus_novemcinctus                           -0.17
## muForaging_BehLocPatch:NameDidelphis_virginiana                           -0.09
## muForaging_BehLocPatch:NameLynx_rufus                                      0.00
## muForaging_BehLocPatch:NameMeleagris_gallopavo                            -0.01
## muForaging_BehLocPatch:NameOdocoileus_virginianus                         -0.47
## muForaging_BehLocPatch:NameProcyon_lotor                                  -0.07
## muForaging_BehLocPatch:NameSciurus_carolinensis                           -0.05
## muForaging_BehLocPatch:NameSylvilagus_floridanus                          -0.07
## muForaging_Avg_Cogongrass_Cover:NameDasypus_novemcinctus                   0.32
## muForaging_Avg_Cogongrass_Cover:NameDidelphis_virginiana                   0.06
## muForaging_Avg_Cogongrass_Cover:NameLynx_rufus                            -0.28
## muForaging_Avg_Cogongrass_Cover:NameMeleagris_gallopavo                    0.38
## muForaging_Avg_Cogongrass_Cover:NameOdocoileus_virginianus                 0.34
## muForaging_Avg_Cogongrass_Cover:NameProcyon_lotor                          0.31
## muForaging_Avg_Cogongrass_Cover:NameSciurus_carolinensis                   0.30
## muForaging_Avg_Cogongrass_Cover:NameSylvilagus_floridanus                  0.96
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameDasypus_novemcinctus      -0.27
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameDidelphis_virginiana      -0.11
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameLynx_rufus                -0.05
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameMeleagris_gallopavo       -0.17
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameOdocoileus_virginianus     0.50
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameProcyon_lotor             -0.20
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameSciurus_carolinensis      -0.06
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameSylvilagus_floridanus     -0.15
## muTransit_BehLocPatch                                                      0.94
## muTransit_Avg_Cogongrass_Cover                                            -0.00
## muTransit_NameDasypus_novemcinctus                                         0.50
## muTransit_NameDidelphis_virginiana                                        -0.30
## muTransit_NameLynx_rufus                                                   0.07
## muTransit_NameMeleagris_gallopavo                                          0.36
## muTransit_NameOdocoileus_virginianus                                      -0.11
## muTransit_NameProcyon_lotor                                               -0.18
## muTransit_NameSciurus_carolinensis                                        -0.45
## muTransit_NameSylvilagus_floridanus                                       -0.05
## muTransit_BehLocPatch:Avg_Cogongrass_Cover                                 0.96
## muTransit_BehLocPatch:NameDasypus_novemcinctus                            -0.42
## muTransit_BehLocPatch:NameDidelphis_virginiana                             0.24
## muTransit_BehLocPatch:NameLynx_rufus                                       0.01
## muTransit_BehLocPatch:NameMeleagris_gallopavo                              0.03
## muTransit_BehLocPatch:NameOdocoileus_virginianus                           0.76
## muTransit_BehLocPatch:NameProcyon_lotor                                   -0.15
## muTransit_BehLocPatch:NameSciurus_carolinensis                             0.13
## muTransit_BehLocPatch:NameSylvilagus_floridanus                            0.16
## muTransit_Avg_Cogongrass_Cover:NameDasypus_novemcinctus                    0.04
## muTransit_Avg_Cogongrass_Cover:NameDidelphis_virginiana                    0.77
## muTransit_Avg_Cogongrass_Cover:NameLynx_rufus                              0.96
## muTransit_Avg_Cogongrass_Cover:NameMeleagris_gallopavo                    -0.22
## muTransit_Avg_Cogongrass_Cover:NameOdocoileus_virginianus                  0.01
## muTransit_Avg_Cogongrass_Cover:NameProcyon_lotor                           0.02
## muTransit_Avg_Cogongrass_Cover:NameSciurus_carolinensis                    0.01
## muTransit_Avg_Cogongrass_Cover:NameSylvilagus_floridanus                   0.52
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameDasypus_novemcinctus        0.02
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameDidelphis_virginiana        0.32
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameLynx_rufus                  0.14
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameMeleagris_gallopavo         0.47
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameOdocoileus_virginianus     -0.95
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameProcyon_lotor               0.26
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameSciurus_carolinensis        0.14
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameSylvilagus_floridanus       0.26
##                                                                        Est.Error
## muForaging_Intercept                                                        0.78
## muTransit_Intercept                                                         0.72
## muForaging_BehLocPatch                                                      0.70
## muForaging_Avg_Cogongrass_Cover                                             0.21
## muForaging_NameDasypus_novemcinctus                                         0.62
## muForaging_NameDidelphis_virginiana                                         0.84
## muForaging_NameLynx_rufus                                                   0.99
## muForaging_NameMeleagris_gallopavo                                          0.96
## muForaging_NameOdocoileus_virginianus                                       0.56
## muForaging_NameProcyon_lotor                                                0.68
## muForaging_NameSciurus_carolinensis                                         0.74
## muForaging_NameSylvilagus_floridanus                                        0.77
## muForaging_BehLocPatch:Avg_Cogongrass_Cover                                 0.57
## muForaging_BehLocPatch:NameDasypus_novemcinctus                             0.87
## muForaging_BehLocPatch:NameDidelphis_virginiana                             0.97
## muForaging_BehLocPatch:NameLynx_rufus                                       1.01
## muForaging_BehLocPatch:NameMeleagris_gallopavo                              0.99
## muForaging_BehLocPatch:NameOdocoileus_virginianus                           0.73
## muForaging_BehLocPatch:NameProcyon_lotor                                    0.97
## muForaging_BehLocPatch:NameSciurus_carolinensis                             0.98
## muForaging_BehLocPatch:NameSylvilagus_floridanus                            0.98
## muForaging_Avg_Cogongrass_Cover:NameDasypus_novemcinctus                    0.21
## muForaging_Avg_Cogongrass_Cover:NameDidelphis_virginiana                    0.68
## muForaging_Avg_Cogongrass_Cover:NameLynx_rufus                              0.82
## muForaging_Avg_Cogongrass_Cover:NameMeleagris_gallopavo                     0.23
## muForaging_Avg_Cogongrass_Cover:NameOdocoileus_virginianus                  0.21
## muForaging_Avg_Cogongrass_Cover:NameProcyon_lotor                           0.21
## muForaging_Avg_Cogongrass_Cover:NameSciurus_carolinensis                    0.21
## muForaging_Avg_Cogongrass_Cover:NameSylvilagus_floridanus                   0.43
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameDasypus_novemcinctus        0.83
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameDidelphis_virginiana        0.94
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameLynx_rufus                  0.98
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameMeleagris_gallopavo         0.89
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameOdocoileus_virginianus      0.57
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameProcyon_lotor               0.90
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameSciurus_carolinensis        1.01
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameSylvilagus_floridanus       0.96
## muTransit_BehLocPatch                                                       0.60
## muTransit_Avg_Cogongrass_Cover                                              0.03
## muTransit_NameDasypus_novemcinctus                                          0.58
## muTransit_NameDidelphis_virginiana                                          0.76
## muTransit_NameLynx_rufus                                                    0.98
## muTransit_NameMeleagris_gallopavo                                           0.96
## muTransit_NameOdocoileus_virginianus                                        0.49
## muTransit_NameProcyon_lotor                                                 0.56
## muTransit_NameSciurus_carolinensis                                          0.69
## muTransit_NameSylvilagus_floridanus                                         0.76
## muTransit_BehLocPatch:Avg_Cogongrass_Cover                                  0.46
## muTransit_BehLocPatch:NameDasypus_novemcinctus                              0.81
## muTransit_BehLocPatch:NameDidelphis_virginiana                              0.93
## muTransit_BehLocPatch:NameLynx_rufus                                        1.02
## muTransit_BehLocPatch:NameMeleagris_gallopavo                               0.98
## muTransit_BehLocPatch:NameOdocoileus_virginianus                            0.63
## muTransit_BehLocPatch:NameProcyon_lotor                                     0.85
## muTransit_BehLocPatch:NameSciurus_carolinensis                              0.98
## muTransit_BehLocPatch:NameSylvilagus_floridanus                             0.96
## muTransit_Avg_Cogongrass_Cover:NameDasypus_novemcinctus                     0.03
## muTransit_Avg_Cogongrass_Cover:NameDidelphis_virginiana                     0.52
## muTransit_Avg_Cogongrass_Cover:NameLynx_rufus                               0.59
## muTransit_Avg_Cogongrass_Cover:NameMeleagris_gallopavo                      0.23
## muTransit_Avg_Cogongrass_Cover:NameOdocoileus_virginianus                   0.03
## muTransit_Avg_Cogongrass_Cover:NameProcyon_lotor                            0.03
## muTransit_Avg_Cogongrass_Cover:NameSciurus_carolinensis                     0.03
## muTransit_Avg_Cogongrass_Cover:NameSylvilagus_floridanus                    0.39
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameDasypus_novemcinctus         0.67
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameDidelphis_virginiana         0.87
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameLynx_rufus                   0.92
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameMeleagris_gallopavo          0.77
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameOdocoileus_virginianus       0.46
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameProcyon_lotor                0.69
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameSciurus_carolinensis         0.99
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameSylvilagus_floridanus        0.90
##                                                                        l-95% CI
## muForaging_Intercept                                                      -1.14
## muTransit_Intercept                                                       -1.27
## muForaging_BehLocPatch                                                    -2.32
## muForaging_Avg_Cogongrass_Cover                                           -0.83
## muForaging_NameDasypus_novemcinctus                                        0.40
## muForaging_NameDidelphis_virginiana                                       -1.10
## muForaging_NameLynx_rufus                                                 -2.01
## muForaging_NameMeleagris_gallopavo                                        -2.31
## muForaging_NameOdocoileus_virginianus                                     -1.35
## muForaging_NameProcyon_lotor                                              -2.55
## muForaging_NameSciurus_carolinensis                                       -1.54
## muForaging_NameSylvilagus_floridanus                                      -1.40
## muForaging_BehLocPatch:Avg_Cogongrass_Cover                               -1.68
## muForaging_BehLocPatch:NameDasypus_novemcinctus                           -1.88
## muForaging_BehLocPatch:NameDidelphis_virginiana                           -1.99
## muForaging_BehLocPatch:NameLynx_rufus                                     -1.97
## muForaging_BehLocPatch:NameMeleagris_gallopavo                            -1.94
## muForaging_BehLocPatch:NameOdocoileus_virginianus                         -1.94
## muForaging_BehLocPatch:NameProcyon_lotor                                  -1.99
## muForaging_BehLocPatch:NameSciurus_carolinensis                           -1.97
## muForaging_BehLocPatch:NameSylvilagus_floridanus                          -2.02
## muForaging_Avg_Cogongrass_Cover:NameDasypus_novemcinctus                   0.02
## muForaging_Avg_Cogongrass_Cover:NameDidelphis_virginiana                  -1.37
## muForaging_Avg_Cogongrass_Cover:NameLynx_rufus                            -2.01
## muForaging_Avg_Cogongrass_Cover:NameMeleagris_gallopavo                    0.02
## muForaging_Avg_Cogongrass_Cover:NameOdocoileus_virginianus                 0.04
## muForaging_Avg_Cogongrass_Cover:NameProcyon_lotor                          0.02
## muForaging_Avg_Cogongrass_Cover:NameSciurus_carolinensis                   0.01
## muForaging_Avg_Cogongrass_Cover:NameSylvilagus_floridanus                  0.25
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameDasypus_novemcinctus      -1.93
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameDidelphis_virginiana      -1.95
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameLynx_rufus                -1.98
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameMeleagris_gallopavo       -1.99
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameOdocoileus_virginianus    -0.56
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameProcyon_lotor             -2.04
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameSciurus_carolinensis      -2.04
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameSylvilagus_floridanus     -2.07
## muTransit_BehLocPatch                                                     -0.21
## muTransit_Avg_Cogongrass_Cover                                            -0.06
## muTransit_NameDasypus_novemcinctus                                        -0.62
## muTransit_NameDidelphis_virginiana                                        -1.80
## muTransit_NameLynx_rufus                                                  -1.89
## muTransit_NameMeleagris_gallopavo                                         -1.53
## muTransit_NameOdocoileus_virginianus                                      -1.07
## muTransit_NameProcyon_lotor                                               -1.26
## muTransit_NameSciurus_carolinensis                                        -1.80
## muTransit_NameSylvilagus_floridanus                                       -1.53
## muTransit_BehLocPatch:Avg_Cogongrass_Cover                                 0.16
## muTransit_BehLocPatch:NameDasypus_novemcinctus                            -1.98
## muTransit_BehLocPatch:NameDidelphis_virginiana                            -1.56
## muTransit_BehLocPatch:NameLynx_rufus                                      -1.95
## muTransit_BehLocPatch:NameMeleagris_gallopavo                             -1.90
## muTransit_BehLocPatch:NameOdocoileus_virginianus                          -0.50
## muTransit_BehLocPatch:NameProcyon_lotor                                   -1.79
## muTransit_BehLocPatch:NameSciurus_carolinensis                            -1.80
## muTransit_BehLocPatch:NameSylvilagus_floridanus                           -1.70
## muTransit_Avg_Cogongrass_Cover:NameDasypus_novemcinctus                   -0.02
## muTransit_Avg_Cogongrass_Cover:NameDidelphis_virginiana                    0.03
## muTransit_Avg_Cogongrass_Cover:NameLynx_rufus                              0.12
## muTransit_Avg_Cogongrass_Cover:NameMeleagris_gallopavo                    -0.78
## muTransit_Avg_Cogongrass_Cover:NameOdocoileus_virginianus                 -0.04
## muTransit_Avg_Cogongrass_Cover:NameProcyon_lotor                          -0.04
## muTransit_Avg_Cogongrass_Cover:NameSciurus_carolinensis                   -0.05
## muTransit_Avg_Cogongrass_Cover:NameSylvilagus_floridanus                  -0.09
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameDasypus_novemcinctus       -1.20
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameDidelphis_virginiana       -1.29
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameLynx_rufus                 -1.56
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameMeleagris_gallopavo        -0.89
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameOdocoileus_virginianus     -1.92
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameProcyon_lotor              -0.99
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameSciurus_carolinensis       -1.78
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameSylvilagus_floridanus      -1.44
##                                                                        u-95% CI
## muForaging_Intercept                                                       1.89
## muTransit_Intercept                                                        1.58
## muForaging_BehLocPatch                                                     0.47
## muForaging_Avg_Cogongrass_Cover                                           -0.03
## muForaging_NameDasypus_novemcinctus                                        2.82
## muForaging_NameDidelphis_virginiana                                        2.16
## muForaging_NameLynx_rufus                                                  1.95
## muForaging_NameMeleagris_gallopavo                                         1.42
## muForaging_NameOdocoileus_virginianus                                      0.81
## muForaging_NameProcyon_lotor                                               0.08
## muForaging_NameSciurus_carolinensis                                        1.42
## muForaging_NameSylvilagus_floridanus                                       1.64
## muForaging_BehLocPatch:Avg_Cogongrass_Cover                                0.55
## muForaging_BehLocPatch:NameDasypus_novemcinctus                            1.53
## muForaging_BehLocPatch:NameDidelphis_virginiana                            1.76
## muForaging_BehLocPatch:NameLynx_rufus                                      1.97
## muForaging_BehLocPatch:NameMeleagris_gallopavo                             1.92
## muForaging_BehLocPatch:NameOdocoileus_virginianus                          0.95
## muForaging_BehLocPatch:NameProcyon_lotor                                   1.78
## muForaging_BehLocPatch:NameSciurus_carolinensis                            1.85
## muForaging_BehLocPatch:NameSylvilagus_floridanus                           1.89
## muForaging_Avg_Cogongrass_Cover:NameDasypus_novemcinctus                   0.83
## muForaging_Avg_Cogongrass_Cover:NameDidelphis_virginiana                   1.33
## muForaging_Avg_Cogongrass_Cover:NameLynx_rufus                             1.23
## muForaging_Avg_Cogongrass_Cover:NameMeleagris_gallopavo                    0.91
## muForaging_Avg_Cogongrass_Cover:NameOdocoileus_virginianus                 0.84
## muForaging_Avg_Cogongrass_Cover:NameProcyon_lotor                          0.81
## muForaging_Avg_Cogongrass_Cover:NameSciurus_carolinensis                   0.81
## muForaging_Avg_Cogongrass_Cover:NameSylvilagus_floridanus                  1.92
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameDasypus_novemcinctus       1.32
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameDidelphis_virginiana       1.74
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameLynx_rufus                 1.83
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameMeleagris_gallopavo        1.50
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameOdocoileus_virginianus     1.67
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameProcyon_lotor              1.48
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameSciurus_carolinensis       1.91
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameSylvilagus_floridanus      1.73
## muTransit_BehLocPatch                                                      2.13
## muTransit_Avg_Cogongrass_Cover                                             0.05
## muTransit_NameDasypus_novemcinctus                                         1.63
## muTransit_NameDidelphis_virginiana                                         1.20
## muTransit_NameLynx_rufus                                                   2.00
## muTransit_NameMeleagris_gallopavo                                          2.23
## muTransit_NameOdocoileus_virginianus                                       0.85
## muTransit_NameProcyon_lotor                                                0.92
## muTransit_NameSciurus_carolinensis                                         0.93
## muTransit_NameSylvilagus_floridanus                                        1.43
## muTransit_BehLocPatch:Avg_Cogongrass_Cover                                 1.93
## muTransit_BehLocPatch:NameDasypus_novemcinctus                             1.15
## muTransit_BehLocPatch:NameDidelphis_virginiana                             2.10
## muTransit_BehLocPatch:NameLynx_rufus                                       2.04
## muTransit_BehLocPatch:NameMeleagris_gallopavo                              1.95
## muTransit_BehLocPatch:NameOdocoileus_virginianus                           1.96
## muTransit_BehLocPatch:NameProcyon_lotor                                    1.55
## muTransit_BehLocPatch:NameSciurus_carolinensis                             2.08
## muTransit_BehLocPatch:NameSylvilagus_floridanus                            2.02
## muTransit_Avg_Cogongrass_Cover:NameDasypus_novemcinctus                    0.12
## muTransit_Avg_Cogongrass_Cover:NameDidelphis_virginiana                    1.97
## muTransit_Avg_Cogongrass_Cover:NameLynx_rufus                              2.32
## muTransit_Avg_Cogongrass_Cover:NameMeleagris_gallopavo                     0.14
## muTransit_Avg_Cogongrass_Cover:NameOdocoileus_virginianus                  0.06
## muTransit_Avg_Cogongrass_Cover:NameProcyon_lotor                           0.07
## muTransit_Avg_Cogongrass_Cover:NameSciurus_carolinensis                    0.07
## muTransit_Avg_Cogongrass_Cover:NameSylvilagus_floridanus                   1.41
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameDasypus_novemcinctus        1.42
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameDidelphis_virginiana        2.10
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameLynx_rufus                  2.04
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameMeleagris_gallopavo         2.12
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameOdocoileus_virginianus     -0.15
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameProcyon_lotor               1.71
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameSciurus_carolinensis        2.08
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameSylvilagus_floridanus       2.12
##                                                                        Rhat
## muForaging_Intercept                                                   1.00
## muTransit_Intercept                                                    1.00
## muForaging_BehLocPatch                                                 1.00
## muForaging_Avg_Cogongrass_Cover                                        1.00
## muForaging_NameDasypus_novemcinctus                                    1.00
## muForaging_NameDidelphis_virginiana                                    1.00
## muForaging_NameLynx_rufus                                              1.00
## muForaging_NameMeleagris_gallopavo                                     1.00
## muForaging_NameOdocoileus_virginianus                                  1.00
## muForaging_NameProcyon_lotor                                           1.00
## muForaging_NameSciurus_carolinensis                                    1.00
## muForaging_NameSylvilagus_floridanus                                   1.00
## muForaging_BehLocPatch:Avg_Cogongrass_Cover                            1.00
## muForaging_BehLocPatch:NameDasypus_novemcinctus                        1.00
## muForaging_BehLocPatch:NameDidelphis_virginiana                        1.00
## muForaging_BehLocPatch:NameLynx_rufus                                  1.00
## muForaging_BehLocPatch:NameMeleagris_gallopavo                         1.00
## muForaging_BehLocPatch:NameOdocoileus_virginianus                      1.00
## muForaging_BehLocPatch:NameProcyon_lotor                               1.00
## muForaging_BehLocPatch:NameSciurus_carolinensis                        1.00
## muForaging_BehLocPatch:NameSylvilagus_floridanus                       1.00
## muForaging_Avg_Cogongrass_Cover:NameDasypus_novemcinctus               1.00
## muForaging_Avg_Cogongrass_Cover:NameDidelphis_virginiana               1.00
## muForaging_Avg_Cogongrass_Cover:NameLynx_rufus                         1.00
## muForaging_Avg_Cogongrass_Cover:NameMeleagris_gallopavo                1.00
## muForaging_Avg_Cogongrass_Cover:NameOdocoileus_virginianus             1.00
## muForaging_Avg_Cogongrass_Cover:NameProcyon_lotor                      1.00
## muForaging_Avg_Cogongrass_Cover:NameSciurus_carolinensis               1.00
## muForaging_Avg_Cogongrass_Cover:NameSylvilagus_floridanus              1.00
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameDasypus_novemcinctus   1.00
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameDidelphis_virginiana   1.00
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameLynx_rufus             1.00
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameMeleagris_gallopavo    1.00
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameOdocoileus_virginianus 1.00
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameProcyon_lotor          1.00
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameSciurus_carolinensis   1.00
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameSylvilagus_floridanus  1.00
## muTransit_BehLocPatch                                                  1.00
## muTransit_Avg_Cogongrass_Cover                                         1.00
## muTransit_NameDasypus_novemcinctus                                     1.00
## muTransit_NameDidelphis_virginiana                                     1.00
## muTransit_NameLynx_rufus                                               1.00
## muTransit_NameMeleagris_gallopavo                                      1.00
## muTransit_NameOdocoileus_virginianus                                   1.00
## muTransit_NameProcyon_lotor                                            1.00
## muTransit_NameSciurus_carolinensis                                     1.00
## muTransit_NameSylvilagus_floridanus                                    1.00
## muTransit_BehLocPatch:Avg_Cogongrass_Cover                             1.00
## muTransit_BehLocPatch:NameDasypus_novemcinctus                         1.00
## muTransit_BehLocPatch:NameDidelphis_virginiana                         1.00
## muTransit_BehLocPatch:NameLynx_rufus                                   1.00
## muTransit_BehLocPatch:NameMeleagris_gallopavo                          1.00
## muTransit_BehLocPatch:NameOdocoileus_virginianus                       1.00
## muTransit_BehLocPatch:NameProcyon_lotor                                1.00
## muTransit_BehLocPatch:NameSciurus_carolinensis                         1.00
## muTransit_BehLocPatch:NameSylvilagus_floridanus                        1.00
## muTransit_Avg_Cogongrass_Cover:NameDasypus_novemcinctus                1.00
## muTransit_Avg_Cogongrass_Cover:NameDidelphis_virginiana                1.00
## muTransit_Avg_Cogongrass_Cover:NameLynx_rufus                          1.00
## muTransit_Avg_Cogongrass_Cover:NameMeleagris_gallopavo                 1.00
## muTransit_Avg_Cogongrass_Cover:NameOdocoileus_virginianus              1.00
## muTransit_Avg_Cogongrass_Cover:NameProcyon_lotor                       1.00
## muTransit_Avg_Cogongrass_Cover:NameSciurus_carolinensis                1.00
## muTransit_Avg_Cogongrass_Cover:NameSylvilagus_floridanus               1.00
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameDasypus_novemcinctus    1.00
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameDidelphis_virginiana    1.00
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameLynx_rufus              1.00
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameMeleagris_gallopavo     1.00
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameOdocoileus_virginianus  1.00
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameProcyon_lotor           1.00
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameSciurus_carolinensis    1.00
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameSylvilagus_floridanus   1.00
##                                                                        Bulk_ESS
## muForaging_Intercept                                                       8169
## muTransit_Intercept                                                        6522
## muForaging_BehLocPatch                                                    11137
## muForaging_Avg_Cogongrass_Cover                                            2572
## muForaging_NameDasypus_novemcinctus                                       10867
## muForaging_NameDidelphis_virginiana                                       13071
## muForaging_NameLynx_rufus                                                 17948
## muForaging_NameMeleagris_gallopavo                                        16035
## muForaging_NameOdocoileus_virginianus                                      9961
## muForaging_NameProcyon_lotor                                              10841
## muForaging_NameSciurus_carolinensis                                       13207
## muForaging_NameSylvilagus_floridanus                                      11799
## muForaging_BehLocPatch:Avg_Cogongrass_Cover                                8493
## muForaging_BehLocPatch:NameDasypus_novemcinctus                           14422
## muForaging_BehLocPatch:NameDidelphis_virginiana                           17169
## muForaging_BehLocPatch:NameLynx_rufus                                     19664
## muForaging_BehLocPatch:NameMeleagris_gallopavo                            16383
## muForaging_BehLocPatch:NameOdocoileus_virginianus                         11122
## muForaging_BehLocPatch:NameProcyon_lotor                                  18153
## muForaging_BehLocPatch:NameSciurus_carolinensis                           17622
## muForaging_BehLocPatch:NameSylvilagus_floridanus                          17482
## muForaging_Avg_Cogongrass_Cover:NameDasypus_novemcinctus                   2589
## muForaging_Avg_Cogongrass_Cover:NameDidelphis_virginiana                   8909
## muForaging_Avg_Cogongrass_Cover:NameLynx_rufus                            10584
## muForaging_Avg_Cogongrass_Cover:NameMeleagris_gallopavo                    2756
## muForaging_Avg_Cogongrass_Cover:NameOdocoileus_virginianus                 2571
## muForaging_Avg_Cogongrass_Cover:NameProcyon_lotor                          2582
## muForaging_Avg_Cogongrass_Cover:NameSciurus_carolinensis                   2578
## muForaging_Avg_Cogongrass_Cover:NameSylvilagus_floridanus                  5157
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameDasypus_novemcinctus      13138
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameDidelphis_virginiana      16630
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameLynx_rufus                17410
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameMeleagris_gallopavo       13547
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameOdocoileus_virginianus     8463
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameProcyon_lotor             13840
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameSciurus_carolinensis      18698
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameSylvilagus_floridanus     15890
## muTransit_BehLocPatch                                                      9684
## muTransit_Avg_Cogongrass_Cover                                             4665
## muTransit_NameDasypus_novemcinctus                                         8608
## muTransit_NameDidelphis_virginiana                                        12350
## muTransit_NameLynx_rufus                                                  17572
## muTransit_NameMeleagris_gallopavo                                         17071
## muTransit_NameOdocoileus_virginianus                                       7280
## muTransit_NameProcyon_lotor                                                8540
## muTransit_NameSciurus_carolinensis                                        11197
## muTransit_NameSylvilagus_floridanus                                       10332
## muTransit_BehLocPatch:Avg_Cogongrass_Cover                                 6890
## muTransit_BehLocPatch:NameDasypus_novemcinctus                            12140
## muTransit_BehLocPatch:NameDidelphis_virginiana                            14464
## muTransit_BehLocPatch:NameLynx_rufus                                      16737
## muTransit_BehLocPatch:NameMeleagris_gallopavo                             15406
## muTransit_BehLocPatch:NameOdocoileus_virginianus                           9465
## muTransit_BehLocPatch:NameProcyon_lotor                                   13826
## muTransit_BehLocPatch:NameSciurus_carolinensis                            16899
## muTransit_BehLocPatch:NameSylvilagus_floridanus                           17378
## muTransit_Avg_Cogongrass_Cover:NameDasypus_novemcinctus                    5546
## muTransit_Avg_Cogongrass_Cover:NameDidelphis_virginiana                    7172
## muTransit_Avg_Cogongrass_Cover:NameLynx_rufus                              7396
## muTransit_Avg_Cogongrass_Cover:NameMeleagris_gallopavo                    10513
## muTransit_Avg_Cogongrass_Cover:NameOdocoileus_virginianus                  4670
## muTransit_Avg_Cogongrass_Cover:NameProcyon_lotor                           5058
## muTransit_Avg_Cogongrass_Cover:NameSciurus_carolinensis                    5790
## muTransit_Avg_Cogongrass_Cover:NameSylvilagus_floridanus                   7823
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameDasypus_novemcinctus        8438
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameDidelphis_virginiana       13976
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameLynx_rufus                 13070
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameMeleagris_gallopavo         8572
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameOdocoileus_virginianus      6905
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameProcyon_lotor               9123
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameSciurus_carolinensis       18523
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameSylvilagus_floridanus      16015
##                                                                        Tail_ESS
## muForaging_Intercept                                                       6243
## muTransit_Intercept                                                        5304
## muForaging_BehLocPatch                                                     6201
## muForaging_Avg_Cogongrass_Cover                                            2337
## muForaging_NameDasypus_novemcinctus                                        6114
## muForaging_NameDidelphis_virginiana                                        6592
## muForaging_NameLynx_rufus                                                  5670
## muForaging_NameMeleagris_gallopavo                                         5330
## muForaging_NameOdocoileus_virginianus                                      6712
## muForaging_NameProcyon_lotor                                               6742
## muForaging_NameSciurus_carolinensis                                        6541
## muForaging_NameSylvilagus_floridanus                                       6073
## muForaging_BehLocPatch:Avg_Cogongrass_Cover                                5896
## muForaging_BehLocPatch:NameDasypus_novemcinctus                            6076
## muForaging_BehLocPatch:NameDidelphis_virginiana                            5743
## muForaging_BehLocPatch:NameLynx_rufus                                      4944
## muForaging_BehLocPatch:NameMeleagris_gallopavo                             5688
## muForaging_BehLocPatch:NameOdocoileus_virginianus                          5788
## muForaging_BehLocPatch:NameProcyon_lotor                                   5624
## muForaging_BehLocPatch:NameSciurus_carolinensis                            5732
## muForaging_BehLocPatch:NameSylvilagus_floridanus                           6210
## muForaging_Avg_Cogongrass_Cover:NameDasypus_novemcinctus                   2440
## muForaging_Avg_Cogongrass_Cover:NameDidelphis_virginiana                   6395
## muForaging_Avg_Cogongrass_Cover:NameLynx_rufus                             6411
## muForaging_Avg_Cogongrass_Cover:NameMeleagris_gallopavo                    2478
## muForaging_Avg_Cogongrass_Cover:NameOdocoileus_virginianus                 2312
## muForaging_Avg_Cogongrass_Cover:NameProcyon_lotor                          2408
## muForaging_Avg_Cogongrass_Cover:NameSciurus_carolinensis                   2275
## muForaging_Avg_Cogongrass_Cover:NameSylvilagus_floridanus                  4372
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameDasypus_novemcinctus       6271
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameDidelphis_virginiana       5826
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameLynx_rufus                 6163
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameMeleagris_gallopavo        6265
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameOdocoileus_virginianus     5918
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameProcyon_lotor              6385
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameSciurus_carolinensis       5322
## muForaging_BehLocPatch:Avg_Cogongrass_Cover:NameSylvilagus_floridanus      5499
## muTransit_BehLocPatch                                                      6139
## muTransit_Avg_Cogongrass_Cover                                             5074
## muTransit_NameDasypus_novemcinctus                                         6378
## muTransit_NameDidelphis_virginiana                                         6016
## muTransit_NameLynx_rufus                                                   5494
## muTransit_NameMeleagris_gallopavo                                          6117
## muTransit_NameOdocoileus_virginianus                                       6337
## muTransit_NameProcyon_lotor                                                7034
## muTransit_NameSciurus_carolinensis                                         6875
## muTransit_NameSylvilagus_floridanus                                        6411
## muTransit_BehLocPatch:Avg_Cogongrass_Cover                                 5870
## muTransit_BehLocPatch:NameDasypus_novemcinctus                             6319
## muTransit_BehLocPatch:NameDidelphis_virginiana                             5347
## muTransit_BehLocPatch:NameLynx_rufus                                       5291
## muTransit_BehLocPatch:NameMeleagris_gallopavo                              5583
## muTransit_BehLocPatch:NameOdocoileus_virginianus                           6436
## muTransit_BehLocPatch:NameProcyon_lotor                                    6207
## muTransit_BehLocPatch:NameSciurus_carolinensis                             5309
## muTransit_BehLocPatch:NameSylvilagus_floridanus                            6147
## muTransit_Avg_Cogongrass_Cover:NameDasypus_novemcinctus                    5540
## muTransit_Avg_Cogongrass_Cover:NameDidelphis_virginiana                    5966
## muTransit_Avg_Cogongrass_Cover:NameLynx_rufus                              6194
## muTransit_Avg_Cogongrass_Cover:NameMeleagris_gallopavo                     5976
## muTransit_Avg_Cogongrass_Cover:NameOdocoileus_virginianus                  4895
## muTransit_Avg_Cogongrass_Cover:NameProcyon_lotor                           5189
## muTransit_Avg_Cogongrass_Cover:NameSciurus_carolinensis                    5708
## muTransit_Avg_Cogongrass_Cover:NameSylvilagus_floridanus                   5016
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameDasypus_novemcinctus        6591
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameDidelphis_virginiana        6434
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameLynx_rufus                  6109
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameMeleagris_gallopavo         6359
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameOdocoileus_virginianus      5985
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameProcyon_lotor               6638
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameSciurus_carolinensis        5851
## muTransit_BehLocPatch:Avg_Cogongrass_Cover:NameSylvilagus_floridanus       5940
## 
## Draws were sampled using sampling(NUTS). For each parameter, Bulk_ESS
## and Tail_ESS are effective sample size measures, and Rhat is the potential
## scale reduction factor on split chains (at convergence, Rhat = 1).
loo(model_status);     loo(model_loc)
## Warning: Found 13 observations with a pareto_k > 0.7 in model 'model_status'.
## We recommend to set 'moment_match = TRUE' in order to perform moment matching
## for problematic observations.
## 
## Computed from 8000 by 2815 log-likelihood matrix.
## 
##          Estimate   SE
## elpd_loo  -2547.6 32.0
## p_loo        55.3  5.3
## looic      5095.2 64.0
## ------
## MCSE of elpd_loo is NA.
## MCSE and ESS estimates assume MCMC draws (r_eff in [0.5, 1.9]).
## 
## Pareto k diagnostic values:
##                          Count Pct.    Min. ESS
## (-Inf, 0.7]   (good)     2802  99.5%   447     
##    (0.7, 1]   (bad)        11   0.4%   <NA>    
##    (1, Inf)   (very bad)    2   0.1%   <NA>    
## See help('pareto-k-diagnostic') for details.
## Warning: Found 28 observations with a pareto_k > 0.7 in model 'model_loc'. We
## recommend to set 'moment_match = TRUE' in order to perform moment matching for
## problematic observations.
## 
## Computed from 8000 by 1300 log-likelihood matrix.
## 
##          Estimate   SE
## elpd_loo  -1013.3 25.8
## p_loo        57.4  5.0
## looic      2026.7 51.6
## ------
## MCSE of elpd_loo is NA.
## MCSE and ESS estimates assume MCMC draws (r_eff in [0.6, 1.7]).
## 
## Pareto k diagnostic values:
##                          Count Pct.    Min. ESS
## (-Inf, 0.7]   (good)     1272  97.8%   431     
##    (0.7, 1]   (bad)         5   0.4%   <NA>    
##    (1, Inf)   (very bad)   23   1.8%   <NA>    
## See help('pareto-k-diagnostic') for details.

2. Shared helpers

# Probability of direction
pd_fn <- function(x) max(mean(x > 0), mean(x < 0))

# Display labels
common_names <- c(
  "Canis_latrans"          = "Coyote",
  "Odocoileus_virginianus" = "White-Tailed Deer",
  "Dasypus_novemcinctus"   = "Nine-Banded Armadillo",
  "Procyon_lotor"          = "Raccoon",
  "Lynx_rufus"             = "Bobcat",
  "Didelphis_virginiana"   = "Virginia Opossum",
  "Sylvilagus_floridanus"  = "Eastern Cottontail Rabbit",
  "Meleagris_gallopavo"    = "Wild Turkey",
  "Sciurus_carolinensis"   = "Gray Squirrel"
)

behavior_colors <- c("Local Search" = "#0072B2",
                     "Foraging"     = "#009E73",
                     "Transit"      = "#D55E00")
location_colors <- c("Non-Patch"    = "#0072B2",
                     "Patch"        = "#D55E00")

# Format + save an EFFECT table (median_pp / lower / upper / pd  ->  docx)
# Column order: <identifier(s)> | Median (pp) | pd | Lower 95% CrI | Upper 95% CrI
# All numeric values rounded to 2 decimals.
save_effect_docx <- function(df, file_name, caption_text) {
  if (".category" %in% names(df)) {
    df <- df %>%
      mutate(Behavior = factor(.category,
               levels = c("Local_Search", "Foraging", "Transit"),
               labels = c("Local Search", "Foraging", "Transit"))) %>%
      dplyr::select(-.category)
  }
  if ("Name" %in% names(df)) {
    df <- df %>%
      mutate(Species = recode(as.character(Name), !!!common_names)) %>%
      dplyr::select(-Name)
  }

  # bold flag uses the UNROUNDED pd so 0.949 is not promoted to 0.95
  bold_flag <- df$pd >= 0.95

  out <- df %>%
    mutate(`Median (pp)`   = round(median_pp, 2),
           pd              = round(pd, 2),
           `Lower 95% CrI` = round(lower, 2),
           `Upper 95% CrI` = round(upper, 2)) %>%
    dplyr::select(any_of(c("Species", "BehLoc", "Behavior")),
                  `Median (pp)`, pd, `Lower 95% CrI`, `Upper 95% CrI`)

  ft <- flextable(out) %>%
    set_caption(caption_text) %>%
    bold(i = which(bold_flag), bold = TRUE) %>%   # bold credible rows
    autofit()
  save_as_docx(ft, path = file_name)
  list(table = out, flextable = ft)
}

3. Parameter tables (APPENDIX — conditional on reference species/behavior)

# (A1) Probability-of-direction tables for raw coefficients
# Column order: Parameter | Mean | pd | Lower 95% CrI | Upper 95% CrI
# All numeric values rounded to 2 decimals.
make_pd_table <- function(model, file_name, caption_text) {
  draws <- as_draws_df(model)
  beta  <- draws[, grep("^b_", colnames(draws)), drop = FALSE]

  # Keep full-precision values in the returned table (used by the join below);
  # rounding is applied only to the displayed flextable.
  tab <- tibble::tibble(
    parameter = gsub("^b_", "", colnames(beta)),
    mean      = colMeans(beta),
    pd        = apply(beta, 2, pd_fn),
    lower     = apply(beta, 2, quantile, probs = 0.025),
    upper     = apply(beta, 2, quantile, probs = 0.975)
  ) %>%
    mutate(pd_95 = pd >= 0.95)

  disp <- tab %>%
    transmute(Parameter       = parameter,
              Mean            = round(mean, 2),
              pd              = round(pd, 2),
              `Lower 95% CrI` = round(lower, 2),
              `Upper 95% CrI` = round(upper, 2))

  ft <- flextable(disp) %>%
    set_caption(caption_text) %>%
    bold(i = which(tab$pd_95), bold = TRUE) %>%
    autofit()
  save_as_docx(ft, path = file_name)
  list(table = tab, flextable = ft)
}

pd_status <- make_pd_table(model_status, "PD_Table_Status_Model.docx",
                           "Probability of Direction - Status Model")
## Warning: Dropping 'draws_df' class as required metadata was removed.
pd_loc    <- make_pd_table(model_loc,    "PD_Table_Location_Model.docx",
                           "Probability of Direction - Location Model")
## Warning: Dropping 'draws_df' class as required metadata was removed.
# (A2) Coefficient estimates + 95% CrI, merged with pd  (reads pd from above)
# Column order: Parameter | Mean | pd | Lower 95% CrI | Upper 95% CrI
# All numeric values rounded to 2 decimals.
make_pub_table_with_ci <- function(model, pd_table, file_name, caption_text) {
  ci_df <- as.data.frame(summary(model)$fixed) %>%
    tibble::rownames_to_column("parameter") %>%
    dplyr::select(parameter, Estimate, `l-95% CI`, `u-95% CI`) %>%
    rename(mean = Estimate, l_95 = `l-95% CI`, u_95 = `u-95% CI`)

  df_pub <- pd_table %>%
    dplyr::select(parameter, pd) %>%
    left_join(ci_df, by = "parameter") %>%
    mutate(bold_flag       = pd >= 0.95,           # flag on UNROUNDED pd
           Mean            = round(mean, 2),
           pd              = round(pd, 2),
           `Lower 95% CrI` = round(l_95, 2),
           `Upper 95% CrI` = round(u_95, 2)) %>%
    dplyr::select(Parameter = parameter, Mean, pd,
                  `Lower 95% CrI`, `Upper 95% CrI`, bold_flag)

  ft <- flextable(df_pub %>% dplyr::select(-bold_flag)) %>%
    set_caption(caption_text) %>%
    bold(i = which(df_pub$bold_flag), j = 1:5, bold = TRUE) %>%
    autofit()
  save_as_docx(ft, path = file_name)
  ft
}

ft_status <- make_pub_table_with_ci(model_status, pd_status$table,
              "Status_Model_Parameters_CI.docx",
              "Status Model Parameter Estimates with 95% Credible Intervals")
ft_loc    <- make_pub_table_with_ci(model_loc, pd_loc$table,
              "Location_Model_Parameters_CI.docx",
              "Location Model Parameter Estimates with 95% Credible Intervals")

4. Effect tables (CITE THESE — marginal, probability scale)

cover_lo <- min(dat$Avg_Cogongrass_Cover, na.rm = TRUE)
cover_hi <- max(dat$Avg_Cogongrass_Cover, na.rm = TRUE)

newdata_effect <- expand_grid(
  cover_level = c("low", "high"),
  Name        = unique(dat$Name)
) %>%
  mutate(Avg_Cogongrass_Cover = ifelse(cover_level == "low", cover_lo, cover_hi),
         Site = NA, Camera.Type = NA, Month = NA)

eff_draws <- add_epred_draws(newdata_effect, model_status, re_formula = NA) %>%
  ungroup()

# Community-level (equal-weight average over species)
community_effect <- eff_draws %>%
  group_by(.draw, .category, cover_level) %>%
  summarise(.epred = mean(.epred), .groups = "drop") %>%
  pivot_wider(names_from = cover_level, values_from = .epred) %>%
  mutate(delta = high - low) %>%
  group_by(.category) %>%
  summarise(median_pp = median(delta) * 100,
            lower = quantile(delta, .025) * 100,
            upper = quantile(delta, .975) * 100,
            pd    = pd_fn(delta), .groups = "drop")

# Per species
species_effect <- eff_draws %>%
  pivot_wider(id_cols = c(.draw, .category, Name),
              names_from = cover_level, values_from = .epred) %>%
  mutate(delta = high - low) %>%
  group_by(Name, .category) %>%
  summarise(median_pp = median(delta) * 100,
            lower = quantile(delta, .025) * 100,
            upper = quantile(delta, .975) * 100,
            pd    = pd_fn(delta), .groups = "drop")

save_effect_docx(community_effect, "Effect_Community_Status.docx",
  "Community-level change in behavior probability across the cover gradient (Obj. 2a)")
## $table
## # A tibble: 3 × 5
##   Behavior     `Median (pp)`    pd `Lower 95% CrI` `Upper 95% CrI`
##   <fct>                <dbl> <dbl>           <dbl>           <dbl>
## 1 Local Search         -4.7   0.78           -14.5            8.14
## 2 Foraging              1.26  0.57           -14.3           14.0 
## 3 Transit               2.81  0.64           -11.2           19.6 
## 
## $flextable
## a flextable object.
## col_keys: `Behavior`, `Median (pp)`, `pd`, `Lower 95% CrI`, `Upper 95% CrI` 
## header has 1 row(s) 
## body has 3 row(s) 
## original dataset sample: 
## 'data.frame':    3 obs. of  5 variables:
##  $ Behavior     : Factor w/ 3 levels "Local Search",..: 1 2 3
##  $ Median (pp)  : num  -4.7 1.26 2.81
##  $ pd           : num  0.78 0.57 0.64
##  $ Lower 95% CrI: num  -14.5 -14.3 -11.2
##  $ Upper 95% CrI: num  8.14 13.97 19.63
save_effect_docx(species_effect,   "Effect_Species_Status.docx",
  "Species-specific change in behavior probability across the cover gradient (Obj. 2a)")
## $table
## # A tibble: 27 × 6
##    Species          Behavior `Median (pp)`    pd `Lower 95% CrI` `Upper 95% CrI`
##    <chr>            <fct>            <dbl> <dbl>           <dbl>           <dbl>
##  1 Coyote           Local S…          3.25  0.58          -19.4            50.7 
##  2 Coyote           Foraging        -10.6   0.99          -26.1            -2.88
##  3 Coyote           Transit           7.35  0.64          -40.1            35.2 
##  4 Nine-Banded Arm… Local S…         -4.59  0.85          -13.2             6.69
##  5 Nine-Banded Arm… Foraging        -22.8   0.99          -44.1            -4.12
##  6 Nine-Banded Arm… Transit          27.3   0.99            5.87           49.2 
##  7 Virginia Opossum Local S…        -15.6   1             -37.7            -4.48
##  8 Virginia Opossum Foraging        -26.9   1             -62.7            -6.79
##  9 Virginia Opossum Transit          45.5   1              17.0            77.2 
## 10 Bobcat           Local S…         -6.67  1             -24.1            -1.16
## # ℹ 17 more rows
## 
## $flextable
## a flextable object.
## col_keys: `Species`, `Behavior`, `Median (pp)`, `pd`, `Lower 95% CrI`, `Upper 95% CrI` 
## header has 1 row(s) 
## body has 27 row(s) 
## original dataset sample: 
## 'data.frame':    27 obs. of  6 variables:
##  $ Species      : chr  "Coyote" "Coyote" "Coyote" "Nine-Banded Armadillo" ...
##  $ Behavior     : Factor w/ 3 levels "Local Search",..: 1 2 3 1 2 3 1 2 3 1 ...
##  $ Median (pp)  : num  3.25 -10.62 7.35 -4.59 -22.77 ...
##  $ pd           : num  0.58 0.99 0.64 0.85 0.99 0.99 1 1 1 1 ...
##  $ Lower 95% CrI: num  -19.4 -26.1 -40.1 -13.2 -44.1 ...
##  $ Upper 95% CrI: num  50.66 -2.88 35.25 6.69 -4.12 ...
cover_lo_i <- min(dat_inv$Avg_Cogongrass_Cover, na.rm = TRUE)
cover_hi_i <- max(dat_inv$Avg_Cogongrass_Cover, na.rm = TRUE)

newdata_loc_eff <- expand_grid(
  BehLoc      = c("Non_Patch", "Patch"),
  cover_level = c("low", "high"),
  Name        = unique(dat_inv$Name)
) %>%
  mutate(Avg_Cogongrass_Cover = ifelse(cover_level == "low", cover_lo_i, cover_hi_i),
         Site = NA, Camera.Type = NA, Month = NA)

loc_eff_draws <- add_epred_draws(newdata_loc_eff, model_loc, re_formula = NA) %>%
  ungroup()

# --- Community (averaged over species) ---
loc_draws <- loc_eff_draws %>%
  group_by(.draw, .category, BehLoc, cover_level) %>%
  summarise(.epred = mean(.epred), .groups = "drop") %>%
  pivot_wider(names_from = cover_level, values_from = .epred) %>%
  mutate(cover_effect = high - low)

# (a) cover effect within each location
loc_effect <- loc_draws %>%
  group_by(.category, BehLoc) %>%
  summarise(median_pp = median(cover_effect) * 100,
            lower = quantile(cover_effect, .025) * 100,
            upper = quantile(cover_effect, .975) * 100,
            pd    = pd_fn(cover_effect), .groups = "drop")

# (b) Patch - Non_Patch  <- headline 2b result
loc_diff <- loc_draws %>%
  dplyr::select(.draw, .category, BehLoc, cover_effect) %>%
  pivot_wider(names_from = BehLoc, values_from = cover_effect) %>%
  mutate(diff = Patch - Non_Patch) %>%
  group_by(.category) %>%
  summarise(median_pp = median(diff) * 100,
            lower = quantile(diff, .025) * 100,
            upper = quantile(diff, .975) * 100,
            pd    = pd_fn(diff), .groups = "drop")

# --- Per species ---
loc_draws_sp <- loc_eff_draws %>%
  pivot_wider(id_cols = c(.draw, .category, Name, BehLoc),
              names_from = cover_level, values_from = .epred) %>%
  mutate(cover_effect = high - low)

loc_effect_sp <- loc_draws_sp %>%
  group_by(Name, .category, BehLoc) %>%
  summarise(median_pp = median(cover_effect) * 100,
            lower = quantile(cover_effect, .025) * 100,
            upper = quantile(cover_effect, .975) * 100,
            pd    = pd_fn(cover_effect), .groups = "drop")

loc_diff_sp <- loc_draws_sp %>%
  dplyr::select(.draw, .category, Name, BehLoc, cover_effect) %>%
  pivot_wider(names_from = BehLoc, values_from = cover_effect) %>%
  mutate(diff = Patch - Non_Patch) %>%
  group_by(Name, .category) %>%
  summarise(median_pp = median(diff) * 100,
            lower = quantile(diff, .025) * 100,
            upper = quantile(diff, .975) * 100,
            pd    = pd_fn(diff), .groups = "drop")


# --- Community-level Patch − Non_Patch LEVEL difference -------------------
# Averaged over species and over the two cover levels (a representative cover).
loc_level_draws <- loc_eff_draws %>%
  group_by(.draw, .category, BehLoc) %>%
  summarise(.epred = mean(.epred), .groups = "drop") %>%   # avg over Name & cover_level
  pivot_wider(names_from = BehLoc, values_from = .epred) %>%
  mutate(level_diff = Patch - Non_Patch)

loc_level <- loc_level_draws %>%
  group_by(.category) %>%
  summarise(median_pp = median(level_diff) * 100,
            lower = quantile(level_diff, .025) * 100,
            upper = quantile(level_diff, .975) * 100,
            pd    = pd_fn(level_diff), .groups = "drop")

# --- Species-specific version --------------------------------------------
loc_level_sp_draws <- loc_eff_draws %>%
  group_by(.draw, .category, Name, BehLoc) %>%
  summarise(.epred = mean(.epred), .groups = "drop") %>%   # avg over cover_level
  pivot_wider(names_from = BehLoc, values_from = .epred) %>%
  mutate(level_diff = Patch - Non_Patch)

loc_level_sp <- loc_level_sp_draws %>%
  group_by(Name, .category) %>%
  summarise(median_pp = median(level_diff) * 100,
            lower = quantile(level_diff, .025) * 100,
            upper = quantile(level_diff, .975) * 100,
            pd    = pd_fn(level_diff), .groups = "drop")

save_effect_docx(loc_effect,    "Effect_Location_byLocation.docx",
  "Cover effect on behavior within each location (Obj. 2b)")
## $table
## # A tibble: 6 × 6
##   BehLoc    Behavior     `Median (pp)`    pd `Lower 95% CrI` `Upper 95% CrI`
##   <chr>     <fct>                <dbl> <dbl>           <dbl>           <dbl>
## 1 Non_Patch Local Search         -5.22  0.7           -24.4            13.8 
## 2 Patch     Local Search         -8.01  0.93          -25.5             5.02
## 3 Non_Patch Foraging             -9.16  0.79          -34.6            10.6 
## 4 Patch     Foraging             -3.1   0.85          -17.7             9.48
## 5 Non_Patch Transit              15.4   0.92           -6.07           35.8 
## 6 Patch     Transit              11.4   0.91           -6.12           35.0 
## 
## $flextable
## a flextable object.
## col_keys: `BehLoc`, `Behavior`, `Median (pp)`, `pd`, `Lower 95% CrI`, `Upper 95% CrI` 
## header has 1 row(s) 
## body has 6 row(s) 
## original dataset sample: 
## 'data.frame':    6 obs. of  6 variables:
##  $ BehLoc       : chr  "Non_Patch" "Patch" "Non_Patch" "Patch" ...
##  $ Behavior     : Factor w/ 3 levels "Local Search",..: 1 1 2 2 3 3
##  $ Median (pp)  : num  -5.22 -8.01 -9.16 -3.1 15.45 ...
##  $ pd           : num  0.7 0.93 0.79 0.85 0.92 0.91
##  $ Lower 95% CrI: num  -24.43 -25.53 -34.61 -17.72 -6.07 ...
##  $ Upper 95% CrI: num  13.81 5.02 10.62 9.48 35.78 ...
save_effect_docx(loc_diff,      "Effect_Location_PatchDiff.docx",
  "Patch minus Non-Patch difference in the cover effect (Obj. 2b headline)")
## $table
## # A tibble: 3 × 5
##   Behavior     `Median (pp)`    pd `Lower 95% CrI` `Upper 95% CrI`
##   <fct>                <dbl> <dbl>           <dbl>           <dbl>
## 1 Local Search         -3.36  0.63           -24.0            16.2
## 2 Foraging              5.83  0.7            -13.3            30.3
## 3 Transit              -2.68  0.59           -25.9            19.0
## 
## $flextable
## a flextable object.
## col_keys: `Behavior`, `Median (pp)`, `pd`, `Lower 95% CrI`, `Upper 95% CrI` 
## header has 1 row(s) 
## body has 3 row(s) 
## original dataset sample: 
## 'data.frame':    3 obs. of  5 variables:
##  $ Behavior     : Factor w/ 3 levels "Local Search",..: 1 2 3
##  $ Median (pp)  : num  -3.36 5.83 -2.68
##  $ pd           : num  0.63 0.7 0.59
##  $ Lower 95% CrI: num  -24 -13.3 -25.9
##  $ Upper 95% CrI: num  16.2 30.3 19
save_effect_docx(loc_effect_sp, "Effect_Location_Species_byLocation.docx",
  "Species-specific cover effect within each location (Obj. 2b)")
## $table
## # A tibble: 54 × 7
##    Species   BehLoc Behavior `Median (pp)`    pd `Lower 95% CrI` `Upper 95% CrI`
##    <chr>     <chr>  <fct>            <dbl> <dbl>           <dbl>           <dbl>
##  1 Coyote    Non_P… Local S…         21.7   0.73          -32.2            71.3 
##  2 Coyote    Patch  Local S…         -9.6   1             -38.8            -1.67
##  3 Coyote    Non_P… Foraging        -29.1   1             -67.4            -6.79
##  4 Coyote    Patch  Foraging         -2.19  1             -21.0            -0.17
##  5 Coyote    Non_P… Transit           9.43  0.61          -45.2            64.9 
##  6 Coyote    Patch  Transit          13.2   1               2.16           50.4 
##  7 Nine-Ban… Non_P… Local S…         -4.75  0.74          -21.8            18.0 
##  8 Nine-Ban… Patch  Local S…         -7.93  0.99          -30.5            -1.06
##  9 Nine-Ban… Non_P… Foraging        -45.8   1             -72.1           -11.5 
## 10 Nine-Ban… Patch  Foraging         -8.36  1             -42.5            -0.72
## # ℹ 44 more rows
## 
## $flextable
## a flextable object.
## col_keys: `Species`, `BehLoc`, `Behavior`, `Median (pp)`, `pd`, `Lower 95% CrI`, `Upper 95% CrI` 
## header has 1 row(s) 
## body has 54 row(s) 
## original dataset sample: 
## 'data.frame':    54 obs. of  7 variables:
##  $ Species      : chr  "Coyote" "Coyote" "Coyote" "Coyote" ...
##  $ BehLoc       : chr  "Non_Patch" "Patch" "Non_Patch" "Patch" ...
##  $ Behavior     : Factor w/ 3 levels "Local Search",..: 1 1 2 2 3 3 1 1 2 2 ...
##  $ Median (pp)  : num  21.74 -9.6 -29.07 -2.19 9.43 ...
##  $ pd           : num  0.73 1 1 1 0.61 1 0.74 0.99 1 1 ...
##  $ Lower 95% CrI: num  -32.2 -38.8 -67.4 -21 -45.2 ...
##  $ Upper 95% CrI: num  71.32 -1.67 -6.79 -0.17 64.91 ...
save_effect_docx(loc_diff_sp,   "Effect_Location_Species_PatchDiff.docx",
  "Species-specific Patch minus Non-Patch difference in the cover effect (Obj. 2b)")
## $table
## # A tibble: 27 × 6
##    Species          Behavior `Median (pp)`    pd `Lower 95% CrI` `Upper 95% CrI`
##    <chr>            <fct>            <dbl> <dbl>           <dbl>           <dbl>
##  1 Coyote           Local S…        -34.0   0.84          -85.4            18.3 
##  2 Coyote           Foraging         25.3   0.99            5.67           57.6 
##  3 Coyote           Transit           6.99  0.58          -47.8            60.3 
##  4 Nine-Banded Arm… Local S…         -3.77  0.68          -34.0            12.6 
##  5 Nine-Banded Arm… Foraging         35     0.95           -8.49           62.4 
##  6 Nine-Banded Arm… Transit         -30.1   0.9           -60.2            21.2 
##  7 Virginia Opossum Local S…         12.1   0.9           -16.8            43.2 
##  8 Virginia Opossum Foraging         29.6   0.98            2.44           71.5 
##  9 Virginia Opossum Transit         -45.9   0.98          -80.4            -2.05
## 10 Bobcat           Local S…          9.04  0.88          -17.3            46.0 
## # ℹ 17 more rows
## 
## $flextable
## a flextable object.
## col_keys: `Species`, `Behavior`, `Median (pp)`, `pd`, `Lower 95% CrI`, `Upper 95% CrI` 
## header has 1 row(s) 
## body has 27 row(s) 
## original dataset sample: 
## 'data.frame':    27 obs. of  6 variables:
##  $ Species      : chr  "Coyote" "Coyote" "Coyote" "Nine-Banded Armadillo" ...
##  $ Behavior     : Factor w/ 3 levels "Local Search",..: 1 2 3 1 2 3 1 2 3 1 ...
##  $ Median (pp)  : num  -33.98 25.28 6.99 -3.77 35 ...
##  $ pd           : num  0.84 0.99 0.58 0.68 0.95 0.9 0.9 0.98 0.98 0.88 ...
##  $ Lower 95% CrI: num  -85.43 5.67 -47.83 -33.97 -8.49 ...
##  $ Upper 95% CrI: num  18.3 57.6 60.3 12.6 62.4 ...
save_effect_docx(loc_level,    "Effect_Location_LevelDiff.docx",
  "Patch minus Non-Patch difference in behavior probability (Obj. 2b, level contrast)")
## $table
## # A tibble: 3 × 5
##   Behavior     `Median (pp)`    pd `Lower 95% CrI` `Upper 95% CrI`
##   <fct>                <dbl> <dbl>           <dbl>           <dbl>
## 1 Local Search         -15.9     1           -27.2           -4.69
## 2 Foraging             -27.2     1           -43.5          -12.7 
## 3 Transit               43.6     1            27.0           57.7 
## 
## $flextable
## a flextable object.
## col_keys: `Behavior`, `Median (pp)`, `pd`, `Lower 95% CrI`, `Upper 95% CrI` 
## header has 1 row(s) 
## body has 3 row(s) 
## original dataset sample: 
## 'data.frame':    3 obs. of  5 variables:
##  $ Behavior     : Factor w/ 3 levels "Local Search",..: 1 2 3
##  $ Median (pp)  : num  -15.9 -27.1 43.6
##  $ pd           : num  1 1 1
##  $ Lower 95% CrI: num  -27.2 -43.5 27
##  $ Upper 95% CrI: num  -4.69 -12.68 57.69
save_effect_docx(loc_level_sp, "Effect_Location_Species_LevelDiff.docx",
  "Species-specific Patch minus Non-Patch difference in behavior probability (Obj. 2b)")
## $table
## # A tibble: 27 × 6
##    Species          Behavior `Median (pp)`    pd `Lower 95% CrI` `Upper 95% CrI`
##    <chr>            <fct>            <dbl> <dbl>           <dbl>           <dbl>
##  1 Coyote           Local S…        -34.7   1             -60.1            -8.41
##  2 Coyote           Foraging        -13     1             -29.9            -3.11
##  3 Coyote           Transit          49.1   1              20.0            76.0 
##  4 Nine-Banded Arm… Local S…         -3.27  0.8           -15.9             6.56
##  5 Nine-Banded Arm… Foraging        -37.2   1             -61.8           -17.4 
##  6 Nine-Banded Arm… Transit          41.0   1              21.6            64.2 
##  7 Virginia Opossum Local S…         -6.46  0.92          -25.0             4.25
##  8 Virginia Opossum Foraging        -15.2   0.99          -37.0            -1.72
##  9 Virginia Opossum Transit          24.2   0.99            4.77           44.3 
## 10 Bobcat           Local S…         -4.51  0.88          -22.8             9.6 
## # ℹ 17 more rows
## 
## $flextable
## a flextable object.
## col_keys: `Species`, `Behavior`, `Median (pp)`, `pd`, `Lower 95% CrI`, `Upper 95% CrI` 
## header has 1 row(s) 
## body has 27 row(s) 
## original dataset sample: 
## 'data.frame':    27 obs. of  6 variables:
##  $ Species      : chr  "Coyote" "Coyote" "Coyote" "Nine-Banded Armadillo" ...
##  $ Behavior     : Factor w/ 3 levels "Local Search",..: 1 2 3 1 2 3 1 2 3 1 ...
##  $ Median (pp)  : num  -34.74 -13 49.13 -3.27 -37.25 ...
##  $ pd           : num  1 1 1 0.8 1 1 0.92 0.99 0.99 0.88 ...
##  $ Lower 95% CrI: num  -60.1 -29.9 20 -15.9 -61.8 ...
##  $ Upper 95% CrI: num  -8.41 -3.11 75.95 6.56 -17.37 ...

5. Figures

cover_seq <- seq(cover_lo, cover_hi, length.out = 100)

behavior_summary <- add_epred_draws(
    expand_grid(Avg_Cogongrass_Cover = cover_seq, Name = unique(dat$Name)) %>%
      mutate(Site = NA, Camera.Type = NA, Month = NA),
    model_status, re_formula = NA, ndraws = 2000) %>%
  ungroup() %>%
  group_by(Avg_Cogongrass_Cover, .draw, .category) %>%
  summarise(.epred = mean(.epred), .groups = "drop") %>%
  group_by(Avg_Cogongrass_Cover, .category) %>%
  median_qi(.epred, .width = 0.95) %>%
  mutate(Behavior = factor(.category,
           levels = c("Local_Search", "Foraging", "Transit"),
           labels = c("Local Search", "Foraging", "Transit")))

plot_proportions <- dat %>%
  group_by(Plot) %>%
  mutate(plot_cover = mean(Avg_Cogongrass_Cover, na.rm = TRUE)) %>%
  group_by(Plot, plot_cover, Behavior) %>%
  summarise(n = n(), .groups = "drop") %>%
  group_by(Plot, plot_cover) %>%
  mutate(site_prob = n / sum(n)) %>%
  ungroup() %>%
  mutate(Behavior = factor(Behavior,
           levels = c("Local_Search", "Foraging", "Transit"),
           labels = c("Local Search", "Foraging", "Transit")))

p_community <- ggplot(behavior_summary,
       aes(Avg_Cogongrass_Cover, .epred, color = Behavior, fill = Behavior)) +
  geom_ribbon(aes(ymin = .lower, ymax = .upper), alpha = 0.2, color = NA) +
  geom_line(linewidth = 0.9) +
  geom_point(data = plot_proportions, inherit.aes = FALSE,
             aes(plot_cover, site_prob, fill = Behavior),
             shape = 21, color = "black", alpha = 0.3, size = 2.2, stroke = 0.6) +
  scale_color_manual(values = behavior_colors, name = "Behavior") +
  scale_fill_manual(values = behavior_colors, name = "Behavior") +
  scale_y_continuous(limits = c(0, 1), labels = label_percent(accuracy = 1)) +
  labs(x = "Cogongrass Cover (%)", y = "Predicted Probability") +
  theme_classic(base_size = 12) + theme(axis.title = element_text(face = "bold"))

print(p_community)

ggsave("Figure_Behavior_by_Cover.png", p_community,
       width = 7, height = 5, dpi = 600, bg = "white")
behavior_summary_sp <- add_epred_draws(
    expand_grid(Avg_Cogongrass_Cover = cover_seq, Name = unique(dat$Name)) %>%
      mutate(Site = NA, Camera.Type = NA, Month = NA),
    model_status, re_formula = NA, ndraws = 2000) %>%
  ungroup() %>%
  group_by(Name, Avg_Cogongrass_Cover, .category) %>%
  median_qi(.epred, .width = 0.95) %>%
  mutate(Behavior = factor(.category,
           levels = c("Local_Search", "Foraging", "Transit"),
           labels = c("Local Search", "Foraging", "Transit")),
         Name = factor(recode(Name, !!!common_names), levels = common_names))

p_species <- ggplot(behavior_summary_sp,
       aes(Avg_Cogongrass_Cover, .epred, color = Behavior, fill = Behavior)) +
  geom_ribbon(aes(ymin = .lower, ymax = .upper), alpha = 0.2, color = NA) +
  geom_line(linewidth = 0.7) +
  facet_wrap(~ Name) +
  scale_color_manual(values = behavior_colors, name = "Behavior") +
  scale_fill_manual(values = behavior_colors, name = "Behavior") +
  scale_y_continuous(limits = c(0, 1), labels = label_percent()) +
  labs(x = "Cogongrass Cover (%)", y = "Behavior Probability") +
  theme_classic()

print(p_species)

ggsave("Figure_Behavior_by_Species.png", p_species,
       width = 8, height = 7, dpi = 600, bg = "white")
cover_seq_inv <- seq(cover_lo_i, cover_hi_i, length.out = 100)

behavior_summary_loc <- add_epred_draws(
    expand_grid(BehLoc = c("Non_Patch", "Patch"),
                Avg_Cogongrass_Cover = cover_seq_inv,
                Name = unique(dat_inv$Name)) %>%
      mutate(Site = NA, Camera.Type = NA, Month = NA),
    model_loc, re_formula = NA, ndraws = 2000) %>%
  ungroup() %>%
  group_by(BehLoc, Avg_Cogongrass_Cover, .draw, .category) %>%
  summarise(.epred = mean(.epred), .groups = "drop") %>%
  group_by(BehLoc, Avg_Cogongrass_Cover, .category) %>%
  median_qi(.epred, .width = 0.95) %>%
  mutate(Behavior = factor(.category,
           levels = c("Local_Search", "Foraging", "Transit"),
           labels = c("Local Search", "Foraging", "Transit")),
         BehLoc = factor(BehLoc, levels = c("Non_Patch", "Patch"),
                         labels = c("Non-Patch", "Patch")))

# FIX: plot_proportions_loc now carries plot_cover (used on the x axis)
plot_proportions_loc <- dat_inv %>%
  group_by(Plot) %>%
  mutate(plot_cover = mean(Avg_Cogongrass_Cover, na.rm = TRUE)) %>%
  group_by(Plot, plot_cover, BehLoc, Behavior) %>%
  summarise(n = n(), .groups = "drop") %>%
  group_by(Plot, plot_cover, BehLoc) %>%
  mutate(site_prob = n / sum(n)) %>%
  ungroup() %>%
  mutate(BehLoc = factor(BehLoc, levels = c("Non_Patch", "Patch"),
                         labels = c("Non-Patch", "Patch")),
         Behavior = factor(Behavior,
           levels = c("Local_Search", "Foraging", "Transit"),
           labels = c("Local Search", "Foraging", "Transit")))

p_loc <- ggplot(behavior_summary_loc,
       aes(Avg_Cogongrass_Cover, .epred, color = BehLoc, fill = BehLoc)) +
  geom_ribbon(aes(ymin = .lower, ymax = .upper), alpha = 0.2, color = NA) +
  geom_line(linewidth = 0.9) +
  geom_point(data = plot_proportions_loc, inherit.aes = FALSE,
             aes(plot_cover, site_prob, fill = BehLoc),
             shape = 21, color = "black", alpha = 0.3, size = 2.2, stroke = 0.6) +
  facet_wrap(~ Behavior) +
  scale_color_manual(values = location_colors, name = "Location") +
  scale_fill_manual(values = location_colors, name = "Location") +
  scale_y_continuous(limits = c(0, 1), labels = label_percent(accuracy = 1)) +
  labs(x = "Cogongrass Cover (%)", y = "Predicted Probability") +
  theme_classic(base_size = 12) + theme(axis.title = element_text(face = "bold"))

print(p_loc)

ggsave("Figure_Behavior_by_Location.png", p_loc,
       width = 8, height = 4, dpi = 600, bg = "white")
behavior_summary_loc_sp <- add_epred_draws(
    expand_grid(BehLoc = c("Non_Patch", "Patch"),
                Avg_Cogongrass_Cover = cover_seq_inv,
                Name = unique(dat_inv$Name)) %>%
      mutate(Site = NA, Camera.Type = NA, Month = NA),
    model_loc, re_formula = NA, ndraws = 2000) %>%
  ungroup() %>%
  group_by(Name, BehLoc, Avg_Cogongrass_Cover, .category) %>%
  median_qi(.epred, .width = 0.95) %>%
  mutate(Behavior = factor(.category,
           levels = c("Local_Search", "Foraging", "Transit"),
           labels = c("Search", "Foraging", "Transit")),
         BehLoc = factor(BehLoc, levels = c("Non_Patch", "Patch"),
                         labels = c("Non-Patch", "Patch")),
         Name = factor(recode(Name, !!!common_names), levels = common_names))

make_loc_species_plot <- function(df) {
  ggplot(df, aes(Avg_Cogongrass_Cover, .epred, color = BehLoc, fill = BehLoc)) +
    geom_ribbon(aes(ymin = .lower, ymax = .upper), alpha = 0.2, color = NA) +
    geom_line(linewidth = 0.7) +
    facet_grid(Name ~ Behavior) +
    scale_color_manual(values = location_colors, name = "Location") +
    scale_fill_manual(values = location_colors, name = "Location") +
    scale_y_continuous(limits = c(0, 1), labels = label_percent()) +
    labs(x = "Cogongrass Cover (%)", y = "Behavior Probability") +
    theme_classic(base_size = 11)
}

species_levels <- levels(behavior_summary_loc_sp$Name)
p_loc_sp_1 <- make_loc_species_plot(behavior_summary_loc_sp %>%
                filter(Name %in% species_levels[1:5]))
p_loc_sp_2 <- make_loc_species_plot(behavior_summary_loc_sp %>%
                filter(Name %in% species_levels[6:length(species_levels)]))

print(p_loc_sp_1); print(p_loc_sp_2)

ggsave("Figure_Behavior_by_Species_Within_1.png", p_loc_sp_1,
       width = 9, height = 8, dpi = 600, bg = "white")
ggsave("Figure_Behavior_by_Species_Within_2.png", p_loc_sp_2,
       width = 9, height = 7, dpi = 600, bg = "white")

Patch vs. Non-Patch Differences

library(forcats)   # fct_rev; ggdist::stat_halfeye comes via tidybayes

loc_level_draws <- loc_level_draws %>%
  mutate(Behavior = factor(.category,
           levels = c("Local_Search","Foraging","Transit"),
           labels = c("Local Search","Foraging","Transit")),
         level_diff_pp = level_diff * 100)

loc_level <- loc_level %>%
  mutate(Behavior = factor(.category,
           levels = c("Local_Search","Foraging","Transit"),
           labels = c("Local Search","Foraging","Transit")))

p_level <- ggplot(loc_level_draws,
       aes(x = level_diff_pp, y = fct_rev(Behavior), fill = Behavior)) +
  geom_vline(xintercept = 0, linetype = 2, color = "grey40") +
  stat_halfeye(.width = 0.95, point_interval = "median_qi",
               slab_alpha = 0.75, normalize = "xy") +
  geom_text(data = loc_level,
            aes(x = upper, y = fct_rev(Behavior),
                label = sprintf("pd = %.2f", pd)),
            inherit.aes = FALSE, hjust = -0.15, size = 3.3) +
  scale_fill_manual(values = behavior_colors, guide = "none") +
  scale_x_continuous(expand = expansion(mult = c(0.05, 0.18))) +
  labs(x = "Patch − Non-Patch Difference in Predicted Probability",
       y = NULL) +
  theme_classic(base_size = 12) +
  theme(axis.title = element_text(face = "bold"))

print(p_level)

ggsave("Figure_Patch_Level_Contrast.png", p_level,
       width = 7, height = 4.5, dpi = 600, bg = "white")
# OPTIONAL: stacked composite of the two community-level cover figures.
# eval=FALSE by default — set to TRUE if you want this panel.
combined_plot <- (p_community / p_loc) + plot_annotation(tag_levels = "A")
ggsave("Figure_Behavior_Combined.png", combined_plot,
       width = 8, height = 10, dpi = 600, bg = "white")