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)
# Count the total number of quadrats per plot
quadrat_count <- Veg_Cover %>%
group_by(Plot) %>%
summarize(total_quadrats = n_distinct(Quadrat), .groups = "drop")
#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")
# 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)
# 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")
# 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)
# 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
)
avg_cogongrass_cover <- species_matrix %>%
group_by(Plot) %>%
summarize(Avg_Cogongrass_Cover = sum(Imperata_cylindrica, na.rm = TRUE) / n(), .groups = "drop")
# 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
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 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
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.
# (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")
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 ...
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")
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")