This analysis examines southern sea otter (Enhydra lutris nereis) stranding data from Monterey County, California (2019-2024) to compare natural predation (shark bite) versus anthropogenic (human-caused) trauma. The primary research question is: How do strandings attributed to natural predation compare to strandings attributed to direct human-related trauma in Monterey County?
Hypothesis: Shark bite strandings occur more frequently than anthropogenic strandings, reflecting the persistent influence of natural predators relative to episodic human interactions.
# Load required packages
library(tidyverse)
library(readxl)
library(ggplot2)
library(knitr)
library(kableExtra)
library(scales)
library(gt)
# Import the sea otter stranding dataset
sea_otter_data <- read_excel("Downloads/Sea_Otter_Strandings.xlsx")
# Display dataset structure
cat("Dataset contains", nrow(sea_otter_data), "total records with",
ncol(sea_otter_data), "variables.\n")
## Dataset contains 2036 total records with 9 variables.
The following data cleaning procedures were implemented to ensure data quality and consistency:
# Clean and prepare the data
otter_clean <- sea_otter_data %>%
# Standardize county names to uppercase
mutate(COUNTY = toupper(COUNTY)) %>%
# Fix "MISC." to "MISC" in COS CATEGORY
mutate(`COS CATEGORY` = str_replace(`COS CATEGORY`, "MISC\\.", "MISC")) %>%
# Ensure year is numeric
mutate(YEAR = as.numeric(YEAR)) %>%
# Filter for years 2019-2024
filter(YEAR >= 2019 & YEAR <= 2024)
cat("After filtering for 2019-2024:", nrow(otter_clean), "records\n")
## After filtering for 2019-2024: 2036 records
For this analysis, we focus exclusively on strandings in Monterey County, which represents a core area of the southern sea otter’s current range.
# Filter for Monterey County only
monterey_data <- otter_clean %>%
filter(COUNTY == "MONTEREY")
# Calculate key metrics
total_monterey <- nrow(monterey_data)
total_statewide <- nrow(otter_clean)
monterey_percent <- round((total_monterey / total_statewide) * 100, 1)
Key Finding: Monterey County accounted for 764 strandings out of 2036 statewide (37.5% of all California strandings during 2019-2024).
Before examining shark bite and anthropogenic strandings specifically, we first characterize the full distribution of cause of stranding (COS) categories in Monterey County.
# Create summary of all COS categories
cos_summary <- monterey_data %>%
group_by(`COS CATEGORY`) %>%
summarise(
Total_Strandings = n(),
Percent = round((n() / nrow(monterey_data)) * 100, 1)
) %>%
arrange(desc(Total_Strandings))
# Display formatted table
cos_summary %>%
gt() %>%
tab_header(
title = "Table 1: All Cause of Stranding Categories",
subtitle = "Monterey County, California (2019-2024)"
) %>%
cols_label(
`COS CATEGORY` = "Cause of Stranding",
Total_Strandings = "Total Strandings",
Percent = "Percent (%)"
) %>%
tab_style(
style = list(
cell_fill(color = "#E8F4F8"),
cell_text(weight = "bold")
),
locations = cells_body(
rows = `COS CATEGORY` %in% c("SHARK BITE", "ANTHROPOGENIC")
)
) %>%
grand_summary_rows(
columns = Total_Strandings,
fns = list(Total = ~sum(.)),
fmt = ~ fmt_number(., decimals = 0)
)
| Table 1: All Cause of Stranding Categories | |||
| Monterey County, California (2019-2024) | |||
| Cause of Stranding | Total Strandings | Percent (%) | |
|---|---|---|---|
| UNKNOWN | 193 | 25.3 | |
| SHARK BITE | 191 | 25.0 | |
| DEPENDENT ANIMAL | 145 | 19.0 | |
| MISC | 114 | 14.9 | |
| UNKNOWN, NO TRAUMA | 73 | 9.6 | |
| UNKNOWN, WITH TRAUMA | 39 | 5.1 | |
| ANTHROPOGENIC | 8 | 1.0 | |
| UNUSUAL CIRCUMSTANCE | 1 | 0.1 | |
| Total | — | 764 | — |
Notable Pattern: UNKNOWN and SHARK BITE are the two most frequent categories, each accounting for approximately 25% of all strandings. ANTHROPOGENIC represents only 1.0% of strandings.
# Prepare data for Figure 1
fig1_data <- monterey_data %>%
filter(`COS CATEGORY` %in% c("SHARK BITE", "ANTHROPOGENIC")) %>%
group_by(`COS CATEGORY`) %>%
summarise(Total = n())
# Create Figure 1
ggplot(fig1_data, aes(x = `COS CATEGORY`, y = Total, fill = `COS CATEGORY`)) +
geom_bar(stat = "identity", width = 0.6) +
geom_text(aes(label = Total), vjust = -0.5, size = 6, fontface = "bold") +
scale_fill_manual(
values = c("ANTHROPOGENIC" = "#D55E00", "SHARK BITE" = "#0072B2")
) +
labs(
title = "Shark Bite vs Anthropogenic Strandings",
subtitle = "Southern Sea Otters, Monterey County (2019-2024)",
x = "Cause of Stranding",
y = "Total Number of Strandings"
) +
theme_minimal(base_size = 14) +
theme(
plot.title = element_text(face = "bold", size = 18, hjust = 0.5),
plot.subtitle = element_text(size = 13, hjust = 0.5, color = "gray30"),
axis.title = element_text(face = "bold", size = 13),
axis.text.x = element_text(size = 12),
legend.position = "none",
panel.grid.major.x = element_blank(),
panel.grid.minor = element_blank()
) +
scale_y_continuous(
expand = expansion(mult = c(0, 0.1)),
breaks = seq(0, 200, 25)
)
Figure 1. Comparison of total shark bite and anthropogenic strandings in Monterey County, California from 2019-2024. Shark bite strandings (n=191) far exceeded anthropogenic strandings (n=8), representing a ratio of approximately 24:1.
Interpretation: Figure 1 provides stark visual evidence supporting the hypothesis. Shark bite strandings vastly outnumber anthropogenic strandings, indicating that natural predation represents a far more significant source of trauma-related mortality than direct human-caused physical injury in Monterey County during this period.
Examining year-by-year patterns reveals whether the dominance of shark bite mortality is consistent across time or varies annually.
# Create annual comparison
annual_comparison <- monterey_data %>%
filter(`COS CATEGORY` %in% c("SHARK BITE", "ANTHROPOGENIC")) %>%
group_by(YEAR, `COS CATEGORY`) %>%
summarise(Count = n(), .groups = 'drop') %>%
pivot_wider(
names_from = `COS CATEGORY`,
values_from = Count,
values_fill = 0
) %>%
mutate(
Ratio = case_when(
ANTHROPOGENIC == 0 ~ "No anthro cases",
TRUE ~ paste0(round(`SHARK BITE` / ANTHROPOGENIC, 1), ":1")
)
)
# Display annual table
annual_comparison %>%
gt() %>%
tab_header(
title = "Table 3: Annual Breakdown of Strandings",
subtitle = "Shark Bite vs Anthropogenic by Year"
) %>%
cols_label(
YEAR = "Year",
ANTHROPOGENIC = "Anthropogenic",
`SHARK BITE` = "Shark Bite",
Ratio = "Ratio (SB:A)"
) %>%
tab_style(
style = cell_fill(color = "#FFF8DC"),
locations = cells_body(rows = ANTHROPOGENIC == 0)
)
| Table 3: Annual Breakdown of Strandings | |||
| Shark Bite vs Anthropogenic by Year | |||
| Year | Anthropogenic | Shark Bite | Ratio (SB:A) |
|---|---|---|---|
| 2019 | 1 | 41 | 41:1 |
| 2020 | 2 | 32 | 16:1 |
| 2021 | 2 | 24 | 12:1 |
| 2022 | 0 | 22 | No anthro cases |
| 2023 | 1 | 33 | 33:1 |
| 2024 | 2 | 39 | 19.5:1 |
Key Observation: Shark bite strandings exceeded anthropogenic strandings in every single year from 2019-2024. In 2022, zero anthropogenic cases were recorded while 22 shark bite cases occurred.
# Prepare data for Figure 2
fig2_data <- monterey_data %>%
filter(`COS CATEGORY` %in% c("SHARK BITE", "ANTHROPOGENIC")) %>%
group_by(YEAR, `COS CATEGORY`) %>%
summarise(Count = n(), .groups = 'drop')
# Create Figure 2
ggplot(fig2_data, aes(x = factor(YEAR), y = Count, fill = `COS CATEGORY`)) +
geom_bar(stat = "identity", position = position_dodge(width = 0.8), width = 0.7) +
geom_text(
aes(label = Count),
position = position_dodge(width = 0.8),
vjust = -0.5,
size = 4,
fontface = "bold"
) +
scale_fill_manual(
values = c("ANTHROPOGENIC" = "#D55E00", "SHARK BITE" = "#0072B2"),
labels = c("Anthropogenic", "Shark Bite")
) +
labs(
title = "Annual Trends in Stranding Causes",
subtitle = "Southern Sea Otters, Monterey County (2019-2024)",
x = "Year",
y = "Number of Strandings",
fill = "Cause of Stranding"
) +
theme_minimal(base_size = 14) +
theme(
plot.title = element_text(face = "bold", size = 18, hjust = 0.5),
plot.subtitle = element_text(size = 13, hjust = 0.5, color = "gray30"),
axis.title = element_text(face = "bold", size = 13),
legend.title = element_text(face = "bold", size = 12),
legend.position = "bottom",
legend.text = element_text(size = 11),
panel.grid.major.x = element_blank(),
panel.grid.minor = element_blank()
) +
scale_y_continuous(
expand = expansion(mult = c(0, 0.15)),
breaks = seq(0, 50, 5)
)
Figure 2. Annual comparison of shark bite (blue) and anthropogenic (orange) strandings from 2019-2024. Shark bite consistently exceeded anthropogenic strandings across all six years, with annual shark bite cases ranging from 22-41 individuals.
Temporal Pattern: The consistent annual occurrence of shark bite mortality (22-41 cases per year) contrasts with the episodic, sporadic nature of anthropogenic strandings (0-2 cases per year). This supports characterizing natural predation as a persistent threat and anthropogenic trauma as intermittent.
To provide context for how shark bite and anthropogenic strandings fit within the broader mortality picture, we examine their proportional contributions relative to all other causes.
# Prepare data for Figure 3
fig3_data <- monterey_data %>%
mutate(Category_Group = case_when(
`COS CATEGORY` == "SHARK BITE" ~ "Shark Bite",
`COS CATEGORY` == "ANTHROPOGENIC" ~ "Anthropogenic",
TRUE ~ "Other Causes"
)) %>%
group_by(Category_Group) %>%
summarise(Count = n()) %>%
mutate(
Percent = round((Count / sum(Count)) * 100, 1),
Label = paste0(Count, "\n(", Percent, "%)")
) %>%
# Order for display
mutate(Category_Group = factor(Category_Group,
levels = c("Shark Bite", "Anthropogenic", "Other Causes")))
# Create Figure 3
ggplot(fig3_data, aes(x = Category_Group, y = Count, fill = Category_Group)) +
geom_bar(stat = "identity", width = 0.65) +
geom_text(aes(label = Label), vjust = -0.5, size = 5.5, fontface = "bold") +
scale_fill_manual(
values = c(
"Shark Bite" = "#0072B2",
"Anthropogenic" = "#D55E00",
"Other Causes" = "#999999"
)
) +
labs(
title = "Proportional Contribution of Stranding Causes",
subtitle = "Southern Sea Otters, Monterey County (2019-2024)",
x = "Cause Category",
y = "Number of Strandings"
) +
theme_minimal(base_size = 14) +
theme(
plot.title = element_text(face = "bold", size = 18, hjust = 0.5),
plot.subtitle = element_text(size = 13, hjust = 0.5, color = "gray30"),
axis.title = element_text(face = "bold", size = 13),
axis.text.x = element_text(size = 12),
legend.position = "none",
panel.grid.major.x = element_blank(),
panel.grid.minor = element_blank()
) +
scale_y_continuous(
expand = expansion(mult = c(0, 0.12)),
breaks = seq(0, 600, 100)
)
Figure 3. Proportional contribution of different stranding cause categories in Monterey County (2019-2024). Shark bite accounted for 25% of all strandings (n=191), anthropogenic for 1% (n=8), and other causes for 74% (n=565).
Context: While shark bite is the single largest identified mortality cause (25%), the majority of strandings (74%) are attributed to unknown causes, dependent animal status, or miscellaneous factors. This highlights the importance of continued necropsy and diagnostic work to better characterize mortality sources.
Understanding which demographic groups are most affected by shark predation provides insights into vulnerability patterns and potential population-level consequences.
# Analyze age class distribution of shark bite victims
shark_bite_age <- monterey_data %>%
filter(`COS CATEGORY` == "SHARK BITE") %>%
group_by(`AGE CLASS`) %>%
summarise(
Count = n(),
Percent = round((n() / sum(n())) * 100, 1)
) %>%
arrange(desc(Count))
# Display table
shark_bite_age %>%
gt() %>%
tab_header(
title = "Table 4: Age Class Distribution of Shark Bite Victims",
subtitle = "n = 191 shark bite strandings"
) %>%
cols_label(
`AGE CLASS` = "Age Class",
Count = "Number",
Percent = "Percentage (%)"
) %>%
tab_style(
style = cell_fill(color = "#E3F2FD"),
locations = cells_body(rows = `AGE CLASS` %in% c("SUBADULT", "ADULT"))
) %>%
grand_summary_rows(
columns = Count,
fns = list(Total = ~sum(.)),
fmt = ~ fmt_number(., decimals = 0)
)
| Table 4: Age Class Distribution of Shark Bite Victims | |||
| n = 191 shark bite strandings | |||
| Age Class | Number | Percentage (%) | |
|---|---|---|---|
| SUBADULT | 78 | 100 | |
| ADULT | 76 | 100 | |
| IMMATURE | 26 | 100 | |
| AGED ADULT | 10 | 100 | |
| PUP | 1 | 100 | |
| Total | — | 191 | — |
# Create age class visualization
ggplot(shark_bite_age, aes(x = reorder(`AGE CLASS`, -Count), y = Count, fill = `AGE CLASS`)) +
geom_bar(stat = "identity", width = 0.7) +
geom_text(aes(label = paste0(Count, "\n(", Percent, "%)")),
vjust = -0.3, size = 4, fontface = "bold") +
scale_fill_brewer(palette = "Set2") +
labs(
title = "Age Class Distribution of Shark Bite Victims",
subtitle = "Monterey County, California (2019-2024)",
x = "Age Class",
y = "Number of Individuals"
) +
theme_minimal(base_size = 13) +
theme(
plot.title = element_text(face = "bold", size = 16, hjust = 0.5),
plot.subtitle = element_text(size = 12, hjust = 0.5, color = "gray30"),
axis.title = element_text(face = "bold", size = 12),
legend.position = "none",
panel.grid.major.x = element_blank()
) +
scale_y_continuous(expand = expansion(mult = c(0, 0.15)))
Figure 4. Age class distribution of shark bite victims. Subadults (40.8%) and adults (39.8%) comprise the vast majority of shark bite cases, while pups are rarely affected (0.5%).
Finding: Subadults and adults collectively account for 80.6% of shark bite victims, indicating that predation primarily affects reproductively active or near-reproductive age classes.
# Analyze sex distribution of shark bite victims
shark_bite_sex <- monterey_data %>%
filter(`COS CATEGORY` == "SHARK BITE") %>%
group_by(SEX) %>%
summarise(
Count = n(),
Percent = round((n() / sum(n())) * 100, 1)
) %>%
arrange(desc(Count))
# Calculate male:female ratio
male_n <- shark_bite_sex %>% filter(SEX == "M") %>% pull(Count)
female_n <- shark_bite_sex %>% filter(SEX == "F") %>% pull(Count)
sex_ratio <- round(male_n / female_n, 1)
Key Finding: A pronounced male bias is observed among shark bite victims. Of 191 cases, 140 were males (73.3%) and 51 were females (26.7%), yielding a male-to-female ratio of 2.7:1.
# Display sex distribution table
shark_bite_sex %>%
gt() %>%
tab_header(
title = "Table 5: Sex Distribution of Shark Bite Victims",
subtitle = "n = 191 shark bite strandings"
) %>%
cols_label(
SEX = "Sex",
Count = "Number",
Percent = "Percentage (%)"
) %>%
tab_style(
style = cell_fill(color = "#E8EAF6"),
locations = cells_body(rows = SEX == "M")
) %>%
tab_footnote(
footnote = "Male-to-female ratio = 2.7:1",
locations = cells_column_labels(columns = SEX)
)
| Table 5: Sex Distribution of Shark Bite Victims | ||
| n = 191 shark bite strandings | ||
| Sex1 | Number | Percentage (%) |
|---|---|---|
| M | 140 | 100 |
| F | 51 | 100 |
| 1 Male-to-female ratio = 2.7:1 | ||
# Create sex distribution visualization
ggplot(shark_bite_sex, aes(x = SEX, y = Count, fill = SEX)) +
geom_bar(stat = "identity", width = 0.5) +
geom_text(aes(label = paste0(Count, "\n(", Percent, "%)")),
vjust = -0.3, size = 5, fontface = "bold") +
scale_fill_manual(
values = c("M" = "#4A90E2", "F" = "#E24A90"),
labels = c("M" = "Male", "F" = "Female")
) +
labs(
title = "Sex Distribution of Shark Bite Victims",
subtitle = "Male-biased predation pattern (2.7:1 ratio)",
x = "Sex",
y = "Number of Individuals",
fill = "Sex"
) +
theme_minimal(base_size = 13) +
theme(
plot.title = element_text(face = "bold", size = 16, hjust = 0.5),
plot.subtitle = element_text(size = 12, hjust = 0.5, color = "gray30"),
axis.title = element_text(face = "bold", size = 12),
legend.position = "bottom",
panel.grid.major.x = element_blank()
) +
scale_y_continuous(expand = expansion(mult = c(0, 0.15))) +
scale_x_discrete(labels = c("F" = "Female", "M" = "Male"))
Figure 5. Sex distribution of shark bite victims showing pronounced male bias. Males accounted for 73.3% of shark bite strandings (n=140) compared to 26.7% females (n=51).
Ecological Interpretation: The male bias may reflect behavioral differences, with male sea otters typically occupying more exposed coastal areas and venturing into deeper water compared to females with dependent pups, potentially increasing encounter rates with white sharks.
Examining the condition of carcasses at recovery provides insights into the timing and detectability of shark bite mortality events.
# Analyze condition at stranding for shark bite victims
shark_bite_condition <- monterey_data %>%
filter(`COS CATEGORY` == "SHARK BITE") %>%
group_by(CONDITION) %>%
summarise(
Count = n(),
Percent = round((n() / sum(n())) * 100, 1)
) %>%
arrange(desc(Count))
# Display condition table
shark_bite_condition %>%
gt() %>%
tab_header(
title = "Table 6: Condition at Stranding for Shark Bite Victims",
subtitle = "n = 191 shark bite cases"
) %>%
cols_label(
CONDITION = "Carcass Condition",
Count = "Number",
Percent = "Percentage (%)"
) %>%
tab_style(
style = cell_fill(color = "#F1F8E9"),
locations = cells_body(rows = CONDITION %in% c("FRESH", "ALIVE"))
)
| Table 6: Condition at Stranding for Shark Bite Victims | ||
| n = 191 shark bite cases | ||
| Carcass Condition | Number | Percentage (%) |
|---|---|---|
| FRESH | 87 | 100 |
| ALIVE | 44 | 100 |
| MODERATE | 39 | 100 |
| ADVANCED | 21 | 100 |
Finding: The majority of shark bite victims were recovered in fresh condition (45.5%) or alive (23.0%), indicating relatively rapid detection and recovery. This suggests shark-otter interactions often occur in nearshore areas with high detection probability.
# Create comprehensive summary
summary_stats <- monterey_data %>%
summarise(
Total_Strandings = n(),
Shark_Bite = sum(`COS CATEGORY` == "SHARK BITE"),
Anthropogenic = sum(`COS CATEGORY` == "ANTHROPOGENIC"),
Other_Causes = sum(!`COS CATEGORY` %in% c("SHARK BITE", "ANTHROPOGENIC")),
Shark_Bite_Percent = round((Shark_Bite / Total_Strandings) * 100, 1),
Anthropogenic_Percent = round((Anthropogenic / Total_Strandings) * 100, 1),
Ratio = round(Shark_Bite / Anthropogenic, 1),
Years_Shark_Exceeds = 6, # All 6 years
Male_Shark_Victims = sum(`COS CATEGORY` == "SHARK BITE" & SEX == "M"),
Male_Percent = round((Male_Shark_Victims / Shark_Bite) * 100, 1)
)
# Display summary
summary_stats %>%
pivot_longer(everything(), names_to = "Metric", values_to = "Value") %>%
gt() %>%
tab_header(
title = "Table 7: Summary Statistics",
subtitle = "Key findings from Monterey County analysis (2019-2024)"
) %>%
cols_label(
Metric = "Metric",
Value = "Value"
) %>%
tab_style(
style = cell_fill(color = "#FFF9C4"),
locations = cells_body(rows = Metric %in% c("Ratio", "Shark_Bite_Percent", "Male_Percent"))
)
| Table 7: Summary Statistics | |
| Key findings from Monterey County analysis (2019-2024) | |
| Metric | Value |
|---|---|
| Total_Strandings | 764.0 |
| Shark_Bite | 191.0 |
| Anthropogenic | 8.0 |
| Other_Causes | 565.0 |
| Shark_Bite_Percent | 25.0 |
| Anthropogenic_Percent | 1.0 |
| Ratio | 23.9 |
| Years_Shark_Exceeds | 6.0 |
| Male_Shark_Victims | 140.0 |
| Male_Percent | 73.3 |
The data strongly support the hypothesis that shark bite strandings occur more frequently than anthropogenic strandings in Monterey County. With a ratio of approximately 24:1 and shark predation exceeding anthropogenic trauma in all six years examined, natural predation by white sharks clearly represents a more persistent and numerically significant mortality source than direct human-caused physical trauma.
Magnitude of Difference: Shark bite strandings (n=191) vastly outnumbered anthropogenic strandings (n=8) over the six-year period.
Temporal Consistency: Shark bite exceeded anthropogenic mortality in every single year from 2019-2024, with no exceptions.
Demographic Selectivity: Shark predation disproportionately affects males (73.3%) and prime-age individuals (subadults and adults = 80.6%).
Proportional Impact: Shark bite represents 25% of all Monterey County strandings, making it the single largest identified mortality source.
Episodic vs. Persistent: Anthropogenic trauma appears episodic (0-2 cases/year), while shark predation is persistent (22-41 cases/year).
While these findings demonstrate that direct anthropogenic trauma is numerically minor compared to natural predation, several important considerations for conservation management emerge:
Success of Protection Measures: The low frequency of anthropogenic strandings may reflect effective enforcement of the Marine Mammal Protection Act and Endangered Species Act protections. Continued compliance is essential.
Indirect Anthropogenic Impacts: This analysis captures only direct physical trauma. Indirect human impacts from disease, pollution, and climate change are not included but may be substantial.
Natural Predation Management: Unlike anthropogenic threats that can be mitigated through regulation, natural predation presents complex management challenges and cannot be eliminated without disrupting ecosystem function.
Population-Level Consequences: The male bias and prime-age focus of shark predation warrant demographic modeling to assess whether these patterns significantly constrain population growth.
Individual Value: Even though anthropogenic cases are rare, each represents a preventable loss in a threatened population with slow reproductive rates.
Tinker, M. T., Hatfield, B. B., Harris, M. D., & Ames, J. A. (2016). Dramatic increase in sea otter mortality from white sharks in California. Marine Mammal Science, 32(1), 309-326.
Jorgensen, S. J., Anderson, S., Ferretti, F., Tietz, J. R., et al. (2019). Killer whales redistribute white shark foraging pressure on seals. Scientific Reports, 9(1), 6153.
Kreuder, C., Miller, M. A., Jessup, D. A., et al. (2003). Patterns of mortality in southern sea otters (Enhydra lutris nereis) from 1998-2001. Journal of Wildlife Diseases, 39(3), 495-509.
Estes, J. A., & Palmisano, J. F. (1974). Sea otters: their role in structuring nearshore communities. Science, 185(4156), 1058-1060.
U.S. Fish and Wildlife Service. (2023). Southern Sea Otter (Enhydra lutris nereis) 5-Year Review: Summary and Evaluation.
# Export summary tables for further use
write_csv(cos_summary, "monterey_all_cos_categories.csv")
write_csv(annual_comparison, "annual_shark_anthropogenic_comparison.csv")
write_csv(shark_bite_age, "shark_bite_age_distribution.csv")
write_csv(shark_bite_sex, "shark_bite_sex_distribution.csv")
cat("Data tables exported successfully!\n")
Document Information: - Analysis completed: 2025-12-13 - R version: R version 4.5.2 (2025-10-31) - Dataset: California Department of Fish and Wildlife Sea Otter Stranding Data (2019-2024) - Analysis focus: Monterey County, California - Total strandings analyzed: 764
This analysis was conducted for ESPM C103 Conservation Biology at UC Berkeley.